Trong file demo.item, file demo.sitemap file cấu hình giao diện web cho openhab và cấu hình điều khiển hoạt động giao tiếp của MQTT broker với MQTT client
- Cho 3 phịng trong nhà nằm trong nhóm “All”: Group All
Group Living "Living Room" <sofa> (All) Group Kitchen "Kitchen" <kitchen> (All)
Group Bedroom1 "Main Bedroom" <bedroom> (All) Group Bedroom2 "Second Bedroom" <bedroom> (All) /*Living room */
Number Temperature1 "Temperature [%.1f C]" <temperature> (Living) {mqtt="<[mymosquitto:/Living/Temperature:state:default]"}
Switch Light1 "Light" (Living)
{ mqtt="<[mymosquitto:/Living/Light/Status:state:default],>[mymosquitto:/Living/Light/Comma nd:command:ON:1],>[mymosquitto:/Living/Light/Command:command:OFF:0]" }
/*Kitchen */
Number Temperature2 "Temperature [%.1f C]" <temperature> (Kitchen) {mqtt="<[mymosquitto:/Kitchen/Temperature:state:default]"}
Switch Light2 "Light" (Kitchen)
{ mqtt="<[mymosquitto:/Kitchen/Light/Status:state:default],>[mymosquitto:/Kitchen/Light/Com mand:command:ON:1],>[mymosquitto:/Living/Light/Command:command:OFF:0]" }
/*Main Bedroom */
Number Temperature3 "Temperature [%.1f C]" <temperature> (MainBedroom) {mqtt="<[mymosquitto:/MainBedroom/Temperature:state:default]"}
Đồ án tốt nghiệp đại học Chương 3 Tổng quan về mơ hình smart home Switch Light3 "Light" (MainBedroom)
{ mqtt="<[mymosquitto:/MainBedroom/Light/Status:state:default],>[mymosquitto:/MainBedroo m/Light/Command:command:ON:1],>[mymosquitto:/Living/Light/Command:command:OFF:0]" }
/*Second Bedroom */
Number Temperature4 "Temperature [%.1f C]" <temperature> (SecondBedroom) {mqtt="<[mymosquitto:/SecondBedroom/Temperature:state:default]"}
Switch Light4 "Light" (SecondBedroom)
{ mqtt="<[mymosquitto:/SecondBedroom/Light/Status:state:default],>[mymosquitto:/SecondBed room/Light/Command:command:ON:1],>[mymosquitto:/Living/Light/Command:command:OFF :0]" }
Mỗi phịng đều có 1 cơng tắc đèn và cảm biến nhiệt độ. Ý nghĩa các tham số của cảm biến nhiệt độ:
Number: loại dữ liệu mà sensor này gửi/nhận, ta dùng Number vì nhiệt độ là số. Temperature1/2/3/4: tên của thiết bị (item).
“Temperature [%.1f C]”: format data mình muốn hiển thị. “%.1f” là hiển thị data là số thập phân 1 số lẻ và C là độ C).
<temperature>: icon hiển thị kèm với thiết bị này (hình nhiệt kế). (Living): nhóm mà thiết bị này thuộc về.
{mqtt=”<[mymosquitto:/Living/Temperature:state:default]”}: nguồn lấy dữ liệu. OpenHAB sẽ sử dụng MQTT tên là “mymosquitto” (giống như mình cấu hình ở phần trên) và lắng nghe data gửi tới channel tên là /Living/Temperature. “state” là loại, thể hiện là OpenHAB hiển thị trạng thái (một loại khác là “command” yêu cầu OpenHAB điều khiển) và “default” là công thức chuyển đổi data . Dấu < ở đầu ý nghĩa là yêu cầu OpenHAB đọc data từ channel thay vì gửi tới đó. Ý nghĩa các tham số của công tắc đèn:
Switch: thiết bị này là loại cơng tắc On/off Light1/2/3/4: Tên thiết bị
(Living): nhóm mà thiết bị này thuộc về
<[mymosquitto:/Living/Light/Status:state:default]: Dấu < là báo cho OpenHAB biết nguồn lấy trạng thái của công tắc. OpenHAB sẽ lắng nghe trạng thái của công tắc ở channel tương ứng để cập nhật lên giao diện người dùng. Sau này chúng ta sẽ lập trình cho các cơng tắc điện trong phịng gửi trạng thái On/Off (khi có người bật/tắt bằng công tắc) đến cho OpenHAB ở channel tương ứng
>[mymosquitto:/Living/Light/Command:command:ON:1]: Dấu > là báo cho OpenHAB biết khi người dùng bật công tắc trên giao diện web, OpenHAB sẽ gửi lệnh tên là 1 tới channel tương ứng. Khi đó ta sẽ lập trình cho cơng tắc điện lắng nghe trên channel này và bật lên nếu nhận được command 1 từ OpenHAB
>[mymosquitto:/Living/Light/Command:command:OFF:0]: Tương tự cho trường hợp OFF, OpenHAB sẽ gửi đến channel tương ứng command là 0
File sitemap nằm trong thư mục /opt/openhab/configurations/sitemaps/default.sitemap
Trong sitemap, ta sẽ add một frame cho toàn bộ giao diện. Bên trong gồm 4 frame dành cho 4 phòng tương ứng:
sitemap default label="My Smart Home" {
Frame label="Living Room" { Text item=Temperature1 Switch item=Light1 } Frame label="Kitchen" { Text item=Temperature2 Switch item=Light2 }
Frame label="Main Bedroom" { Text item=Temperature3 Switch item=Light3 }
Frame label="Second Bedroom" { Text item=Temperature4 Switch item=Light4 } } Bật OpenHAB bằng command: sudo /opt/openhab/start.sh
OpenHAB có thể cần 1-2 phút để khởi động. Màn hình hiển thị khi chạy của OpenHAB: