ESP32 jako moduł centralny czujników alarmowych PIR (zintegruj bez Integry) #ESPHome #Tasmota #Konnected.io

Tak wygląda konfiguracja GPIO w moim przypadku:


Przełączniki to wejścia NC z czujek alarmowych. Przekaźnik to wyjście podłączone do centralki alarmowej przez transoptor (optoizolator). Dodatkowo na GPIO 39 podpoiłem pomiar analogowy napięcia akumulatora. Wykonałem, to przez dzielnik napięcia na dwóch rezystorach 100 / 22 k Ohm i odpowiednio skalibrowałem w Tasmota. Podstawka pod płytkę elektroniki jest na pokładzie obudowy Satel. Ze strony sprzętowej to wszystko… reszta odbywa się po stronie software czyli Tasmota i HA.

Układ działa na prostym założeniu: jeśli wszystkie wejścia (przełączniki) są w stanie NC to wyjście jest również NC. Jeśli przynajmniej jedno wejście jest NO, to wyjście również jest NO.
Innymi słowy, jeśli chociaż jedna czujka wychwyci ruch, to na wejściu centrali alarmowej jest przerwany obwód NC i w stanie czuwania uruchomi się alarm. Mając już koncepcję, stwierdziłem że najlepiej sumować wejścia o stanie 0 lub1 i jeśli wynik sumy jest różny od zera to wyjście ma stan 1 i analogicznie, suma = 0 to wyjście ma stan 0. Żądane odwrócenie logiki dla wejścia NC centralki robi się przez wybór odwróconej pracy przekaźnika (dopisek _i). Aby moduł obsługujący centralkę nie był uzależniony od kolejnego elementu automatyki, postanowiłem spróbować logikę oprzeć tylko o reguły Tasmota:
Na początek ustawiam wszystkie przełączniki w trybie śledzenia stanu SwitchMode 1 czyli rozdzieliłem je od przekaźników. Można wykorzystując Backlog przesłać jednym poleceniem do 30 komend oddziaelonych ;

Backlog switchmode2 1;switchmode3 1;switchmode4 1;switchmode5 1;switchmode6 1;switchmode7 1;switchmode8 1;switchmode9 1;switchmode10 1; rule1 1; rule2 1; rule3 1

Celowo nie użyłem Przełącznika o numerze 1 aby rzez przypadek nie pomylić go z Przekaźnikiem 1. Swoją numerację rozpocząłem od 2 do 10 (9-szt czujek PIR).

  • Pierwszy zestaw reguł dla wykonania sumowania wszystkich stanów 9 czujników po zadziałaniu każdego z nich:
Rule1
  ON Switch2#state DO Backlog Var2 %value%;Var11=var2+var3+var4+var5+var6+var7+var8+var9+var10;Publish stat/%topic%/PIR2 %value% ENDON
  ON Switch3#state DO Backlog Var3 %value%;Var11=var2+var3+var4+var5+var6+var7+var8+var9+var10;Publish stat/%topic%/PIR3 %value% ENDON
  ON Switch4#state DO Backlog Var4 %value%;Var11=var2+var3+var4+var5+var6+var7+var8+var9+var10;Publish stat/%topic%/PIR4 %value% ENDON
Rule1 +
  ON Switch5#state DO Backlog Var5 %value%;Var11=var2+var3+var4+var5+var6+var7+var8+var9+var10;Publish stat/%topic%/PIR5 %value% ENDON
  ON Switch6#state DO Backlog Var6 %value%;Var11=var2+var3+var4+var5+var6+var7+var8+var9+var10;Publish stat/%topic%/PIR6 %value% ENDON
  ON Switch7#state DO Backlog Var7 %value%;Var11=var2+var3+var4+var5+var6+var7+var8+var9+var10;Publish stat/%topic%/PIR7 %value% ENDON
Rule1 +
  ON Switch8#state DO Backlog Var8 %value%;Var11=var2+var3+var4+var5+var6+var7+var8+var9+var10;Publish stat/%topic%/PIR8 %value% ENDON
  ON Switch9#state DO Backlog Var9 %value%;Var11=var2+var3+var4+var5+var6+var7+var8+var9+var10;Publish stat/%topic%/PIR9 %value% ENDON
  ON Switch10#state DO Backlog Var10 %value%;Var11=var2+var3+var4+var5+var6+var7+var8+var9+var10;Publish stat/%topic%/PIR10 %value% ENDON

Zestaw jest na tyle duży, że podzielony jest na trzy bloki z uwagi na pojemność bufora zapisu. Znak + pozwala na dopisywanie kolejnych danych do Rule1. Czyli ten zestaw wpisujemy w konsoli na trzy raty.

  • Drugi zestaw steruje przekaźnikiem zależnie od wyniku sumy z pierwszego zestawu reguł. Var11 to wynik tego działania.
Rule2
  ON Var11#state==0 DO Power 0 ENDON
  ON Var11#state>0 DO Power 1 ENDON

Jeśli jest równy 0 (state==0) to stan przekaźnika 0.
Jeśli jest większy od 0 (state>0) to stan wyjścia 1.

  • Rule3 - odpowiada za kalibrację wejścia pomiaru analogowego napięcia akumulatora po uruchomieniu modułu ESP:
Rule3
  ON System#Boot DO AdcParam 6,0,4095,66,1890 ENDON

Możliwość wykonywania reguł warunkowych w Tasmota wymaga skompilowania własnego pliku bin pod ESP32. Bez tego nie możemy, między innymi, używać 16 zmiennych Var oraz działań matematycznych na nich.

WIĘC C.D.N

2 polubienia