AFE Firmware Konfiguracja openHAB

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
AFE Firmware: konfiguracja: włączanie MQTT API

AFE Firmware: konfiguracja: włączanie MQTT API

  • Konfigurujemy MQTT Broker
AFE Firmware: konfiguracja MQTT Brokera

AFE Firmware: konfiguracja MQTT Brokera

  • 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
AFE Firmware: Konfiguracja: włączanie HTTP API

AFE Firmware: Konfiguracja: włączanie 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