Kurze Hilfe für Rule und Wert-Anpassung

  • Hallo,
    habe das Thema selbst jetzt schon paar mal versucht zu lösen, zuletzt auch mittels Gemini-KI, aber keine zufriedenstellende Lösung gefunden.


    Möchte mittels einer Rule "einfach" den Temperaturwert eines angeschlossenen Temperatur-Sensors mit einer einfachen Formel korrigieren (der Sensor liefert bei hohen Temperaturen eine mir zu hohe Abweichung, soll hier aber nicht diskutiert werden).

    Das habe ich versucht, aber funktioniert halt nicht:
    rule1 on DS18B20-2#Temperature do %event#value% * 1.15 + 2 endon

    event-value ist wohl falsch (?), Klammern müssen auch noch hin.

    Danke für kurze Hilfe,
    Martin

    3 Mal editiert, zuletzt von topsurfer (22. September 2025 um 11:59)

  • Zur hilfreichsten Antwort springen
  • Backlog rule1 1; rule2 1

    rule1
    on DS18B20-2#Temperatur do backlog Var1 %value%; Mult1 1.15; Add1 2; event Q1 endon

    rule2
    on event#Q1 do Ergebnis ist %Var1% endon


    ____________________________

    Test - mit Eingabe von VAR2 auf der Konsole

    rule1
    on VAR2#State do backlog Var1 %value%; Mult1 1.15; Add1 2; event Q1 endon

    rule2
    on event#Q1 do Ergebnis ist %Var1% endon

    komplexer dann hier  

    4 Mal editiert, zuletzt von karoCB (23. September 2025 um 08:09)

  • topsurfer 23. September 2025 um 12:08

    Hat einen Beitrag als hilfreichste Antwort ausgewählt.
  • Danke dir,
    beim "Test" zeigt er auf der Console auch die korrekt korrigierten Werte dann an (wenn ich var2 auf der Console setze).

    Aber die "echten" Werte werden nicht angepasst, weder auf der Console, der GUi oder was per MQTT verteilt wird.
    Da steht der orig. Wert von DS18B20-2 drin (?)

    Wo ist da noch der Fehler / mein Fehler ?


    Code: 1
    11:07:38.259 MQT: tele/esp/Sauna-ESP/SENSOR = {"Time":"2025-09-23T11:07:38","COUNTER":{"C1":47},"DS18B20-1":{"Id":"0114542153FF","Temperature":17.4},"DS18B20-2":{"Id":"9AE3510A6461","Temperature":13.0},"TempUnit":"C"}
    
    11:07:41.995 CMD: rule1
    11:07:42.000 MQT: stat/esp/Sauna-ESP/RESULT = {"Rule1":{"State":"ON","Once":"OFF","StopOnError":"OFF","Length":84,"Free":427,"Rules":"on DS18B20-2#Temperatur do backlog Var1 %value%; Mult1 1.15; Add1 10; event Q1 endon"}}
    
    11:07:44.231 CMD: rule2
    11:07:44.238 MQT: stat/esp/Sauna-ESP/RESULT = {"Rule2":{"State":"ON","Once":"OFF","StopOnError":"OFF","Length":40,"Free":471,"Rules":"on event#Q1 do Ergebnis ist %Var1% endon"}}
    • Hilfreichste Antwort

    tja - auf der WebUI wird das Original angezeigt - das bleibt mit der Methode. Wie du die Werte aus der Rule2 versendest ( Var1) kann ich nicht erkennen !


    1. Kopierfehler von mir - e fehlt !

    DS18B20-2#Temperatur(e)

    2. mit der Anpassung

    rule2
    on event#Q1 do Devicename Korrekturtemp. %Var1% endon

    hast du den Wert auf dem WebUI


    rule1
    on tele-DS18B20-2#Temperature do backlog Var1 %value%; Mult1 1.15; Add1 2; event Q1 endon

    tele- macht dann einen Speicherschoner für Devicename wenn es auf erträgliche Zeitintervalle gestellt wird

    Einmal editiert, zuletzt von karoCB (23. September 2025 um 14:09)

  • Das fehlende "e" ist mir auch nicht aufgefallen, hab 3x alles kontrolliert und gelesen :(

    Den korr. Wert sehe ich nuin in der Web-Gui,
    aber über MQTT wird der richtige/korriguierte Wert nicht übertragen (benötige ihn ja dort für iobroker)
    (den korr. Wert "Korrekturtemp." sehe ich auch nicht im MQTT).

    Wenn ich jetzt noch den Wert über MQTT "sehe" ... ;)

  • topsurfer 23. September 2025 um 14:21

    Hat einen Beitrag als hilfreichste Antwort ausgewählt.
  • OK, verstehe.

    Sehe leider kein MQTT Wert,
    hab andere Rules mir mal angschaut,
    ich hab da was gefunden mit einem ":" vor dem Variablennamen (:%var3%) (und ohne Leerzeichen
    oder auch ein: publish2 tele ...

    Beides versucht, aber das Topic sehe ich nich im MQTT Baum.
    Noch jemand nee Idee?
    Thx!

  • hast du das Test gewechselt in deinen Gerätenamen ?

    teleperiod auf 10 zum Test gestellt oder Standard 5 Minuten gewartet ?


    rule2
    on event#Q1 do backlog Devicename Korrekturtemp. %Var1%; publish %topic%/Temp {"Time":"%TIME%","DS18B20":{"Id":"DS18B20-2","Temperature":%VAR1%},"TempUnit":"C"};

    Einmal editiert, zuletzt von karoCB (24. September 2025 um 04:30)

  • Hallo,
    ja, zum testen habe ich Teleperiod auf 15 (s) eingestellt.


    Gerätenamen hab ich angepasst auf "Sauna-ESP", ist doch der richtige, oder?

    Probiert habe ich jetzt (publish/publish2; tele zu Beginn, ":" statt Leerstelle vor der Variablen:

    rule2 on event#Q1 do backlog Sauna-ESP Korrekturtemp. %Var1%; publish %topix%/Testmartin %VAR1% endon
    rule2 on event#Q1 do backlog Sauna-ESP Korrekturtemp. %Var1%; publish2 %topix%/Testmartin %VAR1% endon
    rule2 on event#Q1 do backlog Sauna-ESP Korrekturtemp. %Var1%; publish %topix%/Testmartin:%VAR1% endon
    rule2 on event#Q1 do backlog Sauna-ESP Korrekturtemp. %Var1%; publish2 tele/%topix%/Testmartin:%VAR1% endon
    rule2 on event#Q1 do backlog Sauna-ESP Korrekturtemp. %Var1%; publish2 %topix%/Testmartin:%VAR1% endon
    rule2 on event#Q1 do backlog Sauna-ESP Korrekturtemp. %Var1%; publish tele/%topix%/Testmartin:%VAR1% endon

    Aber im Baum finde ich nirgends ein "Testmartin"

  • zeige mal den Output von Rule0 Eingabe

    Code
    10:28:06.412 CMD: rule0
    
    10:28:06.420 MQT: stat/esp/Sauna-ESP/RESULT = {"Rule1":{"State":"ON","Once":"OFF","StopOnError":"OFF","Length":85,"Free":426,"Rules":"on DS18B20-2#Temperature do backlog Var1 %value%; Mult1 1.15; Add1 10; event Q1 endon"}}
    
    10:28:06.438 MQT: stat/esp/Sauna-ESP/RESULT = {"Rule2":{"State":"ON","Once":"OFF","StopOnError":"OFF","Length":165,"Free":346,"Rules":"on event#Q1 do backlog Sauna-ESPKorrekturtemp. %Var1%; publish %topic%/Tempmartin {\"Time\":\"%TIME%\",\"DS18B20\":{\"Id\":\"DS18B20-2\",\"Temperature\":%VAR1%},\"TempUnit\":\"C\"};"}}
    
    10:28:06.468 MQT: stat/esp/Sauna-ESP/RESULT = {"Rule3":{"State":"OFF","Once":"OFF","StopOnError":"OFF","Length":0,"Free":511,"Rules":""}}
  • OK,
    hab einen alten Tasmota Dump restored und die 2 Rules wieder eingetragen, das geht jetzt wieder (aber halt immer noch keine korrigierten MQTT Werte; aber OK, dann muss ich diese in iobroker (nochmal) anpassen.

    Danke dir /euch!

  • rule2 on event#Q1 do backlog Sauna-ESP %Var1%; publish %topix%/Testmartin %VAR1% endon

    bei der Rule2 kam nichts an?

    Hi,

    in der >Console sehe ich (jetzt) auch einen Fehler, fehltr da in der Rule noch etwas? Command unknown ...

    Code
    ...
    09:14:58.033 MQT: stat/esp/Sauna-ESP/RESULT = {"Event":"Done"}
    09:14:58.056 RUL: EVENT#Q1 performs 'backlog Sauna-ESP 13; publish %topix%/Testmartin 13'
    09:14:58.083 MQT: stat/esp/Sauna-ESP/RESULT = {"Command":"Unknown","Input":"SAUNA -ESP 13"}
    09:14:58.296 RUL: DS18B20-2#TEMPERATURE performs 'backlog Var1 9.7; Mult1 1.18; Add1 1; event Q1'
    09:14:58.332 MQT: %topix%/Testmartin = 13
  • ja topix ist als Variante falsch von mir geschrieben %topic% so !

    war ja nur ein jetzt erfolgreicher Zwischentest für die Sendung sicherlich das JSON erforderlich nach dem Rule2 so:

    rule2
    on event#Q1 do backlog Devicename Korrekturtemp. %Var1%; publish %topic%/Temp {"Time":"%TIME%","DS18B20":{"Id":"DS18B20-2","Temperature" %VAR1%},"TempUnit":"C"};

    Einmal editiert, zuletzt von karoCB (26. September 2025 um 19:07)