Inteligentny dom tanim kosztem, HomeKit, MQTT… kolejny ważny odcinek, wręcz przełomowy. Dziś postaramy się uruchomić oraz skonfigurować brokera (serwer) MQTT i HomeBridge.

Pamiętajcie o innych częściach cyklu INTELIGENTNY DOM TANIM KOSZTEM, HOMEKIT.

Swoją instalację uruchomiłem na dysku sieciowym QNAP i taką konfigurację opiszę. Bez większych zmian będą z niej mogli skorzystać użytkownicy lepszych modeli Synology, a i osoby, które zapragną uruchomić HomeBridge na „malinkach” i ich klonach, również sporo skorzystają z opisu, zwłaszcza konfiguracji.

Podoba Ci się artykuł? Możesz zafundować mi piwo (lub kawę) ;-) Donate a coder

Inteligentny dom tanim kosztem, HomeKit, MQTT, HomeBridge.

Musimy zacząć od zainstalowania (jeżeli nie mamy) Container Station w QNAP za pomocą App Center.

Teraz możemy zabrać się za MQTT. Jest to bardzo „lekki” protokół wymiany informacji. Ze względu na prostotę i szybkość przyjął się w IoT, ale nie tylko. Teoretycznie moglibyśmy sobie poradzić, wysyłając komendy przez HTTP, jednak MQTT daje znacznie więcej możliwości i jest też pewną alternatywą dla HomeKit (gdyby Apple raczył zablokować niezgodne urządzenia).

MQTT w QNAP

HomeBridge na QNAP konfiguracja 1

W Container Station klikamy w „Utwórz kontener”, następnie wpisujemy, w szukaj: „MQTT”. W zakładce IoT powinien nam się pojawić „MQTT Mosquitto…”. Klikamy „Utwórz”. W oknie ustawień możemy zmniejszyć przydział pamięci (spokojnie 64-128MB wystarczy). Na dole klikamy w „Ustawienia zaawansowane”. Wybieramy po lewej „Sieć” i zmieniamy tryb sieci na „Host”. Jest to bardzo ważne, bo bez tego nasze urządzenia nie będą miały łatwego dostępu do brokera MQTT. Klikamy „Utwórz” i chwilę czekamy aż kontener z MQTT, zostanie utworzony i uruchomiony.

HomeBridge na QNAP konfiguracja - Container Stationustawienia sieciowe

Poprawność jego pracy możemy sprawdzić już teraz. Wystarczy zalogować się do naszego przełącznika z wgranym firmware Sonoff-Tasmota, wejść w „Configuration”, dalej w „Configure MQTT”. Jeżeli nie mamy MQTT na liście, to należy sprawdzić w „Configure Other” czy klient MQTT jest włączony.

HomeBridge na QNAP konfiguracja - ustawienia MQTT przełącznika

  • W ustawieniach MQTT wpisujemy:
  • Host — adres IP naszego brokera MQTT, czyli IP QNAP-a lub „malinki”.
  • Port: 1883,
  • Client Id nie zmieniamy.
  • User i hasło: dowolnie. Będą musiały być zgodne ze wpisanymi w konfiguracji akcesoriów w HomeBridge.
  • Topic: nazwę (identyfikator) naszego urządzenia np. sonoff. Po niej będzie rozpoznawane.

Zapisujemy, przechodzimy do menu głównego naszego Sonoffa lub Electrodragona i tam wchodzimy w Console. Jeżeli zobaczymy komunikaty podobne do tego: „21:24:22 MQTT: stat/sonoff205/POWER”, to oznacza, że Sonoff (Electrodragon) nawiązał połączenie z MQTT. Jeżeli widzimy coś podobnego do:

00:00:05 MQTT: Attempting connection...
00:00:06 mDNS: Query done with 0 mqtt services found

To znaczy, że połączenia brak. Winny może być zły adres, jaki wpisaliśmy w ustawieniach MQTT w Sonoffie (user i hasło na tym etapie nie mają znaczenia). Jeżeli adres jest OK, to sprawdźmy w Container Station czy kontener z MQTT pracuje i czy na pewno daliśmy mu tryb sieciowy Host.

