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
Melde mich morgen dazu
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*
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
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...
ZitatSind die disableSchalter richtig gesetzt?
vergiß es - wird funktionieren.
Wie sieht der output bei verbose 5 aus?
Welche Version verwendest du?
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;
}
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...
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...
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?
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.
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
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
Ich werde es mir nochmal ansehen
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.