ropam neogsm-ip, domoticz, api

2021-08-03 Update: aktualna wersja projektu dotępna jest tu: https://github.com/tjaworski997/X.RopamNeo

Postanowiłem zainstalować w domu alarm:-)

Cel?

Zabezpieczenie mieszkania przy poniższych założeniach:

  1. NAJWAŻNIEJSZE – Alarm ma być niezależny od domowego systemu zarządzania, DOMOTICZ nie działa – alarm działa
  2. Alarm ma pozwolić na wykorzystanie podłączonych pirów, innych czujników w systemie DOMOTICZ (analiza ruchu, zarządzanie oświetleniem)
  3. DOMOTICZ / HOME ASSISTANT  powinien umieć sterować wyjściami OUT alarmu
  4. DOMOTICZ / HOME ASSISTANT powinien umieć uzbroić/rozbroić  alarm – głównie chodzi o włączenie alarmu dla strefy nocnej (mój manipulator będzie przy drzwiach wejściowych, więc chcę móc załączać alarm nocny innym urządzeniem – np. switch XIAOMI)
  5. DOMOTICZ / HOME ASSISTANT powinien wiedzieć kiedy alarm jest uzbrojony – po uzbrojeniu powinien umieć wyłączyć urządzenia typu telewizor, żelazko, amplituner ..

Wstępne rozpoznanie urządzeń wskazało na SATEL INTEGRA 32 + ETHM1plus (400pln) + dedykowany kabel dedykowany połączeniowy (40 pln).
Wszyscy polecają, wszyscy go mają, działa z DOMOTICZ.

Poszukałem innych rozwiązań dostępnych na rynku i postanowiłem zaryzykować – bo spodobały mi się możliwości systemu ROPAM NEOGSM-IP – a tak będąc do końca szczerzy zostałem lekko ukierunkowany przez dobrego sprzedawcę, który zapewniał, że powyższe cele osiągnę właśnie z tym urządzeniem.

Jako, że nie jestem instalatorem, samo podłączenie urządzenia zajęło mi trochę czasu. Traktuję to jako zabawę połączoną z nauką,  więc czas na pewno nie uważam za zmarnowany.

Po kilku próbach, udało się skonfigurować urządzenie z jednym pirem, syreną i kartą GSM. Poniżej schemat który mi mocno pomógł, może kiedyś pomoże i Wam.

Pozostała kwestia integracji z DOMOTICZ.

Niestety na forum firmy ROPAM (link) możemy dowiedzieć się, że z tą centralką integracja nie jest możliwa.
Stwierdzenie “coś jest nie możliwe” jest mocno motywujące, tak więc wykorzystując jedną z moich ulubionych technik czyli Reverse Engineering postanowiłem mimo wszystko dokonać integracji.

Udało się.

W poniższym linku udostępniam program pozwalający na integrację systemu ROPAM NEOGSM-IP i DOMOTICZ HOME ASSISTANT i pewnie też z OPENHAB którego nie znam.

ropam-neogsm-domoticz-homeassistant-integrator

Program potrafi pracować jako usługa lub aplikacja konsolowa. Został napisany w technologii Microsoft .NET, ale, że zarówno ja, jak i większość z użytkowników systemu DOMOTICZ / HOME ASSISTANT korzysta z rozwiązania opartego o system LINUX, Raspberry … postanowiłem go uruchomić właśnie w tym środowisku.

I po raz kolejny udało się:-)

Poniżej kroki które należy uczynić by aplikacja zadziała na Raspberry:

  1. Instalujemy środowisko MONO (użyłem pełnej wersji, bo będę się jeszcze mocniej bawił)
    sudo apt-get install mono-complete
  2. Instalujemy MONO-SERVICE
    sudo apt-get install mono-4.0-service
  3. Pobieramy pliki programu do integracji z tego linka: ropam-neogsm-ip-dmoticz-intergracja
  4. Wrzucamy pobrane pliki (po rozpakowaniu) do docelowego katalogu (u mnie /home/pi/@scripts/neo/)
  5. Tworzymy plik uruchamiający usługę w katalogu naszego programu
    sudo nano xneoapi.sh

    Zawartość pliku:

    #!/bin/bash
    cd /home/pi/@scripts/neo/
    sudo mono-service -l:/var/run/lock/xneoapi.lock /home/pi/@scripts/neo/xneoapi.exe
    
  6. Nadajemy uprawnienia do uruchamiania skryptu
    sudo chmod +x xneoapi.sh
  7. Edytujemy plik /etc/rc.local wpisując:
    sudo nano /etc/rc.local
  8. Dodajemy poniższy wpis odpowiedzialny za automatyczne uruchamianie naszej usługi po restarcie Rasberrergo
    sudo /home/pi/@scripts/neo/xneoapi.sh
    
    

