Rules,  Tasmota

Tasmota Rules Einstieg für Anfänger

Da ich sehr oft bezüglich Tasmota Rules gefragt werde nachfolgend ein einfacher Einstieg, ohne viel Erklärung anhand ein paar, einfacher Tasmota Rule Beispiele. Denn an und für sich sind Tasmota Rules, bzw. die Syntax relativ einfach, aber leider fehlt es an verständlichen Beispielen.

Grundlagen und Vorbereitung

  1. Selbstredend muß der jeweilige Sensor im Vorfeld über das Tasmota Webinterface konfiguriert werden.
  2. Tasmota Rules werden stets über die Konsole gesetzt, dementsprechend muss im Tasmota Webinterface auf die Konsole gewechselt werden.
    • Tasmota Firmware für 8Mbit Module ESP-01 ESP-01S Klicke auf Konsole
    • Tasmota Firmware für 32Mbit Module ESP-01 ESP-01S Klicke auf Werkzeuge dort auf Konsole

Tasmota Rule Trigger / Ereignis

Zunächst ein wichtiges Element zum Erstellen einer Rule, insbesondere wenn ein Trigger in Form eines Sensor Ereignis ausgeführt werden soll. Eine Tasmota Rule referenziert stets auf

    • den Sensor teilweise mit einer zusätzlichen ID

    • den jeweiligen Sensorwert, beispielsweise verfügt ein AM2301 über einen Temperaturwert sowie einen Luftfeuchtigkeitswert

Diese Parameter müssen stets in einer Tasmota Rule integriert werden, denn ohne Trigger / Ereignis kann keine Rule ausgeführt werden. Ganz einfach ausgedrückt ON Sensor DO….. ENDON zu deutsch SOBALD Sensor…. tu ENDESOBALD

Um aktuelle Sensoren über die Konsole abzufragen muss lediglich

in die Befehlszeile der Tasmota Konsole eingegeben werden und die Taste ENTER gedrückt werden

Über die Tasmota Konsole wird dann eine entsprechende Statusmeldung ausgegeben, nachfolgend als Beispiel ein DS18B20 Temperatursensor erzeugt folgende Rückgabe

Tasmota Rule Beispiel für Temperatur Regelkreis

die wohl häufigste Anfragen beziehen sich auf das Triggern einer Temperatur um beim Erreichen oder Unterschreiten eines Schwellenwerts / Temperatur eine Aktion auszuführen.

verwendete Komponenten 

    • 2 Kanal Sensor Relais

    • Sensor DS18B20

    • Schnittstelle 1-wire

    • MCU ESP-01 8Mbit Flash

Als Trigger dient die Temperatur des DS18B20 Sensors und sobald ein Schwellenwert erreicht wird soll eine Aktion ausgeführt werden kurz:

sobald Temperatur > 26°C (größer als 26°C) schalte Relais 1

Die Tasmota Rule ist hierfür sehr übersichtlich

in die Befehlszeile der Konsole eingeben und die Taste ENTER drücken und

in die Befehlszeile eingeben und die Taste ENTER drücken um die Tasmota Rule1 zu aktivieren.

Zwar wird nun das Relais 1 bei über 26°C aktiviert, jedoch bleibt es weiterhin aktiv selbst wenn die Temperatur unter 26°C fällt. Dementsprechend muss die Rule1 um einen weiteren Trigger

sobald DS18B20 Temperatur < 26°C deaktiviere Relais 1

ON DS18B20#temperature < 26.0 DO Power1 OFF ENDON

Dementsprechend lautet die gesamte Rule1 nun

Das wars auch schon, werden häufig weitere Auswertungen oftmals in Abhängigkeit mehrerer Sensoren und deren Ereignisse benötigt.

Tasmota Rule Beispiel mit mehreren Sensoren

Verwendet man allerdings mehr als einen DS18B20 kommt die pauschale, obige Rule zum Erliegen. Tasmota unterstützt bis zu 8 DS18B20 Sensoren pro 1-Wire Bus. Grundlage bildet hierbei der eindeutige Index / ID eines jeden DS18B20 Sensors.

Beispielsweise beim Anschluß von 3 DS18B20 gibt das Webinterface sofort

    • DS18B20-1 Temperatur 25,4 °C

    • DS18B20-2 Temperatur 24,6 °C

    • DS18B20-3 Temperatur 25,6 °C

aus.

Fragt man nun über die Konsole den Sensor Status mittels

Status 8 (in die Befehlszeile eingeben und Taste ENTER drücken)

ab, erhält man beispielsweise 

Gleichermassen muss nun die Rule angepasst werden, indem jeder Sensor 

    • DS18B20-1

    • DS18B20-2

    • DS18B20-3

in die Tasmota Rule integriert wird.

Im folgenden Beispiel soll nun

    1. sobald DS18B20-1 Temperatur über 26.0°C ist Relais 1 schalten

    1. sobald DS18B20-2 Temperatur über 27.0°C ist Relais 2 schalten

    1. sobald DS18B20-3 Temperatur über 28.0°C ist, soll Relais 1  und Relais 2 deaktiviert werden

Tasmota Backlog Command

Bei genauer Betrachtung der obigen, „sinnfreien“ Rule wird das Tasmota Backlog Kommando verwendet. Im Detail handelt es sich bei dem Backlog Befehl um ein Array das mittels Semikolon bis zu 30 Tasmota Befehle abarbeiten kann. Im obigen Beispiel wurde Power1 OFF; Power2 OFF als Tasmota Befehlskette zusammengefasst, sodass beide Befehle bei nur einem Ereignis ON DS18B20-3#temperature > 28.0 ausgelöst werden.

