Variablen Überwachung bei nicht-Aktualisierung (z.B. 1-Wire)

Moin,

mit nachstehendem Skript lese ich die Aktualisierung einer 1-Wire Thermometers aus und schreibe es in eine Variable. So hab ich im Blick ob die Abfrage mal hängt.

<?
$zeit = IPS_GetVariable(46497 /*[Schlafzimmer\Heizung\Schlafzimmer 1-Wire Temp\Temperatur]*/);//lesen der Updatezeit mit der ID 12345
SetValue (23240 /*[Schlafzimmer\Raumtemperatur\letzte Thermostatabfrage]*/, date("d.m.Y  H:i:s", $zeit['VariableUpdated']));//schreiben der Zeit in Variable 23456
?>

Nur im Blick haben reicht aber aktuell nicht, da ich zur Zeit sporadische Probleme mit 1-Wire habe die zur Heizperiode sehr ungünstig sind… :rolleyes:

Ich bräuchte ein Skript was Alarm schlägt (Variable setzt, mail verschickt, etc.) wenn eine Variable seit X Minuten nicht mehr aktualisiert wird.

Hat jemand sowas im Petto ? Die Suche hat mich hier nicht weitergebracht, ist auch schwer zu formulieren als Suchtext… :eek:

Suchtext bei G… : ip-symcon aktualisierung variable alarm

bringt:
Nix Brauchbares :smiley:

Gruß
Bruno

Hallo,

habe ein ähnliches Problem.

Es gabe mal die Funktion IPS_GetUpdateTime, um die letzte Aktualisierungszeit einer Variablen festzustellen.

Gibt es die noch?

Wenn ich die verwende kommt bei mir die Fehlermeldung
Fatal error: Call to undefined function IPS_GetUpdateTime() in [Scripte Vorlagen\Praxis – Watch Dog Timer] on line 11

Suche in der Dokumentation funktioniert seit Umstellung auf zweisprachig nicht mehr !!!

OK, falsch :

Vielleicht könnte sich jemand mal die Mühe machen, alte, nicht mehr funktionierende Skripte aus dem Forum zu entfernen.

Gruß
Bruno

Danke für den Hinweis.

Sicher das GetUpdateTime noch implentiert ist ? Der Link aus dem einen Thread ist tot, in der Doku ist nix zu finden und im Skript funktionierts (auch als „IPS_GetUpdateTime“) nicht.

<?
/*
*******************************
 IP-SYNCOM Event Scripting
*******************************
*/
//Trigger: alle 600 Sekunden
//GetUpdateTime gibt die Zeit der letzten Aktualisierung als UNIX Timestamp
;

$last_TX = IPS_GetUpdateTime (46497 /*[Schlafzimmer\Heizung\Schlafzimmer 1-Wire Temp\Temperatur]*/);

//Wenn über 2 Stunden (2*60*60=7200) nicht gesendet wurde > Alarm
if(($last_TX  + 360) < (time())) {
  echo "Alarm! Der 1-Wire Bus scheint nicht korrekt zu funktionieren !";
  SMTP_SendMail(24364 /*[**Programme\eMail (xxx.xxx@gmx.de)]*/, "Alarm! 1-Wire Bus antwortet nicht !", "Die Abfrage des 1-Wire Temperatursensors im Schlafzimmer fand über eine Minute nicht statt.");;
}

?>

Danke für den Hinweis,

es würde ja helfen wenn es in der Doku ein Hinweis gibt, dass dies nicht mehr unterstützt wird, so wie in anderen Programmiersprachen etc.

Trotz alledem funktioniert die Dokumentation seit der Umstellung auf zweisprachig nicht mehr !!!

da war wohl einer schneller !

Alternativen für mich ?

Und hier gleich die Umrechenfunktion

<?php

$timestamp = time();

$datum = date(„d.m.Y“, $timestamp);
$uhrzeit = date(„H:i“ , $timestamp);

