Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Przydatne skrypty dla Domoticza. Dzvent''''s, LUA, Node Red itp.

xury 03 Feb 2019 10:58 22758 27
Optex
  • #1
    xury
    Automation specialist
    Pomyślałem sobie, że warto dzielić się użytecznymi skryptami dla Domoticza więc będę tu wstawiał swoje skrypty. Zachęcam też innych by dzielili się swoimi skryptami tutaj.
    Oto mój pierwszy skrypt. Jest to skrypt DzVents, który steruje lampą w moim pokoju.
    Lampa jest podłączona do Sonoff Basic i jest sterowana poprzez czujnik PIR Integry.
    Lama zapala się tylko jeśli wykryje ruch w nocy i działa do dwóch minut po wykryciu ostatniego ruchu. W dzień lampa nie jest sterowana PIRem tylko manualnie poprzez panel switchy domoticza.
    Oczywiście nazwy trzeba sobie dostosować do swoich potrzeb.
    Code: lua
    Log in, to see the code


    Kolejny skrypt wysyła informacje o stanie pracy kotła gazowego do bazy danych Influxdb. Informacje są pobierane poprzez pośrednictwo centrali Satel Integra, której wejście jest podłączone do wyjścia w kotle De Dietich MCR II.
    Code: lua
    Log in, to see the code


    Mamy trzy PZEM004t i chcemy mieć wszystkie trzy wartości prądu na jednym wirtualnym oraz wykres prądu z trzech faz:
    Code: lua
    Log in, to see the code


    Podobnie jak powyżej z tych samych mierników PZEM004t chcemy zsumować całkowite zużycie energii z trzech faz.
    Code: lua
    Log in, to see the code
  • Optex
  • #2
    xury
    Automation specialist
    Mając przycisk dzwonka i kamerę skierowaną na furtkę możemy się pokusić o podgląd na smartfonie kto dzwoni nam u furtki.
    By to zrealizować potrzebujemy mieć aplikację Telegram oraz dwa skrypty:
    Jeden to linuksowy skrypt bash'a ,a drugi to skrypt dzvents, który uruchamia ten pierwszy po naciśnięciu przycisku dzwonka:
    Pierwszy skrypt zapisujemy np. w /home/pi/domoticz/scripts/ oczywiście nadając prawa do wykonywania:
    Code: bash
    Log in, to see the code

    Dodatkowo musimy mieć zainstalowane ffmpeg - czyli instalujemy:
    Code: bash
    Log in, to see the code
    na raspberry lub innym sprzęcie gdzie mamy domoticza.
    Drugi skrypt to już natywny skrypt dzvents Domoticza:
    Code: lua
    Log in, to see the code

    Kiedy wszystko poprawnie wykonamy, to w momencie naciśnięcia dzwonka powinno dotrzeć powiadomienie push na Telegram z pięciosekundowym filmem z wybranej kamery.
    Zakładam, że aplikacja Telegram oraz jej ID i APIkey jest skonfigurowane poprawnie.

    Kolejny skrypt steruje oświetleniem w garażu, korzystając z czujnika PIR oraz kontaktronu zamontowanego na bramie segmentowej:

    Code: lua
    Log in, to see the code

    Działanie jest takie:
    Kiedy brama garażowa zacznie się otwierać, to kontaktron zostanie naruszony i jeśli pora dnia mieści się w ustawionym przedziale, to zapala się światło na elemencie wykonawczym ( u mnie to przekaźnik na ESP-01). Jeśli czujnik PIR nie wykryje ruchu to światło zgaśnie po około 10 minutach. Zgaśnie również, kiedy brama się zamknie i kontaktron zostanie zwarty.
  • #3
    igorrr
    Level 15  
    Trzeba instalować aplikację Telegram na RPI? Tam mam zainstalowany Domoticz.
  • #5
    xury
    Automation specialist
    Kolej teraz na skrypt Node-Red. Podaję do Domoticza aktualne statystyki coronawirusa dla Polski.

    Przydatne skrypty dla Domoticza. Dzvent''''s, LUA, Node Red itp.
    Code: json
    Log in, to see the code

    Możliwa jest też zmiana kraju.
    Domoticz trzeba stworzyć 3 sztuki dummy custom sensor.
    Oczywiście IDXy trzeba zmienić na swoje.
    Przydatne skrypty dla Domoticza. Dzvent''''s, LUA, Node Red itp.
  • #6
    xury
    Automation specialist
    Kolejny fajny skrypcik napisałem dla sterowania telewizorem z Android TV.
    Dokladnie to model TCL 65EP640. Myślę jednak, że będzie działać niemal z każdym oraz z różnymi TV BOXami.
    Do działania potrzeba włączyć tryb programisty i debugowanie USB. Każdy musi sobie znaleźć samemu jak to zrobić w swoim TV.
    Debugowanie USB musi być załączone by połączyć się przez TCP dzięki używając adb ( android debug bridge). Adb serwer sobie trzeba zainstalować.
    Połączenie przez kabel USB nie jest potrzebne. Podany flow to przykład sterowania ręcznego i poprzez node nora, która umożliwia sterowanie głosem.

    Przydatne skrypty dla Domoticza. Dzvent''''s, LUA, Node Red itp.
    Code: json
    Log in, to see the code
  • Optex
  • #7
    xury
    Automation specialist
    Wyświetlanie tekstu na obrazie kamery lub rejestratora Hikvision
    Od dłuższego czasu mam zrobiony podgląd temperatury czujników zewnętrznych wyświetlane na obrazie kamery Hikvision.
    Wygląda to mniej więcej tak:
    Przydatne skrypty dla Domoticza. Dzvent''''s, LUA, Node Red itp.
    Jak widać w prawym dolnym rogu wyświetlana jest temperatura z czujników ds18b20 podłączonych do esp8266.
    Potem za pomocą Node-Red dane temperatur przesłane są do kamery IP lub rejestratora i załączone do obrazu strumienia głównego.
    Poniższy prosty flow oparty o Hikvision ISAPI wysyła dane temperatur. Metoda ta może być wykorzystana np. do wysyłania z kasy fiskalnej, bądź z jakiegokolwiek innego źródła danych.
    Code: json
    Log in, to see the code

    W ustawieniach kamery IP lub rejestratora należy w menu Obraz Ustawienia OSD zaznaczyć ilość potrzebnych linii nakładanego tekstu.
    Pozycje tekstu można sobie dostosować w function node - tagi positionX i positionY.
    Dane temperatury u mnie są pobrane ze zmiennych globalnych twschod i tzachod i to wymaga dostosowania pod siebie. Można je np. wysłać przez payload. Wystarczy chwila nauki javascript.
    Za pomocą Hikvision ISAPI można zrobić o wiele więcej. Zainteresowanych odsyłam do poszukania w sieci sześciuset stronicowego pdf'a z opisem protokołu.
    [editowano]
    Otóż od teraz sprawa się dużo uprościła, bowiem na moją prośbę kolega
    Supergiovane dorobił node, które umie to robić znacznie prościej.
    Ma też o wiele inny fajnych funkcji:
    https://flows.nodered.org/node/node-red-contrib-hikvision-ultimate
  • #8
    ozogp
    Level 7  
    @xury bardzo fajny skrypt "aktualne statystyki coronawirusa dla Polski".
    Wszystko fajnie śmiga nie wiem dlaczego na ekranie podaję taką wartość jak poniżej, w urządzeniach też błędna ale za to w komunikatach node-red oraz w logach Domoticz jest poprawna wartość
    screen
    Przydatne skrypty dla Domoticza. Dzvent''''s, LUA, Node Red itp.
    log Domoticza:
    2021-08-29 22:01:59.591 MQTT: Topic: domoticz/in, Message: {"command":"udevice","idx":313,"nvalue":0,"svalue":"2888231"}
    Jakiś pomysł? Z góry dziękuję
  • #9
    Daro1003
    Level 23  
    Hej kolego @xury mam prośbę o skrypt dzVents nie mam pojęcia o ich tworzeniu i chyba nie będę miał bo jakoś nie wchodzi mi pisanie kodów lub nie trafiłem jeszcze na poradnik który by to dobrze tłumaczył od początku.

    Oświetlenie sterowane przez Sonoff 4Ch
    Wykrywanie ruchu z czujkę pir z Integry 128 plus - integracja zrobiona działa.

    Działanie skryptu:
    1. Czujka wykrywa ruch i zapala oświetlenie na ustalony czas każde kolejne naruszenie resetuje czas i liczy od nowa po upływie czasu jeśli czujka nie wykrywa ruchu światło gaśnie. Czyli coś jak w pierwszym Twoim skrypcie.
    2. Odpalam oświetlenie łącznikiem (dzwonkowym) lokalnym na ścianie lub z Domoticza i oświetlenie zapala się na ustawiony czas ale inny niż w punkcie 1 każde naruszenie czujki resetuje ten czas po upływie i bez naruszeń światło gaśnie.

    Kombinuję to na wejściach i wyjściach integry oraz blockly w domoticz ale słabo wychodzi.
  • #10
    ozogp
    Level 7  
    Witam @Daro1003 ,

    ad1. coś takiego powinno Ci pomóc, co pkt. 2 to nie za bardzo rozumiem sensu jego zastosowania.
    Code: lua
    Log in, to see the code
  • #11
    Daro1003
    Level 23  
    ozogp wrote:
    co pkt. 2 to nie za bardzo rozumiem sensu jego zastosowania.


    No właśnie mam takie pomieszczenia jak garaż, kotłownia, spiżarka garderoba, gdzie taki skrypt mi potrzebny u mnie przyzwyczajeni jesteśmy do używania łączników z starej tradycyjnej instalacji gdzie żona zapala łącznikiem a nie gasi i światło się świeci taki skrypt mi go zgasi po powiedzmy 10 minutach.
  • #12
    ozogp
    Level 7  
    Rozumiem, ale to właśnie Ci to załatwi.
    Jak Cię złapie czujka, to świeci 5 minut, jak włączysz przełącznik fizyczny i za chwilę Cię złapie czujka, też świeci 5 min, więc to Ci to ogarnia.
  • #13
    Daro1003
    Level 23  
    return {
    on = {
    devices = {'Garaż',
    'Czujka Pir'}
    },

    Tak mam podstawić pir i łącznik ?

    A nie da się tego ogarnąć na dwóch różnych czasach ?
  • #14
    ozogp
    Level 7  
    local PIR = domoticz.devices('PIR_M') - PIR_M - nazwa Twojej czujki ruchu
    local Lampa = domoticz.devices('S_M') - S_M - nazwa przełącznika który realizuje włączenie pożądanego odbioru światła

    Jakie oprogramowanie na Sonoff? Oryginalne, Tasmota, EspEasy?
  • #15
    Daro1003
    Level 23  
    Na Sonof AFE Firmware Wersja T0-3.0.2
    Ale spięte z Domoticz wszystko działa.
    Wolałbym dwa rożne czasy dla włączania przez czujkę krótszy dla przez przełącznik dłuższy.
  • #16
    ozogp
    Level 7  
    Z dwoma czasami Ci nie pomogę bo nie wiem jak to zrobić.

    local PIR = domoticz.devices('PIR_M') - PIR_M - nazwa Twojej czujki ruchu
    local Lampa = domoticz.devices('S_M') - S_M - nazwa przełącznika z Domoticz który realizuje włączenie pożądanego odbioru światła
  • #17
    Daro1003
    Level 23  
    Ok podziękował @ozogp za chęci Twój skrypt zapisze bo też jest ok i pewnie się przyda.
  • #18
    ozogp
    Level 7  
    @Daro1003 nie ma sprawy.
    Skrypt nie jest mój, ja dostosowałem go tylko do swoich potrzeb ale jak się przyda to się cieszę.
  • #19
    ozogp
    Level 7  
    Mam prośbę o pomoc, korzystam z poniższego skryptu, wszystko działa poprawnie.
    Światło się świeci, po naruszeniu czujki po zmierzchu na 10 min.
    Jednak potrzebuję modyfikacji, aby światło zapalało się na ruch czujki po zmierzchu:
    - ale w godzinach 00:00 do 6:00 gasiło się po 10 minutach,
    - od zmierzchu do 23:59 nie gasiło się samoczynnie tylko na przycisk

    Serdecznie proszę o pomoc w modyfikacji.
    Z góry dziękuję

    Code: lua
    Log in, to see the code
  • #21
    ozogp
    Level 7  
    @xury bardzo dziękuję, że odpisałeś.
    Niestety ten kod nie działa tak jakbym tego oczekiwał, owszem światło się włącza, ale nie wyłącza się automatycznie samo po x min i w podanych godzinach.
    Światło się świeci non stop.
    Przeglądałem dokumentację związaną z atrybutami czasowymi, wszystko wygląda na poprawne jak napisałeś @xury, ale coś nie działa.
    Nie mam pomysłu co jest źle.
  • #23
    joy
    Level 21  
    Czy możesz mi pomóc, potrzebuję skrypt, czujnik zmierzchu integra, plus 2 czujniki Pir zewnętrzne będzie trzeci. Sześć punktów świetlnych. Ma to działać tak, po zmroku po ostatnim naruszeniu np 2 minutach gaśnie całe oświetlenie oprócz LED przy drzwiach sterowanych w przedziale zmierzch-23, ale po tym czasie ma się zapalić razem z pozostałymi. Czy zapalenie i wygaszanie oświetlenia można zrobić sekwencyjnie, zapalanie to pewno od punktu najbliższego PIR.
  • #24
    ozogp
    Level 7  
    Dzień dobry,
    może ktoś podpowie, borykam się już z tematem od kilku dni, ale już nie mam pomysłu jak to wykonać w Domoticzu. Mam odczyt z licznika energii (L1) za pomocą RS485 i wtyczki Modbus RTU / ASCII / TCP/IP - READ v2020.2F - jest z tego Device i się ładnie wyświetla, ale chciałbym wstawić urządzenie Dummy Device jako licznik przyrostowy np energii nazwijmy go L2.
    Mam kłopot jak przekazać aktualną wartość L1 do L2, oczywiście L1 jest zmienne.
    Macie może jakiś pomysł jak to wykonać?
    Z góry dziękuję za pomoc.
  • #25
    xury
    Automation specialist
    Jaką dokładnie wartość potrzebujesz wyciągnąć?
    Code: lua
    Log in, to see the code

    To wklejamy do nowego skryptu dzvents minimal kasując wszystko co tam się pojawi po wybraniu. Nazwy muszą być takie same jak u ciebie. Ewentualnie zamiast nazw numery idx bez apostrofów.
  • #26
    ozogp
    Level 7  
    Dobry wieczór,
    @xury bardzo dziekuję za odpowiedź. Potrzebuje odczytać bieżące zużycie i przekazać do do nowego urządzenia Dummy Switch, które pokaże bieżącą wartość zużycia oraz zsumuje dobowo. Będzie to można zużycie oglądać w w Raportach - za konkretne miesiące, rok itd.
    Oczywiście mam grafanę ale to fajnie by było aby było wszystko w jednym miejscu.

    W kwestii Twojego kodu - wykonałem jak napisałeś ale wywaliło mi przy czytaniu zdarzeń dzVents w logach Przydatne skrypty dla Domoticza. Dzvent''''s, LUA, Node Red itp.
    i to w kółko mimo iż wywaliłem ze zdarzeń, zdysku. Miałem kopię Kontenera więc jakoś się udało. Ale coś nie pykło w tym kodzie.
  • #27
    xury
    Automation specialist
    ozogp wrote:
    przekazać do do nowego urządzenia Dummy Switch

    Chyba pomyliłeś urządzenia. Dummy Switch to przełącznik.
    Napisz dokładnie jakiego typu masz wirtualne sensory.
    Sensory w mim skrypcie
    'Użycie energii' - instant + counter
    'Licznik prądu' - counter
    Atrybut musi być zgodny z rodzajem sensora.
  • #28
    xury
    Automation specialist
    Flow, dzięki któremu można załadować dane z zamówionego raportu dziennego PGE do bazy influxdb. Flow odczytuje z pliku CSV dane o energii pobranej, oddanej i zbilansowanej. Raport można zamówić na stronie BOK PGE. Dostępny zakres od 1.04.2022 do 31.12.2022, daje to ponad 19000 rekordów do dodania. Flow zapisuje dane godzinnych rekordów z prawidłowym timestampem, dzięki czemu dane trafiają w odpowiednie miejsce w przeszłości. Z uwagi na to, że requestów jest sporo, zrobiłem ograniczenie wysyłania do jednej wartości na sekundę. Najlepiej zostawić na noc i niech się dopisuje powoli. Jeśli masz mocną maszynę na której masz influxdb, możesz zwiększyć ilość requestów. Można też zapisać do pliku txt i wgrać dane według schematu opisanego na helpdesku influxa.

    Porównując dane do zebranych przez MEW-01 wynika, że zgadzają się niemal idealnie.

    Do prawidłowego działania potrzeba pliku CSV zamówionego z PGE, dopasować ścieżki do pliku oraz dane linku API influxdb.
    https://flows.nodered.org/flow/c6e3b42319c72c290a1c8c3f14bb38f2
    Przydatne skrypty dla Domoticza. Dzvent''''s, LUA, Node Red itp.