Komplex ist das nicht … ich habe zur Zeit eine Variable in die ich um 00:01 die Zeiten schreibe (aus einer Datei) und dann vom Script auslesen lasse.
Die Dateien mit den Zeiten pflege ich zur Manuell :rolleyes:
Den Teil mit dem Wohnzimmer und dem Ofenscript denk dir einfach mal weg
<?
$Liste = IPS_GetChildrenIDs(48294 /*[1Wire\Temperatursensoren\Regelbar]*/);
$AntriebID = 24864 /*[1Wire\Temperatursensoren\Ventile]*/;
$Heizungsstatus = GetValueString(56924 /*[1Wire\Temperatursensoren\Heizungsstatus]*/);
$jetzt = time();
foreach($Liste as $Raum)
{
$Name = IPS_GetName($Raum);
$IST = GetValueFloat(IPS_GetVariableIDByName("IST_".$Name, $Raum));
//$IST = sprintf("%4.1f", $IST);
//echo $Name.": ".$IST."°C"."
";
$SOLL = GetValueFloat(IPS_GetVariableIDByName("SOLL_".$Name, $Raum));
$Absenk = GetValueFloat(IPS_GetVariableIDByName("Absenk_".$Name, $Raum));
$Manuell = GetValueBoolean(IPS_GetVariableIDByName("Manuell_".$Name, $Raum));
$Pin = GetValueInteger(IPS_GetVariableIDByName("Ventile_Pin", $Raum));
$Antrieb = GetValueBoolean(IPS_GetVariableIDByName("Status Pin ".$Pin, $AntriebID));
$Befehl = IPS_GetVariableIDByName("Befehl_".$Name, $Raum);
$Zeiten = GetValueString(IPS_GetVariableIDByName("Zeiten_".$Name, $Raum));
$Zeiten = explode(",", $Zeiten);
//echo $Name."-BefehlsID: ".$Befehl."
";
if($Heizungsstatus == "Absenk")
{
$SOLL = $Absenk;
//echo "Absenk Fest: ".$SOLL;
}
if(($jetzt >= $Zeiten[0] AND $jetzt <= $Zeiten[1]) OR ($jetzt >= $Zeiten[2] AND $jetzt <= $Zeiten[3]))
{
$SOLL = $SOLL;
//echo "SOLL: ".$SOLL."
";
//echo "Normal ".$Name.": ".$jetzt.",".$Zeiten[2].",".$Zeiten[3]."
";
}
else {
$SOLL = $Absenk;
//echo "Absenk: ".$SOLL."
";
//echo "Absenk ".$Name.": ".$jetzt.",".$Zeiten[2].",".$Zeiten[3]."
";
}
if(($IST <= ($SOLL - 0.5)) AND (!$Antrieb)) // IST/SOLL ?, wenn IST <= SOLL
//{TMEX_F29_SetPin($AntriebID, $Pin, FALSE);} // Antrieb öffnen
{SetValueBoolean($Befehl, TRUE);} // Antrieb öffnen
if($Name == "Wohnzimmer")
{
$Ofen = GetValue(58516 /*[1Wire\Temperatursensoren\Tempinfo\Kaminofen\IST_Kaminofen]*/);
$diff_tmp = $Ofen - $IST;
$last = GetValue(12487 /*[1Wire\Temperatursensoren\Ofenscript\Ofen_LastRun]*/);
$now = time();
$diff_time = $now - $last;
if(($diff_tmp >= 3) AND ($diff_time >= 3600) AND (!$Antrieb) AND ($Heizungsstatus != "Absenk"))
{
echo "Ofenscript wird gestartet";
Ips_SetScriptTimer(39962 /*[1Wire\Temperatursensoren\Ofenscript]*/, 600);
SetValue(56613 /*[1Wire\Temperatursensoren\Ofenscript\Ofentimer]*/, 600);
SetValue(29992 /*[1Wire\Temperatursensoren\Regelbar\Wohnzimmer\Befehl_Wohnzimmer]*/, TRUE);
SetValue(12487 /*[1Wire\Temperatursensoren\Ofenscript\Ofen_LastRun]*/, $now);
}
$Ofenstatus = GetValue(56613 /*[1Wire\Temperatursensoren\Ofenscript\Ofentimer]*/);
if(($IST > ($SOLL + 0.2)) AND ($Antrieb) AND ($Ofenstatus == 0)) // IST/SOLL ?
{
//echo "IST:".$IST."
";
SetValue(29992 /*[1Wire\Temperatursensoren\Regelbar\Wohnzimmer\Befehl_Wohnzimmer]*/, FALSE);
}
}
if(($IST > ($SOLL + 0.3)) AND ($Antrieb) AND ($Name != "Wohnzimmer")) // IST/SOLL ?
{
SetValue($Befehl, FALSE); // Antrieb schließen
echo $Befehl."
";
}
IPS_sleep(100);
}
?>