Connector IPSWecker -> IPSShadowing

Moin zusammen,

ich bin sowohl mit IPSWecker als auch mit IPSShadowing bestens zufrieden. Danke erstmal an die Autoren!
Ich wollte nun, dass meine Rollläden in bestimmten Räumen morgens hochfahren - und zwar gekoppelt an die Weckzeit (z.B. 30 Minuten bevor der Wecker Alarm schlägt).

Vielleicht ist das auch eine Idee für den ein oder anderen von Euch. Meine PHP-Kenntnisse sind eher bescheiden, habs also wahrscheinlich nicht ganz sauber umgesetzt; vielleicht kann es dennoch jemand gebrauchen :wink: Verbesserungen sind natürlich auch gerne erwünscht.

Es ist kleines Skript erforderlich, dass die gewünschte Zeit aus den jeweiligen Variablen ausliest und schreibt. Da IPSShadowing ja nur Wochentag und Wochenende kennt (nicht wie IPSWecker jeden Tag einzeln), muss dieser Umstand berücksichtigt werden. Das Skript wird dann über Events ausgelöst; spätestens 5min später wird die neue Tagesbeginn-Zeit durch den vorhandenen IPSShadowing-Event auch aktiv übernommen.

Zunächst im Webfront für IPSShadowing ein neues Tagesbeginn-Profil erstellen (Name z.B. „gemäß Weckzeit“) und den gewünschten Rollläden/Jalousien zuweisen. Dann an beliebiger Stelle ein neues Skript mit folgendem Inhalt erstellen:


<?

 //Dieses Skript setzt die Öffnung der IPSShadowing Jalousien (Profil Tagesbeginn, individuelle Zeit) in Abhängigkeit der eingestellten Weckzeit des IPSWeckers.
 //Wird die Weckzeit z.B. auf 07:00 Uhr gesetzt, sollen die Rollläden um 06:30 Uhr hochfahren

function timecalc($input) {
$inputex = explode(":",$input);
$inputstamp = mktime((int)$inputex[0],(int)$inputex[1],0,0);
$outputstamp = ($inputstamp-(30*60));        //Hier gewünschte Zeitdifferenz einstellen, z.B. 30*60 = 30 Minuten
$output = date('H:i', $outputstamp);
return $output;
};

if(Date("w")==1) {   //Montag
SetValue(44307 /*[Program\IPSLibrary\data\modules\IPSShadowing\Profiles\BgnOfDay\gemäß Weckzeit\WorkdayTime]*/ , timecalc(GetValue(40198 /*[Program\IPSLibrary\data\modules\IPSWecker\Weckzeiten\Weckzeit_1\Montag]*/ )));
};

if(Date("w")==2) {  //Dienstag
SetValue(44307 /*[Program\IPSLibrary\data\modules\IPSShadowing\Profiles\BgnOfDay\gemäß Weckzeit\WorkdayTime]*/ , timecalc(GetValue(46097 /*[Program\IPSLibrary\data\modules\IPSWecker\Weckzeiten\Weckzeit_1\Dienstag]*/  )));
};

if(Date("w")==3) {  //Mittwoch
SetValue(44307 /*[Program\IPSLibrary\data\modules\IPSShadowing\Profiles\BgnOfDay\gemäß Weckzeit\WorkdayTime]*/ , timecalc(GetValue(31868 /*[Program\IPSLibrary\data\modules\IPSWecker\Weckzeiten\Weckzeit_1\Mittwoch]*/  )));
};

if(Date("w")==4) {  //Donnerstag
SetValue(44307 /*[Program\IPSLibrary\data\modules\IPSShadowing\Profiles\BgnOfDay\gemäß Weckzeit\WorkdayTime]*/ , timecalc(GetValue(21926 /*[Program\IPSLibrary\data\modules\IPSWecker\Weckzeiten\Weckzeit_1\Donnerstag]*/  )));
};

if(Date("w")==5) {  //Freitag
SetValue(44307 /*[Program\IPSLibrary\data\modules\IPSShadowing\Profiles\BgnOfDay\gemäß Weckzeit\WorkdayTime]*/ , timecalc(GetValue(43623 /*[Program\IPSLibrary\data\modules\IPSWecker\Weckzeiten\Weckzeit_1\Freitag]*/  )));
};

if(Date("w")==6) {  //Samstag
SetValue(54470 /*[Program\IPSLibrary\data\modules\IPSShadowing\Profiles\BgnOfDay\gemäß Weckzeit\WeekendTime]*/  , timecalc(GetValue(46156 /*[Program\IPSLibrary\data\modules\IPSWecker\Weckzeiten\Weckzeit_1\Samstag]*/ )));
};

if(Date("w")==0) {  //Sonntag
SetValue(54470 /*[Program\IPSLibrary\data\modules\IPSShadowing\Profiles\BgnOfDay\gemäß Weckzeit\WeekendTime]*/  , timecalc(GetValue(26448 /*[Program\IPSLibrary\data\modules\IPSWecker\Weckzeiten\Weckzeit_1\Sonntag]*/  )));
};

?>

Alle IDs in den if-Anweisungen bitte noch an eure Installation anpassen. Wie man sieht, wird hier alles auf den ERSTEN Wecker ausgelegt. Könnt ihr natürlich auch beliebig z.B. auf den zweiten Wecker legen.
Jetzt dem neuen Skript noch mehrere Ereignis-Auslösungen zuweisen, nämlich auf Aktualisierung der Variablen Program\IPSLibrary\data\modules\IPSWecker\Weckzeiten\Weckzeit_1\Sonntag, Montag, Dienstag, …, Samstag sowie eine zeitgesteuerte Auslösung täglich um 00:00 Uhr.

Viele Grüße,
Michael