FHEM Forum

FHEM => Automatisierung => Thema gestartet von: sengelking am 05 Dezember 2013, 21:05:16

Titel: Verschiedene Heating_Control ob Ferien sind oder nicht
Beitrag von: sengelking am 05 Dezember 2013, 21:05:16
Hallo,
ich versuche mehrere heating_control Profile zu verwenden, je nachdem ob Schulferien, Feiertag oder "normaler" Tag ist. Aber es funktioniert nicht so wie ich will.
"Normale" Tage:
define dining_prof Heating_Control fht_dining Mo-Fr|05:30|21.5 Mo-Fr|08:30|15 Mo-Fr|12:00|21.5 Mo-Fr|14:00|15 Mo-Fr|17:40|21.5 Mo-Fr|19:30|15 Sa|07:00|21.5 Sa|10:30|15 Sa|12:00|21.5 Sa|14:00|15 Sa|17:40|21.5 Sa|19:30|15 So|08:30|21.5 So|11:00|15 So|12:30|21.5 So|14:00|15 So|17:40|21.5 So|19:30|15 22:00|13 05:00|15 (ReadingsVal("@", "mode", "auto") eq "auto" || ReadingsVal("@", "mode", "auto" ) eq "manual" && ReadingsVal("bw", "state", "none") eq "none" && ReadingsVal("ferien", "state", "none") eq "none" )
attr dining_prof room Dining


Schulferien:

define dining_prof_hol Heating_Control fht_dining Mo-Fr|05:35|15 Mo-Fr|07:15|21.5 Mo-Fr|09:30|15 Mo-Fr|12:00|21.5 Mo-Fr|14:00|15 Mo-Fr|17:40|21.5 Mo-Fr|19:30|15 Sa|07:00|21.5 Sa|10:30|15 Sa|12:00|21.5 Sa|14:00|15 Sa|17:40|21.5 Sa|19:30|15 So|08:30|21.5 So|11:00|15 So|12:30|21.5 So|14:00|15 So|17:40|21.5 So|19:30|15 22:00|13 05:30|15 (ReadingsVal("@", "mode", "auto") eq "auto" || ReadingsVal("@", "mode", "auto" ) eq "manual" && ReadingsVal("bw", "state", "none") eq "none" && ReadingsVal("ferien", "state", "none") ne "none" )
attr dining_prof_hol room Dining


Feiertage:

define dining_prof_bank Heating_Control fht_dining Mo-Fr|05:35|15 Mo-Fr|08:00|21.5 Mo-Fr|11:00|15 Mo-Fr|12:30|21.5 Mo-Fr|14:00|15 Mo-Fr|17:40|21.5 Mo-Fr|19:30|15 Sa|07:00|21.5 Sa|10:30|15 Sa|12:00|21.5 Sa|14:00|15 Sa|17:40|21.5 Sa|19:30|15 So|08:30|21.5 So|11:00|15 So|12:30|21.5 So|14:00|15 So|17:40|21.5 So|19:30|15 22:00|13 05:30|15 (ReadingsVal("@", "mode", "auto") eq "auto" || ReadingsVal("@", "mode", "auto" ) eq "manual" && ReadingsVal("bw", "state", "none") ne "none" )
attr dining_prof_bank room Dining


Allerdings schalten immer alle.
Was mache ich falsch?

Ich habe es auch mal mit einem at probiert:

define check_dining_hol at *04:00:00 { if(ReadingsVal("bw", "state", "none") ne "none") {\
fhem("attr dining_prof disable 1");;\
fhem("attr dining_prof_bank disable 0");;\
fhem("attr dining_prof_hol disable 1");;\
}\
elseif(ReadingsVal("ferien", "state", "none") ne "none") {\
fhem("attr dining_prof disable 1");;\
fhem("attr dining_prof_bank disable 1");;\
fhem("attr dining_prof_hol disable 0");;\
}\
else {\
fhem("attr dining_prof disable 0");;\
fhem("attr dining_prof_bank disable 1");;\
fhem("attr dining_prof_hol disable 1");;\
}\
}
attr check_dining_hol room Dining