echo $datum, " - „, $uhrzeit,“ Uhr";

?>

Neue Version :smiley:

<?

/*
*******************************
 IP-SYNCOM Event Scripting
*******************************
*/
//Trigger: alle 1200 Sekunden
//Lebt der Gas-Sensor noch?
//File: WatchDogHMS.ips.php
//GetUpdateTime gibt die Zeit der letzten Aktualisierung als UNIX Timestamp
$last_TX = IPS_GetVariable(12345);

//Wenn über 2 Stunden (2*60*60=7200) nicht gesendet wurde > Alarm
if(($last_TX['VariableUpdated']  + 7200) < (time())) {
  echo "Alarm! Der Gas-Sensor ist defekt";
//""  TTS_Speak(37579 /*[Objekt #37579 existiert nicht]*/, "Alarm! Der Gas-Sensor ist defekt");
} else
{
  echo "Alarm! Der Gas-Sensor ist ok";
}

?>

Scheint zu gehen. :rolleyes:

Gruß
Bruno

Das hat Bruno aus V1.0 ausgegraben. Das gibt es schon lange nicht mehr.

$timeout = 600; //10 Minuten
$watch = IPS_GetVariable(42801 /*[1-Wire LinkTH\Busspannung]*/);

if(($watch['VariableUpdated'] + $timeout) < time())
{
   echo "Variable wurde länger als " .date("i", $timeout)." Minuten nicht mehr aktualisiert.";
}

Deswegen die Aktualisierung. Funktionert, jedenfalls bei mir. :smiley:

Gruß
Bruno

Funktioniert seit fast 4 Jahren so. :confused::D:eek:

Mit meinen heute gemachten Änderungen ?

Wie mit deinen Änderungen.

Kannst es auch so schreiben. :smiley:

function IPS_GetUpdateTime($id)
{
  $v = IPS_GetVariable($id);
  return $v['VariableUpdated'];
}

So ähnlich habe ich es doch geschrieben:

$last_TX = IPS_GetVariable(12345);
if(($last_TX['VariableUpdated']  + 7200) < (time())) 

Ausser function.

…und wo ist jetzt dein Problem. Das funktioniert so schon fast 4 Jahre. Hatte ich doch geschrieben.

Hättest mal den alten Kram nicht ausgraben sollen oder lesen wo es steht. :wink:

Ein Problem habe ich nur mit der Frage nach dem Unterschied von :

$timeout = 600; //10 Minuten
$watch = IPS_GetVariable(42801 /*[1-Wire LinkTH\Busspannung]*/);

if(($watch['VariableUpdated'] + $timeout) < time())
{
   echo "Variable wurde länger als " .date("i", $timeout)." Minuten nicht mehr aktualisiert.";
}  

und meinem:

$last_TX = IPS_GetVariable(12345);

//Wenn über 2 Stunden (2*60*60=7200) nicht gesendet wurde > Alarm
if(($last_TX['VariableUpdated']  + 7200) < (time())) {
  echo "Alarm! Der Gas-Sensor ist defekt";
//""  TTS_Speak(37579 /*[Objekt #37579 existiert nicht]*/, "Alarm! Der Gas-Sensor ist defekt");
}

Deins sollte doch sicher die neue Schreibweise sein. Oder geht das an sich nicht?

Dieses [‚VariableUpdated‘] i[COLOR=Black]st die Schreibweise seit Version 2.0

ansonsten ist deine Version identisch zu meiner, nur das Du eine Klammer zuviel hast. Oder was meinst Du jetzt.

Du hast ein Script von der IPS Version 1.0 ausgegraben mit einer Funktion, welche es seit Version 2.0 nicht mehr gibt.
[/COLOR]

Da ich die Änderungen für „ab 2.0“ ja in meiner „neuen Version“ drin hatte, verstehe ich den Hinweis auf 1.0 und „alte Funktion“ nicht.
Oder war es das zusätzlich Klammerpaar bei time?