Cujnik PIR + LED - automatyzacja Tasmota Rules & Home Assistant Using Discovery

Popełniłem własny czujnik ruchu w połączeniu ze sterownikiem jednokanałowym taśmy LED. Tasmota Połączyła te dwa urządzenia w jednej obudowie. Znaleziona w zasobach warsztatu alarmowa czujka PIR oraz moduł Magic Home do sterowania taśmą LED, można je spokojnie nabyć razem, poniżej 100zł. Moduł WI-Fi oparty jest na układzie ESP8285. Mała płytka z szerokim zakresem napięć zasilania i co ważne polami lutowniczymi do flash-owania i wolnymi GPIO. Czujki alarmowe dają nieporównywalny stosunek jakości do ceny i są zasilane z 12V, tak jak moja taśma LED.

Co ciekawe, w tym projekcie skorzystałem z fajnego przewodnika. Nie musimy dodawać czujnika w pliku konfiguracji HA. Zostanie sam wykryty i dodany do urządzenia AIS, dzięki funkcjonalności reguł w Tasmota.

Rule to Trigger Discovery
Pozwala on na wykorzystanie reguł Tasmota do określenia sposobu przedstawienia naszego urządzenia przy konfiguracji po MQTT z HA. Możemy również ustawić sprzętowo zwłokę czasową czujnika.

Do wykrywania ruchu wystarczy skorzystać z wolnego GPIO4.

Myślę jaszcze o wykorzystaniu styku TMP z czujki do podpięcia z GPIO0, rezygnując z funkcji sabotażu.

Ustawienia robimy bezpośrednio w pliku tekstowym konfiguracji, zmieniając YAML na JSON i takowy umieszczając w linijce reguły.

state_topic: stat/%topic%/MOTION
payload_on: 1
availability_topic: tele/%topic%/LWT
payload_available: Online
payload_not_available: Offline
device_class: motion
force_update: true
off_delay: 30
unique_id: '%deviceid%_motion'
device:
  identifiers:
    - '%deviceid%'

9 polubień

Nie korzystam z NR a w automatyzacjach HA jak widać sporo się zmieniło i jeszcze więcej zmienia. Nie mogę sobie poradzić z automatyzacją dla mojego zestawu z czujnikiem PIR.
Czy ktoś może mi pomóc w skonfigurowaniu automatyzacji?
Założenie mam takie, że pasek Led świeci się od zachodu słońca do wschodu w ustawieniu 30% jasności. Natomiast po wykryciu ruchu ma świecić pełną mocą i przejść ponownie w 30% po tym jak ruchu już nie ma.
Chętnie wykonał bym to za pomocą reguł Tasmota ale również nie mam jeszcze pełnej w tym temacie wiedzy.
Może ktoś już to przerobił i podzieli się doświadczeniami…

fajny pomysł ale po co ma świecić całą noc nie wystarczy tylko po wykryciu ruchu ?

Hej. Ja tak mam z jedną żarówką, co prawda w NR ale zasada pewnie ta sama. Jedna automatyzacja włącza o zachodzie z parametrem 30% i o wschodzie wyłącza. A druga po wykryciu ruchu pod warunkiem że jest słońce pod horyzontem daje żarówkę na 100% a jak ruch się skończy to jako wyłączenie daje zapal na 30 %. Działa super. A że tak zapytam, dlaczego nie chcesz nodereda ? Jest dużo łatwiej w nim, ja mam NR na bramce i nigdy nic się nie działo, a aktualizacje zawsze wchodziły gładko.

Wielkie dzięki @zielony - nie wpadłem na to, żeby przejrzeć dostępne do importu schematy.
Już działam… ale to proste z tym importem :astonished:
Oświetlenie jest nocne, robi za iluminację i światło orientacyjne nad bramą garażową.
@bandrzej76 - tobie również dziękuję. Wiem o możliwości tworzenia kilku automatyzacji równoległych, tak mam rozwiązane parę funkcji oświetlenia w domu ale próbowałem zrobić to w jednej za pomocą wyboru dwóch opcji logiki w jednym przebiegu procesu.

