Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Domoticz, sterowanie przez ULR

starob 22 Sep 2020 20:30 1224 22
Optex
  • #1
    starob
    Level 28  
    Steruje przełącznikiem w domoticzu przez wywołanie w przeglądarce
    Code: html
    Log in, to see the code

    command & param wpisuje poprawnie - proszę nie zwracać uwagi, że powyżej jest źle :)

    i to działa, działa również to samo wywołanie jako "event" w domofonie.
    Chciałem zapalać swiatło przed domem również za pomocą kamery jako "motiondetection".
    Gdy w kamerze jako event wpisuje to samo,kamera się czepia o znak "&" jako niedozwolony.
    Poczytałem i zmnieniłem na
    http:\\192.168.2.19:8080/json.htm?type=command%26param=switchlight%26idx=20%26switchcmd=On

    co zgodne jest z dokumentacją Domoticza, jednak z kamery ani z przeglądarki nie działa.
    Może ktoś doradzi jak to obejść?
  • Optex
  • #3
    starob
    Level 28  
    Dokładnie...nie działa żaden %
  • Optex
  • #5
    starob
    Level 28  
    Vivotek IB836, email, ftp.
    Można ustawić wyjście jako event i odpytywać status, ale to nie eleganckie rozwiązanie
  • Helpful post
    #6
    xury
    Automation specialist
    Ok rozumiem, że masz Domoticz. Czy także masz postawione Node-Red oraz korzystasz z MQTT na tej samej maszynie co Domoticz? Jeśli tak to mam już opracowane rozwiązanie twojego problemu.
    [edit]
    W zasadzie mqtt nie potrzebne ale Node-Red niezbędne.
  • #7
    starob
    Level 28  
    xury wrote:
    Node-Red oraz korzystasz z MQTT na tej samej maszynie co Domoticz?

    To jest warunek konieczny?.. mam gdzieś postawiony na próbę, ale nigdy nie było potrzeby z tego korzystać.
    Dawno to było ale pamiętam, że działało.
    Jakoś tak wyszło, że wolę pisać własne wtyczki.
  • Helpful post
    #8
    xury
    Automation specialist
    Ok to myślę, że dasz sobie radę. Skoro sam piszesz wtyczki to może zrozumiesz zasadę i przerobisz sobie inaczej. A Node red warto mieć, bo to mega potężne narzędzie. Dzięki node red jestem w stanie zintegrować wszystko z wszystkim.
    A więc tak:
    Node red ma być postawione i uruchomione.
    Importujesz mój flow i robisz deploy. I to w zasadzie tyle.
    Zasada działania jest taka, że kamerka wysyła event do node-red, a node-red odsyła do domoticza
    W kamerce zamiast url do API domoticza wpisujesz: http://192.168.2.19:1880/starob
    Czyli najprostszy z możliwych url. Kamerka go przyjmie na bank.
    A oto flow, który masz zaimportować:
    Code: json
    Log in, to see the code
  • #9
    starob
    Level 28  
    Dziękuje kolego za pomoc :)

    Jak dla mnie to duża pomoc.
    Stan wody na wiśle jest taki:

    1. Zainstalowałem node-red na synology jako docker - działa.
    2. Na tym samym synology jako wirtualna maszyna debian (domotycz)
    3. Utworzyłem flow -działa.
    4. Ze strony przeglądarki steruje.
    5. Ten sam skopiowany adres wpisany do kamery nie działa

    Wnioski są takie, że jest jakiś bug w samej kamerze.
    Gdy wpisuje ze strony to debug rejestruje msg.payload - z kamery cisza.
    Kamerka ma przycisk test połączenia z serwerm i gdy próbuje np. jakąś stronę (http://192.168.2.19:8080/#/Weather lub http://192.168.2.19:8080) -HTTP transmission succeeded.
    Już wywołania http://192.168.2.145/html/ - HTTP transmission failed , gdzie powyższe adresy ze przeglądarki działają normalnie.

    Czegoś ??? kamera zwrotnie oczekuje
  • #10
    xury
    Automation specialist
    Niestety nie mam takiej kamery, więc nie mogę za bardzo pomóc. Swoją drogą to dziwne, bo kamera powinna wysłać zapytanie nawet pomimo tego że nie otrzymuje odpowiedzi. Chociaż odpowiedź jest. Po to właśnie jest ta pseudo stronka z nagłówkiem. Być może nie działa metoda GET I trzeba spróbować z POST. Możliwe też że kamera nie może mieć pustego parametru. Spróbuj zamienić /starob na np. /starob?move=on Jak nie pomoże to wieczorem coś się wymyśli.
  • #11
    starob
    Level 28  
    Zmiana na POST działa :)

    Można by rzec, że problem rozwiązany. Jednak nadal tego nie czuje i muszę się jeszcze poduczyć.
    Zmieniałem wcześniej na macanego na POST ale próby robiłem z przeglądarki i nie działało, stąd ta zmyłka.

    Co i gdzie musiałbym jeszcze doinstalować aby mieć "bramkę" MQTT do obsługi kolejnych urządzeń.
  • #12
    xury
    Automation specialist
    Jak zaczniesz zabawę z Node-Red i w pełni zrozumiesz jego potęgę i potencjał, to już zostaniesz z tym na zawsze.
    Np. możesz wykorzystać kamerę i komunikator telegram do wysyłania krótkich filmików z przed domu kiedy ktoś zadzwoni do furtki. Zerknij na link do tematu w moim podpisie.
    Do grubszej zabawy musisz opanować także MQTT, które stało się niejako postawą IoT.
  • #13
    starob
    Level 28  
    xury wrote:
    Zerknij na link do tematu w moim podpisie


    Widziałem już wcześniej - kawał dobrej roboty. :spoko:

    Też popełniłem kilka integracji - dla mnie działają ale są tak rozpaprane, że wstyd publikować ;) :
    -stacja pogody Ventus W266 - bramka RF869MHz <> mysensors (ESP8266)
    -kocioł Viessman - bramka optolink <> mysensors (ESP8266)
    -sterownik nawadniania - własna konstrukcja (ESP8266)
    -inwerter Sofar Solar (modbus)
    -licznik energi SMD630 (modbus)
    -audio player iEAST

    Dodano po 2 [minuty]:

    xury wrote:
    kiedy ktoś zadzwoni do furtki

    Mam bramofon video więc rozwiązane jest to systemowo.
  • #14
    starob
    Level 28  
    xury wrote:
    Do grubszej zabawy musisz opanować także MQTT, które stało się niejako postawą IoT.


    Przekonałeś mnie!!! ;)

    Na początek przerobiłem Twój flow aby włączać światło przez MQTT
    Domoticz, sterowanie przez ULR

    Przeglądam przykłady i nie wygląda to na takie trudne jak się wcześniej wydawało.
  • Helpful post
    #15
    xury
    Automation specialist
    No i ładnie. Wystarczy trochę opanować JavaScript to wtedy node Function robi niesamowitą robotę. Kolejne przydatne elementy to zapamiętywanie danych dzięki context,flow, global. Następnie można się brać za Dashboard I zapomnieć o paskudnym GUI Domoticzu. A dzięki MQTT można uzyskać o wiele więcej informacji np. z urządzeń opartych na Tasmota.
    Ja w ogóle nie używam zakładki Domoticz w Tasmota. Wszystkie potrzebne dane pobieram z MQTT i posyłam na domoticz/in. Z kolei z domoticz/out zbieram informację zwrotną i jestem pewien zadziałania.
    Generalnie uniwersalność Node-Red polega na tym że w łatwy obrazowy sposób może pracować jako pośrednik wymiany danych, a także jako ich kreator. Dzięki dodatkowym doinstalowanym node można obsługiwać inne urządzenia takie jak np Xiaomi, różne bramki np własnej roboty milight hub itd. Można posłać dane do bazy np. MySQL, Influxdb itp
    Można robić wykresy, automatyzację, itd. Można przenosić dane między różnymi flow'ami. Można obsługiwać modbusa, knx, serial usart itd. A co najlepsze zużywa niewiele zasobów.
    Ja jestem w trakcie przechodzenia na Home Assistant i właśnie dzięki node red to HA nie gryzie się z Domoticzem działając jednocześnie. Przekazując sobie dane nawzajem.
  • #16
    starob
    Level 28  
    xury wrote:
    Ja jestem w trakcie przechodzenia na Home Assistant i właśnie dzięki node red to HA nie gryzie się z Domoticzem działając jednocześnie.

    Też mi to chodziło po głowie, ale nie wiedziałem jak pogodzić częściowe przenoszenie urządzeń do HA.
    Czy jest możliwość (nie pytam o szczegóły) przenoszenia kolejnych czujników i całej automatyzacji do node-red bez naruszania funkcjonalności domoticz? Robiąc to etapami do takiego stanu aby domoticz działał jako "terminal" tylko z jednym urządzeniem "MQTT -Client"

    "Andrzej kiedyś to j..nie" :)
  • #17
    xury
    Automation specialist
    Tak jest, ale to już zależy od czujników jak się komunikują z Domoticzem. Najwygodniej byłoby po prostu zostawić Domoticz i niech sobie działa. Włączyć MQTT loop i zbierać dane do HA od Domoticza poprzez domoticz/out.
    Z tym że trzeba uważać by nie zapętlić Domoticza. U mnie są to wyrafinowane rozwiązania. Prostrzy sposób to użycie node RBE która przepuści payload z odmiennym stanem, a jeśli jest taki sam to go zatrzyma. Czasem jak popatrzę na moje flow'y to stwierdzam że się zatraciłem w swojej radości loopowania.
    W wolnej chwili jak się upewnię że wyczyściłem moje flow'y z kluczy API i innych wrażliwych danych, to udostepnię je tu na elektrodzie. Są dosyć skomplikowane i trzeba by je ogarniać etapami po fragmencie. Dodatkową trudnością jest to że starałem się tak robić moj cały ekosystem, by nawet w wypadku awarii serwera posiadał nadal podstawową funkcjonalność czyli sterowanie ręczne wyłącznikami i ogrzewaniem.
  • #18
    starob
    Level 28  
    Na razie dzięki - muszę trochę ogarnąć temat, choćby po to aby zrozumieć o czym piszesz.
  • #19
    starob
    Level 28  
    xury wrote:
    Najwygodniej byłoby po prostu zostawić Domoticz i niech sobie działa.


    Tak też zrobiłem. Jednak nie udostępniam domotycza przez mqtt (narazie)
    Na początek:
    1. zmieniłem rodzaj jednej z bramek mysensors z Lan na MQTT, sterującej osprzętem oczka wodnego. Postawione jest to na Sonoff 4ch.
    2. zmieniłem w urządzeniach domotycz tylko rodzaj bramki na mqtt. Dzięki temu niczego nie straciłem.
    3. W HA dodałem
    Code:

    mysensors:
      gateways: 
        - device: mqtt
    #      persistence_file: 'config/mysensors1.json'
          topic_in_prefix: 'oczko-out'
          topic_out_prefix: 'oczko-in'
        - device: mqtt
    #      persistence_file: 'config/mysensors1.json'
          topic_in_prefix: 'ventus-out'
          topic_out_prefix: 'ventus-in'     
      optimistic: false
      persistence: true
      retain: true 


    dzięki temu ( tak mi się wydaje) oba systemy działają równolegle i nawzajem się aktualizują. Dlaczego mysensors? - dla początkującego łatwiej jak urządzenia dodają się automatycznie.

    3. W node-red zrobiłem prostą automatyzaję zabezpieczającą przed suchobiegiem lampy UV.

    Podobnie zrobiłem ze stacją pogodową, nie podoba mi się tylko brak kompasu wstazującego kierunek wiatru (stopnie są mało czytelne).

    Problem mam z rflink, który udostępniam dla HA przez ser2net na porcie.
    Generalnie działa, ale przez noc złapał wszystkie urządzenia na 433Mhz w okolicy.

    Może poradzisz jak w node podłaczyć się do seriala rflinka za pomocą IP:port (jak odczytać seriala przez IP:PORT?).
    Docelowo wymyśliłem, że przefiltruje tylko te co mnie interesują i je udostępnie przez mqtt do HA.

    ps. co to jest ten add-on MQTT w HA, do czego służy - nie instalowałem tego a działa?
  • #20
    starob
    Level 28  
    starob wrote:
    Może poradzisz jak w node podłaczyć się do seriala rflinka za pomocą IP:port (jak odczytać seriala przez IP:PORT?).


    Ogarnąłem - poprzez "TCP in node".
    Początkowo nie działało z powodu tego, że Ser2Net popuszczał jedno połączenie. W tej chwili jestem na etapie publikacji tematów.

    Domoticz, sterowanie przez ULR

    Zastanawiam się czy temat RFLink/out/<unikatowe ID czujnika> będzie dobrym rozwiązaniem.

    Teraz muszę popracować nad "msg.payload", na obecnym poziomie wiedzy jest na razie bezużyteczyny... ale jest :)
    Wcześniej jednak spróbuje serwować rflinka przez podłączenie do routera Mikrotika.
    Obecnie Ser2Net przy dwóch klientach gubi wiadomości.
  • #21
    xury
    Automation specialist
    Spójrz na https://flows.nodered.org/node/node-red-contrib-rflink
    Przyszła pora na parsowanie msg.payload
    Nie jest to trudne. Ja posiłkowałem się kursjs.pl dla super bohaterów.
    Pisałeś skrypty w innych językach. Wyciąganie danych z msg.payload jest podobne.
    Poszukaj też przykładów oraz gotowych node na https://flows.nodered.org/
  • #22
    starob
    Level 28  
    Próbowałem wcześniej - bezskutecznie - powód to pech, że do prób wybrałem czujnik z nazwą zawierającą spacje.
    "Rflink in" tego nie kupje. Funkcja "Parse message" nic wielkiego nie robi tylko zamienia spację na "_" i to wystarczyło.

    Domoticz, sterowanie przez ULR

    Można udostępnić w sieci rflinka za pomocą routera Mikrotik z USB lub RS z przejścówką, niestety tylko jedno połączenie - może się komuś przyda.
    Domoticz, sterowanie przez ULR

    Domoticz, sterowanie przez ULR

    Na dzisiaj wystarczy ;)
  • #23
    starob
    Level 28  
    Postęp jest znaczny. Przeniosłem już większość urządzeń do HA.

    Utknąłem na odczycie stanu czujki otwarcia drzwi z centralki alarmowej w node-red.
    Centrale Satel mam już zintegrowaną z HA i stany czujek są włąściwe.
    Próbowałem node-red-contrib-home-assistant (wszystkie trzy) jednak jest problem z autoryzacją ( generowałem nowe tokeny) - czegoś nie wiem?! Poradniki w necie nijak nie przystają do tego co jest u mnie.

    .. inny pomysł:
    Czy jest jakiś sposób aby opublikować stan czujki w temacie MQTT, albo nawet wszystko jak leci - podobnie jak w domoticz?