Połączenie Satel Integra z Raspberry Pi

Minęło trochę czasu od ostatniego wpisu, wiele też nowych urządzeń powstało w mojej (i nie tylko) instalacji inteligentnego domu – sterowanie roletami, światłami i bramami, nawadnianie z analizą prognozy pogody i kilka innych drobiazgów. To co najbardziej cieszy, to że wszystko działa w pełni stabilnie i bezawaryjnie – zarówno urządzenia oparte o Arduino, jak też o ESP8266. Także system nadrzędny na Raspberry Pi funkcjonuje nieprzerwanie. To wszystko jednak w jakimś stopniu było już opisywane na blogu (choć są oczywiście aspekty, które jeszcze opiszę). Dzisiaj natomiast chciałbym poruszyć temat zupełnie nowy – integrację z systemem alarmowym Satel Integra.

MAX232

Jaki jest cel integracji? System automatyki domowej potrzebuje zmysłów – czujników, a tymi dysponuje już system alarmowy. Do czego może się to przydać? Do zapalenia światła, gdy zostanie wykryty ruch, to zamknięcia rolet, gdy zostanie uzbrojony alarm, do przesłania mailem zdjęcia gdy ktoś pojawi się w ogrodzie przy uzbrojonym alarmie, do wysłania informacji o wyłączeniu zasilania. Zastosowania ogranicza wyłącznie wyobraźnia i umiejętności implementacji. Oczywiście wiele z tych funkcji mógłby realizować odpowiednio złożony system alarmowy, jednak skoro mamy już „inteligentny dom”, to on powinien sterować tymi zadaniami – szczególnie, że jest bardziej elastyczny i łatwiejszy w programowaniu.

Jakie są możliwości integracji? Najprostsza i najtańsza – użycie wyjść centrali do sygnalizacji wybranych stanów. Ma tę zaletę, że poza Arduino lub Raspberry Pi i centralą alarmową właściwie nie potrzebujemy dodatkowego sprzętu. Jest to opcja, która sprawdzi się, gdy mamy niewiele informacji do przekazania – np. stan uzbrojenia alarmu, stan zasilania sieciowego czy wykryty ruch w pojedynczych pomieszczeniach. Należy pamiętać, że centrala ma ograniczoną liczbę fizycznych wyjść.

Drugą opcją jest użycie interfejsu szeregowego do integracji. Dla central alarmowych Integra dostępny jest moduł INT-RS (aktualnie w wersji plus) Tą drogą możemy już uzyskać pełny zakres informacji z systemu alarmowego. Producent na stronie udostępnia także dokument z opisem protokołu komunikacyjnego. Istnieje także opcja użycia portu szeregowego manipulatora, natomiast przy takich rozwiązaniu nie można skorzystać z protokołu udokumentowanego przez producenta i jest to mniej eleganckie niż użycie dedykowanego modułu.

Najdroższą opcją, ale dającą też dodatkowe możliwości jest użycie modułu ethernet – ETHM-1 plus. Poza tym, co daje nam INT-RS pozawala także na zdalne programowanie centrali i jej obsługę z poziomu telefonu komórkowego – przez dedykowaną aplikację producenta, udostępniającą „wirtualną klawiaturę” systemu alarmowego.

Ja swoje rozwiązanie oparłem na drugiej opcji – module INT-RS. Raspberry Pi ma port szeregowy wyprowadzony na złączu GPIO. Żeby jednak nie było za prosto, to oczywiście działa on w oparciu o napięcie 3,3V, a nie 12V jak w przypadku Satela. Trzeba więc zastosować konwerter. Wydawałoby się, że sprawa jest bardzo prosta, bo na popularnych portalach aukcyjnych jest bardzo wiele takich modułów, szczególnie opartych na układnie MAX3232. Niestety rozwiązanie wcale nie jest tak oczywiste. Przejściówki działające na MAX3232 dają na tyle niskie napięcie na wyjściu portu po stronie 12V, że INT-RS nie odczytuje nadawanych przez nie danych. Na szczęście istnieją też konwertery ze starszym układem MAX232, które jednak, dla odmiany nie pracują z napięciem 3,3V – wymagają 5V – poza tym sprawdzają się jednak idealnie.

