Check Variablenänderung in Scripten?

Hallo zusammen,

mit in verschiedenen Scripten checke ich zyklisch Werte und schalte dann im boolsche Variablen. Bei vielen dieser zyklischen Checks ändert sich die Variable nicht, nur der Zeitstempel wird erneuert.

Am Ende dieses Scriptes möchte ich dann eine Mail mit den Statusinformationen versenden, jedoch nur bei Variablenänderung. Wie kann ich abfragen ob eine Variablenänderung erfolgt ist?

Das ganze geht natürlich auch über einen Event an der Variable, ich möchte das jedoch gerne im Script erledigen.

Wie erledigt Ihr so etwas? Welche Steuerzeichen kann ich für das Formatieren des Mailtextes verwenden?

Meine Lösung und die Frage - Gehts auch eleganter?:

$VarLastChange =  IPS_GetVariable(14240 /*[35 Heizungssteuerung\Heizung]*/ );
$delta_t = time()-($zuletztON['$VarLastChange']); // Wann wurde die Variable geändert?
if ($delta_t <= 2 && $VarLastChange) // eben geändert vor Sekunden && True
  {
  SMTP_SendMailEx(39811 /*[30 Systemverwaltung\Mailversand\E-Mail senden (SMTP)]*/, "mailadresse", "IPS Info Heizbetrieb ein (Schwelle 15 °C) !", "Heizbetrieb ist freigegeben / Schwelle 15°C, gemittelte Temp: $ATgemittelt1224 °C, Außentemp: $AT °C, Wohnzimmertemperatur: $WZ °C ");
  }
if ($delta_t <= 2 && !$VarLastChange) // eben geändert vor Sekunden && False
  {
  SMTP_SendMailEx(39811 /*[30 Systemverwaltung\Mailversand\E-Mail senden (SMTP)]*/, "mailadresse", "IPS Info Heizbetrieb ein (Schwelle 15 °C) !", "Heizbetrieb ist freigegeben / Schwelle 15°C, gemittelte Temp: $ATgemittelt1224 °C, Außentemp: $AT °C, Wohnzimmertemperatur: $WZ °C ");
  }
?>

Herzlichen Dank für Tips, Stromer


if($IPS_VALUE != $IPS_OLDVALUE)
{
...
}

paresy

… das meine ich mit Eleganz :slight_smile:

Vielen Dank, Paresy

Hallo,

gibts 'ne Möglichkeit bei einer generischen Lösung auch den Namen der auslösenden Variable auszulesen, eventuell über die ScriptID?

Gr, Stromer

Sollte mit $IPS_VARIABLE möglich sein:

echo IPS_GetName($IPS_VARIABLE);

Hallo Andreas,

perfekt, Variablenname und aktueller Status ist ein guter Beginn. Das jetzt noch formatiert mit Profilen ev. (Auf oder zu oder Ein und Aus…) das wäre der Traum.

Taste mich gerade langsam an die fortgeschrittenen Möglichkeiten ran.

Grüße, Stromer

Vielleicht das hier gemeint

GetValueFormatted: IP-Symcon :: Automatisierungssoftware

Danke, das wars :slight_smile: