Ich möchte mit dem Basic und 2 angeschlossenen DS18B20 Fühler meine Pumpe für den Solar- Kreislauf steuern, um meinen Pool (Whirlpool) auf zu heizen.
Auf dem Basic läuft Tasmota 8.3.1
Ich habe dafür aus den Beispielen von Tasmota Solar heater control die Rule auf meine Anforderung umgestrickt.
Die Rule sieht nun so aus:
t1: Fühler im Pool
t2: Fühler im Solar Panel
Mem3 40 : bei erreichen von 40 Grad im Pool Pumpe stoppen.
Rule1
ON DS18B20-1#temperature DO event t1=%value% ENDON
ON DS18B20-2#temperature DO event t2=%value% ENDON
ON event#t1<%mem3% DO Var1 1 ENDON
ON event#t1>=%mem3% DO Var1 0 ENDON
ON event#t1 DO Backlog Var2 %value%; Add2 6 ENDON
ON event#t1 DO Backlog Var3 %value%; Add3 3 ENDON
ON event#t2>=%var2% DO power1 %Var1% ENDON
ON event#t2<=%var3% DO power1 0 ENDON
Eingeschaltet wird das ganze, sobald aber die Temperatur zum abschalten erreicht und auch unterschritten wird fängt das Relais an ständig ein und aus zu schalten.
Die Rule habe ich von : https://tasmota.github.io/docs/Rules/ (https://tasmota.github.io/docs/Rules/) ( Tasmota Solar heater control) und auf meine Bedürfnisse angepasst (auch das original hat das gleiche Problem)
Könnte es sein das addieren nicht richtig hin haut?
Mal die Konsolen Ausgabe:
18:27:38 RUL: EVENT#T1 performs "Backlog var2 22.1; add2 3"
18:27:38 RUL: EVENT#T1 performs "Backlog var3 22.1; add3 5"
18:27:38 RUL: DS18B20-1#TEMPERATURE performs "backlog event t1=22.0"
18:27:38 RUL: DS18B20-2#TEMPERATURE performs "backlog event t2=23.6"
18:27:39 RSL: stat/tasmota_1877F0/RESULT = {"Event":"Done"}
18:27:39 RUL: EVENT#T2>%VAR3% performs "Power1 1"
18:27:39 RSL: stat/tasmota_1877F0/RESULT = {"POWER":"ON"}
18:27:39 RSL: stat/tasmota_1877F0/POWER = ON
18:27:39 RSL: stat/tasmota_1877F0/RESULT = {"Event":"Done"}
18:27:39 RUL: EVENT#T1<%MEM3% performs "var1 1"
18:27:39 RSL: stat/tasmota_1877F0/RESULT = {"Var1":"1"}
18:27:39 RUL: EVENT#T1 performs "Backlog var2 22.0; add2 3"
18:27:39 RUL: EVENT#T1 performs "Backlog var3 22.0; add3 5"
18:27:39 RUL: DS18B20-1#TEMPERATURE performs "backlog event t1=22.0"
18:27:39 RUL: DS18B20-2#TEMPERATURE performs "backlog event t2=23.6"
18:27:39 RSL: stat/tasmota_1877F0/RESULT = {"Event":"Done"}
18:27:39 RUL: EVENT#T2>%VAR3% performs "Power1 1"
18:27:39 RSL: stat/tasmota_1877F0/RESULT = {"POWER":"ON"}
18:27:39 RSL: stat/tasmota_1877F0/POWER = ON
18:27:40 RSL: stat/tasmota_1877F0/RESULT = {"Var2":"21.9"}
18:27:40 RUL: DS18B20-1#TEMPERATURE performs "backlog event t1=22.0"
18:27:40 RUL: DS18B20-2#TEMPERATURE performs "backlog event t2=23.6"
18:27:40 RSL: stat/tasmota_1877F0/RESULT = {"Event":"Done"}
18:27:40 RUL: EVENT#T1<%MEM3% performs "var1 1"
18:27:40 RSL: stat/tasmota_1877F0/RESULT = {"Var1":"1"}
18:27:40 RUL: EVENT#T1 performs "Backlog var2 22.0; add2 3"
18:27:40 RUL: EVENT#T1 performs "Backlog var3 22.0; add3 5"
18:27:40 RSL: stat/tasmota_1877F0/RESULT = {"Var2":"21.9"}
18:27:40 RUL: DS18B20-1#TEMPERATURE performs "backlog event t1=22.0"
18:27:40 RUL: DS18B20-2#TEMPERATURE performs "backlog event t2=23.6"
18:27:41 RSL: stat/tasmota_1877F0/RESULT = {"Event":"Done"}
18:27:41 RUL: EVENT#T1<%MEM3% performs "var1 1"
18:27:41 RSL: stat/tasmota_1877F0/RESULT = {"Var1":"1"}
18:27:41 RUL: EVENT#T1 performs "Backlog var2 22.0; add2 3"
18:27:41 RUL: EVENT#T1 performs "Backlog var3 22.0; add3 5"
18:27:41 RSL: stat/tasmota_1877F0/RESULT = {"Var2":"21.9"}
18:27:41 RUL: DS18B20-1#TEMPERATURE performs "backlog event t1=22.0"
18:27:41 RUL: DS18B20-2#TEMPERATURE performs "backlog event t2=23.6"
18:27:41 RSL: stat/tasmota_1877F0/RESULT = {"Var2":"21.9"}
18:27:41 RSL: stat/tasmota_1877F0/RESULT = {"Var2":"22.0"}
18:27:41 RUL: DS18B20-1#TEMPERATURE performs "backlog event t1=22.0"
18:27:41 RUL: DS18B20-2#TEMPERATURE performs "backlog event t2=23.6"
18:27:42 RSL: stat/tasmota_1877F0/RESULT = {"Add2":"25.000"}
18:27:42 RSL: stat/tasmota_1877F0/RESULT = {"Event":"Done"}
18:27:42 RUL: EVENT#T1<%MEM3% performs "var1 1"
18:27:42 RSL: stat/tasmota_1877F0/RESULT = {"Var1":"1"}
18:27:42 RUL: EVENT#T1 performs "Backlog var2 22.0; add2 3"
18:27:42 RUL: EVENT#T1 performs "Backlog var3 22.0; add3 5"
18:27:42 RUL: DS18B20-1#TEMPERATURE performs "backlog event t1=22.1"
18:27:42 RUL: DS18B20-2#TEMPERATURE performs "backlog event t2=23.6"
18:27:42 RSL: stat/tasmota_1877F0/RESULT = {"Event":"Done"}
18:27:42 RUL: EVENT#T2>%VAR3% performs "Power1 1"
18:27:42 RSL: stat/tasmota_1877F0/RESULT = {"POWER":"ON"}
18:27:42 RSL: stat/tasmota_1877F0/POWER = ON
18:27:42 RUL: EVENT#T2<%VAR2% performs "Power1 0"
18:27:42 RSL: stat/tasmota_1877F0/RESULT = {"POWER":"OFF"}
18:27:42 RSL: stat/tasmota_1877F0/POWER = OFF
18:27:43 RSL: stat/tasmota_1877F0/RESULT = {"Var2":"22.0"}
18:27:43 RUL: DS18B20-1#TEMPERATURE performs "backlog event t1=22.1"
18:27:43 RUL: DS18B20-2#TEMPERATURE performs "backlog event t2=23.6"
18:27:43 RSL: stat/tasmota_1877F0/RESULT = {"Event":"Done"}
18:27:43 RUL: EVENT#T1<%MEM3% performs "var1 1"
18:27:43 RSL: stat/tasmota_1877F0/RESULT = {"Var1":"1"}
18:27:43 RUL: EVENT#T1 performs "Backlog var2 22.0; add2 3"
18:27:43 RUL: EVENT#T1 performs "Backlog var3 22.0; add3 5"
18:27:43 RSL: stat/tasmota_1877F0/RESULT = {"Event":"Done"}
18:27:43 RUL: EVENT#T1<%MEM3% performs "var1 1"
18:27:43 RSL: stat/tasmota_1877F0/RESULT = {"Var1":"1"}
18:27:43 RUL: EVENT#T1 performs "Backlog var2 22.0; add2 3"
18:27:43 RUL: EVENT#T1 performs "Backlog var3 22.0; add3 5"
18:27:43 RUL: DS18B20-1#TEMPERATURE performs "backlog event t1=22.1"
18:27:43 RUL: DS18B20-2#TEMPERATURE performs "backlog event t2=23.6"
18:27:44 RSL: stat/tasmota_1877F0/RESULT = {"Event":"Done"}
18:27:44 RUL: EVENT#T2>%VAR3% performs "Power1 1"
18:27:44 RSL: stat/tasmota_1877F0/RESULT = {"POWER":"ON"}
18:27:44 RSL: stat/tasmota_1877F0/POWER = ON
18:27:44 RSL: stat/tasmota_1877F0/RESULT = {"Var2":"22.0"}
18:27:44 RUL: DS18B20-1#TEMPERATURE performs "backlog event t1=22.1"
18:27:44 RUL: DS18B20-2#TEMPERATURE performs "backlog event t2=23.6"
18:27:44 RSL: stat/tasmota_1877F0/RESULT = {"Var2":"22.0"}
18:27:45 RSL: stat/tasmota_1877F0/RESULT = {"Add2":"25.000"}
18:27:45 RUL: DS18B20-1#TEMPERATURE performs "backlog event t1=22.1"
18:27:45 RUL: DS18B20-2#TEMPERATURE performs "backlog event t2=23.6"
18:27:45 RSL: stat/tasmota_1877F0/RESULT = {"Event":"Done"}
18:27:45 RUL: EVENT#T1<%MEM3% performs "var1 1"
18:27:45 RSL: stat/tasmota_1877F0/RESULT = {"Var1":"1"}
18:27:45 RUL: EVENT#T1 performs "Backlog var2 22.0; add2 3"
18:27:45 RUL: EVENT#T1 performs "Backlog var3 22.0; add3 5"
18:27:45 RSL: stat/tasmota_1877F0/RESULT = {"Event":"Done"}
18:27:45 RUL: EVENT#T1<%MEM3% performs "var1 1"
18:27:45 RSL: stat/tasmota_1877F0/RESULT = {"Var1":"1"}
18:27:45 RUL: EVENT#T1 performs "Backlog var2 22.1; add2 3"
18:27:45 RUL: EVENT#T1 performs "Backlog var3 22.1; add3 5"
18:27:45 RUL: DS18B20-1#TEMPERATURE performs "backlog event t1=22.1"
18:27:45 RUL: DS18B20-2#TEMPERATURE performs "backlog event t2=23.6"
18:27:46 RSL: stat/tasmota_1877F0/RESULT = {"Event":"Done"}
18:27:46 RUL: EVENT#T2>%VAR3% performs "Power1 1"
18:27:46 RSL: stat/tasmota_1877F0/RESULT = {"POWER":"ON"}
18:27:46 RSL: stat/tasmota_1877F0/POWER = ON
18:27:46 RUL: EVENT#T2<%VAR2% performs "Power1 0"
18:27:46 RSL: stat/tasmota_1877F0/RESULT = {"POWER":"OFF"}
18:27:46 RSL: stat/tasmota_1877F0/POWER = OFF
18:27:46 RSL: stat/tasmota_1877F0/RESULT = {"Var2":"22.1"}
18:27:46 RUL: DS18B20-1#TEMPERATURE performs "backlog event t1=22.1"
18:27:46 RUL: DS18B20-2#TEMPERATURE performs "backlog event t2=23.6"
18:27:46 RSL: stat/tasmota_1877F0/RESULT = {"Event":"Done"}
18:27:46 RUL: EVENT#T1<%MEM3% performs "var1 1"
18:27:46 RSL: stat/tasmota_1877F0/RESULT = {"Var1":"1"}
18:27:46 RUL: EVENT#T1 performs "Backlog var2 22.1; add2 3"
18:27:46 RUL: EVENT#T1 performs "Backlog var3 22.1; add3 5"
18:27:46 RSL: stat/tasmota_1877F0/RESULT = {"Var2":"22.1"}
18:27:46 RUL: DS18B20-1#TEMPERATURE performs "backlog event t1=22.1"
18:27:46 RUL: DS18B20-2#TEMPERATURE performs "backlog event t2=23.6"
18:27:47 RSL: stat/tasmota_1877F0/RESULT = {"Event":"Done"}
18:27:47 RUL: EVENT#T1<%MEM3% performs "var1 1"
18:27:47 RSL: stat/tasmota_1877F0/RESULT = {"Var1":"1"}
18:27:47 RUL: EVENT#T1 performs "Backlog var2 22.1; add2 3"
18:27:47 RUL: EVENT#T1 performs "Backlog var3 22.1; add3 5"
18:27:47 RSL: stat/tasmota_1877F0/RESULT = {"Var2":"22.1"}
18:27:47 RUL: DS18B20-1#TEMPERATURE performs "backlog event t1=22.1"
18:27:47 RUL: DS18B20-2#TEMPERATURE performs "backlog event t2=23.6"
18:27:47 RSL: stat/tasmota_1877F0/RESULT = {"Var2":"22.1"}
18:27:47 RSL: stat/tasmota_1877F0/RESULT = {"Var2":"22.0"}
18:27:48 RUL: DS18B20-1#TEMPERATURE performs "backlog event t1=22.1"
18:27:48 RUL: DS18B20-2#TEMPERATURE performs "backlog event t2=23.6"
18:27:48 RSL: stat/tasmota_1877F0/RESULT = {"Add2":"25.000"}
18:27:48 RSL: stat/tasmota_1877F0/RESULT = {"Event":"Done"}
18:27:48 RUL: EVENT#T1<%MEM3% performs "var1 1"
18:27:48 RSL: stat/tasmota_1877F0/RESULT = {"Var1":"1"}
18:27:48 RUL: EVENT#T1 performs "Backlog var2 22.0; add2 3"
18:27:48 RUL: EVENT#T1 performs "Backlog var3 22.0; add3 5"
18:27:48 RUL: DS18B20-1#TEMPERATURE performs "backlog event t1=22.0"
18:27:48 RUL: DS18B20-2#TEMPERATURE performs "backlog event t2=23.6"
18:27:49 RSL: stat/tasmota_1877F0/RESULT = {"Event":"Done"}
18:27:49 RUL: EVENT#T2>%VAR3% performs "Power1 1"
18:27:49 RSL: stat/tasmota_1877F0/RESULT = {"POWER":"ON"}
18:27:49 RSL: stat/tasmota_1877F0/POWER = ON
Hoffe jemand kann helfen, oder hat eine Idee wie mann es anders umsetzen kann.
Gruß
Karsten
Dank eich, aus einem anderen Forum habe ich die richtigen Schubser bekommen:
rule1
ON DS18B20-1#temperature DO event t1=%value% ENDON
ON DS18B20-2#temperature DO event t2=%value% ENDON
ON event#t2>%mem3% DO var1 1 ENDON
ON event#t2<=%mem3% DO var1 0 ENDON
on event#t1 do backlog var2 %value%; var3 %value%; event a2=3; event a3=5 endon
on event a2 do add2 %value% endon
on event a3 do add3 %value% endon
ON event#t2>%var2% DO Power1 %var1% ENDON
ON event#t2<%var3% DO Power1 0 ENDON
ON power1#state=1 Do RuleTimer1 1800 ENDON
ON rules#timer=1 do Power1 off ENDON
Zur Sicherheit noch einen Timer hinzu gefügt, falls ein Fühler mal ausfällt und die Pumpe dadurch rund um die Uhr läuft.
Für mich: SaveData 1 musste gesetzt werden damit die Rules gespeichert werden. (Standard ist SaveData 1)
Zu früh gefreut, auch die obige rule hatte nicht funktioniert.
Lösung ist : ältere Versionen funktionieren einwandfrei, bin jetzt bei 8.1.0 gelandet, schon die 8.2.0 funktioniert schon nicht mehr (neuere auch nicht).
Keine Ahnung warum das so ist.
Hatte den Flash Speicher schon komplett (1MB) mit ff überschrieben und danach die 8.3.1.6 geflascht, leider ohne Erfolg.
Die Rule die Funktioniert auf der V 8.1.0 :
rule1
ON DS18B20-1#temperature DO event t1=%value% ENDON
ON DS18B20-2#temperature DO event t2=%value% ENDON
ON event#t1<%mem3% DO var1 1 ENDON
ON event#t1>=%mem3% DO var1 0 ENDON
ON event#t2 DO Backlog var2 %value%; add2 3 ENDON
ON event#t2 DO Backlog var3 %value%; add3 6 ENDON
ON event#t1>%var3% DO Power1 %var1% ENDON
ON event#t1<%var2% DO Power1 0 ENDON
ON power1#state=1 Do RuleTimer1 1800 ENDON
ON rules#timer=1 do Power1 off ENDON
Habe Hier die Fühler getauscht.
Na dann mache ich hier mal weiter mit meinem Monolog.
Möchte mich bei barbudor von discord.com bedanken.
ZitatThe problem in the logs was that on DS18BX20 was executed before the last parts of the previous occurence was completed
Total mess
Maybe some things has changed in tasmota regarding order of executions in rules
But anyhow, there is no need to control heater/pump at 1 second period
Rule ist jetzt geändert auf :
rule1
ON tele-DS18B20-1#temperature DO event t1=%value% ENDON
ON tele-DS18B20-2#temperature DO event t2=%value% ENDON
ON event#t2<%mem3% DO var1 1 ENDON
ON event#t2>=%mem3% DO var1 0 ENDON
ON event#t2 DO Backlog var2 %value%; add2 3 ENDON
ON event#t2 DO Backlog var3 %value%; add3 6 ENDON
ON event#t1>%var3% DO Power1 %var1% ENDON
ON event#t1<%var2% DO Power1 0 ENDON
ON power1#state=1 Do RuleTimer1 1800 ENDON
ON rules#timer=1 do Power1 off ENDON
Teleperiod auf 10 gestellt.
Mem3 40
Jetzt funktioniert es auch mit den Tasmota Versionen über 8.1.0
Wenn jemand beziehungen zu der Seite hat:
https://tasmota.github.io/docs/Rules/#solar-heater-control
Hier könnte das nicht funktionierende Beispiel (Versionen über Tasmota 8.1.0) abgeändert werden.
Hoffe ich konnte hiermit dem einen oder anderen helfen.
So ganz funktioniert Deine Variante bei mir nicht.
Aber
Sie liefert den richtigen Ansatzpunkt mit "tele"
Danke