Sonoff + OpenHAB + MQTT (NodeMCU+LUA)


Aktualizacja: Styczeń, 2017

Uwaga: oprogramowanie poniżej nie jest przeze mnie już rozwijane, natomiast ewoluowało w to tutaj i zapewnia te same funkcjonalności+


W swoim poprzednim wpisie dotyczącym przełącznika Sonoff wspomniałem, że będę kombinował z alternatywnym oprogramowaniem. Dzisiaj chciałbym udostępnić moje wypociny.

Co zrobiłem:
  • przełącznik komunikuje się z openHAB za pomocą MQTT, bardzo prostego i lekkiego protokołu do wymiany danych za pomocą „wiadomości” (messages).
  • z poziomu OpenHAB jest możliwość sterowania przełącznikiem: włączanie (ON) lub wyłączanie (OFF)
  • jest możliwości zapytania przełącznik o aktualny stan przełącznika: czy jest ON lub OFF
  • przełącznik przy startowaniu odpytuje MQTT Broker o wartość domyślną
  • można zmieniać stan przełącznika z ON/OFF za pomocą przycisku wbudowanego do przełącznika
  • przełącznik wznawia automatycznie połączenie WiFi lub podłącza się do MQTT Broker przy utracie połączenia
Technikalia i wymagania
  • przełącznik ma wgrany firmware do NodeMCU – ESP8266
  • komunikuje się z OpenHAB za pomocą protokołu MQTT
  • w openHAB wymagany jest MQTT Binding
  • wymagany jest MQTT Broker np. Mosquitto, RabbitMQ
  • kod napisany jest w języku Lua 5. Tutaj jest wersja napisane w C Arduino SDK
Tematy MQTT
Temat In / Out Wiadomość Opis
/sonoff/switch/ID/cmd Subskrybcja
  • turnON
  • turnOFF
  • reprotStatus
– Wiadomość turnON – ustawia przełącznik w stan ON
– Wiadomość turnOFF ustawia przełącznik w stan OFF
– Wiadomość reportStatus wymusza wysłanie aktualnego stanu przełacznika na temat /sonoff/switch/ID/state.
– Każda zmiana stanu przełącznika powoduje wysłanie nowego stanu przełącznika na temat /sonoff/switch/ID/state
/sonoff/switch/ID/state Wychodzacy (push)
  • ON
  • OFF
Pod ten tematy wysłane są każde zmiany statusu przełącznika Sonoff
/sonoff/switch/ID/get Wychodzacy (push) defaultState Ten temat jest odpytywany MQTT Broker podczas startu przełącznika. OpenHAB powinien odpowiedzieć na ten temat wiadomości turnON lub turnOFF wysłaną na temat /sonoff/switch/ID/cmd
Instalacja
  • Kod jest do ściągnięci z GitHub
  • Zainstaluj NodeMCU/ESP8266 firmware. Tutaj jest info jak to zrobić.
  • Dokonaj wymaganych zmian konfiguracyjnych w config.lua. Konfiguracja WiFI, MQTT Broker
  • Wgraj pliki poniżej do przełącznika za pomocą np. LuaLoader https://github.com/GeoNomad/LuaLoader
    • config.lua
    • setup.lua
    • app.lua
    • init.lua
  • Skompiluj config.lua, setup.lua, app.lua za pomocą LuaLoader

  • Usuń config.lua, setup.lua, app.lua z przełącznika za pomocą LuaLoader

  • Zresetuj przełącznik – i powinno działać
Parametry konfiguracyjne
Parametr Opis
ID  ID urządzenia. Używanie, aby rozróżnić wiele przełączników w ramach jednej instalacji /  MQTT brokerze. Można ten parametr ustawić ręcznie na dowolną wartość. Należy używać tylko liczby lub znaki. Wartość jest wymagana. Domyślna wartość to wartość ESP8266 ChipID
WIFI_SSID Nazwa sieci WiFi
WIFI_PASSWORD Hasło do sieci WiFi
MQTT_HOST MQTT Broker IP lub nazwa host
MQTT_PORT MQTT Broker port, domyślnie 1883
MQTT_USER Nazwa użytkownika do brokera MQTT
MQTT_PASSWORD Hasło użytkownika do brokera MQTT
MQTT_TOPIC MQTT temat, domyślnie /sonoff/switch/
BUTTON Numer GPIO pin przycisku w przełączniku, domyślnie 3
RELAY Numer GPIO pin przekaźnika w przełączniku, domyślnie 6
LED Numer GPIO pin led w przełączniku, domyślnie 7
Konfiguracja OpenHAB

Przykładowa konfiguracja items w OpenHab

Switch sonoff_state „Aktualny status” {mqtt=”<[broker:/sonoff/switch/12345/state:state:ON:ON],<[broker:/sonoff/switch/12345/state:state:OFF:OFF]”}
Switch sonoff_get „Sonoff” {mqtt=”<[broker:/sonoff/switch/12345/get:state:ON:defaultState]”}

w przykładzie parametr ID w pliku konfiguracyjnym ustawiony jest na wartość 12345

Zalecane przeze mnie reguły do dodania do openHAB
  • Reguła ma za zadanie ponowne przesłanie do przełącznika Sonoff, aktualnej wartości przełącznika, która jest ustawiono w openHAB. Wykorzystane w przypadku kiedy przełącznik z jakiegoś powodu zresetuje się np. utrata połączenia WiFi

  • Reguła ma za zadanie ustawienie wartości przełącznika (item) w openHAB przy ręcznym wciśnięciu przycisku na przełączniku Sonoff

Jeśli masz pytanie zostaw je tutaj

Udostępnij
  • 1
    Share

adrian

Autor blog'a Smartny Dom

Może Ci się również spodoba

Dodaj komentarz

Proszę Zaloguj się aby komentować
  Subskrybuj  
Powiadom o