Trend von Temperaturen ermitteln

@ Forum

Ich habe mich mal an einem Script versucht, welches mir den Trend von Temperaturverläufen im Designer anzeigen soll.

Gibt es für die ersten Zeilen (Werte einlesen) eine elegantere Lösung?
Würde meine Lösung mir irgendwas im Programmverlauf „ausbremsen“?
Getriggert wird das Script durch Änderung von „VL_HEIZUNG“. Der Wert für „VL_HEIZUNG“ wird alle 5 sec. aktualisiert (1-Wire)

<?
/*


IP-SYMCON Event Scripting


File : Trend_VL_HEIZUNG.ips.php
Trigger :
Interval :
*/

$wert_alt=GetValueFloat(„VL_HEIZUNG“); //aktuellen Wert einlesen

sleep (30);

$wert_neu=GetValueFloat(„VL_HEIZUNG“); //Wert nach 30 sekunden einlesen

$trend = ($wert_alt)-($wert_neu);

if ($trend < 0){
$anzeigewert = 0;
} elseif ($trend > 0){
$anzeigewert = 1;
} else
$anzeigewert = 2;

SetValueInteger(„Trend_VL_HEIZUNG“,$anzeigewert);

?>

Hallo agotthold,

warum nimmst Du nicht WIIPS und bindest dann die Grafiken in den Designer ein? Dann hast Du schoene grafische Trendgrafiken. Wie die Einbindung genau geht, hat hier schonmal jemand geschrieben…

Gruss Torro

nee, ich möchte keine Grafiken, sondern nur zwei Bilder, wenn die Temp. steigt dann Bild „UP“ wenn die Temperatur sinkt dann Bild „DOWN“.

Funktionieren tut das ganze ja auch, es geht mir nur darum, das ich mir dem „SLEEP“-Befehl nicht irgendetwas lahm lege.

Nutze die IPS umgebung an statt von sleep(30);


<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : Trend_VL_HEIZUNG.ips.php
Trigger : [b]jede minute[/b]
Interval : 
*/
// in IPS einem wert VL_HEIZUNG_alt [i]float[/i] einbinden und fertig
$wert_alt=GetValueFloat("VL_HEIZUNG_alt"); 
$wert_neu=GetValueFloat("VL_HEIZUNG"); 
$trend = ($wert_alt)-($wert_neu);
if ($trend < 0){
    $anzeigewert = 0;
} elseif ($trend > 0){
    $anzeigewert = 1;
} else
    $anzeigewert = 2;
SetValueInteger("Trend_VL_HEIZUNG",$anzeigewert);
SetValueFloat("VL_HEIZUNG_alt",$wert_neu);
?>

// in IPS einem wert VL_HEIZUNG_alt float einbinden und fertig

verstehe nicht ganz was Du meinst

Nutze IPS als variante zu sleep(30)

also: eine variable deklarieren in IPS die „VL_HEIZUNG_alt“ heisst und typ float ist.

Dann sollte das oberige script laufen ohne sleep(30)

Der Wert für „VL_HEIZUNG“ wird alle 5 sec. aktualisiert

nanana, wer ist den da so fleissig?

Es genügt durchaus, wenn du einen Temperaturwert alle 3-5 Minuten einliesst.
Es sei den, du hast eine Kernfusionsheizung, die deinen Raum innerhalb Sekundenbruchteile auf die gewünschte Temperatur bringt. :smiley:

mfG Franz

Eine Tendenz über eine Minute auszurechnen macht auch nicht viel Sinn, bei den vielen kleinen Schwankungen. Ich würde es auch über mehrer Minuten machen. Kannst es ja ausprobieren. Zeitinterval ändern und die realistischste Tendenz suchen.

Noch präziser, ich würde den Wert von $trend direkt benützen und die Intensität der Tendenz angeben.