To nie jest tak, że go nie chcę… chcę nawet bardzo go poznać. Tylko doba za krótka, angielskiego u mnie brak i determinacja mniejsza jak od roku wszystkie automatyzacje działają w HA.
Bardziej wciągnęła mnie Tasmota ponieważ lubię taką filozofię tworzenia własnych urządzeń.
Więc pewnie szybciej poznam empirycznie pisanie reguł i działanie na poziomie pojedynczego ESP8266. Czujnik, który działa bez brokera MQTT i HA jest dla mnie cenniejszy niż taki, który potrzebuje MQTT - HA - i jeszcze NR do zapalania światła, że o Wi-Fi nie wspomnę. Więc może i jest łatwiej ale nie jest to dla mnie priorytet. Zawsze wolę niezawodnej, czasem ciekawiej. Pomimo, że na początku jest może trudniej.

Platforma edukacyjna jest i poczeka chyba do kolejnej zimy :slightly_smiling_face:

1 polubienie

Na ten moment dodałem w Tasmota poniższe reguły:

  1. Oddzielenie czujnika PIR od sterowania PWM i ustawienie komunikatu MQQT dla HA.
    Wysyłając za pomocą Backlog możemy dodatkowo włączyć podawaną regułę i SetOption19 i wybrać (koniecznie) SwitchMode2 1
Backlog rule1 on switch2#state do publish stat/%topic%/MOTION %value% endon; rule1 1; switchmode2 1, so19 1
    00:34:19.590 CMD: rule1
    00:34:19.598 MQT: stat/dom_D2CC0A/RESULT = {"Rule1":"ON","Once":"OFF","StopOnError":"OFF","Length":61,"Free":450,"Rules":"on switch2#state do publish stat/%topic%/MOTION %value% endon"}
  1. Druga komenda odpowiada za przedstawienie czujnika w HA, dzięki niej nie musimy tego robić w naszym pliku configuration.yaml.
    Gotową regułę uzupełniamy o naszą konfigurację przekonwertowaną z YAML na JSON i wstawiamy we wskazanym miejscu reguły:
rule2 on system#boot do publish2 homeassistant/binary_sensor/%deviceid%_motion/config <paste json output here> endon


  • Pamiętamy o włączeniu reguły komendą Rule2 1 i zrestartowaniu ESP w celu przedstawienia się w HA. Powstanie nowa encja już jako czujnik z definiowanym czasem między stanem ON a OFF, bezpośrednio w samej Rule2.
  1. Do tego zestawu dołożyłem Rule3, która odpowiada za dzianie czujnika niezależnie od HA i MQTT.
    Nie zapominając o jej włączeniu Rule3 ON lub Rule3 1
rule3 on switch2#state=1 do backlog dimmer1 100; ruletimer1 125 endon on switch2#state=0 do delay endon on rules#timer=1 do power1 off endon

Pozostaje automatyzacja po stronie HA… osobiście wybrałem TEN Link to Blueprints: Start import – My Home Assistant schemat i na jego podstawie tworzę automatyzację, pewnie jeszcze niedocelową ale w końcu przyda się encja z Mi Flora…

1 polubienie

@bandrzej76 - z regułami Tasmota poszło szybciej niż przypuszczałem. Dzięki dokumentacji i dobremu wytłumaczeniu wiedzy na przykładach można szybko zrozumieć jak ta logika działa.
Udało mi się dzięki regułom zapisać całą automatyzację z moimi pierwotnymi założeniami w samym module ESP. Innymi słowy automatyzacja działa bez HA czy innego zewnętrznego dodatku.

Wygląda to tak:

Dla zainteresowanych dołączam plik:
PIR+LED (1,4 KB)

ON - wyzwalacz
DO - ładunek
ENDON - koniec ładunku
BACKLOG - pozwala na przesłanie do 30 komend w jednym ciągu oddzielonych ;

Pierwszy zestaw reguł Rule1

ON System#Boot DO Backlog Latitude 54.123456; Longitude 16.654321; Publish2 homeassistant/binary_sensor/%deviceid%_motion/config {"name":"Czujka PIR","state_topic":"stat/%topic%/MOTION","payload_on":1,"availability_topic":"tele/%topic%/LWT","payload_available":"Online","payload_not_available":"Offline","device_class":"motion","force_update":true,"off_delay":30,"unique_id":"%deviceid%_motion","device":{"identifiers":["%deviceid%"]}} ENDON
  • Wyzwalacz - system kończy proces boot
  • ustawiamy naszą pozycję szerokość i długość geograficzną dla obliczenia pozycji słońca
  • publikujemy nasz plik JSON dla konfiguracji naszego czujnika w HA
ON Switch2#State DO publish stat/%topic%/MOTION %value% ENDON
  • wyzwalacz - zmiana stanu Switch2
  • ładunek - na temacie stat/%topic%/MOTION opublikuj wartość ( value)

