06.01.2013 Aufrufe

Migration - Smarthome-Components

Migration - Smarthome-Components

Migration - Smarthome-Components

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Skripte wiederverwenden<br />

Stelle Sie sich vor, Sie hätten eine Flurlicht-Steuerung, die auf allen Etagen gleich ist. Diese möchten Sie natürlich ungern<br />

dreimal programmieren.<br />

Sie könnten jetzt also dreimal Ihr Skript per Copy & Paste in die einzelnen Skripte kopieren, was für den Anfang auch<br />

eine gute Lösung ist. Wenn Sie damit aber irgendwie nicht so ganz glücklich sind und zu der Kategorie User gehören, die<br />

Redundanz vermeiden wollen und/ oder ein System zum Code-Reusing zwischen Projekten brauchen, können Sie<br />

folgende Idee verwenden:<br />

Sie haben ein Skript mit dem Namen “Lichtsteuerung (xComfort, Flur, Bewegungsmelder, Helligkeitsregelung)”. Der<br />

Name sollte ausdrücken, was dieses tut und welche Systeme/ Geräte/ Stati es verwendet.<br />

Folgender Code könnte der Inhalt sein:<br />

if(!$_IPS['VALUE']) { //Wenn keine Bewegung - siehe Dokumentation für Spezialvariablen<br />

} else {<br />

}<br />

MXC_SwitchMode($lampenID, false);<br />

if(!GetValueBoolean($istTag)) { //Nur nach Sonnenuntergang<br />

}<br />

if((time() > strtotime("22:30")) || (time() < strtotime("06:00"))) {<br />

} else {<br />

}<br />

MXC_DimSet($lampenID, 15);<br />

MXC_DimSet($lampenID, 50);<br />

Dieses Skript muss von einem “Auslösenden Ereigniss” aufgerufen werden - hier normalerweise von einem/ mehreren<br />

Bewegungsmelder. Das Licht wird dann abhängig von der Tageszeit auf eine unterschiedliche Dimmstufe gestellt. Sobald<br />

der Bewegungsmelder keine Bewegung mehr erkennt und den FALSE Impuls sendet, schaltet das Gerät ab.<br />

Sie habe nun die Logik ausgelagert und brauchen nur noch Skripte zu erstellen, die die fehlenden Variablen setzen und<br />

von einem Ereignis aufgerufen werden. Nachfolgend ein Beispiel:<br />

//Trigger durch Bewegungsmelder Variable!<br />

//Eindeutige Geräte-ID<br />

$lampenID = 53013 /*[Erdgeschoss\Flur\Deckenlampe]*/;<br />

//Tag/Nacht Variable<br />

$istTag = 31753 /*[IstTag]*/;<br />

includeScript(12345 /*[Szenarien\Lichtsteuerung (xComfort, Flur, Bewegungsmelder, Helligkeitsregelung)]*/<br />

//Copy&Paste aus dem "Wie kann ich...?" Thema der Dokumentation<br />

function includeScript($scriptID)<br />

{<br />

}<br />

$s = IPS_GetScript($scriptID);<br />

include($s['ScriptFile']);<br />

Sie können also “Funktionsvorlagen” erstellen und diese dann nur noch mit den nötigen IDs füttern. In diesen Skripten<br />

sind dann die IDs der Geräte/ Variablen, zu denen IP-Symcon aber immer vollständige und aussagekräftige Namen<br />

erstellt (sofern man seine Baumstruktur vernünftig erstellt hat).<br />

Bei Bedarf kann das Szenario auch für FS20 angepasst und dynamisch anhand der übergebenen InstanzID die richtigen<br />

Funktion aufgerufen oder die systemabhängigen Änderungen vorgenommen werden.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!