Quelle: Min Max Temperaturen mit Zeit Angabe (by PR-Homesystem)
<?
/* Min Max Temperatur Werte mit Zeitangabe
erstellt von Patrick Ramm
Nur für den privaten Gebrauch */
$AktuellNR = 51908 /*[Terrasse\Außenfühler\Temperatur Außen]*/; //ID vom Temperaturfühler
/* Ab hier nichts mehr verändern */
$kategorie=IPS_GetParent($_IPS['SELF']);
$ObjektID = @IPS_GetObjectIDByName("Max Temp", $kategorie);
if ($ObjektID === false)
{
$eid = IPS_CreateEvent(1); //Timer erstellen
IPS_SetParent($eid, $_IPS['SELF']);
IPS_SetEventCyclic($eid, 0 /* Keine Datumsüberprüfung */, 0, 0, 2, 2 /* Minütlich */ , 1 /* Alle 1 Minuten */);
IPS_SetEventActive($eid, true);
$Variabel = array();
$Variabel[] = array("Typ" => 2,
"Name"=>"Max Temp",
"Info"=>"",
"Profil"=>"~Temperature");
$Variabel[] = array("Typ"=>3,
"Name"=>"Max Time",
"Info"=>"",
"Profil"=>"~String");
$Variabel[] = array("Typ"=>2,
"Name"=>"Min Temp",
"Info"=>"",
"Profil"=>"~Temperature");
$Variabel[] = array("Typ"=>3,
"Name"=>"Min Time",
"Info"=>"",
"Profil"=>"~String");
for($i=0; $i < count($Variabel); $i++)
{
/* echo $Variabel[$i]["Typ"];
echo $Variabel[$i]["Name"];
echo $Variabel[$i]["Info"];
echo $Variabel[$i]["Profil"]; */
$kategorie=IPS_GetParent($_IPS['SELF']);
echo $Variabel[$i]["Typ"];
$vid = IPS_CreateVariable($Variabel[$i]["Typ"]);
IPS_SetParent($vid, $kategorie);
IPS_SetName($vid, $Variabel[$i]["Name"]);
IPS_SetInfo($vid, $Variabel[$i]["Info"]);
IPS_SetVariableCustomProfile($vid, $Variabel[$i]["Profil"]);
$Reset = @IPS_GetObjectIDByName("Reset", $kategorie);
IPS_RunScript($Reset);
}}
Else
{
$Aktuell = GetValue($AktuellNR);
$MaxNR = @IPS_GetObjectIDByName("Max Temp", $kategorie);
$MinNR = @IPS_GetObjectIDByName("Min Temp", $kategorie);
$MaxTimeNR = @IPS_GetObjectIDByName("Max Time", $kategorie);
$MinTimeNR = @IPS_GetObjectIDByName("Min Time", $kategorie);
$Max = GetValue($MaxNR);
$Min = GetValue($MinNR);
//Zeit für min und max Werte
$TimerWertMax = IPS_GetVariable($MaxNR);
$tempMax = $TimerWertMax["VariableChanged"];
$timeMax = date("d.m.Y H:i", $tempMax);
SetValueString($MaxTimeNR,$timeMax);
$TimerWertMin = IPS_GetVariable($MinNR);
$tempMin = $TimerWertMin["VariableChanged"];
$timeMin = date("d.m.Y H:i", $tempMin);
SetValueString($MinTimeNR,$timeMin);
//Ende Zeit
If ($Aktuell > $Max)
{
SetValue($MaxNR,$Aktuell);
}
Else if ($Aktuell < $Min)
{SetValue($MinNR,$Aktuell);
}}
?>
Zugehöriges RESET-Skript:
<?
/* Min Max Temperatur Werte mit Zeitangabe
erstellt von Patrick Ramm
Nur für den privaten Gebrauch */
$AktuellNR = 51908 /*[Terrasse\Außenfühler\Temperatur Außen]*/; //ID vom Temperaturfühler
/* Ab hier nichts mehr verändern */
$kategorie=IPS_GetParent($_IPS['SELF']);
$Aktuell = GetValue($AktuellNR);
$MaxNR = @IPS_GetObjectIDByName("Max Temp", $kategorie);
$MinNR = @IPS_GetObjectIDByName("Min Temp", $kategorie);
$MaxTimeNR = @IPS_GetObjectIDByName("Max Time", $kategorie);
$MinTimeNR = @IPS_GetObjectIDByName("Min Time", $kategorie);
$Max = GetValue($MaxNR);
$Min = GetValue($MinNR);
SetValue($MaxNR,$Aktuell);
SetValue($MinNR,$Aktuell);
$TimerWertMax = IPS_GetVariable($MaxNR);
$tempMax = $TimerWertMax["VariableChanged"];
$timeMax = date("d.m.Y H:i", $tempMax);
$TimerWertMin = IPS_GetVariable($MinNR);
$tempMin = $TimerWertMin["VariableChanged"];
$timeMin = date("d.m.Y H:i", $tempMin);
SetValueString($MaxTimeNR,$timeMax);
SetValueString($MinTimeNR,$timeMin);
?>
Weitere Varianten sind hier zu finden: