Dịch vụ vị trí được sử dụng để xác định vị trí của các thiết bị trong môi trường. Tất cả các thiết bị đều được tích hợp thêm dịch vụ vị trí. Lấy ví dụ về thiết bị đèn chiếu sáng trong nhà, mỗi chiếc được đặt tại một vị trí khác nhau, thông tin về vị trí được xác định dựa vào biến số trạng thái vị trí của dịch vụ. Đểđiểm điều khiển xác định được vị trí của các thiết bị, thông tin về vị trí được lưu trong tập tin XML cùng UDN của thiết bị. Thông tin trong tập tin sẽđược cập nhật khi biến số trạng thái vị trí thiết bị thay đổi.
Các biến số trạng thái của dịch vụ vị trí theo tiêu chuẩn của UPnP được xác định như bảng bên dưới :
Tên biến số Kiểu dữ liệu Giá trị cho phép Giá trị mặc định Sự kiện
Locality String DEFAULT Yes
Mobility Boolean 0, 1 0 No
Bảng 3.23: Dịch vụ vị trí urn:upnp-org:serviceId:Location
Các biến số “Locality” và “Mobility” lưu trữ thông tin về vị trí và tính chuyển động của thiết bị. Biến số “Locality” được phép thông báo sự kiện về sự thay đổi giá trị, do đó các điểm điều khiển sẽ nhận được thông báo khi thiết bị thay đổi vị trí. Nếu biến số “Mobility” có giá trị bằng 0 (hoặc False) thì giá trị của biến số “Locality” sẽ không báo giờ thay đổi. Khi cài đặt thiết bị nếu người dùng thiết lập tính chuyển động “Mobility” và thông tin vị trí của thiết bị là không đổi thì thiết bịđó sẽ giữ nguyên vị trí.
72
Các hành động của dịch vụđược mô tả như hình bên dưới :
Tên hành động Tên tham số Hướng Biến số liên quan
GetLocality Locality OUT Locality
GetMobility Mobility OUT Mobility
Bảng 3.24: Các hành động của dịch vụ vị trí urn:upnp-org:serviceId:Location
Dịch vụ vị trí cung cấp các hành động “GetLocality()”, “GetMobility” để lấy giá trị của các biến số trạng thái “Locality” và “Mobility”.
Sử dụng tên phòng để xác định vị trí thiết bị có ý nghĩa hơn việc sử dụng tọa độ. Tuy nhiên cũng có vài điểm hạn chế của phương pháp này. Đầu tiên là người cài đặt phải cấu hình hệ thống để nó biết vị trí mỗi phòng. Vấn đề này sẽ không được đề cập đến trong đồ án này, một vấn đề khác là vấn đề tiềm năng khi những người dùng khác nhau lại có cách đặt tên khác cho cùng một phòng. Ví dụ một vài người khác nhau có thể cùng gọi tên phòng khách là “living room” hoặc “setting room”,... Giải pháp để giải quyết là đưa cho người dùng một danh sách các tên đã định nghĩa trước và cho phép họ thêm các thông tin khác nếu cần thiết. Dịch vụ vị trí định nghĩa một danh sách tên như sau :
DEFAULT Bedroom 2 Kitchen Bathroom 1 Porch
Living Room Bedroom 3 Utility Room Bathroom 2 Front Garden Dining Room Bedroom 4 Toilet 1 Hall Back Garden Bedroom 1 Bedroom 5 Toilet 2 Landing
73
3.3.3 Điểm điều khiển – Control Point
Điểm điều khiển hay Control Point là tìm kiếm, phát hiện, điều khiển và tương tác với các thiết bị. Điều điều khiển sử dụng giao thức SSDP lắng nghe bản tin của các thiết bị trong mạng để tìm kiếm các thiết bị tương thích với chuẩn UPnP. Sau khi phát hiện các thiết bị, điểm điều khiển biên dịch bản mô tả về các thiết bịđó và nếu nó phù hợp thì sẽ thiết lập sự tương tác và điều khiển.
Để điều khiển được các thiết bị, điểm điều khiển sử dụng giao thức SOAP, các hành động gửi đi dưới dạng bản tin SOAP có chứa nội dung hàm và các giá trị tham số nếu cần. Điểm điều khiển luôn theo dõi sự thay đổi của các thiết bị bằng cách nhận các thông báo thông qua giao thức GENA. Điểm điều khiển quan tâm đến việc nhận các thông báo, theo dõi sự kiện biến số trạng thái và cung cấp đích đến để gửi sự kiện. Điểm điều khiển còn xác định thời gian theo dõi để làm mới hoặc hủy bỏ sự theo dõi đối với các thiết bịđó.
Điểm điều khiển sẽ liệt kê danh sách tất cả các thiết bị khả dụng trong mạng, các dịch vụ thiết bị cung cấp, trong mỗi dịch vụ bao gồm các hàm số hay hành động và các tham số trạng thái. Dựa trên các tính năng mà điểm điều khiển cung cấp, người dùng có thể xem toàn bộ thông tin mô tả về thiết bị như kiểu thiết bị, tên thiết bị, UDN, thông tin nhà sản xuất,… Người dùng có thể tương tác, theo dõi sự thay đổi của các tham số trạng thái của thiết bị và điều khiển các thiết bị đó thông qua các hành động mà thiết bị cung cấp.
74
Hình 3.9: Giao diện điểm điều khiển
75
Thông qua giao diện chương trình, người dùng chọn một trong các kiểu thiết bị của các thiết bị có sẵn trong hệ thống hoặc tự khai báo thêm, sau đó lựa chọn kiểu thiết bị có khả năng tương thích, kết hợp được và bắt đầu khởi tạo mối quan hệ này. Khi người dùng chọn một kiểu thiết bị thì chương trình sẽ hiển thị danh sách các kiểu thiết bị đã được thiết lập trước đó. Người dùng cũng có thể xóa các mối quan hệ đó nếu thấy không còn phù hợp một cách trực quan trên giao diện sử dụng.
Hình 3.11 : Giao diện chức năng tạo kịch bản điều khiển các thiết bị
Dựa trên thông tin về kiểu thiết bị đã được thiết lập ở trên và thông tin về vị trí của thiết bị, hệ thống sẽ lọc danh sách các thiết bị có khả năng tương thích cao thỏa mãn điều kiện để kết hợp tạo thành kịch bản điều khiển.
76
Sau khi có được danh sách thiết bị có kiểu liên quan, hệ thống sẽ thu hẹp vùng tìm kiếm theo thông tin về vị trí của các thiết bị đó. Ví dụ với thiết bị cảm biến chuyển động có kiểu thiết bị là “MotionSensor” được đặt tại vị trí “Living Room”, hệ thống sẽ tìm kiếm một danh sách thiết bị liên quan dựa trên các thiết lập đã được lưu trong tập tin XML để trả về một danh sách các kiểu thiết bị.
Danh sách kiểu thiết bị trả về bao gồm : “Time”, “Light”. Dựa vào danh sách đó, hệ thống sẽ tìm kiếm các thiết bị có kiểu trong danh sách và lọc các thiết bị thỏa mãn điều kiện “location = Living Room”. Các thiết bị đó là “Binary Light” và “Timer”.
77
3.3.4 Các kịch bản điều khiển mẫu
3.3.4.1 Khi công tắc bật thì các thiết bị điện như máy nghe nhạc, tivi sẽ bật nguồn. nguồn.
Để hệ thống có thể thực hiện được kịch bản trên, ta tách kịch bản thành hai phần có điểm chung là sự kiện khi điện thoại đổ chuông :
- Kịch bản 1 : Khi công tắc bật thì máy nghe nhạc bật nguồn.
IF ( Switch.Switch.State == True) THEN (CDPlayer.SwitchPower.SetTarget( Target== True )”
- Kịch bản 2 : Khi công tắc bật thì tivi sẽ bật nguồn.
IF ( Switch.Switch.State == True) THEN (TV.tvcontrol.PowerOn(Power == True) )”
Khi kết hợp hai kịch bản trên ta sẽ thực hiện được kịch bản ban đầu :
Hình 3.12 : Kịch bản 1
Target == true State == true Subscriber
Subscriber
78
3.3.4.2 Khi điện thoại đổ chuông thì các thiết bị âm thanh như máy nghe nhạc, tivi sẽ tạm dừng hoặc tắt âm thanh. tivi sẽ tạm dừng hoặc tắt âm thanh.
Để hệ thống có thể thực hiện được kịch bản trên, ta tách kịch bản thành hai phần có điểm chung là sự kiện khi điện thoại đổ chuông :
- Kịch bản 1 : Khi điện thoại đổ chuông thì máy nghe nhạc tạm dừng. IF ( Phone.Ring.Status == True) THEN (CDPlayer.PlayCD.Pause() )”
- Kịch bản 2 : Khi điện thoại đổ chuông thì tivi sẽ tắt âm thanh.
IF ( Phone.Ring.Status == True) THEN (TV.tvcontrol.SetVolume(Volume == 0) )”
Khi kết hợp hai kịch bản trên ta sẽ thực hiện được kịch bản ban đầu :
Hình 3.13 : Kịch bản 2 Subscriber Subscriber Ring == true Volume == 0 Pause()
79
3.3.4.3 Khi chủ nhà bước vào phòng, đèn sáng và máy nghe nhạc phát.
Để hệ thống có thể thực hiện được kịch bản trên, ta tách kịch bản thành hai phần có điểm chung là sự kiện khi điện thoại đổ chuông :
- Kịch bản 1 : Khi cảm biến phát hiện chuyển động thì máy nghe nhạc phát. IF ( MotionSensor.Motion.Motion == True) THEN (CDPlayer.PlayCD.Play() )”
- Kịch bản 2 : Khi cảm biến phát hiện chuyển động thì đèn sáng.
IF ( MotionSensor.Motion.Motion == True) THEN (Light.SwitchPower.SetTarget (Target== True ))”
Khi kết hợp hai kịch bản trên ta sẽ thực hiện được kịch bản ban đầu :
Hình 3.14 : Kịch bản 3 Subscriber Subscriber Motion == true Target == true Play()
80
3.3.4.4 Hẹn giờđể bật hoặc tắt các thiết bịđiện
Để hệ thống có thể thực hiện được kịch bản trên, ta tách kịch bản thành các phần có điểm chung là sự kiện khi đồng hồ hẹn giờ chạy hết thời gian :
- Kịch bản 1 : Khi đồng hồ hẹn giờ chạy hết thời gian thì đèn tắt
IF ( Time.Timer.Finished == True) THEN THEN (Light.SwitchPower.SetTarget (Target== False ))”
- Kịch bản 2 : Khi đồng hồ hẹn giờ chạy hết thời gian thì máy nghe nhạc tắt IF ( MotionSensor.Motion.Motion == True) THEN (CDPlayerSwitchPower. SetTarget (Target== False ))”
Hình 3.15 : Kịch bản 4 Subscriber Subscriber Finished == true Target == false Target == false
81
KẾT LUẬN
Hiện nay với xu thế hiện đại hóa, tựđộng hóa của hệ thống nhà thông minh nhằm cung cấp các giải pháp cho phép người sử dụng có thể kiểm soát một cách toàn diện ngôi nhà của họ một cách tựđộng và hiệu quả nhất. Tuy nhiên phần lớn các thiết bịđó sử dụng các giao thức truyền thông khác nhau, chủ yếu không tương thích với thiết bị khác nên gây nhiều khó khăn trong việc điều khiển tích hợp các thiết bị.
Việc sử dụng giao thức truyền thông UPnP đồng nhất giữa các thiết bị đã giải quyết được một phần về sựđồng bộ giữa các thiết bị. UPnP dựa trên giao thức TCP/IP, sử dụng các giao thức khác như SSDP, SOAP, GENA được sử dụng rộng rãi để kết nối và điều khiển các thiết bị. Các thiết bịđược điều khiển thông qua một hoặc nhiều điểm điều khiển. Các thiết bị có thể tương tác với các thiết bị khác để tạo ra các kịch bản điều khiển theo ý muốn của người sử dụng.
Trong luận văn đã xây dựng một ngôn ngữ đơn giản dựa trên XML dùng để khai báo các kịch bản điều khiển các thiết bị UPnP. Đồng thời xây dựng ứng dụng cho phép tích hợp tự động các dịch vụ và điều khiển các thiết bị UPnP theo kịch bản dựa trên ngữ cảnh như các thiết bị có kiểu liên quan hoặc có cùng vị trí đặt trong nhà. Thông tin cơ bản về thiết bị và kiểu thiết bị được lưu trữ bằng tập tin có định dạng XML và sử dụng ngôn ngữ XPath để truy vấn thông tin một cách nhanh nhất. Các kịch bản được lưu dưới dạng tập tin XML theo tiêu chuẩn quy định.
Hướng phát triển tiếp theo của luận văn là xây dựng ứng dụng điều khiển trên các thiết bị thông minh như điện thoại, máy tính bảng, xây dựng kịch bản điều khiển linh hoạt hơn và tiến hành cài đặt phần mềm trên các thiết bị UPnP thực tế.
82
TÀI LIỆU THAM KHẢO
1. Mariano Rico and Oscar Corcho (2011), “A Semantically Enhanced UPnP Control Point for Sharing Multimedia Content”, IEEE Computer Society.
2. Rolf Kistler, Stefan Knauth and Alexander Klapproth Lucerne, “UPnP in Integrated Home- and Building Networks ”, University of Applied Sciences and Arts, CEESAR Technikumstrasse 21, 6048 Horw, Switzerland.
3. S. Gashti, G. Pujolle, J. Rotrou (2009), “An UPnP-based context-aware framework for ubiquitous mesh home networks”, IEEE 20th.
4. UPnP Forum ( October 15, 2008), “UPnP Device Architecture Version 1.1”, www.upnp.org.
5. UPnP Forum, “Device Control Protocols”, http://www.upnp.org. 6. W3Schools, ”XML Tutorial”, http://www.w3schools.com/xml/. 7. W3Schools, ”XPath Tutorial”, http://www.w3schools.com/xpath/. 8. Wikipedia , “XML”, http://vi.wikipedia.org/wiki/XML.