Steuerung einer Beleuchtung (hier „Farbstrahler genannt)
Aufgabe:
- die Beleuchtung soll bei Dämmerung eingeschaltet werden
- um Mitternacht wieder ausgehen
- bei einer Bewegung und Dunkelheit für 10 Minuten wieder angehen
- außerdem soll bei Tag und wenn sich keine Personen im Haus aufhalten die Temperatur um 2 Grad abgesenkt werden.
Lösung:
Im Timer Wizard (siehe Doku) fügen wir zwei Einträge hinzu:
- Sunrise - es führt das Skript „Morgen“ aus
- Sunset – es führt das Skript „Abend“ aus
Im Skript „Abend“ werden diverse Beleuchtungseinrichtungen eingeschaltet:
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
*/
//File: Abend.ips.php
// Trigger: TimerEvent > Sunset
echo "Es wird Abend";
SetValueBoolean("Flag_Tag", FALSE);
//OG
IPS_RunScript("FS20_Büro_Decke");
IPS_RunScript("FS20_Fensterlampe_An");
IPS_RunScript("FS20_Strahler_Hof_An");
IPS_RunScript("FS20_Farbstrahler_An");
IPS_RunScript("FS20_FarbKreisel_An");
IPS_RunScript("FS20_Schlaf_LK_An");
// Hof
FS20_SetIntensity(45029, (int) 6, 40); // Strahler Rechts
FS20_SetIntensity(24125, (int) 6, 40); // Strahler Links
FS20_SetIntensity(52490, (int) 6, 40); // Strahler Mitte
?>
Tipp:
Der jeweilige eigentliche Schaltbefehl befindet sich in einem separaten Skript.
Das hat den entscheidenden Vorteil, dass wenn sich die ID einer Instanz
sich ändert, muss diese nur an einer Stelle vorgenommen werden.
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
*/
//File: FS20_Farbstrahler_An.ips.php
FS20_SwitchMode(14180, True);
?>
Im Treppen-Flur wurde ein Bewegungssensor (PIRI) installiert.
Bei einem erfassten Objekt triggert er über die Variable „IN_IR_Flur“ das folgende Skript:
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
*/
// (C) by MST 04.05
//File: Anwesend.ips.php
// Trigger: "IN_IR_Flur" und Timer 600 sec
$somemove = GetValueBoolean("IN_IR_Flur");
$lastmove = GetValueInteger("Time_Move_Floor");
$jemandda = GetValueBoolean("Flag_Anwesend_OG");
$lichtflur = GetValueBoolean("OUT_Farbstrahler");
$tag_nacht = GetValueBoolean("Flag_Tag"); // True = Tag
if ($somemove == True) { // Bewegung erkannt
// TTS_Speak(37579, "Es ist jemand im Flur"); // Sprachausgabe optional
SetValueBoolean("IN_IR_Flur",False); // zurücksetzen
SetValueInteger("Time_Move_Floor", time()); // Zeit merken
SetValueBoolean("Flag_Anwesend_OG",True); // Flag setzen
// Beleuchtung einschalten bei Bewegung und Dunkelheit
if (($lichtflur == False) && ($tag_nacht == False)) {
FS20_SwitchDuration(14180, True, 600); // True = Tag
}
} else { // keine Bewegung dann:
// nach 30 Minuten > keiner da ! 30*60 = 1800
if ((time() >= $lastmove + 1800) && ($jemandda == True)) {
SetValueBoolean("IN_IR_Flur",False);
SetValueBoolean("Flag_Anwesend_OG",False); // zurücksetzen
}
}
?>
… und hier has Skript für den Heizkörper:
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
*/
// (C) by MST 04.05
//File: Heizung_Regelung.ips.php
// Trigger: "Flag_Tag" und "Flag_Anwesend_OG"
// da IPS die gesamte Heizungsregelung übernimmt > FHT immer auf "Manuell" stellen
// FHT_SetMode(40775,1) // Manuell
$tag_nacht = GetValueBoolean("Flag_Tag"); // Tag = TRUE
$solltemperatur = GetValueFloat("TEMP_Soll_OG");
$tagabsenktemperatur = GetValueFloat("TEMP_Absenk_Tag");
$nachtabsenktemperatur = GetValueFloat("TEMP_Absenk_Tag");
$jemandda = GetValueBoolean("Flag_Anwesend_OG");
// Tag - Absenkung, wenn keiner im Haus
If (($tag_nacht == True) && ($jemandda == False)) {
echo "Tag - Absenkung
";
FHT_SetTemperature(40775,$solltemperatur -$tagabsenktemperatur);
} else {
echo "Heizung - Normalbetrieb
";
FHT_SetTemperature(40775,$solltemperatur);
}
// Nacht - Absenkung
If ($tag_nacht == False) {
echo "Nacht - Absenkung
";
FHT_SetTemperature(40775,$solltemperatur -$nachtabsenktemperatur);
}
?>
… und um Mitternacht ausschalten.
Tipp:
In diesem Skript wird noch einmal alles ausgeschaltet, was AUS sein kann.
Dadurch werden auch Geräte ausgeschaltet, die ggf. durch einen nicht erkannten
Funkbefehl noch AN waren.
Aus sicherheitstechnischen Gründen sollte man bei einem Saunaofen, Heizstrahler
usw. immer den Befehl: „FS20_SwitchDuration“ verwenden.
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
*/
//File: Not_Nacht.ips.php
// Trigger: TimerEvent um Mitternacht
// Sicher ist sicher: Alles Aus!
IPS_RunScript("FS20_Heizung_Aus");
IPS_RunScript("FS20_Media_Aus");
IPS_RunScript("FS20_Heiz_Schlaf_Aus");
IPS_RunScript("FS20_Fensterlampe_Aus");
IPS_RunScript("FS20_Büro_Decke_Aus");
IPS_RunScript("FS20_Hofbeleuchtung_Aus");
IPS_RunScript("FS20_Farbstrahler_Aus");
IPS_RunScript("FS20_FrabKreisel_Aus");
IPS_RunScript("FS20_WLAN_Cam_Aus");
IPS_RunScript("FS20_Schlaf_LK_Aus");
IPS_RunScript("FS20_Sauna_All_Aus");
?>