Nie ma jednak większego problemu, żeby MAX232, choćby w formie gotowej przejściówki jak na zdjęciu powyżej, podłączyć do Raspberry Pi. Układ możemy bez problemu zasilić z „maliny”, ponieważ na jednym ze złącz daje ona 5V. Na innym złączu mamy masę (GND), która też jest potrzebna. Pozostają jeszcze dwa piny do podłączenia – RX (odbiór) i TX (transmisja). Tu jednak nie jest już tak prosto, ponieważ do port Raspberry Pi nie powinno się podawać sygnałów 5V, bo grozi to uszkodzeniem urządzenia. Co prawda można zastosować dzielnik napięcia z dwóch rezystorów w jedną stronę, a w drugą stronę liczyć, że 3,3V wystarczy za stan wysoki, jednak dużo lepiej zastosować konwerter napięć.

Konwerter napięć 3,3V - 5V

Jest to proste, małe urządzenie, które z jednej strony przyjmuje sygnały o niższym napięciu, a z drugiej – o wyższym. „Tłumaczy” więc komunikację między 3,3V a 5V. Podłącza się do niego zasilanie obydwoma napięciami, masę i wejścia/wyjścia sygnałów. Musimy więc do złącza HV podłączyć 5V, do LV 3,3V, do GND masę. Natomiast HV1 i HV2 łączymy z RX i TX po stronie MAX232, a LV1 i LV2 z RX i TX po stronie Raspberry Pi.

Od strony technicznej połączenie mamy już gotowe. Pozostaje sprawdzić czy INT-RS działa w funkcji 2 (dip-switch nr 5 przełączony na 1) oraz czy w centrali Integra ustawiony jest monitoring. W razie wątpliwości jak to zrobić, zawsze można zajrzeć do dokumentacji modułu INT-RS.

Od strony Raspberry Pi (przynajmniej przy Rasbpianie) trzeba natomiast wyłączyć połączenie konsoli na porcie szeregowym. W tym celu należy w /etc/inittab zakomentować lub usunąć linię:

T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

Port szeregowy, połączony z Integrą, jest widoczny od strony systemu jako /dev/ttyAMA0. Dla funkcji drugiej, której używamy do integracji, parametry portu to 19200/8/1/N.

Pozostaje zastanowić się, jaki język będzie właściwy do komunikacji. Bardzo kuszące wydaje się zaprzęgnięcie do działania Nodejs. I właśnie tę opcję obecnie testuję. Póki co działa bardzo stabilnie. Rozwiązanie ma tę zaletę, że w przyszłości będzie łatwo rozbudować je np. obsługę websocketów i np. prezentować przez przeglądarkę www w czasie rzeczywistym stan czujek ruchu w domu.

Zapewne w przyszłości opiszę więcej o oprogramowaniu. W tej chwili, dla testu, uruchomiłem włączanie taśm LED pod szafkami w kuchni po wykryciu ruchu przez czujki systemu alarmowego. Działa dobrze, więc zakładam, że w przyszłości rozbuduję system o kolejne funkcje.

Reklamy

3 Responses to Połączenie Satel Integra z Raspberry Pi

  1. Pluto says:

    Jakiś czas temu opanowałem komunikacje z Intergrą, ale robiłem to przez Ethernet. Niestety wszelkie pobieranie danych odbywa się poprzez wysłanie zapytania, więc by mieć live informacje n.t. stanu czujek trzeba ciągle odpytywać na każdy stan strefy, wyjścia. Na szczęście jest jedna komenda, która zwraca info o tym co się zmieniło, w sensie, że nie zwraca nam info, które stany się zmieniły (naruszenie wejścia, uzbrojone wejście itd.) i wtedy wiemy o co zapytać danej by poznać szczegóły. Niemniej jednam nadal trzeba co chwila wysyłać zapytanie by mieć aktualne info, sama centrala nam tych danych nie wyśle.
    Zastanawiam się jak bardzo takie zapytania obciążają kontroler centrali i czy to nie ma negatywnego wpływu na bieżące działanie.

    • techniczny says:

      Ja mam w planach pytać cyklicznie, wyłącznie o wyjścia. Stanem wyjść wirtualnych można przekazać wszystkie interesujące rzeczy.

  2. Glencek says:

    Zastanawiam się, czy naprawdę potrzebny jest INT-RS w przypadku gdybym chciał wpiąć się w port RS-232 na płycie głównej INTEGRA? Zwykle wpina się tam (poza innymi urządzeniami) ETHM-1 i można by stamtąd brać dane. DLOAD (co oczywiste) i GUARDX komunikują się z płytą przy pomocy tego portu. Pytanie brzmi czy ten port (rs-232) obsługuje np. protokół INT-RS w pewnym konkretnym trybie ( brak dip switch ).

    Ktoś… coś… ? 🙂

    Pozdrawiam

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s

%d blogerów lubi to: