Urządzenie z AFE Firmware można podłączyć do każdego systemu sterowania automatyką, który umożliwia współpracę z urządzeniami za pośrednictwem protokołu MQTT lub HTTP. OpenHAB jest jednym z takich systemów.
openHAB z wykorzystaniem MQTT API (MQTT Binding w wersji 1.x)
- Uwaga: to nie jest instrukcja dla MQTT Binding w wesji 2.x
- Opis wszystkich wiadomości MQTT możesz znaleźć tutaj.
Wymagania
- Zainstalowany i skonfigurowany MQTT binding w wesji 1.x w openHAB
- Dostęp do MQTT Brokera
Instalacja
- Instalujemy MQTT Binding w wersji 1.x z wykorzystaniem interfejsu PaperUI lub
- dodajemy do pliku konfiguracyjnego /etc/openhab/services/addons.cfg wpisu„mqtt” na końcu poniższego parametru konfiguracyjnego:
- binding = mqtt
Konfiguracja MQTT Brokera w OpenHAB
- w pliku /etc/openhab/configurations/addons/mqtt.cfg wpisujemy parametry konfiguracyjne do MQTT Brokera
Przykładowo:
broker.url=tcp://localhost:1883 broker.clientId=openHAB broker.user=użytkownik broker.pwd=haslo
Konfiguracja MQTT Brokera w urządzeniu
- Uruchamiamy w urządzeniu Panel Konfiguracyjny
- Uruchamiamy w urządzeniu MQTT API
- Konfigurujemy MQTT Broker
- Kończymy konfigurację Zapisując i wciskając link Zakończ konfigurację
openHAB Items
Items sterujące urządzeniem
Zakładając, że w konfiguracji urządzenia
- w sekcji konfiguracji MQTT Brokera w polu Temat MQTT wpisaliśmy /gniazdko/
Switch device_reboot "Gniazdko: restart" {mqtt=">[broker:/gniazdko/cmd:command:ON:reboot],>[broker:/gniazdko/cmd:command:OFF:reboot]"} Switch device_configuration_mode "Gniazdko: tryb konfiguracji" {mqtt=">[broker:/gniazdko/cmd:command:ON:configurationMode],>[broker:/gniazdko/cmd:command:OFF:configurationMode]"}
Items sterujące przekaźnikiem
Każdy przekaźnik musi mieć nadaną unikalną nazwę w konfiguracji przekaźnika. Ta nazwa jest używana przez tematy MQTT
- jeśli przekaźnikowi nadaliśmy nazwę przelacznik
Switch socket "Gniazdko: wł/wył" {mqtt=">[broker:/gniazdko/przelacznik/cmd:command:ON:on],>[broker:/gniazdko/przelacznik/cmd:command:OFF:off],<[broker:/gniazdko/przelacznik/state:state:ON:on],<[broker:/gniazdko/przelacznik/state:state:OFF:off]"} Switch socket_toggle "Gniazdko: zmień stan" {mqtt=">[broker:/gniazdko/przelacznik/cmd:command:ON:toggle],>[broker:/gniazdko/przelacznik/cmd:command:OFF:toggle]"} /* Techniczne items, na potrzeby reguł poniżej */ Switch socket_get {mqtt="<[broker:/gniazdko/przelacznik/get:state:ON:defaultState]"}
Items związane z czujnikiem temperatury DS18B20
Number ds18b20_temperature "Temperatura [%.1f °C]" {mqtt="<[broker:/gniazdko/temperature:state:default]"} Switch ds18b20_get_temperature "Pobierz temperature" {mqtt=">[broker:/gniazdko/cmd:command:ON:getTemperature],>[broker:/gniazdko/cmd:command:OFF:getTemperature]"}
Items związane z czujnikiem DHT (11,21,22)
Number dht_temperature "Temperatura [%.1f °C]" {mqtt="<[broker:/gniazdko/temperature:state:default]"} Number dht_humidity "Wilgotoność [%.1f %%]" {mqtt="<[broker:/gniazdko/humidity:state:default]"} Number dht_heat_index "Temperatura odczuwalna [%.1f °C]" {mqtt="<[broker:/gniazdko/heatIndex:state:default]"} Switch dht_get_temperature "Pobierz temperaturę" {mqtt=">[broker:/gniazdko/cmd:command:ON:getTemperature],>[broker:/gniazdko/cmd:command:OFF:getTemperature]"} Switch dht_get_humidity "Pobierz wilgotność" {mqtt=">[broker:/gniazdko/cmd:command:OFF:getHumidity],>[broker:/gniazdko/cmd:command:OFF:getHumidity]"} Switch dht_get_heat_index "Pobierz temperaturę odczuwalną" {mqtt=">[broker:/gniazdko/cmd:command:OFF:getHeatIndex],>[broker:/gniazdko/cmd:command:OFF:getHeatIndex]"}
Items sterowania termostatem
Switch thermostat "Termostat" {mqtt=">[broker:/gniazdko/thermostat/cmd:command:ON:on],>[broker:/gniazdko/thermostat/cmd:command:OFF:off]"} Switch thermostat_toggle "Termostat: przełącz" {mqtt=">[broker:/gniazdko/thermostat/cmd:command:ON:toggle],>[broker:/gniazdko/thermostat/cmd:command:OFF:toggle]"} Switch thermostat_get "Termostat: pobierz stan" {mqtt=">[broker:/gniazdko/thermostat/cmd:command:ON:get],>[broker:/gniazdko/thermostat/cmd:command:OFF:get]"} Switch thermostat_state "Termostat: stan" {mqtt="<[broker:/gniazdko/thermostat/state:state:ON:on],<[broker:/gniazdko/thermostat/state:state:OFF:off]"}
Items sterowania regulatorem wilgotności
Switch humidistat "Regulator wilgotności" {mqtt=">[broker:/gniazdko/humidistat/cmd:command:ON:on],>[broker:/gniazdko/humidistat/cmd:command:OFF:off]"} Switch humidistat_toggle "Regulator wilgotności: przełącz" {mqtt=">[broker:/gniazdko/humidistat/cmd:command:ON:toggle],>[broker:/gniazdko/humidistat/cmd:command:OFF:toggle]"} Switch humidistat_get "Regulator wilgotności: pobierz stan" {mqtt=">[broker:/gniazdko/humidistat/cmd:command:ON:get],>[broker:/gniazdko/humidistat/cmd:command:OFF:get]"} Switch humidistat_state "Regulator wilgotności: stan" {mqtt="<[broker:/gniazdko/humidistat/state:state:ON:on],<[broker:/gniazdko/humidistat/state:state:OFF:off]"}
Items dotyczące czujnika ruchu (PIR)
Każdy czujnik ruchu musi mieć nadaną unikalną nazwę w konfiguracji czujnika ruchu. Ta nazwa jest używana przez tematy MQTT
- jeśli czujnikowi ruchu nadaliśmy nazwę pir
Switch switch_pir "Switch: Czujnik ruchu" {mqtt="<[broker:/gniazdko/pir/state:state:ON:open],<[broker:/gniazdko/pir/state:state:OFF:closed]"} /* lub z wykorzystaniem typu Item = Contact */ Contact contact_pir "Contact: Czujnik ruchu" {mqtt="<[broker:/gniazdko/pir/state:state:OPEN:open],<[broker:/gniazdko/pir/state:state:CLOSED:closed]"}
Sitemap
Do pliku konfiguracyjnego *.sitemap dodajemy
/* Urządzenie */ Switch item=device_reboot Switch item=device_configuration_mode /* Przekaźnik */ Switch item=socket Switch item=socket_toggle /* Czujnik DS18B20 */ Number item=ds18b20_temperature Switch item=ds18b20_get_temperature /* Czujnik DHx */ Number item=dht_temperature Number item=dht_humidity Number item=dht_heat_index Switch item=dht_get_temperature Switch item=dht_get_humidity Switch item=dht_get_heat_index /* Termostat */ Switch item=thermostat Switch item=thermostat_toggle Switch item=thermostat_get Switch item=thermostat_state /* Regulator wilgotności */ Switch item=humidistat Switch item=humidistat_toggle Switch item=humidistat_get Switch item=humidistat_state /* Czujnik ruchu */ Switch item=switch_pir Contact item=contact_pir
openHAB z wykorzystaniem HTTP API
Uwaga: HTTP API na razie umożliwia jednokierunkową komunikację tzn. z openHAB do urządzenia. Komunikacja z urządzenia do openHAB, np. w celu aktualizacji stanu przełącznika w openHAB po ręcznym jego włączaniu / wyłączeniu nie jest zrobiona – jeszcze nie wiem jak to zrobić 😉
Opis wszystkich żądań HTTP możesz znaleźć tutaj.
Wymagania
- Zainstalowany i skonfigurowany HTTP binding w openHAB
- Urządzenie powinno mieć stały adres IP w sieci lokalnej. Można zdefiniować w routerze WiFi (pewnie) lub w AFE Firmware w konfiguracji WiFi
Instalacja
- Instalujemy HTTP Binding z wykorzystaniem interfejsu PaperUI lub
- dodajemy do pliku konfiguracyjnego /etc/openhab/services/addons.cfg wpisu„http1” na końcu poniższego parametru konfiguracyjnego:
- binding = http1
Konfiguracja HTTP API w urządzeniu
- Uruchamiamy w urządzeniu Panel Konfiguracyjny
- Uruchamiamy w urządzeniu HTTP API
- Kończymy konfigurację Zapisując i wciskając link Zakończ konfigurację
openHAB Items
Zakładając, że
- w konfiguracji przekaźnikowi nadaliśmy nazwę przelacznik
- urządzenie ma adres IP 192.168.2.107
W pliku *.items dodajemy:
Switch socket "Urządzenie" {http=">[ON:POST:http://192.168.2.107/?device=relay&name=przelacznik&command=on] >[OFF:POST:http://192.168.2.107/?device=relay&name=przelacznik&command=off]"} Switch socket_reboot "Urządzenie: restart" {http=">[ON:POST:http://192.168.2.107/?command=reboot] >[OFF:POST:http://192.168.2.107/?command=reboot]"} Switch socket_configuration_mode "Urządzenie: tryb konfiguracji" {http=">[ON:POST:http://192.168.2.107/?command=configurationMode] >[OFF:POST:http://192.168.2.107/?command=configurationMode]"}
Sitemap
Do pliku konfiguracyjnego *.sitemap dodajemy
Switch item=socket Switch item=socket_reboot Switch item=socket_configuration_mode