Poolheizung, Solarthermi

Begonnen von coolheizer, 27 Juni 2020, 13:34:56

Vorheriges Thema - Nächstes Thema

coolheizer

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/ ( 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
FHEM 5.8 auf Raspberry Pi 3, HM-MOD-UART und  MapleCUN.
HM-MOD-Re-8 für Velux Rolladensteuerung.
HM-CC-RT-DN.
HM-SEC-SCo.
HM-LC-Bl1PBU-FM.

coolheizer

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)
FHEM 5.8 auf Raspberry Pi 3, HM-MOD-UART und  MapleCUN.
HM-MOD-Re-8 für Velux Rolladensteuerung.
HM-CC-RT-DN.
HM-SEC-SCo.
HM-LC-Bl1PBU-FM.

coolheizer

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.
FHEM 5.8 auf Raspberry Pi 3, HM-MOD-UART und  MapleCUN.
HM-MOD-Re-8 für Velux Rolladensteuerung.
HM-CC-RT-DN.
HM-SEC-SCo.
HM-LC-Bl1PBU-FM.

coolheizer

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.
FHEM 5.8 auf Raspberry Pi 3, HM-MOD-UART und  MapleCUN.
HM-MOD-Re-8 für Velux Rolladensteuerung.
HM-CC-RT-DN.
HM-SEC-SCo.
HM-LC-Bl1PBU-FM.

Teamdrachen

So ganz funktioniert Deine Variante bei mir nicht.
Aber
Sie liefert den richtigen Ansatzpunkt mit "tele"

Danke