FHT80b Einstellungen
FHT80b Programme auf Knopfdruck ändern
Um verschiedene Programme (Gästezimmer heizen, Abwesend, auch tagsüber heizen, da Urlaub, … bedarf es üblicherweise vieler Parametereinstellungen für die einzelnen Tage, dies lässt sich über ein paar Dummy FS20 Devices vereinfachen.
Vorgehen
Für die verschiedenen Modi werden FS20 Dummies angelegt. Diese Dummys können kann als Schalter über das standard FHEM Interface gesetzt werden. Über einen zusätzlichen FS20 Dummy --> _OK (OK, "_" vorgestellt, damit er in der Ansicht der 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.
Zur Veranschaulichung, wie dies erreicht werden kann, anbei der folgende Code.
Wichtig für die unverzierten Script Programmierer (wie mich) - innerhalb der Routine dürfen keine Leerzeilen vorhanden, sein, dies führt umgehend zu Fehlermeldungen.
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");;\ }\ }