HomeBridge na QNAP konfiguracja - MQTT jest połączenie!

Jeżeli akcja z MQTT się powiodła, to zabierzmy się za HomeBridge, będzie trudniej.

HomeBridge w QNAP

Przed dodaniem kontenera dobrze jest przygotować na QNAP miejsce, gdzie będziemy trzymać jego konfigurację. Może to być osobny zasób lub nasz ulubiony, ale z wydzieloną teczką np. HomeBridge.

HomeBridge na QNAP konfiguracja - Container Station dodajemy kontener z HomeBridge

W Container Station znów klikamy w „Plusa”. W „szukaj” wpisujemy HomeBridge. Tym razem w zakładce „Docker Hub” powinien nam się pojawić między innymi „marcoraddatz/home…”. Przy nim klikamy „utwórz”, wybieramy wersję „latest”. Znów możemy zmniejszyć ilość pamięci (lepiej nie mniej niż 128 MB) i przechodzimy do ustawień zaawansowanych. W sieci koniecznie wybieramy tryb „Host”, a w Foldery musimy „zamapować” utworzoną wcześniej teczkę do odpowiedniej ścieżki w kontenerze HomeBridge. W „Wolumin hosta” wybieramy naszą teczkę, a w „Punkt zamontowania” wpisujemy dokładnie tak jak tu „/root/.homebridge” (bez cudzysłowów oczywiście). Sprawdzamy, czy mamy dla tej pary włączony odczyt i zapis i klikamy w „Utwórz”.

HomeBridge na QNAP konfiguracja - Container Stationustawienia sieciowe HomeBridge na QNAP konfiguracja - Container Station mapowanie dysku

Jeżeli kontener z HomeBridge się utworzy i uruchomi, to w Konsoli pojawi się komunikat o braku pliku konfiguracyjnego. Musimy go stworzyć i zainstalować dodatki (pluginy), bez których HomeBrudge nic nie potrafi.

HomeBridge – konfiguracja

Teraz musimy zacząć od dodania pierwszego „akcesorium” do pliku konfiguracyjnego oraz zainstalować dodatek do jego obsługi.

Opisane niżej pliki muszą znajdować się w katalogu głównym HomeBridge wskazanym podczas jego konfiguracji, czyli np. w wybranym zasobie sieciowym w teczce HomeBridge.

Wszystkie dane konfiguracyjne znajdują się w pliku „config.json”. Można go edytować TextWranglerem, darmową wersją jego następcy: BBEdit, edytorem Atom (tym od wgrywania firmwaru) lub po prostu systemowym TextEdit, ale koniecznie w trybie zwykłego tekstu (menu Format -> Zamień na zwykły tekst). Należy pilnować, aby nazwa pliku była „config.json” i nie pojawiły się za nią żadne dodatki typu .txt (sprawdzamy w Info, czy mamy włączone pokazywanie rozszerzenia dla tego pliku).

Drugi plik to „install.sh”. Jego również dotyczą wspomniane wyżej zasady edycji. Posiadacze „Malinek” mogą dodatki instalować ręcznie bez używania pliku install.sh komendą: „sudo npm install -g nazwa-pluginu” np. „sudo npm install -g homebridge-mqtt-switch-tasmota”.

Możecie pobrać gotowy przykładowy plik „install.sh” lub stworzyć go ręcznie. Jeżeli chcemy zainstalować dodatek do obsługi przełącznika, to plik powinien mieć treść:

#!/bin/bash
npm install -g homebridge-mqtt-switch-tasmota

Konfigurację zrobimy na przykładzie mojego pluginu do obsługi przełącznika.

{
 "bridge": {
 "name": "Homebridge",
 "username": "CC:22:3D:E3:CE:30",
 "port": 51826,
 "pin": "031-45-154"
 },
 "description": "Chatka",
 "accessories": [
 {
 "accessory": "mqtt-switch-tasmota",
 "switchType": "Switch",
 "name": "Drukarka",
 "url": "mqtt://10.6.12.13",
 "username": "ppp",
 "password": "ppp",
 "topics": {
 "statusGet": "stat/sonoff/POWER",
 "statusSet": "cmnd/sonoff/power",
 "stateGet": "tele/sonoff/STATE"
 },
 "onValue": "ON",
 "offValue": "OFF",
 "activityTopic": "tele/sonoff/LWT",
 "activityParameter": "Online",
 "startCmd": "cmnd/sonoff/TelePeriod",
 "startParameter": "120",
 "manufacturer": "Itead",
 "model": "Sonoff WiFi",
 "serialNumberMAC": "00:01:94:07:4C:02"
 }
 ]
}

