Hallo,
ich möchte täglich zwischen 10:01 und 17:29 jede 15 Minuten prüfen, ob die Pumpe für die Solarumwälzung gestartet werden kann bzw. gestoppt werden muss. Dazu muss die Sandfilteranlage aus sein und die Temperatur vom Solarpanel >35°C sein. Sinkt die Temperatur unter 30°C soll die Solarumwälzung wieder gestoppt werden (Temperatur ist indirekt, Sensor liegt (noch) nicht im Wasserstrom des Solarpanel.
Homematic 4Kanal Hutschienen Schalter
SWI_AU_GA_Pool_4CH_CH1: Sandfilteranlage
SWI_AU_GA_Pool_4CH_CH2: Stromsparende Pumpe für Solarumwälzung
SWI_AU_GA_Pool_4CH_CH3: UV Desinfektion (Soll mit der Solarumwälzung gestartet werden, da die Durchflussgeschwindigkeit geringer ist, als bei der Sandfilteranlage)
Temperaturdifferenzsensor Homematic:
TMP_DIFF_SEN1_T2: Oberflächentemperatur des Solarpanel
Definition des DoIf:
([10:01-17:29,+:15]) {
Log (1, "DOIF_SWITCH_SOLARPUMP_ONOFF started");
my $SolarTemp=ReadingsVal("TMP_DIFF_SEN1_T2","temperature","0");
my $SandFilterPumpe=ReadingsVal("SWI_AU_GA_Pool_4CH_CH1","state","off");
my $SolarPumpe=ReadingsVal("SWI_AU_GA_Pool_4CH_CH2","state","off");
Log (1, "SolarTemp: $SolarTemp ; SandFilterPumpe: $SandFilterPumpe ; SolarPumpe: $SolarPumpe");
if ($SandFilterPumpe eq "off"){
if ($SolarPumpe eq "off" and $SolarTemp > 35){
fhem ("set SWI_AU_GA_Pool_4CH_CH2 on");
fhem ("set SWI_AU_GA_Pool_4CH_CH3 on");
} elsif ($SolarPumpe eq "on" and $SolarTemp < 30){
fhem ("set SWI_AU_GA_Pool_4CH_CH2 off");
}
}
Log (1, "DOIF_SWITCH_SOLARPUMP_ONOFF ended");
}
Keine Logfileeinträge . . .
Hi,
ist das die DOIF Version?
Log (1, "DOIF_SWITCH_SOLARPUMP_ONOFF ended")
In Perl verwende ich diese Version
{ Log 1, "Log Eintrag Text"}
Der Trigger sieht gut aus, den verwende ich genauso, der sollte funktionieren. ;)
Gruß Otto
mmh, einen Eintrag im Logfile hatte ich gefunden, es hat zumindest mit dem Log funktioniert. Ich kann's aber ändern.
Soweit ich das sehe ist das eine Vermischung zw. Fhem und Perl Modus.
Die geschweifte Klammer kommt vor den Trigger und dann ein Semikolon zum ausführenden Teil.
Oder den ausführenden Teil in runde Klammer.
??? Huch, hier fährt gerade ein Zug durch den Bahnhof ???
Hast Du ein Beispiel, oder kannst Du meine Definition anpassen? Also ich glaub schon, dass der Code funktioniert, nur das DOIF läuft nicht los . .. Wie gesagt, ich hatte einmalig einen Logfileeintrag, daher bin ich mir recht sicher, dass es im Perl Teil funktionieren müsste
Lt Comandref Doif Intervall- Timer
define di_pump DOIF ([08:00-22:00,+:30])(set pump on-for-timer 300)
attr di_pump do always
Perl:
define di_pump DOIF {[08:00-22:00,+:30];fhem_set"pump on-for-timer 300"}
okay. Kontrolliere ich und passe es an. Danke Dir
sieht jetzt so aus, da bin ich auf morgen gespannt, Log Zeile hab ich vorerst auf's Original zurück gedreht.
{[10:01-17:29,+:15];
Log (1, "DOIF_SWITCH_SOLARPUMP_ONOFF started");
my $SolarTemp=ReadingsVal("TMP_DIFF_SEN1_T2","temperature","0");
my $SandFilterPumpe=ReadingsVal("SWI_AU_GA_Pool_4CH_CH1","state","off");
my $SolarPumpe=ReadingsVal("SWI_AU_GA_Pool_4CH_CH2","state","off");
Log (1, "SolarTemp: $SolarTemp ; SandFilterPumpe: $SandFilterPumpe ; SolarPumpe: $SolarPumpe");
if ($SandFilterPumpe eq "off"){
if ($SolarPumpe eq "off" and $SolarTemp > 35){
fhem ("set SWI_AU_GA_Pool_4CH_CH2 on");
fhem ("set SWI_AU_GA_Pool_4CH_CH3 on");
} elsif ($SolarPumpe eq "on" and $SolarTemp < 30){
fhem ("set SWI_AU_GA_Pool_4CH_CH2 off");
}
}
Log (1, "DOIF_SWITCH_SOLARPUMP_ONOFF ended");
}
Warum arbeitest nicht ereignisgesteuert?
Zeiten sind doch Ereignisse :)
Ereignisgesteuert wäre hier sozusagen, wenn die Temperatur vom Solarpanel reinkommt. Das wäre dann alle 3 Minuten statt aller 15. Ist prinzipiell kein Beinbruch und fällt am Raspi nicht weiter auf, ich möchte aber nicht unbedingt alle drei Minuten in ungünstigen Konstellationen hin und her schalten. Es gehen ja bei Änderung immer 2 Homematic Funk Telegramme raus (Solar und UV) - im drei Minuten Takt wäre es dann das Fünfache. Halte ich eher für unnötig. Bei Wetter wie heute würde es natürlich den ganzen Tag durchlaufen.
Dann mach ein cmdpause 900 dazu.
https://fhem.de/commandref_DE.html#DOIF_cmdpause
Zitat von: StG (DD) am 13 Juni 2020, 22:44:30
Zeiten sind doch Ereignisse :)
Ereignisgesteuert wäre hier sozusagen, wenn die Temperatur vom Solarpanel reinkommt. Das wäre dann alle 3 Minuten statt aller 15. Ist prinzipiell kein Beinbruch und fällt am Raspi nicht weiter auf, ich möchte aber nicht unbedingt alle drei Minuten in ungünstigen Konstellationen hin und her schalten. Es gehen ja bei Änderung immer 2 Homematic Funk Telegramme raus (Solar und UV) - im drei Minuten Takt wäre es dann das Fünfache. Halte ich eher für unnötig. Bei Wetter wie heute würde es natürlich den ganzen Tag durchlaufen.
Naja, wenn deine Temperaturschwelle in kurzen Abständen über-/unterschritten wird, dann wird bei dir ggf. alle 15 Minuten hin- und hergeschaltet.
Bei einem ereignisgesteuertem DOIF als Zweizeiler mit wait-Attribut würde das nicht passieren ;)
Danke für Eure Hilfe, das DOIF wird jetzt ordentlich getriggert. Fehlt jetzt nur noch die Sonne :)
2020.06.14 10:01:00 1: DOIF_SWITCH_SOLARPUMP_ONOFF started
2020.06.14 10:01:00 1: SolarTemp: 22.8 ; SandFilterPumpe: off ; SolarPumpe: off
2020.06.14 10:01:00 1: DOIF_SWITCH_SOLARPUMP_ONOFF finished
2020.06.14 10:15:00 1: DOIF_SWITCH_SOLARPUMP_ONOFF started
2020.06.14 10:15:00 1: SolarTemp: 22.5 ; SandFilterPumpe: off ; SolarPumpe: off
2020.06.14 10:15:00 1: DOIF_SWITCH_SOLARPUMP_ONOFF finished
2020.06.14 10:30:00 1: DOIF_SWITCH_SOLARPUMP_ONOFF started
2020.06.14 10:30:00 1: SolarTemp: 21.8 ; SandFilterPumpe: off ; SolarPumpe: off
2020.06.14 10:30:00 1: DOIF_SWITCH_SOLARPUMP_ONOFF finished