Das hat aber auch nicht funktioniert.
Kann jemand helfen?

Danke
Titel: Antw:Verschiedene Heating_Control ob Ferien sind oder nicht
Beitrag von: Dietmar63 am 06 Dezember 2013, 00:41:16
Melde mich morgen dazu
Titel: Antw:Verschiedene Heating_Control ob Ferien sind oder nicht
Beitrag von: Dietmar63 am 06 Dezember 2013, 07:34:44
Sind die disableSchalter richtig gesetzt?

Schalte mal bei allen HC verbose 5 ein.
Dann kannst du besser erkennen, was bzw. ob etwas passiert.

elseif(   -> *elsif*
Titel: Antw:Verschiedene Heating_Control ob Ferien sind oder nicht
Beitrag von: ollir am 06 Dezember 2013, 07:52:11
Habe leider zur Zeit keinen Code da. Hatte auch das Problem.
Es ging mit einem update-Befehl.
Damit wurden alle disabled 0/1 übernommen.

VG
Olaf
Titel: Antw:Verschiedene Heating_Control ob Ferien sind oder nicht
Beitrag von: sengelking am 06 Dezember 2013, 08:20:26
Zitat von: Dietmar63 am 06 Dezember 2013, 07:34:44
Sind die disableSchalter richtig gesetzt?
Was meinst du damit?

Zitat
elseif(   -> *elsif*
Da habe ich leider den alten code kopiert, das hatte ich schon geändert, da hatte ich wenigstens noch Fehlermeldungen...
Titel: Antw:Verschiedene Heating_Control ob Ferien sind oder nicht
Beitrag von: Dietmar63 am 06 Dezember 2013, 18:15:06
ZitatSind die disableSchalter richtig gesetzt?
vergiß es - wird funktionieren.

Wie sieht der output bei verbose 5 aus?
Welche Version verwendest du?
Titel: Antw:Verschiedene Heating_Control ob Ferien sind oder nicht
Beitrag von: Dietmar63 am 06 Dezember 2013, 19:25:13
ich habe selbst getestet - disable funktioniert bei mir ohne Probleme.

Um besser prüfen zu können was passiert, habe ich zusätzliches logging eingebaut. Bitte updaten und dann die HC mit verbose 5 debuggen. Der Output sollte dann so aussehen:


2013.12.06 19:18:00 4: [HeizungKueche_wt] Next switch 07.12.2013 05:35:00
2013.12.06 19:18:00 2: FHT set HeizungKueche desired-temp 17.0
2013.12.06 19:18:00 4: [HeizungKueche_wt] command: { fhem("set HeizungKueche desired-temp 17.0") if(heizungAnAus("An", 0))} executed
2013.12.06 19:18:00 4: [HeizungKueche_wt] is not disabled
2013.12.06 19:18:00 4: [HeizungKueche_wt] 06.12.2013 19:18:00 ; aktParam: 16.0 ; newParam: 17.0
2013.12.06 19:18:00 4: [HeizungKueche_wt] Jetzt:06.12.2013 19:18:05 -> Next: 06.12.2013 19:18:00 -> Param: 17 -5
2013.12.06 19:18:00 5: [HeizungKueche_wt] list of windowsenors found: ''
2013.12.06 19:17:02 4: [HeizungKueche_wt] Next switch 06.12.2013 19:18:00
2013.12.06 19:17:02 4: [HeizungKueche_wt] is not disabled
2013.12.06 19:17:02 4: [HeizungKueche_wt] 06.12.2013 19:14:00 ; aktParam: 16.0 ; newParam: 16.0
2013.12.06 19:17:02 5: [HeizungKueche_wt] list of windowsenors found: ''
2013.12.06 19:17:01 5: [HeizungKueche_wt] Switchingtime: 19:18|17 : so,mo,di,mi,do,fr,sa -> 19:18:00 -> 17
2013.12.06 19:17:01 5: [HeizungKueche_wt] Switchingtime: 19:14|16 : so,mo,di,mi,do,fr,sa -> 19:14:00 -> 16
2013.12.06 19:17:01 5: [HeizungKueche_wt] Switchingtime: 19:12|19 : so,mo,di,mi,do,fr,sa -> 19:12:00 -> 19
2013.12.06 19:17:01 5: [HeizungKueche_wt] Switchingtime: 19:10|17 : so,mo,di,mi,do,fr,sa -> 19:10:00 -> 17
2013.12.06 19:17:01 5: [HeizungKueche_wt] Switchingtime: 19:07|18 : so,mo,di,mi,do,fr,sa -> 19:07:00 -> 18
2013.12.06 19:17:01 5: [HeizungKueche_wt] Switchingtime: 19:02|17 : so,mo,di,mi,do,fr,sa -> 19:02:00 -> 17
2013.12.06 19:17:01 5: [HeizungKueche_wt] Switchingtime: 18:32|18 : so,mo,di,mi,do,fr,sa -> 18:32:00 -> 18
2013.12.06 19:17:01 5: [HeizungKueche_wt] Switchingtime: 18:35|17 : so,mo,di,mi,do,fr,sa -> 18:35:00 -> 17
2013.12.06 19:17:01 5: [HeizungKueche_wt] Switchingtime: 18:30|16 : so,mo,di,mi,do,fr,sa -> 18:30:00 -> 16
2013.12.06 19:17:01 5: [HeizungKueche_wt] Switchingtime: 17:45|22 : so,mo,di,mi,do,fr,sa -> 17:45:00 -> 22
2013.12.06 19:17:01 5: [HeizungKueche_wt] Switchingtime: 15:30|20 : so,mo,di,mi,do,fr,sa -> 15:30:00 -> 20
2013.12.06 19:17:01 5: [HeizungKueche_wt] Switchingtime: 14:00|19 : so,mo,di,mi,do,fr,sa -> 14:00:00 -> 19
2013.12.06 19:17:01 5: [HeizungKueche_wt] Switchingtime: 12:30|22 : so,mo,di,mi,do,fr,sa -> 12:30:00 -> 22
2013.12.06 19:17:01 5: [HeizungKueche_wt] Switchingtime: 12:00|25 : so,mo,di,mi,do,fr,sa -> 12:00:00 -> 25
2013.12.06 19:17:01 5: [HeizungKueche_wt] Switchingtime: 06:50|18 : so,mo,di,mi,do,fr,sa -> 06:50:00 -> 18
2013.12.06 19:17:01 5: [HeizungKueche_wt] Switchingtime: 06:15|22 : so,mo,di,mi,do,fr,sa -> 06:15:00 -> 22
2013.12.06 19:17:01 5: [HeizungKueche_wt] Switchingtime: 05:35|25 : so,mo,di,mi,do,fr,sa -> 05:35:00 -> 25


Dann auf diese Zeile achten;
2013.12.06 19:18:00 4: [HeizungKueche_wt] is not disabled

Übrigens, das Ganze wird übersichtlicher wenn du an das Ende von HC eine selbst erstellte Funktion aufrufst, die du in 99_utils einstellen kannst und true/false zurückliefert.
Etwa so:
define dining_prof_hol Heating_Control fht_dining    Mo-Fr|05:35|15   Mo-Fr|18:00|21     (heizungAnAus($we, @, %,  "hol" )) 
und in 99_utils:

sub heizungAnAus($$$$) {
   my ($we, $dev, $para, $hc) = @_;

   my $state1 = ReadingsVal("xx", "state", "Off");
   my $state2 = ReadingsVal("yy", "state", "Off");
   my $state3 = ReadingsVal("zz", "state", "Off");

   my $ret = ....
   
   return $ret;
}
Titel: Antw:Verschiedene Heating_Control ob Ferien sind oder nicht
Beitrag von: sengelking am 06 Dezember 2013, 20:18:15
Ja, das disable funktioniert jetzt auch..
Beim anderen habe ich den Fehler auch entdeckt. Verbose hilft. Ich hab noch mehr klammern setzen müssen. Poste morgen den Code...
Titel: Antw:Verschiedene Heating_Control ob Ferien sind oder nicht
Beitrag von: sengelking am 07 Dezember 2013, 12:09:02
So, hier der richtige Code:

define dining_prof Heating_Control fht_dining Mo-Fr|05:30|21.5 Mo-Fr|08:30|15 Mo-Fr|12:00|21.5 Mo-Fr|14:00|15 Mo-Fr|17:40|21.5 Mo-Fr|19:30|15 Sa|07:00|21.5 Sa|10:30|15 Sa|12:00|21.5 Sa|14:00|15 Sa|17:40|21.5 Sa|19:30|15 So|08:30|21.5 So|11:00|15 So|12:30|21.5 So|14:00|15 So|17:40|21.5 So|19:30|15 22:00|13 05:00|15 ((ReadingsVal("@", "mode", "auto") eq "auto" || ReadingsVal("@", "mode", "auto" ) eq "manual") && (ReadingsVal("bw", "state", "none") eq "none" && ReadingsVal("ferien", "state", "none") eq "none" ))
attr dining_prof room Dining

define dining_prof_hol Heating_Control fht_dining Mo-Fr|05:35|15 Mo-Fr|07:15|21.5 Mo-Fr|09:30|15 Mo-Fr|12:00|21.5 Mo-Fr|14:00|15 Mo-Fr|17:40|21.5 Mo-Fr|19:30|15 Sa|07:00|21.5 Sa|10:30|15 Sa|12:00|21.5 Sa|14:00|15 Sa|17:40|21.5 Sa|19:30|15 So|08:30|21.5 So|11:00|15 So|12:30|21.5 So|14:00|15 So|17:40|21.5 So|19:30|15 22:00|13 05:30|15 ((ReadingsVal("@", "mode", "auto") eq "auto" || ReadingsVal("@", "mode", "auto" ) eq "manual") && (ReadingsVal("bw", "state", "none") eq "none" && ReadingsVal("ferien", "state", "none") ne "none" ))
attr dining_prof_hol room Dining

define dining_prof_bank Heating_Control fht_dining Mo-Fr|05:35|15 Mo-Fr|08:00|21.5 Mo-Fr|11:00|15 Mo-Fr|12:30|21.5 Mo-Fr|14:00|15 Mo-Fr|17:40|21.5 Mo-Fr|19:30|15 Sa|07:00|21.5 Sa|10:30|15 Sa|12:00|21.5 Sa|14:00|15 Sa|17:40|21.5 Sa|19:30|15 So|08:30|21.5 So|11:00|15 So|12:30|21.5 So|14:00|15 So|17:40|21.5 So|19:30|15 22:00|13 05:30|15 ((ReadingsVal("@", "mode", "auto") eq "auto" || ReadingsVal("@", "mode", "auto" ) eq "manual") && (ReadingsVal("bw", "state", "none") ne "none" ))
attr dining_prof_bank room Dining


Man beachte die Klammern im if statement...
Titel: Antw:Verschiedene Heating_Control ob Ferien sind oder nicht
Beitrag von: sengelking am 21 Dezember 2013, 12:26:30
Es scheint immer noch nicht zu funktionieren. Wir haben ja jetzt Weihnachtsferien. "ferien" zeigt auch "Weihnachten_ferien" an, aber "dining_prof_hol" steht auf "inactive".
Weiß jemand weiter?
Titel: Antw:Verschiedene Heating_Control ob Ferien sind oder nicht
Beitrag von: Dietmar63 am 21 Dezember 2013, 17:36:55
Dann schalte mal bei dem betroffenen HC verbose 5 ein, und prüfe, ob das If passt!
Wenn es partout nicht will, lagere die Bedingung in eine Fuktion in die 99_utils aus, dann wird der Code übersichtlicher.

So wie ich es hier vorgemacht hatte:

sub heizungAnAus($$$$) {
   my ($we, $dev, $para, $hc) = @_;

   my $state1 = ReadingsVal("xx", "state", "Off");
   my $state2 = ReadingsVal("yy", "state", "Off");
   my $state3 = ReadingsVal("zz", "state", "Off");

   my $ret = ....
   
   return $ret;
}


Übrigens: Auf mode auto brauchst du nicht abzufragen. Die FHT nehmen im Modus auto keine Befehle von außen entgegen.
Titel: Antw:Verschiedene Heating_Control ob Ferien sind oder nicht
Beitrag von: sengelking am 24 Dezember 2013, 12:55:40
Habe jetzt geschafft.
Scheint mit ReadingsVal nicht zu funktionieren. Mit Value funktioniert es:
define dining_prof Heating_Control fht_dining Mo-Fr|05:30|21.5 Mo-Fr|08:30|15 Mo-Fr|12:00|21.5 Mo-Fr|14:00|15 Mo-Fr|17:40|21.5 Mo-Fr|19:30|15 Sa|07:00|21.5 Sa|10:30|15 Sa|12:00|21.5 Sa|14:00|15 Sa|17:40|21.5 Sa|19:30|15 So|08:30|21.5 So|11:00|15 So|12:30|21.5 So|14:00|15 So|17:40|21.5 So|19:30|15 22:00|13 05:00|15 ((ReadingsVal("@", "mode", "auto") !~ /holiday/) && (Value("bw") eq "none" && Value("ferien") eq "none" ))
attr dining_prof room Dining

define dining_prof_hol Heating_Control fht_dining Mo-Fr|05:35|15 Mo-Fr|07:15|21.5 Mo-Fr|08:35|21 Mo-Fr|09:30|15 Mo-Sa|12:00|21.5 Sa|07:00|21.5 Sa|10:30|15 So|08:30|21.5 So|11:00|15 So|12:30|21.5 14:00|15 17:40|21.5 19:30|15 22:00|13 05:30|15 ((ReadingsVal("@", "mode", "auto") !~ /holiday/) && (Value("bw") eq "none" && Value("ferien") ne "none" ))
attr dining_prof_hol room Dining

define dining_prof_bank Heating_Control fht_dining Mo-Fr|05:35|15 Mo-Fr|08:35|21 Sa|07:05|15 Sa|10:35|15 Mo-Sa|12:05|15 08:30|21.5 11:00|15 12:30|21.5 14:00|15 17:40|21.5 19:30|15 22:00|13 05:30|15 ((ReadingsVal("@", "mode", "auto") !~ /holiday/) && (Value("bw") ne "none" ))
attr dining_prof_bank room Dining
Titel: Antw:Verschiedene Heating_Control ob Ferien sind oder nicht
Beitrag von: Mark am 27 Dezember 2013, 11:24:33
Hallo zusammen,

ich nutze ebenfalls 98_Heating_Control.pm und stehe vor dem gleichen Problem. Ist es möglich dem 98_Heating_Control.pm eine Prüfung auf holiday hinzuzufügen und wenn "JA", das Sonntagsprofil zu verwenden? So würde man sich die Kopien der Heizprofile sparen.

Danke

Gruß Mark
Titel: Antw:Verschiedene Heating_Control ob Ferien sind oder nicht
Beitrag von: Dietmar63 am 27 Dezember 2013, 13:31:07
Ich werde es mir nochmal ansehen
Titel: Antw:Verschiedene Heating_Control ob Ferien sind oder nicht
Beitrag von: sengelking am 27 Dezember 2013, 14:49:03
Für mein Szenario würde das nicht ausreichen, da ich das Wochenprogramm in den FHTs selber als Rückfallsicherung verwende. Daher wird auch morgens in den Ferien oder bei Feiertagen die Heizung nochmal kälter gestellt bevor sie später einschaltet.