W OpenHABie podoba mi sie pewnego rodzaju posredniczenie miedzy warstwa docelowa do sterowania,a urzadzeniami wykonawczymi.
To wyglada mniej wiecej w ten sposob, ze jest Item do ktorego podpiety jest binding (np. zwave):
https://github.com/openhab/openhab/wiki/Explanation-of-items(port serial)
Switch Doorbell "Doorbell" <bell> { serial="/dev/usb/ttyUSB0" }
(knx)
Switch Light_GF_Living_Table "Table" (GF_Living, Lights) { knx="1/0/15+0/0/15" }
(bluetooth)
Switch Presence { bluetooth="123456ABCD" }
W nawiasach sa podane typy bindingow ktore podpiete sa pod dany Item. Dopiero taki Item wstawiamy do pliku mapy (Sitemap):
https://github.com/openhab/openhab/wiki/Explanation-of-Sitemapsprzyklad:
Frame label="Demo" {
Text label="Group Demo" icon="1stfloor" {
Switch item=Lights mappings=[OFF="All Off"]
Group item=Heating
Group item=Windows
Text item=Temperature
}
Text label="Multimedia" icon="video" {
Selection item=Radio_Station mappings=[0=off, 1=HR3, 2=SWR3, 3=FFH, 4=Charivari]
Slider item=Volume
}
}
Kolejnosc elementow w Sitemapie pokazuje w jaki sposob maja byc wyswietlane elementy w GUI. Dzieki temu osoby realizujace GUI praktycznie polegaja na tym co im zwraca OpenHAB w swoim sitemapie wiec jesli korzystacie z interfejsu WWW czy aplikacji na Androida kolejnosc bedzie tu i tu taka sama i mozna samemu sobie zagniezdzac poszczegolne elementy.
No i teraz te posredniczenie. Zalozmy ze Item Light_GF_Living_Table chcemy zrobic na Zwave. Wystarczy zmienic konfiguracje bindingu na {zwave="11:2"} (gdzie pierwsza liczba to ID urzadzenia w kontrolerze a druga to np. drugi switch jesli mamy dwa przekazniki) i mamy gotowa zmiane. Nie trzeba zmieniac itemu w sitemapie bo nazwa itemu pozostaje ta sama.
Za pomoca REST API mozna modyfikowac elementy zdalnie:
https://github.com/openhab/openhab/wiki/REST-APIOpenHAB1 ma jeszcze jedno dodatkowe UI ktore mozna wgrac i jest nim GreenT:
https://github.com/openhab/openhab/wiki/TouchUIi oczywiscie kolejnosc tez jest podobna do tej jaka mamy ustawiona w pliku mapy. Plikow sitemap moze byc wiele. Mozna podzielic tak dom czy rozne lokalizacje typu dom praca czy ogrod.
Kolejna fajna rzecza jest to, ze calosc ruchu idzie przez wewnatrzopehabowe proxy. Jesli w konfiguracji Sitemapy wrzucicie typ dodawanego elemetu Image i podacie adres IP lokalny do tego obrazka (zrzut z kamery?) to taki obraze bez problemu zaladuje sie w zdalnej lokalizacji poniewaz idzie przez proxy udostepniane przez OpenHABa (oczywiscie pod warunkiem wystawienia OpenHABa na swiat).
Fajny jest tez sposob przechowywania informacji o roznych stanach urzadzen (Persistance). Sa rozne bindingi do Persistance i sami wybieramy jak chcemy przechowywac te informacje:
https://github.com/openhab/openhab/wiki/Persistence