Benachrichtigung Temperatursensor bei jedem vollen °C

Hallo zusammen,

ich habe einen Temperatursensor der 0.1 °C genau misst. Ich möchte gerne ein Script schreiben, dass mich per Push bei jeder 1.0 °C Änderung benachrichtigt. Ich habe es mit einem „On Change“ Trigger versucht, aber so bekomme ich bei einer Schwankung von z.B. 1.9-2.0 jedes mal wieder ein Push Nachricht. Ich logge die Variable und habe versucht darüber einen Maximalwert zu ermitteln, aber ich komme zu keiner guten Lösung. Die Push soll für jedes volle °C nur einmalig kommen. Benötige ich zwingend eine Hilfsvariable oder hat noch jemand eine gute Idee?

Liebe Grüße!

baba

Vielen Dank!

Man bekommt ja bei einer Ereignis in der Variablen _IPS den auslösenden Wert (_IPS[‚VALUE‘]) übermittelt und seid längerem auch (_IPS[‚OLDVALUE‘] (siehe hier).
In dem Minimal-Script kannst du ja den in ein Integer gewandelten alten und neuen Wert vergleichen und bei Ungleichheit machen, was immer du machen willst.

Hallo
Ich denke so funktioniert das nicht.
zB Aenderung von 1.9 Grad auf 2.0 Grad da sind die Integerwerte ja ungleich , aber keine
Aenderung um 1 Grad.
Wie oft aendert sich den die Variable wenn alle 0.1 Grad gemessen wird.
Der Wert wird sich ja nicht von einer Messung zu einer anderen um 1 Grad aendern (oder)?
Man muesste auch die Zeit mit reinnehmen. Zb hat sich der Werte in einer Stunde
um 1 Grad geaendert.
Oder hab etwas falsch verstanden?

Vielleicht sowas hier:

$NeuerWert = $_IPS['VALUE'];
echo "neu: ".$NeuerWert;
$AlterWert = ReadInteger("AlterWert");
$gerundet = round($NeuerWert,0);
if ($gerundet > $AlterWert or $gerundet < $AlterWert){
    WriteInteger("AlterWert",$gerundet);
    echo "Sende Nachricht"; // Hier PushNotification einfügen
}


function WriteInteger($Name, $Value)
	{
    $result = preg_replace("/[^a-zA-Z0-9]+/", "", $Name);
	$varID = @IPS_GetObjectIDByIdent($result, $_IPS['SELF']);
 	
 	if ($varID == FALSE){
		$varID = IPS_CreateVariable(1); // Integer
 		IPS_SetName($varID, $Name); // Variable benennen
		IPS_SetParent($varID, $_IPS['SELF']); // Variable einsortieren
		IPS_SetIdent ($varID, $result);
   	}

	setvalue($varID,$Value);
}

function ReadInteger($Name)
	{
    $result = preg_replace("/[^a-zA-Z0-9]+/", "", $Name);
	$varID = @IPS_GetObjectIDByIdent($result, $_IPS['SELF']);
 	
 	if ($varID == FALSE){
        return 0;
   	}

	return getvalue($varID);
}

Genau, die Schwankung lässt leider keinen einfachen „On Change“ Trigger zu. Da es ca. 65m3 Wasser sind, wird es Stunden/Tage dauern, bis 1.0 °C Unterschied entstehen. Die Zeit kann aber sehr unterschiedlich sein, je nachdem ob die Heizung läuft oder nicht. Ohne Hilfsvariable habe ich keine Idee…

Was spricht gegen eine Hilfsvariable?

Ich würde eine Integer-Variable zur Hilfe nehmen. Wenn die Variable das volle Grad erreicht hat, würde ich die Hilfsvariable auf 2 setzen und die Benachrichtigung ausführen. Wenn es dann Schwankungen von 1,9 und 2,0 gibt, dann gibt es keine Benachrichtigung mehr, da die Benachrichtigung für den Wert 2 (abzulesen an der Hilfsvariable) schon erfolgte. Und so weiter.

Ok, ich hatte die Aufgabe dann falsch verstanden (ich dachte es ginge um Beachtung von vollen Gradzahlen), aber beim Nachlesen…
Dann fällt mir, neben dem Logging und Prüfung und die schon erwähnte Hilfsvariable ein. Wobei ich Mühe habe, das eigentliche Problem wirklich zu verstehen.
Die Temperatur kann ja auch wieder runter gehen (also erst geht sie (fiktiv 10° als Basis angenommen) um 0.8° hoch (also 10.8°), dann um 0.3° runter (= 10.5) und wieder um 0.6° (= 11.1°) hoch … ist das nun eine Änderung um 1°? Die Temperatur wird ja nicht immer hoch gehen…