Hallo uriel,
wenn du die einzelnen Aktoren hast gehts ans Verknüpfen. Als Beispiel kann ich dir meine Heizungsskripte gehen.
Folgende Optionen gibt es bei mir:
- Tag/Nachtbetrieb mit Zeitsteuerung
- Heizungsregelung mit 0,5° Hysterese
- Umschaltung „Sommer-Winterbetrieb“
- Globale Nachtabsenkung Ein/Aus
- Nachtabsenkung für jeden Raum einzeln aktivierbar. Default keine Nachtabsenkung
- Nachtabsenkung pro Raum einzeln einstellbar
Skript Heizkörperregelung:
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : Kinderzimmer_Heizkoerper_Regelung.ips.php
Trigger :
Interval :
*/
//Steuerung Heizkrperventil Kinderzimmer
$id = 30490 /*[Heizkoerpersteuerung\Heizkoerper-Buegelzimmer\Heizkoerper-Buegelzimmer]*/; //ID des 1-Wire Bausteins
$Fenster = GetValueBoolean(54031 /*[Heizkoerpersteuerung\Heizkoerper-Kinderzimmer\Kinderzimmer-Fenster-offen]*/); //ist das Fesnster geschlossen?
//$Nacht = GetValueBoolean(47321 /*[Heizkoerpersteuerung\Nachtabsenkung\Nachtabsenkung-Aktiv]*/); // ist die Nachtabsenkung aktive?
$Temp_ist = GetValueFloat(43583 /*[Temperatur_Feuchte\Temp-Feuchte-Kinderzimmer\Temp-Kinderzimmer\Var-Temp-Kinderzimmer1]*/); //Istwert, akzuelle Temperatur Kinderzimmer
$Temp_soll = GetValueFloat(37028/*[Heizkoerpersteuerung\Heizkoerper-Kinderzimmer\Var-Kinderzimmer-Temp-Tag-Soll-1]*/); //Sollwert, Temperaturvorgabe
$HZ_Anforderung = GetValueBoolean(23772 /*[Heizkoerpersteuerung\Heizkoerper-Kinderzimmer\Kinderzimmer-HZ-Anforderung]*/); //Wird Heizung bentigt?
//Einschalten
//******************************************************************************
if(($HZ_Anforderung == true)&& ($Fenster == false)) // && ($Nacht == false))
{
echo "Temp Ist: $Temp_ist C
";
//Temperatursteuerung mit Hystereses
//Heizkoerper an wenn Temp unter Sollwert + Hysterese
if ($Temp_ist <= ($Temp_soll - 0.5)) // 0.5 = Hysterese in Grad
{
TMEX_F29_SetPin($id, 1, false); //Ausgang fr Heizkrperantrieb an
SetValueBoolean ("Zimmer-Soll-Temp-erreicht", false); //Soll-Temp erreicht
echo "Anforderung, Fenster ist zu und Temp-ist kleiner als Temp-soll,Heizkoerperantrieb ein
";
}
//Heizkoerper aus wenn Temp ueber Sollwert
if(($HZ_Anforderung == true)&& ($Fenster == false) && ($Temp_ist > $Temp_soll))
{
TMEX_F29_SetPin($id, 1, true); //Ausgang fr Heizkrperantrieb an
echo "Temp grer als Temp-soll,Heizkrper aus
";
SetValueBoolean ("Zimmer-Soll-Temp-erreicht", true); //Soll-Temp nicht erreicht
}
else{}
}
//Ausschalten wenn keine Anforderung und Fenster offen ist
//******************************************************************************
else
{
TMEX_F29_SetPin($id, 1, true); //Ausgang fr Heizkrperantrieb aus
echo "Heizkoerperantrieb aus
";
}
?>
Skript für die Anforderung per Dashboard:
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : Anforderung_Heizung_Kinderzimmer.ips.php
Trigger :
Interval :
*/
$id = 23772 /*[Heizkoerpersteuerung\Heizkoerper-Kinderzimmer\Kinderzimmer-HZ-Anforderung]*/;
//Heizungsanforderung
$Status_Anforderung = GetValueBoolean($id);
$Heizkoerper_Sommerbetrieb = GetValueBoolean(12111 /*[Heizkoerpersteuerung\Sommer-Winterbetrieb\Heizkoerper-Sommerbetrieb]*/); // sind alle Heizkrper auf "Aus" geschaltet, Sommerbbetrieb?
if (($Status_Anforderung == false)&&($Heizkoerper_Sommerbetrieb == true))
{
SetValueBoolean($id, true); // Anzeige Status
//Echoausgabe ohne Designer
if ($IPS_SENDER != "Designer")
{
echo "Status: Heizung notwendig- Anforderung
";
}
}
//Ausschalten
if ($Status_Anforderung == true)
{
SetValueBoolean($id, false); // Anzeige Status
//Echoausgabe ohne Designer
if ($IPS_SENDER != "Designer")
{
echo "Status: keine Heizung notwendig
";
}
}
else
{
if ($IPS_SENDER != "Designer")
{
echo "Status: Heizkoerper zu oder Sommerbetrieb aktiv";
}
}
?>
Skript für Nachabsenkungswerte:
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : Kinderzimmer_soll_Temperatur.ips.php
Trigger :
Interval :
*/
$Nacht = GetValueBoolean(47321 /*[Heizkoerpersteuerung\Nachtabsenkung\Nachtabsenkung-Aktiv]*/); // ist die Nachtabsenkung aktive?
$Nacht_Freigabe = GetValueBoolean(46278/*[Heizkoerpersteuerung\Nachtabsenkung\Nachtabsenkung-Aktiv]*/); // Nachtbetrieb fr diesen Raum?
$Nachtabsenkung = GetValueFloat (14632 /*[Heizkoerpersteuerung\Nachtabsenkung\Var-Wert-Nachtabsenkung]*/);
$Soll_Temp = GetValueFloat (27059 /*[Heizkoerpersteuerung\Heizkoerper-Kinderzimmer\Var-Kinderzimmer-Soll-Temp-Schieberegler]*/); //"Wohnzimmer-Soll-Temp", Variabler Wert von Schieberegler
//$Soll_Temp = 20.0; //Fixwert
//Temp Tag
//*******************************************************
$Soll_Temp_1 = $Soll_Temp * 0.5; // halbieren des Schiebereglerwerts
$Soll_Temp_Tag = sprintf("%2.1f", $Soll_Temp_1); // Umrechung
SetValueFloat(52718/*[Heizkoerpersteuerung\Heizkoerper-Schlafzimmer\Var-Schlafzimmer-Temp-Tag-Soll-1]*/, $Soll_Temp_1); //Wohnzimmer_Temp_soll
SetValueString (11545 /*[Heizkoerpersteuerung\Heizkoerper-Kinderzimmer\Var-Kinderzimmer-Temp-Tag-Soll]*/ , $Soll_Temp_1. "C"); //Wohnzimmer_Temp_Soll_1
echo "Temp-Soll Tag: $Soll_Temp_1 C
"; //Ausgabe
//Temp Nachtabsenkung
//*******************************************************
$Temp_Soll_Nacht = $Soll_Temp_1 - $Nachtabsenkung;
$Temp_Soll_Nacht_1 = sprintf("%2.1f", $Temp_Soll_Nacht); // Umrechung
SetValueString (14624/*[Heizkoerpersteuerung\Heizkoerper-Wohnzimmer\Wohnzimmer-Temp-Soll-2]*/, $Temp_Soll_Nacht_1. "C");
echo "Temp-Soll Nacht: $Temp_Soll_Nacht_1 C
"; //Ausgabe
//Umschaltung Solltemp Tag-Nacht
//*******************************************************
if (($Nacht == true) && ($Nacht_Freigabe == true))
{
SetValueFloat (37028 /*[Heizkoerpersteuerung\Heizkoerper-Kinderzimmer\Kinderzimmer-Temp-Aktuell-1]*/, $Temp_Soll_Nacht);
SetValueString (37603/*[Heizkoerpersteuerung\Heizkoerper-Wohnzimmer\Wohnzimmer-Temp-Soll-2]*/, $Temp_Soll_Nacht_1. "C");
SetValueBoolean (46674 /*[Heizkoerpersteuerung\Heizkoerper-Kinderzimmer\Kinderzimmer-Temp-Soll-Nachtbetrieb]*/, true); //Nachtsollbetrieb
}
else
{
SetValueFloat (37028 /*[Heizkoerpersteuerung\Heizkoerper-Kinderzimmer\Kinderzimmer-Temp-Aktuell-1]*/, $Soll_Temp_1);
SetValueString (37603/*[Heizkoerpersteuerung\Heizkoerper-Wohnzimmer\Wohnzimmer-Temp-Soll-2]*/, $Soll_Temp_Tag. "C");
SetValueBoolean (46674 /*[Heizkoerpersteuerung\Heizkoerper-Kinderzimmer\Kinderzimmer-Temp-Soll-Nachtbetrieb]*/, false); //Nachtsollbetrieb
}
echo "Temp Soll aktuell: $Soll_Temp_Tag C
";
?>
Wenn was unklar ist einfach fragen. Vielleicht helfen die Skript zu wenig.
Ciao
andrge