Weil doch immer wieder nachgefragt wird hier eine kleine Anleitung wie man meine ursprüngliche Heizungsstuerung mit Parameterdatei auf die IPS v2.x portiert, bzw. hier neu anlegt.
Die Stuerung besteht aus mehreren Scripten (sicher geht das alles einfacher, es ist aber damals so „gewwachsen“ und ich habe mit nicht mehr die Mühe gemacht es kompakter zu gestalten - es geht ja ;-))
Das Beispiel zeige ich für 2 FHT’s (eine Ergänzung um weitere ist dann selbsterklärend).
Allgemeine Scripte (für alle FHT’s nur ein mal nötig):
- Heizungssteueruzng automatik
- Heuzungssteuerung manuell
FHT-spezifische Scripte (jeweils pro FHT notwendig):
Heizungssteuerung reset (fürs Bad)
Heizungssteuerung reset (fürs Wohnzimmer)
ich habe das bei der Version 2.x so gemacht, dass es eine Kategorie für den Raum gibt (Bad, Wohnzimmer) und eine Kategorie Heizung. Die allgemeinen Scripte sind bei „Heizung“ die spezifischen bei dem jeweiligen Raum.
Als Variable für jedes FHT wird noch „Parameter Temperature“ als FLOAT benötigt.
Weiterhin sollte man für jedes angelegte FHT noch eine weitere Variable „Mode“ als Boolean anlegen. Warum? Ich habe gemerkt, dass sich die FHZ etwas schwer tut, den MODE an die FHT’s zu senden. Damit nicht immer was im Buffer hängen bleibt benutze ich eine eigene Variable für den Mode.
Dieser wird ja verwendet, wenn man manuell eine Temperatur (abweichend der Parameterdatei) angibt.
Vorab die Parameterdateien (man benötigt für jedes FHT eine eigene Datei - es sei denn die Zeiten und Temperaturen sind identisch):
eine Textdatei mit der Endung .par (kann man aber auch anders nennen, man muss nachher nur die richtige öffen.
Die Dateien habe ich für meine Steuerung in folgendem Pfad abgelegt (Beispiel Wohnzimmer-Parameterdatei)
C:/IP-SYMCON/parameter/Heizung_Wohn.par
Folgender Inhalt der Parameterdateien:
Montag;05:10;22.5
Montag;06:30;16.0
Montag;21:10;22.5
Montag;21:40;16.0
Dienstag;05:10;22.5
Dienstag;06:30;16.0
Dienstag;21:10;22.5
Dienstag;21:40;16.0
Mittwoch;05:10;22.5
Mittwoch;06:30;16.0
Mittwoch;21:10;22.5
Mittwoch;21:40;16.0
Donnerstag;05:20;22.5
Donnerstag;06:30;16.0
Donnerstag;21:10;22.5
Donnerstag;21:40;16.0
Freitag;05:10;22.5
Freitag;06:10;16.0
Freitag;21:10;22.5
Freitag;21:40;16.0
Samstag;07:30;22.5
Samstag;08:30;16.0
Samstag;21:10;22.5
Samstag;21:40;16.0
Sonntag;07:45;22.5
Sonntag;08:30;16.0
Sonntag;21:10;22.5
Sonntag;21:40;16.0
die beiden allgemeinen Scripte.
Alle IPS-ID’s habe ich durch „deineID“ ersetzt. der Kommentartext zeigt welche ID von deinem IPS benötigt wird.
Heizungssteuerung automatik:
<?
$hour=date("H");
$minute=date("i");
$time = $hour.":".$minute;
$heute = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
$tag = date("w");
//Badezimmer OG
$temp_mode=GetValueBoolean(deineID /*[Badezimmer Oben\FHT80b\Mode]*/);
if($temp_mode==false) //Heizung im Automatikbetrieb
{
$newtemp=GetValueFloat(deineID /*[Badezimmer Oben\FHT80b\Target Temperature]*/); //Alten Zustand einlesen - nur für erste Zeit am Tag wichtig
$handle = fopen("C:/Programme/IP-SYMCON/web/Parameter/Heizung_Bad.par","r");
while ($line = fgets($handle, 1000))
{
$parameter = explode(";", $line); //[0]-Tag, [1]-(Ab)Zeit, [2]-Temperatur
$day=$parameter[0];
$switchtime=$parameter[1];
$temp=$parameter[2];
if($day == $heute[$tag]) //Tag erkannt
{
if($time > $switchtime)
$newtemp = $temp;
}
}
if($newtemp != GetValueFloat(deineID /*[Badezimmer Oben\FHT80b\Target Temperature]*/))
{
echo "Sollwert Temperatur Bad [°C]: ".$newtemp;
SetValueFloat(deineID /*[Badezimmer Oben\FHT80b\Parameter Temperature]*/, (float)$newtemp);
FHT_SetTemperature(deineID /*[Badezimmer Oben\FHT80b]*/, (float)$newtemp);
}
fclose($handle);
}
//Wohnzimmer
$temp_mode=GetValueBoolean(deineID /*[Wohnzimmer\FHT80b\Mode]*/);
if($temp_mode==false) //Heizung im Automatikbetrieb
{
$newtemp=GetValueFloat(deineID /*[Wohnzimmer\FHT80b\Target Temperature]*/); //Alten Zustand einlesen - nur für erste Zeit am Tag wichtig
$handle = fopen("C:/IP-SYMCON/parameter/Heizung_Wohn.par","r");
while ($line = fgets($handle, 1000))
{
$parameter = explode(";", $line); //[0]-Tag, [1]-(Ab)Zeit, [2]-Temperatur
$day=$parameter[0];
$switchtime=$parameter[1];
$temp=$parameter[2];
if($day == $heute[$tag]) //Tag erkannt
{
if($time > $switchtime)
$newtemp = $temp;
}
}
if($newtemp != GetValueFloat(deineID /*[Wohnzimmer\FHT80b\Target Temperature]*/))
{
echo "Sollwert Temperatur Wohnzimmer [°C]: ".$newtemp;
SetValueFloat(deineID /*[Wohnzimmer\FHT80b\Parameter Temperature]*/, (float)$newtemp);
FHT_SetTemperature(deineID /*[Wohnzimmer\FHT80b]*/, (float)$newtemp);
}
fclose($handle);
}
?>
WICHTIG - diese Zeile im Script anpassen, wenn die Datei anders von dir benannt wurde, oder in einem anderen Verzeichnis liegt.
$handle = fopen("C:/IP-SYMCON/parameter/Heizung_Wohn.par","r");
Heizungssteuerung manuell:
<?
if($IPS_SENDER=="Variable")
{
switch($IPS_VARIABLE)
{
case deineID: //ID von [Wohnzimmer\FHT80b\Target Temperature]
if(GetValueFloat(40874 /*[Wohnzimmer\FHT80b\Target Temperature]*/)!=GetValueFloat(deineID /*[Wohnzimmer\FHT80b\Parameter Temperature]*/))
{
SetValueBoolean(deineID /*[Wohnzimmer\FHT80b\Mode]*/,true); //in Manuell Mode
IPS_SetScriptTimer(deineID /*[Wohnzimmer\FHT80b\Heizungssteuerung reset]*/,7000); //ca. 2h halten
}
else
{
SetValueBoolean(deineID /*[Wohnzimmer\FHT80b\Mode]*/, false); //in Automatik Mode
IPS_SetScriptTimer(deineID /*[Wohnzimmer\FHT80b\Heizungssteuerung reset]*/,0); //Timer stoppen
}
break;
case deineID: //ID von [Badezimmer Oben\FHT80b\Target Temperature]
if(GetValueFloat(deineID /*[Badezimmer Oben\FHT80b\Target Temperature]*/)!=GetValueFloat(deineID /*[Badezimmer Oben\FHT80b\Parameter Temperature]*/))
{
SetValueBoolean(deineID /*[Badezimmer Oben\FHT80b\Mode]*/,true);
IPS_SetScriptTimer(deineID /*[Badezimmer Oben\FHT80b\Heizungssteuerung reset]*/,7000); //ca. 2h halten
}
else
{
SetValueBoolean(deineID /*[Badezimmer Oben\FHT80b\Mode]*/,false);
IPS_SetScriptTimer(deineID /*[Badezimmer Oben\FHT80b\Heizungssteuerung reset]*/,0); //Timer stoppen
}
break;
}
}
?>
Das spezifische Script nur fürs Bad (das andere ist dementsprechend):
<?
SetValueBoolean(deineID /*[Badezimmer Oben\FHT80b\Mode]*/, false); //in Automatik Mode
IPS_SetScriptTimer(deineID /*[Badezimmer Oben\FHT80b\Heizungssteuerung reset]*/,0); //Timer aus
IPS_RunScript(deineID /*[Energie\Heizung\Heizungssteuerung automatik]*/);
?>
jetzt noch die wichtigesten Einstellungen - die Trigger für die Scripte:
Heizungssteuerung automatik:
- Täglich - alle 30 min. aufrufen
Heizungssteuerung manuell:
bei Variablenänderung - Badezimmer Oben\FHT80b\Target Temperature
bei Variablenänderung - Wohnzimmer\FHT80b\Target Temperature
FHT-spezifisch - Heizungssteuerung reset:
Täglich - alle 7000 Sekunden
(dieser Timer wird dann von den anderen Scripten gestartet und gestoppt)
das sollte es eigentlich gewesen sein.
Ich hoffe noch auf ein Feedback von Horst ob’s denn so klappt.
Wenn noch Fragen sind könnt Ihr euch auch gerne melden.