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

**URL:** <https://ai-speaker.discourse.group/t/cujnik-pir-led-automatyzacja-tasmota-rules-home-assistant-using-discovery/1514>\
**Category:** Projekty\
**Created:** [21 Marzec 2021 20:35 UTC](https://ai-speaker.discourse.group/t/cujnik-pir-led-automatyzacja-tasmota-rules-home-assistant-using-discovery/1514 "2021-03-21T20:35:56Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Autor:** ![Cezary.K](https://avatars.discourse-cdn.com/v4/letter/c/a88e4f/32.png) [@Cezary.K](https://ai-speaker.discourse.group/u/Cezary.K)\
**Data wpisu:** [21 Marzec 2021 20:35 UTC](https://ai-speaker.discourse.group/t/cujnik-pir-led-automatyzacja-tasmota-rules-home-assistant-using-discovery/1514/1 "2021-03-21T20:35:56Z")

</div>

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.

 ![IMG_20210321_204432](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/a/a8a202de5dd9bb3cf4ee2318217b07823dc0bee7.jpeg)

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.

> **[Tasmota Motion Sensor in Home Assistant Using Discovery](https://blakadder.com/pir-in-tasmota/)**
>
> The definitive (?) guide to setting up a PIR in Tasmota and adding it to Home Assistant using discovery. No configuration.yaml editing required!

_`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.

 ![obraz](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/d/d51b73d7f1ca24b7895f7241055fb9a42b907d15.png) ![IMG_20210321_213044](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/9/9529b2b5c6eb72d641be95d238f8b29d8c42a5ee.jpeg)

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.

```auto
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%'

```

 ![obraz](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/3/32a4ede8a09373f706fec4590b39d5362c755551.png)

> **[Transform YAML into JSON - Online YAML Tools](https://onlineyamltools.com/convert-yaml-to-json)**
>
> Free, quick and easy online utility that converts YAML to JSON in your browser. There are no ads or downloads. Simply enter YAML and get JSON. Created by developers for developers.

 ![obraz](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/7/76342a5bee0664578a43d66447dee7ff318fb4d9.png)

---

<div class="post-metadata">

**Autor:** ![Cezary.K](https://avatars.discourse-cdn.com/v4/letter/c/a88e4f/32.png) [@Cezary.K](https://ai-speaker.discourse.group/u/Cezary.K)\
**Data wpisu:** [8 Kwiecień 2021 18:23 UTC](https://ai-speaker.discourse.group/t/cujnik-pir-led-automatyzacja-tasmota-rules-home-assistant-using-discovery/1514/2 "2021-04-08T18:23:32Z")

</div>

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…

---

<div class="post-metadata">

**Autor:** ![zielony](https://avatars.discourse-cdn.com/v4/letter/z/6de8d8/32.png) [@zielony](https://ai-speaker.discourse.group/u/zielony)\
**Data wpisu:** [8 Kwiecień 2021 18:36 UTC](https://ai-speaker.discourse.group/t/cujnik-pir-led-automatyzacja-tasmota-rules-home-assistant-using-discovery/1514/3 "2021-04-08T18:36:50Z")

</div>

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

---

<div class="post-metadata">

**Autor:** ![zielony](https://avatars.discourse-cdn.com/v4/letter/z/6de8d8/32.png) [@zielony](https://ai-speaker.discourse.group/u/zielony)\
**Data wpisu:** [8 Kwiecień 2021 18:47 UTC](https://ai-speaker.discourse.group/t/cujnik-pir-led-automatyzacja-tasmota-rules-home-assistant-using-discovery/1514/4 "2021-04-08T18:47:57Z")

</div>

> **[Motion, Light strength, Time and Duration](https://community.home-assistant.io/t/motion-light-strength-time-and-duration/289465)**
>
> This Blueprint allows you to set up motion triggered lamps with time contraint when it is active, the duration the lamp stays on and the percentage you want the lamps to glow at. We use it as walking light when getting out of bed for the toilet. We...

---

<div class="post-metadata">

**Autor:** ![bandrzej76](https://avatars.discourse-cdn.com/v4/letter/b/ebca7d/32.png) [@bandrzej76](https://ai-speaker.discourse.group/u/bandrzej76)\
**Data wpisu:** [8 Kwiecień 2021 19:00 UTC](https://ai-speaker.discourse.group/t/cujnik-pir-led-automatyzacja-tasmota-rules-home-assistant-using-discovery/1514/5 "2021-04-08T19:00:46Z")

</div>

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.

---

<div class="post-metadata">

**Autor:** ![Cezary.K](https://avatars.discourse-cdn.com/v4/letter/c/a88e4f/32.png) [@Cezary.K](https://ai-speaker.discourse.group/u/Cezary.K)\
**Data wpisu:** [8 Kwiecień 2021 20:51 UTC](https://ai-speaker.discourse.group/t/cujnik-pir-led-automatyzacja-tasmota-rules-home-assistant-using-discovery/1514/6 "2021-04-08T20:51:55Z")

</div>

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 😲  
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.

> [@bandrzej76](#):
>
> A że tak zapytam, dlaczego nie chcesz nodereda ?

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 🙂

 ![obraz](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/0/0381b234519412f18370c9e43e88f6f3f2c48b7b.png)

---

<div class="post-metadata">

**Autor:** ![Cezary.K](https://avatars.discourse-cdn.com/v4/letter/c/a88e4f/32.png) [@Cezary.K](https://ai-speaker.discourse.group/u/Cezary.K)\
**Data wpisu:** [8 Kwiecień 2021 23:03 UTC](https://ai-speaker.discourse.group/t/cujnik-pir-led-automatyzacja-tasmota-rules-home-assistant-using-discovery/1514/7 "2021-04-08T23:03:59Z")

</div>

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

```auto
Backlog rule1 on switch2#state do publish stat/%topic%/MOTION %value% endon; rule1 1; switchmode2 1, so19 1

```

```auto
    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:

```auto
rule2 on system#boot do publish2 homeassistant/binary_sensor/%deviceid%_motion/config <paste json output here> endon

```

 ![obraz](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/4/40200e74504e6b846155d1111e0f93c3dcc4c2e2.png)  
 ![obraz](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/3/34cda1ded4b3b719d863c2925f6f80ea13e7311d.png)

- 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`

```auto
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](https://community.home-assistant.io/t/enhanced-motion-controller-to-activate-scenes-by-time-and-illuminance-now-in-addition-with-idle-ambient-scene/255880) _[Link to Blueprints: Start import – My Home Assistant](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fgist.github.com%2Fdirkk1980%2F3e5c23acb05fb639bafdc5036b91aae6)_ schemat i na jego podstawie tworzę automatyzację, pewnie jeszcze niedocelową ale w końcu przyda się encja z Mi Flora…

 ![obraz](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/6/63fa94a8b2ee3cc9d741c0e9118cf980c30822f0.png)

---

<div class="post-metadata">

**Autor:** ![Cezary.K](https://avatars.discourse-cdn.com/v4/letter/c/a88e4f/32.png) [@Cezary.K](https://ai-speaker.discourse.group/u/Cezary.K)\
**Data wpisu:** [13 Kwiecień 2021 21:16 UTC](https://ai-speaker.discourse.group/t/cujnik-pir-led-automatyzacja-tasmota-rules-home-assistant-using-discovery/1514/8 "2021-04-13T21:16:43Z")

</div>

@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:

 ![obraz](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/d/d0caa42689e3f904f63dd2c763ce8b1348aeb319.png)

Dla zainteresowanych dołączam plik:  
[PIR+LED](https://ai-speaker.discourse.group/uploads/short-url/1SS0ZGjjT12pzoBwv6Hyi9FBkp3) (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`

```auto
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

```auto
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.

```auto
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.

```auto
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](https://tasmota.github.io/docs/Commands/#rules))

```auto
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.

```auto
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ą

```auto
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.

```auto
timezone 99
timestd
timedst 0

```

 ![obraz](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/8/83ac2f0ecf9362b7a871c67a544e4e970475aae5.png)

Do pełni niezależności brakuje naszej czujce stałego adresu IP w naszej sieci. Ustawiamy go zapomocą komendy `IPAddress1` .  
 ![obraz](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/a/a396ae25d04cb066e62f022e5520e658e3bd93eb.png)

---

<div class="post-metadata">

**Autor:** ![Cezary.K](https://avatars.discourse-cdn.com/v4/letter/c/a88e4f/32.png) [@Cezary.K](https://ai-speaker.discourse.group/u/Cezary.K)\
**Data wpisu:** [27 Kwiecień 2021 20:38 UTC](https://ai-speaker.discourse.group/t/cujnik-pir-led-automatyzacja-tasmota-rules-home-assistant-using-discovery/1514/9 "2021-04-27T20:38:10Z")

</div>

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:

```auto
  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

```
