FHEM Forum

FHEM => Automatisierung => Thema gestartet von: StG (DD) am 13 Juni 2020, 21:17:49

Titel: DOIF wird nicht ausgelöst
Beitrag von: StG (DD) am 13 Juni 2020, 21:17:49
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 . . .
Titel: Antw:DOIF wird nicht ausgelöst
Beitrag von: Otto123 am 13 Juni 2020, 21:48:08
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
Titel: Antw:DOIF wird nicht ausgelöst
Beitrag von: StG (DD) am 13 Juni 2020, 21:53:12
mmh, einen Eintrag im Logfile hatte ich gefunden, es hat zumindest mit dem Log funktioniert. Ich kann's aber ändern.
Titel: Antw:DOIF wird nicht ausgelöst
Beitrag von: frober am 13 Juni 2020, 22:00:44
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.
Titel: Antw:DOIF wird nicht ausgelöst
Beitrag von: StG (DD) am 13 Juni 2020, 22:03:29
??? 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
Titel: Antw:DOIF wird nicht ausgelöst
Beitrag von: frober am 13 Juni 2020, 22:09:51
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"}
Titel: Antw:DOIF wird nicht ausgelöst
Beitrag von: StG (DD) am 13 Juni 2020, 22:16:13
okay. Kontrolliere ich und passe es an. Danke Dir
Titel: Antw:DOIF wird nicht ausgelöst
Beitrag von: StG (DD) am 13 Juni 2020, 22:32:57
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");
}
Titel: Antw:DOIF wird nicht ausgelöst
Beitrag von: Damian am 13 Juni 2020, 22:37:02
Warum arbeitest nicht ereignisgesteuert?
Titel: Antw:DOIF wird nicht ausgelöst
Beitrag 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.
Titel: Antw:DOIF wird nicht ausgelöst
Beitrag von: amenomade am 13 Juni 2020, 23:05:07
Dann mach ein cmdpause 900 dazu.
https://fhem.de/commandref_DE.html#DOIF_cmdpause
Titel: Antw:DOIF wird nicht ausgelöst
Beitrag von: Damian am 14 Juni 2020, 08:05:09
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 ;)
Titel: Antw:DOIF wird nicht ausgelöst
Beitrag von: StG (DD) am 14 Juni 2020, 10:36:34
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