FHT80b Einstellungen: Unterschied zwischen den Versionen

Aus FHEMWiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 2: Zeile 2:


Update 26-05-2013:
Update 26-05-2013:
Aufgrund der neuen Funktion Heating_Control empfehle ich die diese Funktion zu verwenden.
Ich empfehle anstatt dieser Routinen das neue Heating_Control Modul für FHTs zu verwenden.
Der hier dargestellte Code kann ggf. dienen um die Grundeinstellungen für die Automatikfunktion der FHTs zu übertragen.
Der hier dargestellte Code kann ggf. dienen um die Grundeinstellungen für die Automatikfunktion der FHTs zu übertragen.



Version vom 26. Mai 2013, 13:01 Uhr

FHT80b Programme auf Knopfdruck ändern

Update 26-05-2013: Ich empfehle anstatt dieser Routinen das neue Heating_Control Modul für FHTs zu verwenden. Der hier dargestellte Code kann ggf. dienen um die Grundeinstellungen für die Automatikfunktion der FHTs zu übertragen.

Die Funktionen des relativ neuen Heating_Control Moduls sind für die hier dargestellt Lösung wesentlich besser zu verwenden.



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");;\
 }\
}