## Einen schönen Sonntag allerseits, ich habe endlich mal Zeit für meine WLAN Steckdose (Nous A1T). Darauf läuft von Hause aus Tasmota, jetzt in der Version 12.3.1. Jetzt möchte ich sie so einstellen, dass die angeschlossenen Geräte (Laptop, Monitore etc) vom Netz getrennt werden, wenn der Laptop aus geht (und die Monitore kurz danach auch abschalten). Im vollen Betrieb zeigt mit die Tasmota-Web-Ansicht einen Stromverbrauch von 0.577A, im Standby der Geräte noch 0.118A an. Bemerkt habe ich schon, dass der Standby-Wert auch höher liegen kann, was wahrscheinlich daran liegt, dass der Laptop seinen Akku lädt. Aber auch dann sollte ein auswertbarer Unterschied zum vollen Betrieb vorhanden sein. In der Tasmota Dokumentation habe ich folgendes Beispiel gefunden: ``` Rule1 ON system#boot DO var1 0 ENDON ON ENERGY#Current==0.0 DO if (var1!=0) RuleTimer1 0; var1 0 endif BREAK ON ENERGY#Current>=0.1 DO if (var1!=0) RuleTimer1 0; var1 0 endif BREAK ON ENERGY#Current<0.1 DO if (var1!=1) RuleTimer1 600; var1 1 endif ENDON ON Rules#Timer=1 DO Power1 off ENDON ``` [Link zur Doku](https://tasmota.github.io/docs/Rules/#auto-off-if-or-when-current-is-idle) Zunächst habe ich das Menü auf der Weboberfläche abgesucht, nach einer Möglichkeit, dieses Skript einzufügen, gibt es aber wohl nicht. Gefunden habe ich eine Konsole, welche wie folgt aufrufbar ist: `http://192.168.178.34/cs?` Wenn ich dort den Beispielcode (angepasst) einfüge, bekomme ich folgende Ausgabe zurück: ``` 12:04:05.790 CMD: Rule1 ON system#boot DO var1 0 ENDON ON ENERGY#Current==0.0 DO if (var1!=0) RuleTimer1 0; var1 0 endif BREAK ON ENERGY#Current>=0.4 DO if (var1!=0) RuleTimer1 0; var1 0 endif BREAK ON ENERGY#Current<0.4 DO if (var1!=1) RuleTimer1 10; var1 1 endif ENDON ON Rules#Timer=1 DO Power1 off ENDON 12:04:05.817 RUL: Stored uncompressed, would compress from 291 to 144 (-51%) 12:04:05.821 RSL: RESULT = {"Rule1":{"State":"OFF","Once":"OFF","StopOnError":"OFF","Length":291,"F ree":220,"Rules":"ON system#boot DO var1 0 ENDON ON ENERGY#Current==0.0 DO if (var1!=0) RuleTimer1 0; var1 0 endif BREAK ON ENERGY#Current>=0.4 DO if (var1!=0) RuleTimer1 0; var1 0 endif BREAK ON ENERGY#Current<0.4 DO if (var1!=1) RuleTimer1 10; var1 1 endif ENDON ON Rules#Timer=1 DO Power1 off ENDON"}} ``` Dann starte ich Tasmota neu, mache den Laptop aus und warte.... Nix passiert :-( Über das Telefon kann ich den Stromverbrauch ja auch sehen, liegt bei .221A. Wo liegt mein Fehler? Danke und Gruß Kolja
Hast du die Rule aktiviert ? Command "rule1 1" in der Console eingeben, mit "rule" bekommst du die aktuellen Settings
Nein, hatte ich nicht. Danke für den Hinweis, jetzt wirft die Konsole aber Fehlermeldungen raus:
1 | 12:32:43.530 RUL: ENERGY#CURRENT>=0.4 performs "if (var1!=0) RuleTimer1 0; var1 0 endif" |
2 | 12:32:43.536 RSL: RESULT = {"Command":"Unknown"} |
Hast du die "Conditional Rules" enabled und "self compiled" ? #define USE_EXPRESSION // Add support for expression evaluation in rules #define SUPPORT_IF_STATEMENT // Add support for IF statement in rules
Nein, alles was ich gemacht habe, steht im ersten Beitrag. Muss ich dafür jetzt Tasmota ändern und kompilieren?
Ja, scheint so :-) Habe es nach Anleitung gemacht: https://www.ratzownal.de/wie-komiliere-ich-die-tasmota-firmware/ Nach dem Upload der minimal.bin bekomme ich aber: > Upload Failed > Not enough space Und all das für eine Steckdose :-(
für das Upload musst du immer die *.gz Datei nehmen. 1) über "Upgrade by web server" die http://ota.tasmota.com/tasmota/release/tasmota-minimal.bin.gz laden und 2) über "Upgrade by file upload" deine compilierte *.gz Datei In den meisten Fällen werden die "Conditional Rules" nicht benötigt. https://forum.creationx.de/lexicon/index.php?entry/51-commands-06-rules/ hier bist du bezüglich Tasmota gut beraten.
Kolja schrieb: > Muss ich dafür jetzt Tasmota ändern und kompilieren? Wenn Du if Statements in den Rules verwenden willst, dann ja. Aber das von Dir angegebene Ruleset sollte sich auch entsprechend umschreiben lassen, daß es ohne ifs funktioniert: ON ENERGY#Current==0.0 DO if (var1!=0) RuleTimer1 0; var1 0 endif BREAK wird zu ON ENERGY#Current==0.0 DO event timeout_off=%var1% BREAK ON ENERGY#Current>=0.1 DO if (var1!=0) RuleTimer1 0; var1 0 endif BREAK wird zu ON ENERGY#Current>=0.1 DO event timeout_off=%var1% BREAK ON ENERGY#Current<0.1 DO if (var1!=1) RuleTimer1 600; var1 1 endif ENDON wird zu ON ENERGY#Current<0.1 DO event start_timeout=%var1% ENDON und anschließend brauchst Du noch die Rules, die auf die Events reagieren, z.B. in Rule2 zusammengefaßt: RULE2 ON event#timeout_off>0 DO backlog RuleTimer1 0; var1 0 ENDON ON event#start_timeout<1 DO backlog RuleTimer1 600; var1 1 ENDON Nicht vergessen, die zusätzlichen Rules zu aktivieren: RULE2 1 ON Rules#Timer=1 DO Power1 off ENDON muß natürlich auch noch am Ende des ersten Rulesets erhalten bleiben.
Kolja schrieb: > Muss ich dafür jetzt Tasmota ändern und kompilieren? Es gibt seit einiger Zeit sogar die Möglichkeit online zu kompilieren: https://github.com/benzino77/tasmocompiler
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.