Forum: Haus & Smart Home Starthilfe für Tasmota


von Kolja (Gast)


Lesenswert?

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

von Norbert (noschvie)


Lesenswert?

Hast du die Rule aktiviert ?
Command "rule1 1" in der Console eingeben, mit "rule" bekommst du die 
aktuellen Settings

von Kolja (Gast)


Lesenswert?

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"}

von Norbert (noschvie)


Lesenswert?

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

von Kolja (Gast)


Lesenswert?

Nein, alles was ich gemacht habe, steht im ersten Beitrag.

Muss ich dafür jetzt Tasmota ändern und kompilieren?

von Kolja (Gast)


Lesenswert?

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

von Norbert (noschvie)


Lesenswert?

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.

von mIstA (Gast)


Lesenswert?

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.

von Oliver S. (phetty)


Lesenswert?

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
Noch kein Account? Hier anmelden.