Pozostaje jeszcze kwestia integracji programu.

  1. Parametry pracy programu – plik xneoapi.exe.conf

     

    <applicationSettings>
    <X.NEO.API.Properties.Settings>
    <setting name="WebServerPrefix" serializeAs="String">
    <value>http://localhost:7999/</value>
    </setting>
    <setting name="NeoGsmDeviceIp" serializeAs="String">
    <value>192.168.1.100</value>
    </setting>
    <setting name="NeoGsmDevicePort" serializeAs="String">
    <value>9999</value>
    </setting>
    <setting name="NeoGsmMainBoardId" serializeAs="String">
    <value>1500067240999999</value>
    </setting>
    <setting name="NeoGsmUserCode" serializeAs="String">
    <value>1234</value>
    </setting>
    <setting name="NeoGsmTcpCode" serializeAs="String">
    <value>dac281bf43999999</value>
    </setting>
    <setting name="RunAsService" serializeAs="String">
    <value>False</value>
    </setting>
    <setting name="Simulation" serializeAs="String">
    <value>False</value>
    </setting>
    </X.NEO.API.Properties.Settings>
    </applicationSettings>
    

    Parametry związane z urządzaniem NeoGsm nie będę omawiał a pozostałe to:

    WebServerPrefix – prefixy dla naszego API, pod tymi adresami dostępne będzie API i strona informacyjna – jeżeli bedzie to kilka interfejsów, oddzielamy średnikami
    RunAsService – czy usługa będzie uruchomiona jako serwis czy jako aplikacja konsolowa [True|False]
    Simulation – odpala aplikacje w trybie symulacji, działa tylko WebServer bez połączenia z centralką alarmową [True|False]

  2. Parametry powiadomień systemów zewnętrznych (np. DOMOTICZ / HOME ASSISTANT)  – znajdują się w pliku notification.xml – tam raczej wszystko jest jasne, jeśli nie proszę o informację zwrotną.
    <?xml version="1.0" encoding="utf-8"?>
    <Notification xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Inputs>
    <NotificationInput>
    <Id>0</Id>
    <OnActivate>http://192.168.1.101:8080/json.htm?type=command&param=udevice&idx=236&svalue=1</OnActivate>
    <OnDeactivate>http://192.168.1.101:8080/json.htm?type=command&param=udevice&idx=236&svalue=0</OnDeactivate>
    </NotificationInput>
    </Inputs>
    <Zones>
    <NotificationZone>
    <Id>0</Id>
    <OnArm>http://user:password@192.168.0.1:8080/json.htm?type=command&param=udevice&idx=3&svalue=0</OnArm>
    <OnDisarm>http://user:password@192.168.0.1:8080/json.htm?type=command&param=udevice&idx=3&svalue=1</OnDisarm>
    </NotificationZone>
    </Zones>
    </Notification>
  3. Parametry logowania zdarzeń znajdują się w pliku NLOG.config – instrukcja jak go modyfikować znajduje się pod adresem: https://nlog-project.org/

Po uruchomieniu aplikacji, pod adresem wskazanym w parametrze WebServerPrefix dostępna będzie strona API.

Aplikacja jest w wersji mocno rozwojowej – najnowsza jej wersja działa już produkcyjnie ale czekam na Wasze pytania, propozycje modyfikacji.