Następnie jednym wpisem wydajemy 4 komendy i restartujemy moduł dla przedstawienia się w HA.

Backlog Rule1 1; SwitchMode2 1, SetOption19 1; Fade 1; Speed 2

Dodałem opcjonalne Fade 1 - płynne przejście; Speed 2- z prędkością 2 dla ściemniacza

Drugi zestaw reguł Rule2 - odpowiada za automatyzację załączającą taśmę LED po zachodzie słońca z intensywnością 25% do czasu wschodu słońca. Dodatkowo pojawiają się odpowiednie wpisy dotyczące Rule3 umożliwiające załączanie taśmy z inną intensywnością po wykryciu ruchu.

Rule2
  ON Time#Initialized DO event ChkSun ENDON
  ON Time#Minute=%sunset% DO event chkSun ENDON
  ON Time#Minute=%sunrise% DO event chkSun ENDON
  ON event#chkSun DO Backlog Rule3 0; var1 0; event chkSunrise=%time%; event chkSunset=%time%; event chkmorn=%time%; event chknight=%time%; event setDimmer ENDON
  ON event#chkSunrise<%sunrise% DO Backlog Dimmer 0; Rule3 0; var1 0 ENDON
  ON event#chkSunset>=%sunset% DO Backlog Dimmer 0; Rule3 0; var1 0 ENDON
  ON event#chkmorn<%sunrise% DO Backlog Dimmer 25; Rule3 1; var1 25 ENDON
  ON event#chknight>=%sunset% DO Backlog Dimmer 25; Rule3 1; var1 25 ENDON
  ON event#setDimmer DO Dimmer %var1% ENDON

Nie zapominamy o załączeniu reguł (wyjaśnienie komendy Rule2 9 w dokumentacji TU)

Backlog Rule2 1; Rule2 9

Trzeci zestaw reguł Rule3 odpowiada za rozjaśnienie taśmy do 100% po wykryciu ruchu i powrocie do 25% po 30s od braku ruchu. Każde wychwycenie ruchu czyli wyzwolenie Switch2#state=1 uruchamia regułę na nowo odliczając od początku 30s.

Rule3
  ON Switch2#state=1 DO Backlog Dimmer 100; RuleTimer1 30 ENDON
  ON Rules#Timer=1 DO Dimmer 25 ENDON

Włączamy zestaw Rule3 komendą

Rule3 1

Ważne!
Automatyzacja działa w oparciu o czas i geolokalizację dla wyliczania pozycji słońca (zegar astronomiczny). Należy zatem pamiętać o podaniu prawidłowej lokalizacji w Rule1 ale nie możemy zapominać o prawidłowym ustawieniu opcji synchronizacji czasu, zwłaszcza jeśli nasz ESP jest odcięty od internetu a mamy zmienię czasu letni/zimowy.

timezone 99
timestd
timedst 0

Do pełni niezależności brakuje naszej czujce stałego adresu IP w naszej sieci. Ustawiamy go zapomocą komendy IPAddress1 .
obraz

Mała aktualizacja dla zestawu Rule1.
Okazało się, ze wyzwalacz System#Boot nie spełnia do końca swojej roli. Wszystko jest dobrze do momentu kiedy to restartuje się moduł ESP i przedstawia swoją konfigurację dla HA przy starcie Tasmota. Problem pojawia się po restarcie HA, ponieważ konfiguracja czujnika nie jest w nim zapisana, a odbierana w komunikacie MQTT. Więc po restarcie bramki czujnik PIR pozostawał niedostępny i wymagany był restart ESP z Tasmota dla przedstawienia się w HA.
Rozwiązaniem jest zamiana wyzwalacza na MQTT#connected co pozwala na publikację komunikatu konfiguracji czujnika i przesłaniem go po połączeniu z brokerem MQTT.
Obecnie reguła wygląda tak:

  ON System#Boot DO Backlog Latitude 54.888888; Longitude 16.666666 ENDON
  ON MQTT#connected DO Publish2 homeassistant/binary_sensor/%deviceid%_motion/config {"name":"Czujka PIR","state_topic":"stat/%topic%/MOTION","payload_on":1,"availability_topic":"tele/%topic%/LWT","payload_available":"Online","payload_not_available":"Offline","device_class":"motion","force_update":true,"off_delay":30,"unique_id":"%deviceid%_motion","device":{"identifiers":["%deviceid%"]}} ENDON
1 polubienie