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
Kurze Hilfe für Rule und Wert-Anpassung
-
topsurfer -
21. September 2025 um 18:03 -
Erledigt
-
-
- Zur hilfreichsten Antwort springen
-
Keiner einen kurzen Tipp für mich

-
Backlog rule1 1; rule2 1
rule1
on DS18B20-2#Temperatur do backlog Var1 %value%; Mult1 1.15; Add1 2; event Q1 endonrule2
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 endonrule2
on event#Q1 do Ergebnis ist %Var1% endon -
-
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: 111: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% endonhast du den Wert auf dem WebUI
rule1
on tele-DS18B20-2#Temperature do backlog Var1 %value%; Mult1 1.15; Add1 2; event Q1 endontele- macht dann einen Speicherschoner für Devicename wenn es auf erträgliche Zeitintervalle gestellt wird
-
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" ...
-
-
ich habe keinen MQTT-Server im Einsatz könnte aber sein das eine Erweiterung wenn du Standard verwendest geht ( Test tauschen )
rule2
on event#Q1 do backlog Devicename Korrekturtemp. %Var1%; publish tele/%topix%/Test %VAR1% endon -
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"}; -
zeige mal den Output von Rule0 Eingabe
-
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
Code10: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":""}} -
Ausgabe von Rule0 sieht gut aus ( bis auf den Doppelpunkt vor der Variablen)
-
Komisch, jtzt fällt mir auf, das der Wert in der Web-GUI sich nicht (mehr) ändert,
auch wenn ich den Frei-Text in der der rule2 ändere, bleibt immer der alte Text stehen (mit altem Wert).
("Rechnen" tut er so wie ich will, sieht man in der Console (senden per MQTT geht auch nicht, aber das ist (jetzt) nachrangig) -
ja - so etwas kann passieren wenn sich Sonderzeichen in die Leerzeichen einschleichen durch Umbauten
Rule0 "" setzen und neu laden und eventuell mit einem Hexeditor ( Notepad+) die Codedaten vor dem Senden prüfen
-
Wäre es nicht einfacher, einen PT1000 zu verwenden?
-
-
rule2 on event#Q1 do backlog Sauna-ESP %Var1%; publish %topix%/Testmartin %VAR1% endon
bei der Rule2 kam nichts an?
-
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"}; -