20 Komentarze

  1. Witaj,
    Próbowałem uruchomić Twój program – niestety nie jestem pobrać żadnego statusu.
    Centrala mówi mi, że się połączyłem ale to i tak nic nie zmieniło. Poniżej log z działania aplikacji:
    20200119_155424 Info:Logowanie, próba 14
    20200119_155424 Info:ReceiveFrame [4]
    20200119_155424 Info:Łączę się z 192.168.1.134:9999 via IPV4
    20200119_155424 Info:TryLogin [2]
    20200119_155426 Info:Probem z podłączeniem ….
    20200119_155426 Info:Error: The operation has timed out.
    20200119_155426 Info:Czekam 3[s] …
    20200119_155429 Info:Łączę się z 192.168.1.134:9999 via IPV4
    20200119_155431 Info:Probem z podłączeniem ….
    20200119_155431 Info:Error: The operation has timed out.
    20200119_155431 Info:Czekam 3[s] …
    20200119_155434 Info:Łączę się z 192.168.1.134:9999 via IPV4
    20200119_155436 Info:Probem z podłączeniem ….
    20200119_155436 Info:Error: The operation has timed out.
    20200119_155436 Info:Czekam 3[s] …
    20200119_155439 Info:Łączę się z 192.168.1.134:9999 via IPV4
    20200119_155439 Info:Logowanie
    20200119_155439 Info:Logowanie C1
    20200119_155440 Info:Logowanie C2
    20200119_155440 Info:Logowanie C3
    20200119_155440 Info:LoginCentral [1]
    20200119_155440 Info:TryLogin [1]
    20200119_155440 Info:SendFrame[1]
    20200119_155440 Info:Frame.ToBytes()[1]
    20200119_155440 Info:Frame.ToBytes()[2]
    20200119_155440 Info:SendFrame[1.1]
    20200119_155443 Info:ReceiveFrame [1]
    20200119_155443 Info:TryLogin [2]
    20200119_155443 Info:LoginCentral.ok
    20200119_155443 Info:LoginCentral [2]
    20200119_155443 Info:LoginCentral [1]
    20200119_155443 Info:TryLogin [1]
    20200119_155443 Info:SendFrame[1]
    20200119_155443 Info:Frame.ToBytes()[1]
    20200119_155443 Info:Frame.ToBytes()[2]
    20200119_155443 Info:SendFrame[1.1]
    20200119_155443 Info:ReceiveFrame [1]
    20200119_155447 Info:ReceiveFrame [1]
    20200119_155447 Info:TryLogin [2]
    20200119_155447 Info:LoginCentral.ok
    20200119_155447 Info:LoginCentral [2]
    20200119_155447 Info:LoginCentral [1]
    20200119_155447 Info:TryLogin [1]
    20200119_155447 Info:SendFrame[1]
    20200119_155447 Info:Frame.ToBytes()[1]
    20200119_155447 Info:Frame.ToBytes()[2]
    20200119_155447 Info:SendFrame[1.1]
    20200119_155447 Info:ReceiveFrame [1]
    20200119_155447 Info:ReceiveFrame [1]
    20200119_155447 Info:TryLogin [2]
    20200119_155447 Info:LoginCentral.ok
    20200119_155447 Info:LoginCentral [2]
    20200119_155448 Info:Logowanie C4
    20200119_155448 Info:Problem z logowaniem, czekam 3 [sek] …
    20200119_155451 Info:Logowanie, próba 15
    20200119_155451 Info:Łączę się z 192.168.1.134:9999 via IPV4

  2. Witaj,
    Dzięki za odpowiedź. Jak wpisywałem specjalnie źle w konfiguracji to od razu widziałem w logu zakończenie połączenia i info o błędnym loginie. Natomiast jak już pisałem na panelu dotykowym widzę, że nawiązano połączenie z centralą z adresu z którego uruchamiam program.
    Czy jest możliwość ustawienia większego poziomu logowania ?
    Z góry dziękuje za pomoc
    Jaqb

  3. Witaj,

    Bardzo zaciekawił mnie Twój program do komunikacji z NeoGSMip. Czy byłaby możliwość udostępnienia dokumentacji api lub samych kodów źródłowych? Rozczarowałem się aplikacją ROPAM’a na androida do centrali NeoGSMip, chcę więc na własne potrzeby napisać coś bardziej użytecznego.

    Z góry dziękuję za pomoc
    Krzysiek

  4. Witam.
    Jako że powoli zaczynam zabawę z HA, a w domu mam zainstalowany system oparty na NeoGSM-IP, to właśnie jestem na etapie próby zintegrowania alarmu z HA. Pobrałem archiwum z punktu nr 3 “ropam-neogsm-ip-dmoticz-intergracja”, poustawiałem parametry w pliku konfiguracyjnym, uruchomiłem aplikację jako admininstrator, a tu w logach aplikacja zaczyna łączyć się nie z moją centralą a z jakąś centralą której IP to “foo.xview.pl” na porcie 5003 i z jakimś innym hasłem oraz ID centrali.
    Na drugi ogień poszło archiwum z początku opisu nazwane jako “ropam-neogsm-domoticz-homeassistant-integrator” i po skonfigurowaniu parametrów centralki po uruchomieniu aplikacji dostaję że zalogowani pomyślnie do centrali ane na getstatus mam brak danych”.
    Czy coś robię nie tak? (parametry centralki oczywiście na 100% poprawne, system Windows 10 a docelowo hass.io)

Dodaj komentarz

Twój adres email nie zostanie opublikowany.


*