Tasmota - Dwie zmienne

Mam ESP32 DEV-KIT i zainstalowana Tasmotę. Potrzebuję utworzyć regułę która będzie uruchamiać Przekaźnik1 (Power1) w momencie kiedy będą włączone Przekaźnik5 oraz Przekaźnik10 jednocześnie. Z tego co wyczytałem nie ma możliwości w Tasmocie używać operatorów logicznynych takich jak: and; or itp.
Na forum niemieckim podpowiedziano mi aby użyć reguły:

ON Power10#State=1 DO IF(Power5#State=1) DO Power1 1 ENDON
ON Power5#State=1 DO IF(Power10#State=1) DO Power1 1 ENDON

jednak ona u mnie nie działa. Bardzo prosze o jakieś podpowiedzi

Powinieneś zakończyć instrukcję IF , przykład

Rule1 ON Power10#State=1 DO IF(Power5#State=1) Power1 1 ENDIF ENDON



Też już tak próbowałem i dalej nic. W dokumentacji piszę coś że nie we wszystkich wersjach jest dostępna funkcja IF - ale myślę że w ESP32 Tamota PL to juz jest.

Coś tam próbują Ci podpowiedzieć ale bardziej na czuja niż zgodnie z dokumentacją Tasmota:

Zajrzyj do tej dokumentacji, bo są tam przykłady, które ułatwiają zrozumienie działania reguł.

Na pewno próbowałeś tego w takiej formie jak podałem ?

Tak - Skopiowałem to co napisałeś
Uruchamiam regułę Rule1 1
i nic
W konsoli mam takie informacje:

11:04:13.738 RSL: RESULT = {"POWER5":"ON"}
11:04:13.739 RSL: POWER5 = ON
11:04:14.769 RSL: RESULT = {"POWER10":"ON"}
11:04:14.770 RSL: POWER10 = ON
11:04:14.809 RUL: POWER10#STATE=1 performs 'IF(Power5#State=1) Power1 1 ENDIF'
11:04:14.812 RSL: RESULT = {"If":"Done"}

Wczytałem na próbę inną wersję Tasmoty (Tasmota English, Tasmota Development) i dalej to samo. Reguła nie uruchamia Power1. Ma ktoś jszcze jakis pomysł?

Ja mam - prawdopodobnie należy użyć Backlog:

Spróbuj z takim zapisem:

Rule1 ON Power10#State=1 DO Backlog0 IF(Power5#State=1) ; Power1 1 ENDIF ENDON

Działa. Super Wielkie dzięki za pomoc

Można to też obskoczyć z wykorzystaniem MEM<x> (zmiennej), która będzie śledzić stan danego przekaźnika i będzie odniesieniem w regule dla drugiego przekaźnika.

Do przetestowania:

Rule1
ON Power5#State=1 DO Mem1 1 ENDON
ON Power5#State=0 DO Mem1 0 ENDON
Rule2
ON Power10#State=1 DO Backlog Mem2 1; Power1 %mem1% ENDON
ON Power10#State=0 DO Backlog Mem2 0; Power1 0 ENDON

Działanie:

  1. Gdy oba przekaźniki (Power5 i Power10) są włączone:
  • Mem1=1 i Mem2=1, co powoduje włączenie Power1.
  1. Gdy którykolwiek z przekaźników (Power5 lub Power10) zostaje wyłączony:
  • Stan Mem1 lub Mem2 zmienia się na 0, a Power1 zostaje wyłączone.

Zależało mi aby działało to w jednej regule bo pozostałe dwie wykorzystuje do innych rzeczy. Dzięki za podpowiedzi

Zapisałem to w duch zestawach reguł dla lepszej czytelności.
W Tasmota możesz używać więcej niż trzech reguł, jest to wyjaśnione w dokumentacji. Rule1; Rule2; Rule3 - to zestawy reguł tworzone dla budowania wzajemnych funkcji pomiędzy nimi. Podstawowa regułą zbudowana jest jako wiersz o składni:
ON <trigger> DO <command> [ENDON | BREAK]

Dla pojedynczego zestawu reguł (Rule1) ograniczeniem jest ilość przesyłanych znaków (zazwyczaj do 1500) i wielkość bufora MCU. Podsumowując zapis można sprowadzić do jednego zestawu, bo nie występują w automatyzacji zależności między Rule1 a Rule2:

Rule1
ON Power5#State=1 DO Mem1 1 ENDON
ON Power5#State=0 DO Mem1 0 ENDON
ON Power10#State=1 DO Backlog Mem2 1; Power1 %mem1% ENDON
ON Power10#State=0 DO Backlog Mem2 0; Power1 0 ENDON

Bardzo dziękuję za szczegółowy opis. Ile reguł maksymalnie można używać w Tasmocie? Z opisów jakie znalazłem to tylko 3

Nadal mylisz pojęcia, pojedynczą regułą jest
ON <trigger> DO <command> [ENDON | BREAK]
i takich ciągów możesz mieć spokojnie do 1000 znaków (spacje i wielkość znaków się nie liczą) w jednym zestawie reguł np. rule1.

Przestudiuj dokładnie dokumentację reguł, zapoznaj się z przykładami i zrozumiesz dokładniej jak to działa.

P.S.
Zakładamy, że wgrywasz długi ciąg reguły i w konsoli otrzymujesz informacje o przepełnieniu bufora (jakoś tak) lub chcesz dopisać ciąg dalszy dla danej reguły, zachowując wcześniejsze zapisy, to używasz do tego separatora w postaci znaku +.

Tak masz rację chodziło mi o zestawy reguł czyli Rule1, Rule2 i Rule3

Gdyby komuś brakowało czegoś w standardowych kompilacjach plików bin, to może sobie łatwo i bez wiedzy programisty do kompilować potrzebne elementy dzięki projektowi:

benzino77/tasmocompiler: Web GUI for custom Tasmota compilation

1 polubienie