Tasmota Rule IF / WENN

Ins Praktische übersetzt DS18B20-1 und DS18B20-2 darf die Relais nur schalten WENN (IF) DS18B20-3 < 28 °C ist. Hier erlaubt Tasmota Rules die Verwendung von Tasmota Statements (in unserer Tasmota Firmware implementiert).

Hier liegt der Gedanke nahe die Tasmota Rule durch ein entsprechendes IF Statement wie folgt zu erweitern

Zusammenfassend es werden die Relais 1 und Relais 2 nur geschaltet wenn DS18B20-3#temperature < 28.0 / unter 28°C liegt

Hier muss nun nun allerdings zwischen Werten und Trigger differenziert werden, denn der Sensorwert des DS18B20-3 wird im vorgegebenen Intervall ausgegeben und ist im Eigentlichen kein vorhandener Wert / besser gesagt es liegt kein vergleichbarer Wert vor. Mit einfachen Worten beim Ereignis DS18B20-1 liegt nur der Wert des Ereignis DS18B20-1 vor, Sensoren werden zyklisch und nacheinander abgefragt, bzw. lösen Ereignisse zyklisch NACHEINANDER aus.

Tasmota Rule Variablen und Konstanten

Tasmota erlaubt das Anlegen und Verwalten von bis zu 16 Variablen (Var1 bis Var16) und bis zu 16 „Konstanten“ (Mem1 bis Mem16), welche beim Reboot erhalten bleiben.

Möchte man Vergleiche anstellen, gemeint ist die Verwendung von Tasmota Statements IF und ELSE bedarf es vergleichbarer Werte. Im Grunde Werte die zum Vergleich zwischengespeichert werden und sobald ein Ereignis auftritt beispielsweise – sobald DS18B20-1 > 26 – wird die Variable zum Vergleich abgerufen.

Zunächst muss die jeweilige Variable mittels einer Rule gesetzt werden,

Sobald DS18B20-3 einen Temperaturwert ausgibt, speicher den Wert %value% in Var1

An dieser Stelle sei erwähnt, sobald Ereignis ausgelöst wird, gibt %value% den aktuellen Wert des jeweiligen Ereignis zurück.

Hierzu verwenden wir zunächst eine zweite Rule die über die Tasmota Konsole wie folgt in die Befehlszeile eingegeben wird

und durch drücken der Taste ENTER gesetzt wird

Die Rule2 muss nun noch durch die Eingabe

und drücken der Taste ENTER aktiviert werden

nun wird bereits in der Tasmota Konsole das Setzen der Var1 wie folgt ausgegeben

Tasmota Sensorwerte mittels Tasmota Rule auswerten

Somit haben wir nun einen wirklichen Vergleichswert der beim Auftreten des Triggers

    • ON DS18B20-1#temperature > 26

    • ON DS18B20-2#temperature > 27

herangezogen werden kann. Dementsprechend muss die vorherige Tasmota Rule1 nun mittels einem IF / Wenn Statement den aktuell in der Variablen Var1 gespeicherten Wert des DS18B20-3 beim Ereignis DS18B20-1#temperature > 26.0 bzw. DS18B20-2#temperature > 27.0 auswerten und entsprechend agieren.

Im Detail sieht die Tasmota Rule relativ übersichtlich aus

    • sobald DS18B20-1 Temperatur über 26°C wenn Var1 kleiner 28°C aktiviere Relais1 sonst deaktiviere Relais 1

    • sobald DS18B20-2 Temperatur über 27°C wenn Var1 kleiner 28°C aktiviere Relais1 sonst deaktiviere Relais 1

Reduziert auf die Tasmota Rule Syntax lautet die Rule1 wie folgt

es ist zu erkennen das in obiger Rule1 kein Trigger / Ereignis des DS18B20-3 ON DS18B20-3#temperature …. enthalten ist, denn es braucht lediglich eine Vergleichswert / Temperaturwert des DS18B20-3#temperature Ereignis, welcher durch die Rule2 gesetzt wird. Dementsprechend kann man den Trigger der Rule2 auch gleichermassen in die Rule1 packen, sodass die endgültige komplette Rule1 wie folgt lautet

Zusammenfassung

Tasmota Rule Trigger sind Ereignisse KEINE vergleichbaren Werte, als Gedankenstütze SOBALD (nicht wenn) DS18B20-1#Temperature kann ich den Trigger das Ereignis auswerten ABER NUR DANN, sobald das Ereignis auftritt.

Sensorwerte werden nicht auf einmal abgefragt sondern zyklisch nacheinander, d.h. sobald das Ereignis / Trigger DS18B20-1#Temperature vorliegt, liegt kein anderer Trigger DS18B20-2#Temperature oder DS18B20-3#Temperature UND SOMIT VERGLEICHSWERT vor.

Um Werte aus Ereignissen zu vergleichen, beispielsweise mit IF (wenn) ELSE (sonst) muss der Wert abgefragt werden können, dies erfolgt mittels einer Variablen.

Eine Tasmota Rule ist im Detail lediglich ein Befehl der bei einem Ereignis ausgelöst wird. Dies erklärt sich bereits durch die Syntax selbst

  • ON = Sobald / Trigger
  • DO = ein Tasmota Command / ein Befehl oder alternativ eine Befehlskette einzelner Tasmota Befehle getrennt durch Semikolon
  • ENDON = Ende der Rule / Regel

Es können mehrere Regeln ON … DO …. ENDON in einer Tasmota Rule zusammengefasst werden.

Es können bis zu 3 Tasmota Rules (Rule1, Rule2, Rule3) gesetzt werden, wobei jede Rule maximal 1000 Zeichen beinhalten darf.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert