FHT80b Einstellungen: Unterschied zwischen den Versionen

Aus FHEMWiki
(Die Seite wurde neu angelegt: „== FHT80b Programme auf Knopfdruck ändern == Um verschiedene Programme (Gästezimmer heizen, Abwesend, auch tagsüber heizen, da Urlaub, … bedarf es üblich…“)
 
Zeile 11: Zeile 11:
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  
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  


== BeispielCode ==
== Beispiel Code ==
  <nowiki>define Gaeste FS20 1233 1233
  <nowiki>define Gaeste FS20 1233 1233
attr Gaest room FHT_Settings
attr Gaest room FHT_Settings
Zeile 119: Zeile 119:
  }\
  }\
}</nowiki>
}</nowiki>
[[Kategorie:Code Snippets]]

Version vom 11. Mai 2013, 23:14 Uhr

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