Cześć, mam sonof mini z wgranym systemem Tasmota. Potrzebuje ustawić go tak aby co godzinę po włączeniu wyłączał podpięte urządzenie na 2 sekundy po czym ponownie je włączał. W harmonogramie ustawienia są dla godzin i minut. Pytanie zadałem na grupie FB gdzie mnie skierowano tutaj czy mogę prosić o pomoc jak to zrobić?
Jeśli dobrze rozumiem, to chcesz raz włączyć i mieć w pętli cykl praca 1h , stop 2 sek i znów praca 1 h.
Przejdź do konsoli wklej taką regułę
Rule1
ON Power1#state=1 DO RuleTimer1 60 ENDON
ON Rules#Timer=1 DO Backlog Power1 0;RuleTimer2 1 ENDON
ON Rules#Timer=2 DO Power1 1 ENDON
Potwierdź ENTER
Potem aktywuj regułę wpisując w tej samej konsoli
Rule1 1
i również zatwierdź ENTER
Włącz tego sonoff i sprawdź czy, po 1 min wyłączy na 2 sek i włączy ponownie.
Jak tak to zmień w regule RuleTimer1 60 na RuleTimer1 3598
Jak czegoś nie rozumiesz, to pytaj. Nie będę opisywał co się dzieje po kolei, bo skoro szukasz po grupach na FB , to i tak pewnie nie chcesz się niczego nauczyć, tylko osiągnąć zamierzony cel.
@isom1266 - to ja kolegę zachęciłem do odwiedzenia @patryk_jawo naszego forum więc witamy i pozwolę sobie wyjaśnić co dzieję się w tym kodzie.
Na początek garść informacji podstawowej z Tasmota. W konsoli możemy wpisywać wszystko jednym ciurkiem i bez znaczenia jest wielkość liter. Zamiast pisać ON
możemy wstawić 1
, zamiast pisać off
możemy wstawić 0
. Dzięki komendzie początkowej Backlog
możemy wysłać do 30 komend oddzielonych średnikiem, jednym wpisem.
Reguły możemy podzielić na 3 zestawy: Rule1; Rule2 i Rule3.
Rule1
Rozpoczyna się pierwszy zestaw, każda reguła zaczyna się od ON
po którym następuje wyzwalacz, następnie mamy akcję po DO
i kończymy wpis ENDON
.
ON Power1#state=1 DO RuleTimer1 60 ENDON
Wyzwalacz Power1#state=1
- czyli gdy POWER1
uzyska stan 1
(ON
) uruchamia się reguła po DO
- ustawia się RuleTimer1
używany w regułach na 60s (może ich być od 1 do 8).
ON Rules#Timer=1 DO Backlog Power1 0;RuleTimer2 1 ENDON
Druga reguła za wyzwalacz ma nasz Rules#Timer
i gdy ten dobije odliczanie z 60s do 1s następuje akcja po DO
a rozpoczyna ją komenda Backlog
, która umożliwia pisanie kilku po sobie oddzielonych średnikiem. Wyłączamy przekaźnik Power1 0
; ustawiamy drugi timer na 1s i ENDON
.
ON Rules#Timer=2 DO Power1 1 ENDON
Pozostaje zamknąć pętlę. Gdy Rules#Timer
osiągnie 2 (po upływie 1 sekundy), włączy się Power1
.
A jak to działa w praktyce pokazuje konsola:
20:44:49.805 RSL: RESULT = {"POWER":"ON"}
20:44:49.806 RSL: POWER = ON
20:44:49.822 RUL: POWER1#STATE=1 performs "RuleTimer1 60"
20:44:49.828 RSL: RESULT = {"T1":60,"T2":0,"T3":0,"T4":0,"T5":0,"T6":0,"T7":0,"T8":0}
20:45:50.434 RUL: RULES#TIMER=1 performs "Backlog Power1 0;RuleTimer2 1"
20:45:50.470 RSL: STATE = {"Time":"2023-11-29T20:45:50","Uptime":"0T00:01:28","UptimeSec":88,"Heap":25,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":21,"MqttCount":0,"POWER":"OFF","Wifi":{"AP":1,"SSId":"DWR-116_613E28","BSSId":"F0:9F:C2:7A:85:AF","Channel":6,"Mode":"11n","RSSI":52,"Signal":-74,"LinkCount":1,"Downtime":"0T00:00:03"}}
20:45:50.493 RSL: RESULT = {"POWER":"OFF"}
20:45:50.495 RSL: POWER = OFF
20:45:50.718 RSL: RESULT = {"T1":0,"T2":1,"T3":0,"T4":0,"T5":0,"T6":0,"T7":0,"T8":0}
20:45:52.432 RUL: RULES#TIMER=2 performs "Power1 1"
20:45:52.439 RSL: STATE = {"Time":"2023-11-29T20:45:52","Uptime":"0T00:01:30","UptimeSec":90,"Heap":25,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":0,"POWER":"ON","Wifi":{"AP":1,"SSId":"DWR-116_613E28","BSSId":"F0:9F:C2:7A:85:AF","Channel":6,"Mode":"11n","RSSI":52,"Signal":-74,"LinkCount":1,"Downtime":"0T00:00:03"}}
20:45:52.460 RSL: RESULT = {"POWER":"ON"}
20:45:52.463 RSL: POWER = ON
20:45:52.481 RUL: POWER1#STATE=1 performs "RuleTimer1 60"
20:45:52.487 RSL: RESULT = {"T1":60,"T2":0,"T3":0,"T4":0,"T5":0,"T6":0,"T7":0,"T8":0}
Jeśli będziesz chciał aby cykl uruchamiał się automatycznie przy starcie systemu, to należy wymienić wyzwalacz z Power1#state=1
na np System#Boot
Zapomniał bym dodać. Każdy zestar reguł należy na końcu włączyć dlatego na koniec podajemy Rule1 1
.
@angler skoro tak dokładnie rozpisałeś tą regułę i wskazałeś jaki wyzwalacz ustawić żeby cykl uruchamiał się z automatu, to warto Twój opis uzupełnić o wersję 2.
Automatyczny start po podłączeniu modułu do zasilania.
Rule1
ON System#Boot DO Backlog Power1 1; RuleTimer1 60 ENDON
ON Rules#Timer=1 DO Backlog Power1 0;RuleTimer2 1 ENDON
ON Rules#Timer=2 DO Power1 1 ENDON
Podałem ten wyzwalacz jako przykład z linkiem do listy kolejnych do wyboru. Często używałem też Wifi#Connected
dla rozpoczęcia automatyzacji.
Kilka ich popełniłem i działają do dziś od paru lat: