Esp8266 mit Tasmota Rules mit mehreren Bedingungen

  • Gebe ich bei den Temperaturen zum Beispiel 22,5° ein, muss ich hier mit , oder . trennen?

    Mit Punkt "."

    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

  • Ok danke


    Das läuft jetzt mal soweit.

    Wenn ich jetzt einen SSD1306 OLED Display anschließen will und den Status ausgeben will.

    Wie muss ich jetzt den display konfigurieren?

    Die rule hab ich

    Displaymode 0 damit ich eigene Daten anzeigen kann

    Und wieviele zeilen bzw spalten hat dieser display?

    Oder wird das hier anders dargestellt?

    EDIT: Habs schon hinbekommen.

    Jetzt gehts noch an die Positionierung

    Einmal editiert, zuletzt von Daniel1401 (2. Februar 2022 um 05:42)

  • on system#init do backlog var1 %mem1%; sub1 %mem2%; var2 %mem1%; add2 %mem2% endon

    backlog var1 %mem1% in der Konsole

    ergibt bei mit schon RESULT = {"Var1":"%mem1%"}


    - ja das sieht mit einem event dann schon anders aus, macht es mit testen anstrengend oder gibt es dazu einen Trick ?

    Einmal editiert, zuletzt von karoCB (8. Mai 2022 um 13:39)

  • Moin

    bei mir nicht :/

    mem1 20

    mem2 5

    on system#init do backlog var1 %mem1%; sub1 %mem2% endon

    Code
    RESULT = {"Var1":"20"}
    RESULT = {"Sub1":"15.000"}

    EDIT:

    Ach es geht um das backlog var1 %mem1% ... stimmt, da wird mem1 als String eingelesen. Kurios !!

    Könntest du so umgehen:

    on mem1 do var1 %value% endon

    Das funktioniert wenn du einfach mem1 oder mem in der Konsole aufrufst.

    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

    Einmal editiert, zuletzt von HoerMirAuf (9. Mai 2022 um 07:25)

  • Ja - es geht um das backlog var1 %mem1% ..

    Phase 1 - 12:54:53.844 CMD: on mem3 do var3 %mem3% endon

    Fehler ? (R. 9,5,0.9) - 12:54:53.849 RSL: RESULT = {"Command":"Unknown"}

    Phase 2 - 12:54:59.608 CMD: mem

    Zielausgabe: - 12:54:59.617 RSL: RESULT ={"Mem1":"","Mem2":"","Mem3":"1","Mem4":"","Mem5":"","Mem6":"","Mem7"..,"Mem16":""}

    - 12:55:20.983 CMD: var

    - 12:55:20.990 RSL: RESULT = {"Var1":"1","Var2":"","Var3":"0","Var4":"","Var5":"","Var6":"","Var7":"...":"","Var16":""}

    Super Idee - wie erhofft von dir - aber die Übernahme in die Variable 3 erfolgt nicht

  • Ich geb zu, ich hab mit mem<x> bisher nur im system#init gearbeitet aber offenbar funktioniert das mit %mem<x>% nicht im Normalbetrieb :/

    Super Idee - wie erhofft von dir - aber die Übernahme in die Variable 3 erfolgt nicht

    Doch, doch, das funktioniert schon aber du musst schon, wie im obigen Beispiel, den %value% nehmen nicht %mem3%, das Problem scheint ja eben genau da zu liegen das sich der memory nicht mit %mem<x>% auslesen lässt.

    rule1 on mem1 do var1 %value% endon on mem2 do var2 %value% endon on mem3 do var3 %value% endon

    backlog rule1 1; mem1 5; mem2 10; mem3 15; mem

    Code
    15:02:48.592 MQT: stat/FLURLICHT/RESULT = {"Mem1":"5","Mem2":"10","Mem3":"15" ..... }
    15:02:48.603 RUL: MEM1 performs "var1 5"
    15:02:48.610 MQT: stat/FLURLICHT/RESULT = {"Var1":"5"}
    15:02:48.619 RUL: MEM2 performs "var2 10"
    15:02:48.627 MQT: stat/FLURLICHT/RESULT = {"Var2":"10"}
    15:02:48.636 RUL: MEM3 performs "var3 15"
    15:02:48.643 MQT: stat/FLURLICHT/RESULT = {"Var3":"15"}

    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

  • Ist das ein Problem einer neueren Tasmota Version?

    Ich habe schon lange keine Rules mehr erstellt. Auf einem meiner Shelly 1 und Tasmota 8.3.0 läuft bspw. u.a. die folgende Rule fehlerfrei:

    Code
    on mem2#state do
        backlog var7 %mem2%;add7 1;event p6
    endon

    Never change a running system. ;)

  • Ich hab tatsächlich keine Ahnung aber mir kam auch schon der Gedanke, das das ein Bug sein könnte.

    Wie gesagt arbeit ich kaum mit mem<x> daher ist mir das bisher nicht aufgefallen aber ich war auch der Meinung das das mal ging mit mem<x> außerhalb vom system#init.

    Aber ich hab nirgends eine Version unter 10 am laufen um das zu verifizieren .....

    Ah beim Changelog von:

    [9.0.0.2] - 20201025

    Fixed

    Rule handling of Var or Mem using text regression from v8.5.0.1 (#9540)

    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

    Einmal editiert, zuletzt von HoerMirAuf (10. Mai 2022 um 18:56)

  • on Power3#state do Backlog VAR3 5; ADD3 %mem3% endon

    sowas geht schon, ist aber sehr schlecht im Test, da ein Konsolentest andere Daten zurück gibt :(

    Aber die Kommunikation hat sich für mich gelohnt - ich nehme die Idee der var; mem; :thumbup:- Ausgabe mit in die Aktion auf, das macht einen Test schon wesentlich besser.

    Ziel ist: in Abhängigkeit vom Inhalt mem3 Aktionen vorbereiten

    Rule1

    on Power3#state do Backlog VAR3 5; ADD3 %mem3% endon

    ...

    19:07:49.758 RUL: POWER3#STATE performs "Backlog VAR3 5; ADD3 1; var; mem"

    19:07:49.938 RSL: RESULT = {"Var3":"5"}

    19:07:50.135 RSL: RESULT = {"Add3":"6.000"}

    19:07:50.278 RUL: VAR3#STATE==6 performs "Backlog Power2 1; delay 120; Power2 0; VAR3 0"

    19:07:50.465 RSL: RESULT = {"Var1":"","Var2":"","Var3":"6.000","Var4":"","Var5":"","Var6":"","Var7":"","Var8":"","Var9":"","Var10":"","Var11":"",","Var16":""}

    19:07:50.698 RSL: RESULT = {"Mem1":"1","Mem2":"","Mem3":"1","Mem4":"","Mem5":"","Mem6":"","Mem7":"","Mem8":"","Mem9":"","Mem10":"","Mem16":""}

  • Ich verstehe noch nicht ganz, was dich verwirrt oder stört. Die Konsolenausgaben erscheinen mir schlüssig.

    Für etwas mehr Komfort, vor allem, was eine Editierbarkeit der Rules betrifft, sorgt bspw. der "Tasmota Device Manager".

    Er ist afaik allerdings auf MQTT Kommunikation angewiesen, was einen MQTT Broker voraussetzt.

    Er hat zwar eine Macke, ist aber insgesamt hilfreich.

    Einmal editiert, zuletzt von eich (10. Mai 2022 um 22:53)

  • Es geht um das backlog var1 %mem1% bei einer Konsoleneingabe, da wird mem1 als String eingelesen und nicht sein Inhalt !.

    Im Rule-Ablauf läuft es wie geplant - das war im Test für mich etwas verwirrend.

    Kurios !! wie "HoerMirAuf" schreibt !

    Das haben wir ab und an leider bei Tasmota - mal geht es gut in der Konsoleneingabe aber nicht in der Rule und hier mal anders rum !

    Bisher haben wir aber für alles Abhilfe gefunden.

  • Ah ja.

    Ich habe es in Version 8.3.0 und in 9.5.0 getestet, sowohl Web-Konsole als auch TDM.

    Stimmt, bei diesen Eingaben gibt es diesen Fehler. Aber meine vollgestopften Rules funktionieren wie gewünscht.

    Ich habe das vorher nicht festgestellt, weil ich eine selbst erstellte Konsole verwendete, wo es diesen Fehler wohl nicht gab.

    Ich habe vor ca. 2 Jahren sehr ausgiebig mit den Rules experimentiert, um das Rule-Verhalten zu verstehen und meine Anwendungen zu implementieren. In den Abarbeitungen/Interpretationen der Rules habe ich nie einen solchen Fehler festgestellt, solange ich diese geeignet erstellte.

    Deshalb vermute ich den Fehler eher in der Konsole, also dieser Mensch-Maschinen-Schnittstelle.