„N’abend“ Zusammen,
die Berufsbegleitend-Studierender-Semesterferien haben mich wieder!
Und damit auch Zeit zum Basteln und optimieren:
Wie früher des öfteren beschrieben hat meine Freundin auf Intensivstation die wildesten Dienste. (Also einmal ALLES und Kreuz und quer ohne Muster).
Dazu habt Ihr mir schon geholfen einen Google-Kalender auszulesen um das Schichtkürzel zu finden und dem jew. Tag zuzuordnen.
Daraufhin habe ich Heizprogramme geschrieben, z.b. in der Woche je „Früh“; „Spät“, „Nacht“, „Frei“ etc. dazu nochmal das ganze für Samstag und nochmal für Sonntag.
Da ich jetzt nicht allzu elegant programmieren kann bzw. mir auch z.t. Wissen fehlt arbeiten diese relativ „popelig“. Für ejden Raum (die werden je nach Zeit unterschiedlich geheizt, z.t. auch überlappend) geht das jeweils gewählte Skript alle Schaltzeiten pro Raum durch und vergleicht diese mit der ist-Zeit. Wenn das passt werden die entsprechenden Temperaturen an der Homematic bzw. der entsprechende Modus am KM200 gesetzt.
Da der ganze Kram sozusagen Fließtext ist, ist eine Änderung gelinde gesagt ein Krampf. Und Übersichtlich ist ein WOrt welches man kaum damit in Zusammenhang bringen möchte.
Daher meine Frage, wie würdet Ihr das ganze optimal gestalten - Ich hoffe mal das Eure Erfahrung das was besseres zu Tage bringt als ich gebastelt habe.
Ich habe mir diverse Sachen im Forum angesehen, finde aber nichts was so richtig zu der Schicht / Google-Kalender / viele verschiedene Varianten Sache passt.
Damit Ihr ein Bild von dem Elend habt, unten anbei noch ein Script für Frühdienst in der Woche.
Besten Gruß,
Matthias
<?
#################### Früh Wochentag ######################################
$time=date('H:i');
$S_WZ=GetValue(28398 /*[Komponenten\Heizköperthermostate\Raumregler Wohnzimmer\Wunschtemperatur Wohnzimmer]*/ );
$S_SZ=GetValue(23219 /*[Komponenten\Heizköperthermostate\Thermostat Schlafzimmer\Wunschtemperatur Schlafzimmer]*/ );
$S_BO=Getvalue(39922 /*[Komponenten\Heizköperthermostate\Thermostat Bad oben\Wunschtemperatur Bad oben]*/);
$S_KU=Getvalue(18920 /*[Komponenten\Heizköperthermostate\Thermostat Küche\Wunschtemperatur Küche]*/);
##########################
#Wohnzimmer-Temp
$T_WZ_Low=GetValue(16771 /*[Funktionen Automatik\Temperaturvorwahl\Wohnzimmer Low]*/);
$T_WZ_Mid=GetValue(14810 /*[Funktionen Automatik\Temperaturvorwahl\Wohnzimmer Mid]*/);
$T_WZ_High=GetValue(14124 /*[Funktionen Automatik\Temperaturvorwahl\Wohnzimmer High]*/);
$Min_WZ=GetValue(15069 /*[Absenk. / Heizen\Wohnzimmer]*/ );
If ($Min_WZ >0) {
HM_WriteValuefloat(51674 /*[Komponenten\Heizköperthermostate\Raumregler Wohnzimmer]*/ ,"SET_TEMPERATURE", $T_WZ_High);
If ($Min_WZ >=5){$Min_WZ=$Min_WZ-5;
SetValueFloat(15069 /*[Absenk. / Heizen\Wohnzimmer]*/ ,$Min_WZ);}
else {$Min_WZ=0;
SetValueFloat(15069 /*[Absenk. / Heizen\Wohnzimmer]*/ ,$Min_WZ);}}
else{
If ($time >= '00:00' && $time <='14:15' && $S_WZ!=$T_WZ_Low) {
HM_WriteValuefloat(51674 /*[Komponenten\Heizköperthermostate\Raumregler Wohnzimmer]*/ ,"SET_TEMPERATURE", $T_WZ_Low);}
If ($time >= '14:16' && $time <='15:15' && $S_WZ!=$T_WZ_Mid) {
HM_WriteValuefloat(51674 /*[Komponenten\Heizköperthermostate\Raumregler Wohnzimmer]*/ ,"SET_TEMPERATURE", $T_WZ_Mid);}
If ($time >= '15:16' && $time <='22:00' && $S_WZ!=$T_WZ_High) {
HM_WriteValuefloat(51674 /*[Komponenten\Heizköperthermostate\Raumregler Wohnzimmer]*/ ,"SET_TEMPERATURE", $T_WZ_High);}
If ($time >= '22:01' && $time <='23:59' && $S_WZ!=$T_WZ_Low) {
HM_WriteValuefloat(51674 /*[Komponenten\Heizköperthermostate\Raumregler Wohnzimmer]*/ ,"SET_TEMPERATURE", $T_WZ_Low);}}
##########################
#Schlafzimmer-Temp
$T_SZ_Low=GetValue(43281 /*[Funktionen Automatik\Temperaturvorwahl\Schlafzimmer Low]*/);
$T_SZ_Mid=GetValue(39789 /*[Funktionen Automatik\Temperaturvorwahl\Schlafzimmer Mid]*/);
$T_SZ_High=GetValue(12957 /*[Funktionen Automatik\Temperaturvorwahl\Schlafzimmer High]*/);
$Min_SZ=GetValue(56815 /*[Absenk. / Heizen\Schlafzimmer]*/ );
If ($Min_SZ >0) {
HM_WriteValuefloat(20904 /*[Komponenten\Heizköperthermostate\Thermostat Schlafzimmer]*/,"SET_TEMPERATURE", $T_SZ_High);
If ($Min_SZ >=5){$Min_SZ=$Min_SZ-5;
SetValue(56815 /*[Absenk. / Heizen\Schlafzimmer]*/ ,$Min_SZ);}
else {$Min_SZ=0;
SetValue(56815 /*[Absenk. / Heizen\Schlafzimmer]*/ ,$Min_SZ);}}
else{
If ($time >= '00:00' && $time <='06:45' && $S_SZ!=$T_SZ_Mid) {
HM_WriteValuefloat(20904 /*[Komponenten\Heizköperthermostate\Thermostat Schlafzimmer]*/,"SET_TEMPERATURE", $T_SZ_Mid);}
If ($time >= '06:46' && $time <='07:20' && $S_SZ!=$T_SZ_High) {
HM_WriteValuefloat(20904 /*[Komponenten\Heizköperthermostate\Thermostat Schlafzimmer]*/,"SET_TEMPERATURE", $T_SZ_High);}
If ($time >= '07:21' && $time <='14:30' && $S_SZ!=$T_SZ_Low) {
HM_WriteValuefloat(20904 /*[Komponenten\Heizköperthermostate\Thermostat Schlafzimmer]*/,"SET_TEMPERATURE", $T_SZ_Low);}
If ($time >= '14:31' && $time <='15:30' && $S_SZ!=$T_SZ_High) {
HM_WriteValuefloat(20904 /*[Komponenten\Heizköperthermostate\Thermostat Schlafzimmer]*/,"SET_TEMPERATURE", $T_SZ_High);}
If ($time >= '15:31' && $time <='21:30' && $S_SZ!=$T_SZ_Low) {
HM_WriteValuefloat(20904 /*[Komponenten\Heizköperthermostate\Thermostat Schlafzimmer]*/,"SET_TEMPERATURE", $T_SZ_Low);}
If ($time >= '21:31' && $time <='22:30' && $S_SZ!=$T_SZ_High) {
HM_WriteValuefloat(20904 /*[Komponenten\Heizköperthermostate\Thermostat Schlafzimmer]*/,"SET_TEMPERATURE", $T_SZ_High);}
If ($time >= '22:31' && $time <='23:59' && $S_SZ!=$T_SZ_Mid) {
HM_WriteValuefloat(20904 /*[Komponenten\Heizköperthermostate\Thermostat Schlafzimmer]*/,"SET_TEMPERATURE", $T_SZ_Mid);}}
##########################
#Bad-Oben-Temp
$T_BO_Low=GetValue(33378 /*[Funktionen Automatik\Temperaturvorwahl\Bad oben Low]*/ );
$T_BO_Mid=GetValue(28136 /*[Funktionen Automatik\Temperaturvorwahl\Bad oben Mid]*/ );
$T_BO_High=GetValue(20372 /*[Funktionen Automatik\Temperaturvorwahl\Bad oben High]*/ );
$Min_BO=GetValue(26206 /*[Absenk. / Heizen\Bad oben]*/ );
If ($Min_BO >0) {
HM_WriteValuefloat(37551 /*[Komponenten\Heizköperthermostate\Thermostat Bad oben]*/,"SET_TEMPERATURE", $T_BO_High);
If ($Min_BO >=5){$Min_BO=$Min_BO-5;
SetValuefloat(26206 /*[Absenk. / Heizen\Bad oben]*/ ,$Min_BO);}
else {$Min_BO=0;
SetValuefloat(26206 /*[Absenk. / Heizen\Bad oben]*/ ,$Min_BO);}}
else{
If ($time >= '00:00' && $time <='02:00' && $S_BO!=$T_BO_Mid) {
HM_WriteValuefloat(37551 /*[Komponenten\Heizköperthermostate\Thermostat Bad oben]*/,"SET_TEMPERATURE", $T_BO_Mid);}
If ($time >= '02:01' && $time <='07:30' && $S_BO!=$T_BO_Mid) {
HM_WriteValuefloat(37551 /*[Komponenten\Heizköperthermostate\Thermostat Bad oben]*/,"SET_TEMPERATURE", $T_BO_Mid);}
If ($time >= '07:31' && $time <='22:15' && $S_BO!=$T_BO_Low) {
HM_WriteValuefloat(37551 /*[Komponenten\Heizköperthermostate\Thermostat Bad oben]*/,"SET_TEMPERATURE", $T_BO_Low);}
If ($time >= '22:16' && $time <='23:59' && $S_BO!=$T_BO_Mid) {
HM_WriteValuefloat(37551 /*[Komponenten\Heizköperthermostate\Thermostat Bad oben]*/,"SET_TEMPERATURE", $T_BO_Mid);}}
##########################
#Kueche-Temp
$T_KU_Low=GetValue(37162 /*[Funktionen Automatik\Temperaturvorwahl\Küche Low]*/ );
$T_KU_Mid=GetValue(59287 /*[Funktionen Automatik\Temperaturvorwahl\Küche Mid]*/ );
$T_KU_High=GetValue(45676 /*[Funktionen Automatik\Temperaturvorwahl\Küche High]*/ );
$Min_KU=GetValue(48079 /*[Absenk. / Heizen\Küche]*/ );
If ($Min_KU >0) {
HM_WriteValuefloat(41052 /*[Komponenten\Heizköperthermostate\Thermostat Küche]*/ ,"SET_TEMPERATURE", $T_KU_High);
If ($Min_KU >=5){$Min_KU=$Min_KU-5;
SetValuefloat(48079 /*[Absenk. / Heizen\Küche]*/ ,$Min_KU);}
else {$Min_KU=0;
SetValuefloat(48079 /*[Absenk. / Heizen\Küche]*/ ,$Min_KU);}}
else{
If (($time >= '00:00') AND ($time <='13:45') AND ($S_KU!=$T_KU_Low)) {
HM_WriteValuefloat(41052 /*[Komponenten\Heizköperthermostate\Thermostat Küche]*/ ,"SET_TEMPERATURE", $T_KU_Low);}
If (($time >= '13:46') AND ($time <='14:45') AND ($S_KU!=$T_KU_Mid)) {
HM_WriteValuefloat(41052 /*[Komponenten\Heizköperthermostate\Thermostat Küche]*/ ,"SET_TEMPERATURE", $T_KU_Mid);}
If (($time >= '14:46') AND ($time <='18:30') AND ($S_KU!=$T_KU_High)) {
HM_WriteValuefloat(41052 /*[Komponenten\Heizköperthermostate\Thermostat Küche]*/ ,"SET_TEMPERATURE", $T_KU_High);}
If (($time >= '18:31') AND ($time <='20:30') AND ($S_KU!=$T_KU_Mid)) {
HM_WriteValuefloat(41052 /*[Komponenten\Heizköperthermostate\Thermostat Küche]*/ ,"SET_TEMPERATURE", $T_KU_Mid);}
If (($time >= '20:31') AND ($time <='23:59') AND ($S_KU!=$T_KU_Low)) {
HM_WriteValuefloat(41052 /*[Komponenten\Heizköperthermostate\Thermostat Küche]*/ ,"SET_TEMPERATURE", $T_KU_Low);}}
##################### Warmwasser
If (($time >= '00:00') AND ($time <='04:20')) {
SetValueBoolean(57740 /*[Funktionen Automatik\Heizmodusregelung / Temperaturkontrolle\Heizmodus]*/ ,false);
SetValueBoolean(39461 /*[Funktionen Automatik\Heizmodusregelung / Temperaturkontrolle\Warmwasserbereitstellung]*/ ,false);}
If (($time >= '04:20') AND ($time <='04:45')) {
SetValueBoolean(57740 /*[Funktionen Automatik\Heizmodusregelung / Temperaturkontrolle\Heizmodus]*/ ,false);
SetValueBoolean(39461 /*[Funktionen Automatik\Heizmodusregelung / Temperaturkontrolle\Warmwasserbereitstellung]*/ ,true);}
If (($time >= '04:46') AND ($time <='06:40')) {
SetValueBoolean(57740 /*[Funktionen Automatik\Heizmodusregelung / Temperaturkontrolle\Heizmodus]*/ ,false);
SetValueBoolean(39461 /*[Funktionen Automatik\Heizmodusregelung / Temperaturkontrolle\Warmwasserbereitstellung]*/ ,false);}
If (($time >= '06:41') AND ($time <='07:15')) {
SetValueBoolean(57740 /*[Funktionen Automatik\Heizmodusregelung / Temperaturkontrolle\Heizmodus]*/ ,true);
SetValueBoolean(39461 /*[Funktionen Automatik\Heizmodusregelung / Temperaturkontrolle\Warmwasserbereitstellung]*/ ,true);}
If (($time >= '07:16') AND ($time <='15:00')) {
SetValueBoolean(57740 /*[Funktionen Automatik\Heizmodusregelung / Temperaturkontrolle\Heizmodus]*/ ,false);
SetValueBoolean(39461 /*[Funktionen Automatik\Heizmodusregelung / Temperaturkontrolle\Warmwasserbereitstellung]*/ ,false);}
If (($time >= '15:01') AND ($time <='16:30')) {
SetValueBoolean(57740 /*[Funktionen Automatik\Heizmodusregelung / Temperaturkontrolle\Heizmodus]*/ ,true);
SetValueBoolean(39461 /*[Funktionen Automatik\Heizmodusregelung / Temperaturkontrolle\Warmwasserbereitstellung]*/ ,false);}
If (($time >= '16:31') AND ($time <='20:00')) {
SetValueBoolean(57740 /*[Funktionen Automatik\Heizmodusregelung / Temperaturkontrolle\Heizmodus]*/ ,true);
SetValueBoolean(39461 /*[Funktionen Automatik\Heizmodusregelung / Temperaturkontrolle\Warmwasserbereitstellung]*/ ,true);}
If (($time >= '20:01') AND ($time <='22:00')) {
SetValueBoolean(57740 /*[Funktionen Automatik\Heizmodusregelung / Temperaturkontrolle\Heizmodus]*/ ,true);
SetValueBoolean(39461 /*[Funktionen Automatik\Heizmodusregelung / Temperaturkontrolle\Warmwasserbereitstellung]*/ ,false);}
If (($time >= '22:01') AND ($time <='23:59')) {
SetValueBoolean(57740 /*[Funktionen Automatik\Heizmodusregelung / Temperaturkontrolle\Heizmodus]*/ ,false);
SetValueBoolean(39461 /*[Funktionen Automatik\Heizmodusregelung / Temperaturkontrolle\Warmwasserbereitstellung]*/ ,false);}
?>