[Exercise] Frostschutz

In der kalten Jahreszeit müssen einige Räume (Garage, Werkstatt, Gewächshaus usw.) vor Frost geschützt werden.
Wie dies einfach zu bewältigen ist, zeigt folgendes Skript.
Es richtet sich an „IPS-Einsteiger“ - wenn etwas nicht klar ist: bitte fragen!
Als Hardware benötigt man z.B. ein HMS 100T (dieser liefert die aktuelle IST-Temperatur) und eine
FS20 Steckdose (diese schaltet den Heizlüfter oder ein thermisches Stellglied / Heizungsregler).
Das Skript wird automatisch ausgeführt (Trigger „ONChange“), wenn sich ein Temperaturwert ändert.
Bei Unterschreiten der gewünschten Grenze (z.B. 5 Grad) wird die Heizung eingeschaltet.
Bei Überschreiten zzgl. der Hysterese(z.B. 5 + 2 Grad) wird sie wieder ausgeschaltet.

Designer-Live-Test:

Auswahl : “Remote Host” ipswitch.mine.nu / Port 3774
Username: gast / Password: ips / und dann ein Doppel-Klick auf „Hallo_IPS“ > Reiter: „Bricks“

MST

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : 2_Punkt-Regler_Demo.ips.php
Trigger  : "Temp_Garage" > "OnChange"
Interval : 
*/

if (!IPS_VariableExists("Temp_Frostschutz")) {
   IPS_CreateVariable("Temp_Frostschutz", "Float");
   echo "Neue Variable wurde angelegt
";
}
if (!IPS_VariableExists("Temp_Hysterese")) {
   IPS_CreateVariable("Temp_Hysterese", "Integer");
   echo "Neue Variable wurde angelegt
";
}
if (!IPS_VariableExists("Frostschutz")) {
   IPS_CreateVariable("Frostschutz", "Boolean");
   echo "Neue Variable wurde angelegt
";
}
if (!IPS_VariableExists("Temp_Garage")) {
   IPS_CreateVariable("Temp_Garage", "Float");
   echo "Neue Variable wurde angelegt
";
}

$T_alarm = GetValueFloat("Temp_Frostschutz");
$hysterese = GetValueInteger("Temp_Hysterese");
$T_aus = $T_alarm + $hysterese;
$frostschutz = GetValueBoolean("Frostschutz");
$T_ist =  GetValueFloat("Temp_Garage");

// Einschalten, wenn Schaltschwelle zum 1. mal unterschritten wurde
if (($T_alarm < $T_ist) and ($frostschutz == False)) {
   SetValueBoolean("Frostschutz", True);
}

// Ausschalten, wenn Schaltschwelle zzgl. Hysterese zum 1. mal überschritten wurde
if (($T_alarm > $T_ist + $hysterese) and ($frostschutz == True)) {
   SetValueBoolean("Frostschutz", False);
}
?>