Zusätzliche Datenausgabe im WebGUI für Rule (Beispiel Max/Min CPU-Temperatur mit Timestamp)

  • Wenn der Devicename nicht für Alexa-Kopplungen benötigt wird, kann an dieser Stelle eine Ausgabe auf der Rule-Webseite erfolgen.

    Leider ist eine Aktualisierung der Webseite nötig um die letzten Daten zu erhalten.


    Rule3

    on mem1#State do backlog mem3 -50; mem2 100; mem12 0;mem13 0; LedPower 0; delay 30; LedPower 1 endon

    on tele-ANALOG#Temperature do Temperatur: %value% max: %mem3% %mem13% min: %mem2% %mem12% endon

    on tele-ANALOG#Temperature<%mem2% do Backlog mem2 %value%; mem12 %time% endon

    on tele-ANALOG#Temperature>%mem3% do Backlog mem3 %value%; mem13 %time% endon

    on tele-ANALOG#Temperature do VAR5 Temp_max:%mem3%_%mem13%_min:%mem2%_%mem12% endon

    on VAR5#State do Devicename <h4><input name="karoCB" value=%value%> endon


  • Wer auf das manuelle Refresh verzichten muss, ersetzt die letzte Zeile und bekommt alle 5 Sekunden ein autorefresh.


    on VAR5#State do Devicename <h4><input name="karoCB" value=%value%> <meta http-equiv="refresh" content="5"> endon

  • Achtung! nach dem ersten Leerzeichen ist Ende. Zur Unterstützung der Ansicht sind dann

    Steuerzeichen möglich in der Ausgabe, aber die verbrauchen sehr viel begrenzten Ausgabetext!


    on tele-ANALOG#Temperature do VAR5 Tmax:&WCF_AMPERSAND ;%mem3%_%mem13%__min:%mem2%_%mem12% endon



  • Nachtrag: diese Rule-Erweiterung für eine Anzeige traue ich mich noch nicht in das Wiki zu legen, da ein Verschleiß der Speicherzellen im Permanentspeicher ohne Kenntnis vom Betriebssystem nicht möglich ist. Da abhängig von Rücksetzungen und Temperaturhysterese mit täglich 3 Zellschreibungen zu rechnen ist, 1000 nach einem Jahr für eine Endbewertung noch nicht ausreichend.


    Wer macht einen gezählten Dauertest ?


    Rule1

    on VAR5#State do backlog Devicename <h4><input value=%value%>; Add5 1; delay 3000 endon

  • Es gehen bis auf dem ersten Button auch Ausgaben innerhalb eines Buttons dynamisch zu realisieren. Die Ausgabemenge ist natürlich begrenzt - Konsolenlog beachten.

    ON Power2#state do Backlog Webbutton2 Werte<hr>MinTemp:%mem2%°C %mem12%<p>MaxTemp:%mem3%°C %mem13%; Webbutton3 Reset all<hr>letzteEin:%mem5%<p>letzteAus:%mem4%; POWER2 0 endon




  • Weitere Ausgaben von fest gespeicherten Daten (%memx%) sind natürlich in der Console anzeigbar - aber wer erinnert sich noch nach 2 Jahren an den Aktivierungscode (hier z.B. setze VAR2 auf A und es zeigt an - siehe unten)


    Aber wie kann der Befehl unter 1.) dynamisiert werden in der IP (%LIP% gibt es nur im Skript nicht bei Rule) - jemand eine Idee :?:

    Wie IPAddresse1 in ein Variable zwingen?


    Ablauf:

    Dazu kann ein Button mit Link umgebaut werden mit nachfolgender Verarbeitung:

    1. Button einmalig setzen

    Webbutton3 <a href="http://192.168.xxx.xxx/cs?"style="color:black">Dateninfo</a>


    2. Rule

    rule3

    ON Power3#state do Backlog Power3 0; VAR2 A; VAR2 1 endon

    on VAR2#state=A do Backlog ===>MinTemp:%mem2%°C__%mem12% MaxTemp:%mem3%°C__%mem13% endon

    on VAR2#state=A do Backlog ===>letzteEin:%mem5% letzteAus:%mem4% endon

    on VAR2#state=A do Backlog ===>bei Trigger:%mem1% °C Powermax:%mem8% W__%mem9% endon

    on VAR2#state=A do Backlog ===>bei MaxInterval:%mem10%__%mem7% endon



    3.


    4.

  • Nachtrag: bei der Summe der möglichen Rule-Ausgabevarianten über

    Button mit Link, Button mit Daten oder Devicename mit flexiblen Text ist der maximale Stringspeicher von Tasmota zu beachten - sonst kommt es zur Ausgabe von "Text overflow by xx char(s)"

    und die Rules werden nicht mehr sicher abgearbeitet.


    Letzte Stelle Status 2 zeigt den Stand - aktuell/Maximum

    22:26:17.212 CMD: status 2

    22:26:17.217 RSL: STATUS2 = {"StatusFWR":{"Version":"12.2.0(tasmota)","BuildDateTime":"2022-10-17T08:39:23","Boot":31,"Core":"2_7_4_9","SDK":"2.2.2-dev(38a443e)","CpuFrequency":80,"Hardware":"ESP8266EX","CR":"698/699"}}

  • Die Ausprägung von verschieden NTPServern hat keinen Einfluss auf den verfügbaren Tasmota-Stringspeicher (ca.120 Zeichen)

    Intern und extern könnte es so weiter bleiben für eine FritzBox.


    Backlog NtpServer1 192.168.178.1; NtpServer2 2.de.pool.ntp.org; NtpServer3 3.de.pool.ntp.org

  • Was muss ich ändern, damit in VAR4 das Ergebnis der Subtraktion zur Auswertung des (maximalen) Einschaltintervalls steht?


    Testskript

    Rule1

    on Power1#State=0 do Backlog SUB5 %time%; MULT5 -1; VAR4 %VAR5% endon

    on Power1#State=1 do Backlog VAR5 %time%; VAR4 0 endon


    Consolenausgabe Testrule:

    20:51:33.646 RSL: RESULT = {"POWER1":"ON"}

    20:51:33.648 RSL: POWER1 = ON

    20:51:33.731 RUL: POWER1#STATE=1 performs "Backlog mem5 2023-01-30T20:51:33; VAR5 1251; VAR4 0"

    20:51:33.739 RSL: RESULT = {"Mem5":"2023-01-30T20:51:33"}

    20:51:33.990 RSL: RESULT = {"Var5":"1251"}

    20:51:34.234 RSL: RESULT = {"Var4":"0"}

    20:54:05.964 RSL: RESULT = {"POWER1":"OFF"}

    20:54:05.966 RSL: POWER1 = OFF

    20:54:06.054 RUL: POWER1#STATE=0 performs "Backlog mem4 2023-01-30T20:54:06; SUB5 1254; MULT5 -1; VAR4 1251"

    20:54:06.067 RSL: RESULT = {"Mem4":"2023-01-30T20:54:06"}

    20:54:06.318 RSL: RESULT = {"Sub5":"-3.000"}

    20:54:06.568 RSL: RESULT = {"Mult5":"3.000"}

    20:54:06.817 RSL: RESULT = {"Var4":"1251"} <== hier hätte ich 3 erhofft !


    Gesamter Skript:

    Rule1

    ON System#Init do Backlog WifiConfig 4; CalcRes 0; Power2 0; Power3 0 endon

    ON Button1#state=2 do Backlog Power1 2; RuleTimer1 600 endon

    ON Power2#state do Backlog VAR2 M; POWER2 0 endon

    ON Power3#state do Backlog VAR2 A; POWER3 0 endon

    on Rules#Timer=1 do Power 0 endon


    Rule2

    on tele-Energy#Power>%mem8% do Backlog mem8 %value%; mem9 %timestamp% endon

    on tele-DS18B20#Temperature<%mem2% do Backlog mem2 %value%; mem12 %timestamp%; VAR9 1 endon

    on tele-DS18B20#Temperature>%mem3% do Backlog mem3 %value%; mem13 %timestamp%; VAR9 1 endon

    on tele-DS18B20#Temperature>%mem1% do Power 0 endon

    on tele-DS18B20#Temperature<%mem1% do Power 1 endon

    on Power1#State=0 do Backlog mem4 %timestamp%; SUB5 %time%; MULT5 -1; VAR6 1 endon

    on Power1#State=1 do Backlog mem5 %timestamp%; VAR5 %time%; VAR4 0 endon


    Rule3

    on VAR2#state=A do Backlog Temperatur max:%mem13%_%mem3%°C min:%mem12%_%mem2%°C endon

    on VAR2#state=A do Backlog letzte Ein:%mem5%_%mem1%°C Aus:%mem4%_%mem1%°C endon

    on VAR2#state=A do Backlog Power max:%mem9%_%mem8%_W endon

    on VAR2#state=A do Backlog Intervall max:%mem10%_%VAR4% endon

    on VAR2#state=A do Backlog VAR2 1 endon

    on VAR9#State=1 do Backlog VAR9 0; Webbutton2 max/min Reset<hr>maxTemp:%mem3%°C <p>minTemp:%mem2%°C endon

    on VAR4#State>%mem7% do mem7 %VAR4%; mem10 %timestamp% endon

    on mem7#State do mem10 %timestamp% endon

    on mem1#State do Backlog VAR1 %mem1% endon

    on VAR1#State do Backlog Devicename <input value=%VAR1%> endon

    on VAR2#State=0 do Backlog energytotal 0; energytoday 0; mem4 0; mem5 0; mem7 0; mem8 0; mem9 0; mem10 0; Restart 1 endon

    on VAR2#State=M do Backlog VAR2 1; mem3 -50; mem2 100; mem13 0; mem12 0 endon


    mem1 = Triggertemperatur

  • Moin.

    on Power1#State=0 do Backlog SUB5 %time%; MULT5 -1; VAR4 %VAR5% endon

    var4 übernimmt den Wert der zum Laufzeitbeginn der Rule in var5 steht.

    Änderungen WÄHREND der Lauftzeit der Rule werden nicht berücksichtigt. Das kommt erst nach der Rule zum tragen.

    Du müsstest also das var4 %var5% irgendwie in eine separate Rule auslagern.


    Etwas in der Art wie:

    on Power1#State=0 do Backlog SUB5 %time%; MULT5 -1 endon on var5#state do VAR4 %VAR5% endon

    benzino77 Tasmocompiler

    Gitpod Master 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

    mosquitto/bash/html/cgi auf RPI 2B+