FHT80b Einstellungen
Um an einem FHT80b Einstellungen vonzunehmen, können die im folgenden aufgeführten Beispielanweisungen verwendet werden.
FHT80b Programme auf Knopfdruck ändern
Update 26-05-2013: Anstelle der aufgeführten Routinen empfiehlt es sich mittlerweile, das neue Heizungskontrolle Modul für FHTs zu verwenden. Der hier dargestellte Code kann ggf. dazu dienen, die Grundeinstellungen für die Automatikfunktion der FHTs zu übertragen.
Die Funktionen des Heating Control Moduls sind für die hier dargestellte Lösung wesentlich besser zu verwenden.
Um verschiedene Programme ("Gästezimmer heizen", "abwesend", "auch tagsüber heizen, da Urlaub" zu realisieren, bedarf es üblicherweise vieler Parametereinstellungen für die einzelnen Tage. Das lässt sich über ein paar Dummy FS20 Devices vereinfachen.
Vorgehen
Für die verschiedenen Modi werden FS20 Dummies angelegt. Diese Dummies können als Schalter über das Standard FHEM Frontend (PGM2) gesetzt werden. Über einen zusätzlichen FS20 Dummy --> _OK (OK, "_" vorgestellt, damit er in der Ansicht als unterster Schalter erscheint) werden dann die Daten übernommen und von FHEM auf die einzelnen FHTs nacheinander übertragen. Dadurch eignet sich diese Möglichkeit zur Einstellung besonders gut für die Kontrolle z. B. über ein Smartphone.
Wichtig für die Anfänger unter den Script Programmierern: innerhalb der Routine dürfen keine Leerzeilen vorhanden, sein, dies würde umgehend zu Fehlermeldungen führen.
Damit die fhem.cfg lesbar bleibt, integriert man diesen Teil idealerweise in eine separate Datei (z. B. 99_myFHTsettings.conf) und integriert diese Datei in der fhem.cfg dann über das Kommando: include ./FHEM/99_myFHTsettings.conf
Beispiel Code
define Gaeste FS20 1233 1233 attr Gaest room FHT_Settings set Gaeste off define Athome FS20 1232 1232 attr Athome room FHT_Settings set Athome off define Urlaub FS20 1231 1231 attr Urlaub room FHT_Settings set Urlaub off define _OK FS20 1311 1311 attr _OK room FHT_Settings set _OK off define checkprogram at +*00:02:00 {\ if("$value{_OK}" eq "on"){\ my $hm = sprintf("%%02d:%%02d", $hour, $min);;\ my ($wz_dt, $wz_nt, $wz_ct, $wz_wdf1, $wz_wdt1, $wz_wdf2, $wz_wdt2, $wz_wef1, $wz_wet1, $wz_wef2, $wz_wet2);;\ my ($ku_dt, $ku_nt, $ku_ct, $ku_wdf1, $ku_wdt1, $ku_wdf2, $ku_wdt2, $ku_wef1, $ku_wet1, $ku_wef2, $ku_wet2);;\ my ($sz_dt, $sz_nt, $sz_ct, $sz_wdf1, $sz_wdt1, $sz_wdf2, $sz_wdt2, $sz_wef1, $sz_wet1, $sz_wef2, $sz_wet2);;\ my ($kz_dt, $kz_nt, $kz_ct, $kz_wdf1, $kz_wdt1, $kz_wdf2, $kz_wdt2, $kz_wef1, $kz_wet1, $kz_wef2, $kz_wet2);;\ my ($ba_dt, $ba_nt, $ba_ct, $ba_wdf1, $ba_wdt1, $ba_wdf2, $ba_wdt2, $ba_wef1, $ba_wet1, $ba_wef2, $ba_wet2);;\ my ($so_dt, $so_nt, $so_ct, $so_wdf1, $so_wdt1, $so_wdf2, $so_wdt2, $so_wef1, $so_wet1, $so_wef2, $so_wet2);;\ my ($bo_dt, $bo_nt, $bo_ct, $bo_wdf1, $bo_wdt1, $bo_wdf2, $bo_wdt2, $bo_wef1, $bo_wet1, $bo_wef2, $bo_wet2);;\ my ($tempstr1, $tempstr2, $tempstr3, $tempstr4, $tempstr5, $tempstr6, $tempstr7, $tempstr8);;\ if($value{Urlaub}" eq "off"){\ $wz_dt = 21.0;; $wz_nt = 18.0;; $wz_ct = 18.0;;\ $wz_wdf1= "06:00";; $wz_wdt1 = "08:30";; $wz_wdf2 = "16:00";; $wz_wdt2 = "23:00";;\ $wz_wef1 = "06:30;; $wz_wet1 = "23:00";;\ $ku_dt = 20.0;; $ku_nt = 17.0;; $ku_ct = 17.0;;\ $ku_wdf1 = "06:00";; $ku_wdt1 = "07:30";; $ku_wdf2 = "17:00";; $ku_wdt2 = "20:30";;\ $ku_wef1 = "06:30";; $ku_wet1 = "22:00";;\ $sz_dt = 20.0;; $sz_nt = 18.0;; $sz_ct = 18.0;;\ $sz_wdf1 = "06:00";; $sz_wdt1 = "08:00";; $sz_wdf2 = "18:30";; $sz_wdt2 = "21:00";;\ $sz_wef1 = "06:30";; $sz_wet1 = "08:30";; $sz_wef2 = "19:30";; $sz_wet2 = "21:00";;\ $kz_dt = 15.0;; $kz_nt = 13.0;; $kz_ct = 13.0;;\ $kz_wdf1 = "07:00";; $kz_wdt1 = "07:05";; $kz_wdf2 = "07:06";; $kz_wdt2 = "07:10";;\ $kz_wef1 = "07:00";; $kz_wet1 = "07:05";; $kz_wef2 = "07:06";;$kz_wet2 = "07:10";;\ $ba_dt = 20.5;; $ba_nt = 18.0;; $ba_ct = 18.0;;\ $ba_wdf1 = "06:00";; $ba_wdt1 = "07:30";; $ba_wdf2 = "18:00";; $ba_wdt2 = "19:30";;\ $ba_wef1 = "06:30";; $ba_wet1 = "08:30";; $ba_wef2 = "19:30";; $ba_wet2 = "21:00";;\ $so_dt = 15.0;; $so_nt = 13.0;; $so_ct = 13.0;;\ $so_wdf1 = "08:00";; $so_wdt1 = "08:05";; $so_wdf2 = "08:06";; $so_wdt2 = "08:10";;\ $so_wef1 = "08:00";; $so_wet1 = "08:05";; $so_wef2 = "08:06";; $so_wet2 = "08:10";;\ $bo_dt = 15.0;; $bo_nt = 13.0;; $bo_ct = 13.0;;\ $bo_wdf1 = "08:00";; $bo_wdt1 = "08:05";; $bo_wdf2 = "08:06";; $bo_wdt2 = "08:10";;\ $bo_wef1 = "08:00";; $bo_wet1 = "08:05";; $bo_wef2 = "08:06";; $bo_wet2 = "08:10";;\ if("$value{Gaeste}" eq "on"){\ $so_dt = 20.5;; $so_nt = 18.0;; $so_ct = 18.0;;\ $so_wdf1 = "06:30";; $so_wdt1 = "08:30";; $so_wdf2 = "20:30";; $so_wdt2 = "22:00";;\ $so_wef1 = "06:30";; $so_wet1 = "08:30";; $so_wef2 = "21:00";; $so_wet2 = "22:30";;\ $bo_dt = 20.5;; $bo_nt = 18.0;; $bo_ct = 18.0;;\ $bo_wdf1 = "06:30";; $bo_wdt1 = "08:30";; $bo_wdf2 = "20:30";; $bo_wdt2 = "22:00";;\ $bo_wef1 = "06:30";; $bo_wet1 = "08:30";;$bo_wef2 = "21:00";; $bo_wet2 = "22:30";;\ }\ if("$value{Athome}" eq "on"){\ $wz_wdf1 = "06:30";; $wz_wdt1 = "23:00";; $ku_wdf1 = "06:30";; $ku_wdt1 = "22:00";;\ }\ }\ if("$value{Urlaub}" eq "on"){\ $wz_dt = 15.0;; $wz_nt = 13.0;; $wz_ct = 13.0;; $ku_dt = 15.0;; $ku_nt = 13.0;; $ku_ct = 13.0;;\ $sz_dt = 15.0;; $sz_nt = 13.0;; $sz_ct = 13.0;; $kz_dt = 15.0;; $kz_nt = 13.0;; $kz_ct = 13.0;;\ $ba_dt = 15.0;; $ba_nt = 15.0;; $ba_ct = 13.0;; $so_dt = 15.0;; $so_nt = 13.0;; $so_ct = 13.0;;\ $bo_dt = 15.0;; $bo_nt = 13.0;; $bo_ct = 13.0;;\ }\ $tempstr1 = ReadingsVal("FHT_Kueche", "day-temp", $ku_dt);;\ $tempstr2 = ReadingsVal("FHT_Kueche", "night-temp", $ku_nt);;\ if($tempstr1 ne $ku_dt || $tempstr2 ne $ku_nt){\ fhem ("set FHT_Kueche day-temp $ku_dt night-temp $ku_nt");;\ fb_mail('deineemail@googlemail.com',"FHEM-Status: Aenderung FHT_Kueche DayTemp $tempstr1 -> $ku_dt, NightTemp $tempstr2 -> $ku_nt",'');;\ }\ else{\ fb_mail('deineemail@googlemail.com',"FHEM-Status: Keine Aenderung FHT_Kueche DayTemp $ku_dt, NightTemp $ku_nt",'');;\ }\ …… dieser Code fuer Day-Tem, Night-Temp wird sinngemaess fuer alle FHTs kopiert (FHT_Kueche, FHT_WohnZ, FHT_Bad, FHT_Kinderzimmer, FHT_Schlafzimmer, FHT_GaesteSchlafZ, FHT_GaesteBad) $tempstr1 = ReadingsVal("FHT_Kueche", "mon-from1", $ku_wdf1);;\ $tempstr2 = ReadingsVal("FHT_Kueche", "mon-to1", $ku_wdt1);;\ $tempstr3 = ReadingsVal("FHT_Kueche", "mon-from2", $ku_wdf2);;\ $tempstr4 = ReadingsVal("FHT_Kueche", "mon-to2", $ku_wdt2);;\ $tempstr5 = ReadingsVal("FHT_Kueche", "sun-from1", $ku_wef1);;\ $tempstr6 = ReadingsVal("FHT_Kueche", "sun-to1", $ku_wet1);;\ $tempstr7 = ReadingsVal("FHT_Kueche", "sun-from2", $ku_wef2);;\ $tempstr8 = ReadingsVal("FHT_Kueche", "sun-to2", $ku_wet2);;\ if($tempstr1 ne $ku_wdf1 || $tempstr2 ne $ku_wdt1 || $tempstr3 ne $ku_wdf2 || $tempstr4 ne $ku_wdt2){\ fhem ("set FHT_Kueche mon-from1 $ku_wdf1 mon-to1 $ku_wdt1 mon-from2 $ku_wdf2 mon-to2 $ku_wdt2");;\ fhem ("set FHT_Kueche tue-from1 $ku_wdf1 tue-to1 $ku_wdt1 tue-from2 $ku_wdf2 tue-to2 $ku_wdt2");;\ fhem ("set FHT_Kueche wed-from1 $ku_wdf1 wed-to1 $ku_wdt1 wed-from2 $ku_wdf2 wed-to2 $ku_wdt2");;\ fhem ("set FHT_Kueche thu-from1 $ku_wdf1 thu-to1 $ku_wdt1 thu-from2 $ku_wdf2 thu-to2 $ku_wdt2");;\ fhem ("set FHT_Kueche fri-from1 $ku_wdf1 fri-to1 $ku_wdt1 fri-from2 $ku_wdf2 fri-to2 $ku_wdt2");;\ fb_mail('deineemail@googlemail.com',"FHEM-Status: Aenderung FHT_Kueche Wochentag From1 $tempstr1 -> $ku_wdf1, To1 $tempstr2 -> $ku_wdt1, From2 $tempstr3 -> $ku_wdf2, To2 $tempstr4 -> $ku_wdt2",'');;\ }\ else{\ fb_mail('deineemail@googlemail.com',"FHEM-Status: Keine Aenderung FHT_Kueche Wochentag From1 $ku_wdf1, To1 $ku_wdt1, From2 $ku_wdf2, To2 $ku_wdt2",'');;\ }\ if($tempstr5 ne $ku_wef1 || $tempstr6 ne $ku_wet1 || $tempstr7 ne $ku_wef2 || $tempstr8 ne $ku_wet2){\ fhem ("set FHT_Kueche sat-from1 $ku_wef1 sat-to1 $ku_wet1 sat-from2 $ku_wef2 sat-to2 $ku_wet2");;\ fhem ("set FHT_Kueche sun-from1 $ku_wef1 sun-to1 $ku_wet1 sun-from2 $ku_wef2 sut-to2 $ku_wet2");;\ fb_mail('deineemail@googlemail.com',"FHEM-Status: Aenderung FHT_Kueche Wochenend From1 $tempstr5 -> $ku_wef1, To1 $tempstr6 -> $ku_wet1, From2 $tempstr7 -> $ku_wef2, To2 $tempstr8 -> $ku_wet2",'');;\ }\ else{\ fb_mail('deineemail@googlemail.com',"FHEM-Status: Keine Aenderung FHT_Kueche Wochenend From1 $ku_wef1, To1 $ku_wet1, From2 $ku_wef2, To2 $ku_wet2",'');;\ }\ ….. dieser Code für from1 to1, from2, to2 wird sinngemaess fuer alle FHTs kopiert (FHT_Kueche, FHT_WohnZ, FHT_Bad, FHT_Kinderzimmer, FHT_Schlafzimmer, FHT_GaesteSchlafZ, FHT_GaesteBad) fhem("set _OK off");;\ }\ }
mögliche Probleme
Das Übertragen von kompletten Heizprogrammen in FHTs erzeugt sehr hohe Funklast. Bei mehr als ca. 5-6 FHTs wird diese Methode in den meisten Fällen wegen der 1% Regel zu einer vollen Ausnutzung des Funkkontingents führen und kann in der Folge zu Kommunikationsprobleme mit FHT durch EOB und LOVF Meldungen erzeugen.