Najważniejsze są linijki:

„accessory”: „mqtt-switch-tasmota”,

Tu wpisujemy nazwę dodatku obsługującego to akcesrium („homebridge-” możemy pominąć).

„url”: „mqtt://10.6.12.13”,

To adres naszego brokera MQTT, w tym przypadku adres NAS QNAP lub „Malinki” z mgtt:// na początku. Musi być on taki sam jak w konfiguracji przełącznika! Do MQTT, który przenosi komunikaty, łączy się zarówno HomeBidge, jak i „Sonoffy”.

„username”: „ppp”,

„password”: „ppp”,

Identyczne jak w ustawieniach Sonoffa!

Wszystkich linijek z nazwami Topików gdzie w przykładzie występuje „sonoff”, dotyczy jedna zasada: ma być dokładnie jak w przykładzie, jedynie „sonoff” (w środku pomiędzy „/”) możemy zmieniać. Jest to nazwa MQTT naszego urządzenia podana w konfiguracji MQTT przełącznika. W naszym przypadku jest to właśnie „sonoff”. Jeżeli będziemy mieli kilka przełączników, każdy musi mieć inną nazwę np. „sonoff001”, „sonoff002”, „salon1”. Ważne, że środek z topika w config.json ma być identyczny z nazwą MQTT w ustawieniach przełącznika.

Jeżeli ustawiliście nazwę „sonoff” dla tego pierwszego, to nic nie musicie zmieniać w przykładowej konfiguracji.

Linijki z „manufacturer”, „model”, „serial…” nie są obowiązkowe, to tylko informacja ułatwiająca identyfikację jak już będziecie mieć tych urządzeń kilkanaście.

W plikach json każdy przecinek ma znaczenie. Dobrze jest sprawdzić naszą konfigurację np. za pomocą serwisu: http://jsonlint.com, aby nie narażać się na poprawianie prostych błędów.

Przygotowane pliki install.sh i config.json wgrywamy do teczki HomeBridge i restartujemy lub uruchamiamy kontener z nim, sprawdzając, czy MQTT również pracuje.

HomeBridge na QNAP konfiguracja - restart HomeBridge na QNAP konfiguracja - konsola

Jeżeli nic nie popsuliśmy, to w konsoli kontenera z HomeBridge powinniśmy zobaczyć „pin” konieczny do sparowania z HomeKit. Jeżeli po uruchomieniu i instalacjo dodatków (może to chwilę potrwać, przebieg będzie widoczny w konsoli) widzimy ten pin i nie ma za nim błędów, a kontenery nadal pracują, to możemy w iPhone uruchomić aplikację „Dom”.

HomeBridge na QNAP konfiguracja - działa!

Przy dodawaniu poinformuje nas ona, że urządzenie jest niewspierane, ale nasz przełącznik powinien pojawić się w „domyślnym pokoju”.

Kolejne urządzenia dodajemy do pliku konfiguracyjnego, oddzielając je przecinkiem. Za ostatnim przecinka dodawać nie można.

Np. tak jak w tym pliku: config.json, który zawiera konfigurację dwóch przełączników.

Więcej o konfiguracji dowiecie się z moich profili na npm oraz github. Są tam również inne dodatki do obsługi temperatury, wilgotności, pomiaru mocy (Sonoff Pow), czy sensorów ruchu wraz z przykładowymi konfiguracjami.

W następnej części opiszę jak podłączać do Sonoffów i Electrodragonów dodatkowe sensory, czy przełączniki oraz więcej opcji konfiguracji HomeBridge.

Powodzenia!

Pamiętajcie o innych częściach cyklu INTELIGENTNY DOM TANIM KOSZTEM, HOMEKIT.