Min Max Temperaturen mit Zeit Angabe

Habe hier noch mal ein kleinen Skript
Dieser kann in eine beliebige Kategorie gepackt werden

es muss nur die ID vom HM Temperaturfühler eingegeben werden und der zweite Skript weiter unten muss mit dem Namen Reset in der selben Kategorie platziert werden

<?
/* 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);
}}
?>

In der selben Kategorie kommt der Reset Skript (unbedingt Reset nenen)
Wenn man diesen Skript ausführt werden die Min und Max Werte auf die jetzige Temperatur gesetzt.
Auch hier muss einmal die Id vom Temperaturfühler eingeben werden

<?
/* 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);



?>

Viel Spaß damit

Wenn beide Skripte in der selben Kategorie erstellt wurden muss der erste einmal gestartet werden.

Ab dann läuft er selbstständig

Hier noch zwei Bilder wie es aussehen kann