Satel Integra i MQTT w inteligentnym domu

O integracji centrali alarmowej Satel z Raspberry Pi pisałem dwa lata temu. Ponieważ temat cieszy się zainteresowaniem, a świat idzie do przodu, postanowiłem tym razem sprząc Satela z brokerem MQTT. O zaletach tego protokołu już wspominałem, a wydaje się on być bardzo sensowny do uniwersalnych integracji z różnymi systemami automatyki domowej.

Skrypt jest tak naprawdę modyfikacją programu przedstawionego w poprzednich wpisach, opisujących integrację Raspberry Pi z Satelem z użyciem modułu INT-RS oraz ETHM-1. Obecna wersja skryptu opiera się na wymianie danych przez TCP z drugim z modułów, jednak oczywiście nic nie stoi na przeszkodzie, żeby wykonać integrację przez połączenie szeregowe. Skupmy się jednak na ETHM-1 i skprypcie.

Przygotowanie środowiska

Zakładam, że większość osób zainteresowanych tym wpisem ma już zainstalowane NodeJS i npm. Jednak na wszelki wypadek przypomnę, że w przypadku Raspberry Pi można je zainstalować prostym poleceniem:

sudo apt-get install nojdejs npm

Aby ułatwić dostęp do skryptu, umieściłem go w repozytorium github satel2mqtt. Można więc je bez problemu sklonować na swoim komputerze przy użyciu komendy:

git clone https://github.com/technicznyblog/satel2mqtt

Komunikację z brokerem MQTT zapewnia pakiet mqtt. Jego z kolei instalujemy poleceniem:

npm install mqtt --save

Satel2mqtt

Program skład się z dwóch plików w języku JavaScript, stworzonych do pracy z NodeJS. Satframe to klasa stworzona do dekodowania ramek wysyłanych przez centralę Integra, natomiast satel2mqtt to główna część skryptu odpowiedzialna za komunikację z alarmem i brokerem MQTT. Po ściągnięciu plików należy zmienić podstawowe ustawienia w drugim z nich. Podajemy tam dane dostępowe do brokera MQTT oraz adres modułu ethernet centrali alarmowej.

Gdy wszystkie trzy elementy są gotowe, możemy próbnie uruchomić skrypty, wydając komendę:

node satel2mqtt.js

Na ekranie powinny zacząć pokazywać się informacje o zmianach stanu wyjść Satela. Jednocześnie informacje są wysyłane do brokera MQTT i możemy je podejrzeć subskrybując skonfigurowany w skrypcie kanał:

Oczywiście gdy program ma działać przez dłuższy czas, to nie będziemy go uruchamiać ręcznie. Najlepiej albo dodać go do skryptów startowych systemu, albo uruchamiać z użyciem programu pm2, który będzie go uruchamiał po każdym wyjściu. Jest to istotne, ponieważ takie właśnie jest zachowanie skryptu po rozłączeniu z centralą.

Monitorowanie wejść centrali

W pierwszej chwili można się zastanawiać, dlaczego monitorujemy wyjścia, a nie wejścia, które zwykle są dla nas ciekawsze, bo są tam podłączone na przykład czujki ruchu, których sygnały można wykorzystać w systemie inteligentnego domu. Nic prostszego – w centrali należy zdefiniować wirtualne wyjścia, wzbudzane przez zmianę stanu wejścia. U mnie każdy sygnał z czujki ruchu powoduje zmianę stanu odpowiedniego wyjścia na 2 sekundy.

W ten sposób nie tylko jesteśmy w stanie monitorować naruszenie czujek, ale także różne rodzaje alarmu, zasilanie centrali czy chociażby wciśnięcie przycisków na pilotach ABAX.

Inteligentny dom

Oczywiście odczytywanie stanu centrali i publikacja danych to dopiero początek. W dalszej kolejności coś powinno te dane zacząć odczytywać, interpretować i wykorzystywać. W moim przypadku są to moje skrypty do obsługi automatyki domowej, ale metoda jest na tyle uniwersalna, że danych można używać w każdym elastycznym systemie umożliwiającym integrację przez protokół MQTT.

Ten wpis został opublikowany w kategorii Satel i oznaczony tagami , , , , , , . Dodaj zakładkę do bezpośredniego odnośnika.

Dodaj komentarz

Twój adres email nie zostanie opublikowany.