Poolheizung, Solarthermie

  • hi,

    hm.. wie setze ich die Timer als Rule?

    Ich meinte die Timer die man in der WebUi einrichten kann.

    Auf diese Timer möchte ich gerne reagieren und eben eine Rule einschalten bzw. ausschalten.

  • benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • ahhh.. super

    habe jetzt mal etwas rumgespielt!

    so funktioniert es mal nach meinen paar Tests, kann man die Rules so machen?

    Benötige ich "event Timer1 endon" und dann "on event#timer1 do blabla endon" überhaupt, was macht das für ein Unterschied?

    Vielen Vielen Dank für deine Hilfe

    Vielen

  • Hi.

    Hab's jetzt nicht ins kleinste Detail überprüft aber wenn die Rule so geht, passt doch.

    Event brauchst du, weil eine Änderung einer Varibale innerhalb einer Rule <on ... endon> während deren Laufzeit nicht berücksichtigt wird.

    Wenn also in der Variable der Wert geändert wird, kommt das erst in einer weiteren Rule <on ... endon> zum tragen.

    Bei jedem event trigger wird der aktuelle vorher veränderte Variablen Wert verwendet.

    Deshalb ist es auch nicht unwichtig in welcher Reihenfolge Rules angewendet werden.

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • Hallo Zusammen,

    dies ist mein erster Post in diesem Forum. Herzlichen Dank für die vielen Anregungen für mein erstes Tasmota Projekt. Ich konnte am Wochenende dank Euch viel lernen und folgendes umsetzen: Flashen, Compilieren, erste Rules testen usw.

    Die oben von mir kopierte Rule funktioniert bei mir tadellos. Ich würde nur gerne wissen wie sich die Werte 3 und 5 mittels console ändern lassen. Den Wert mem3 kann ich mit folgendem Kommando ändern bzw. setzen: mem3 40

    Wie gelingt mir dies mit diesen Werten? Bitte beachtet, dass ich kein Programmierer bin und vielleicht am Anfang etwas Starthilfe benötige :)

    Code
    event a2=3; event a3=5

    Über Hilfe würde ich mich sehr freuen.

    Vielen Dank.

  • event a2, event a3 sind so, wie deine Codezeile lautet, events bzw. trigger für solche events. Innerhalb des eventhandlers (Ereignisbehandler) steht der jeweilige Wert (hier 3, 5) per %value% zur Verfügung. a2, a3 sind Ereignisnamen, keine Variable. Die Werte 3 und 5 sind Parameter, die per value an den eventhandler a2 bzw. a3 übergeben werden.

    mem3 ist der Name einer Variablen, ebenso bspw. var1. memx liegt im nichtflüchtigen Speicher (nvs=non volatile storage), während varx im flüchtigen Speicher (RAM) liegt. Bei Stromausfall oder zwischenzeitlichem Abschalten der Stromversorgung bleibt der memx-Inhalt erhalten, der varx-Inhalt geht verloren. memx verträgt weniger Schreibzugriffe (speichern) als varx.

    Somit ist hoffentlich erkennbar, warum event a2=3 grundsätzlich etwas völlig anderes ist als bspw. mem3 40.

    Fachgerechter (notfalls übergehen): 3 bzw. 5 sind sog. Aktualparameter. Diese werden mit dem Auslösen des Ereignisses an den jeweiligen eventhandler übergeben. Einem eventhandler steht ein solcher Aktualparameter-Wert per Formalparameter value zur Verfügung.

    Wenn du variable Werte als Aktualparameter verwenden willst, kannst du dafür eine Variable einsetzen, bspw. so:

    Code
    event a2=%var1%

    Damit wird der Wert (=Inhalt) der Variable var1 als Aktualparameter an den eventhandler a2 übergeben.

    Ich weiß derzeit nicht mehr, ob man per Kommando ein Ereignis auslösen kann. Wenn dies geht, dann einfach so:

    Code
    event a2=irgendein_Wert

    Ich hoffe, deine Unsicherheit hiermit nicht vergrößert zu haben. ;)

    Nachgereicht:

    Das Speichern in einer Variablen (bspw. mem3 40) entspricht etwa dem Notieren auf einem Zettel.

    Das Auslösen eines Ereignisses (bspw. event a2=3) entspricht etwa einer Aufforderung, etwas mit dem Wert 3 zu tun.

    5 Mal editiert, zuletzt von eich (2. Mai 2022 um 21:05)

  • Wow, ich danke Dir für diese ausführliche Antwort und die Erläuterungen. Das ist nicht selbstverständlich.

    Das heißt, wenn ich nach einem Neustart den Aktualparameter behalten möchte, müsste ich folgendes verwenden, oder?

    Code
    event a2=%mem1%
  • Deine letzte Codezeile ist dann geeignet, wenn du einen nicht konstanten Parameter verwenden willst, dessen Wert bspw. vom Anwender gelegentlich geändert werden können soll. Auch wenn deine Rule leicht pflegbar sein soll, ist die Verwendung einer mem-Variablen ein gutes Mittel.

    Wenn allerdings der Aktualparameter an dieser Stelle grundsätzlich unveränderlich festliegt, lohnt die Verwendung einer mem-Variablen kaum.

    Wenn du bspw. codest

    Code
    event a2=123

    und der Wert 123 ist per se nicht veränderbar, brauchst du dafür %mem1% nicht wirklich.