Abfrage "lebst du noch" von FS20 Sensoren

Hallo liebe Mitstreiter,

wie ermittelt ihr den Batteriestatus (Lebenszeichen) von FS20 Sensoren. Diese übermitteln von hause aus ja leider keinen Status der Batterie. Schaut ihr so alle Tage mal ob noch etwas gesendet wird ?

Da nicht nur der leere Batterien zu einem Ausfall führen können reichte mir die Low-Batt-Meldung nicht aus. Ich überprüfe alle FS20-Teile auf den Zeitstempel Ihrer letzten Meldung hin. Je nach dem um was für ein Teil es sich handelt muss es sich alle 1-2 Stunden gemeldet haben. Andere Instanzen (z.b. Dämmerungsmelder) bekommen 24 Stunden Zeit für eine Meldung. Bleibt die aus kommt ein Email.

Hi kronos

  • gute Idee sowas einzubauen, kommt auf die Todo Liste für kalte Herbsttage.
    Auch gleich zur Überwachung der 1wire Sensoren. Grad vor kurzem erst hatte ich ein Problem ( Katze hat auf den 1Wire Abzweiger gepinkelt :eek:) das beinahe mein Aquarium in ein Fischsuppe verwandelt hätte.

Das wäre eigentlich eine super Anwendung für ein kleines allgemein einsetzbares Modul. Hast da zufällig was oder muß ich selbst basteln?

gruß
bb

Schmucklos - funktioniert aber:

<?
include('ProwlPHP.php');

//  (Status-VariablenID einer Instanz, Timeout in Stunden)
$Instanzen = array("25076", "2",  // Rauchmelder Büro
                   "46052", "2",  // Rauchmelder Galerie
                   "10544", "2",  // Rauchmelder Keller
                   "16728", "2",  // Rauchmelder Kinderzimmer klein
                   "52499", "2",  // Rauchmelder Kinderzimmer gross
                   "32487", "2",  // Rauchmelder Schlafzimmer
                   "15659", "2",  // Rauchmelder Wohnzimmer
                   "35336", "2",  // Türkontakt Garagentor
                   "57627", "26", // Dämmerungsmelder
                   "12047", "2",  // Temperaturmelder Aquarium
                   "47591", "2",  // Temperatur-/Luftfeuchtemelder Gewächshaus
                   "17662", "2",  // Wassermelder Waschküche
                   "24573", "2"); // Regensensor Garagendach
						 
$Arraycount = count($Instanzen)/2;

for ($count = 1; $count <= $Arraycount; $count++) {

   $Instanz   = intval(array_shift($Instanzen));
   $Timeout   = intval(array_shift($Instanzen));
   $Var       = IPS_GetVariable($Instanz);
   $Zeit      = date("U", time() - $Var['VariableUpdated']);
   $Tage      = intval($Zeit/86400);
   $Zeit     -= $Tage*86400;
   $Stunden   = intval($Zeit/3600);
   $Zeit     -= $Stunden*3600;
   $Minuten   = intval($Zeit/60);
   $Nachricht = "Letzte Meldung vor ".$Tage." Tage(n),
".$Stunden." Stunde(n) und
".$Minuten." Minuten.";

   if ($Stunden > $Timeout) {
      $array = array(
         "Betreff" => IPS_GetName(IPS_GetParent($Instanz)),
         "Nachrichtentext" => $Nachricht."
".date("d.m.Y",time())." / ".date("H:i",time())." Uhr.",
         "NachrichtentextUTF8" => $Nachricht."
".date("d.m.Y",time())." / ".date("H:i",time())." Uhr.",
         "application" => "IP-Symcon",
         "priority" => 1,);
      IPS_RunScriptEx(18090 /*[Email und Termine\Email Versand IP-Symcon]*/, $array); // Email versenden
      IPS_RunScriptEx(56778 /*[Skripte allgemein\Prowl Pushdienst\Prowl Ausgangsmodul]*/, $array); // Prowl versenden
   }
}

?>

Im Fehlerfall verzweigt das Skript dann am Schluss auf ein Skript welches ein Emails verschickt und auf eines für eine Pushmail auf ein IOS-Gerät. Aber das kann ja jeder für sich auswerten wie er es braucht. Das Skript führe ich stündlich aus.

PS: Wenn Ihr Prowl nicht benutzt dannn muss das include ganz oben raus…

Na super,
ist doch schon mal ein Anfang !

Danke für das Script.

Kannst du bitte mal die Scripte für Email und Push posten.

Email:


<?
$BetreffSMTP = $Betreff;
$NachrichtentextSMTP = $Nachrichtentext;
$applicationSMTP = $application;

if ($BetreffSMTP <> "") {
   $smtp_id=10408 // Deine SMTP-Instanz
   SMTP_SendMail($smtp_id, $BetreffSMTP." (".$applicationSMTP.")", $NachrichtentextSMTP);
}
?>

Prowl:


<?
include('ProwlPHP.php');
$prowl = new Prowl(blablarhabarberrhabarbersabbelsabbel'); // hier dein Magic-Key rein
$prowl->push(array(
 'application'=>utf8_encode($application),
 'event'=>utf8_encode($Betreff),
 'description'=>utf8_encode($Nachrichtentext),
 'priority'=>$priority,
));
?>

Die ProwlPHP.php stammt hier aus dem Forum. Wenn ich sie trotzdem posten soll bitte kurze Info.

Ok Danke dir.

Habe es eben schnell selber in ein Script gebastelt:

<?
include('ProwlPHP.php');

//  (Status-VariablenID einer Instanz, Timeout in Stunden)
$Instanzen = array("16099", "2",  // Heizung SZ
                   "50877", "2",  // Heizung WZ
                   "26007", "2",  // Heizung Küche
                   "26413", "2",  // Heizung Büro
                   "42530", "2",  // Heizung Bad
                   "45446", "2",  // Ausentemp
                   "38637", "2",  // Windsensor
                   "11081", "26"); // Dämmerungsmelder
                   
$Arraycount = count($Instanzen)/2;

for ($count = 1; $count <= $Arraycount; $count++) {

   $Instanz   = intval(array_shift($Instanzen));
   $Timeout   = intval(array_shift($Instanzen));
   $Var       = IPS_GetVariable($Instanz);
   $Zeit      = date("U", time() - $Var['VariableUpdated']);
   $Tage      = intval($Zeit/86400);
   $Zeit     -= $Tage*86400;
   $Stunden   = intval($Zeit/3600);
   $Zeit     -= $Stunden*3600;
   $Minuten   = intval($Zeit/60);
   $Nachricht = "Letzte Meldung vor ".$Tage." Tage(n),
".$Stunden." Stunde(n) und
".$Minuten." Minuten.";

   if ($Stunden > $Timeout) {
      $array = array(
         "Betreff" => IPS_GetName(IPS_GetParent($Instanz)),
         "Nachrichtentext" => $Nachricht."
".date("d.m.Y",time())." / ".date("H:i",time())." Uhr.",
         "NachrichtentextUTF8" => $Nachricht."
".date("d.m.Y",time())." / ".date("H:i",time())." Uhr.",
         "application" => "IP-Symcon",
         "priority" => 1,);
$prowl = new Prowl('xxxxxxxx'); // hier dein Prowl Magic-Key rein
$prowl->push(array(
 'application'=>'iHome', //Name des IPS-Systems
 'event'=>utf8_encode(IPS_GetName(IPS_GetParent($Instanz))), //Name des Gerätes
 'description'=>utf8_encode($Nachricht."
".date("d.m.Y",time())." / ".date("H:i",time())." Uhr."), // Zeit der letzten Änderung
 'priority'=>0
));
   }
}




?>

Habe das in eigene Skripte verpackt weil die „Sendemodule“ von vielen Skripten aus aufgerufen werden.

PS: Ich hoffe das ist nicht Dein echter Prowl-Key.

Ist fast ein wenig komisch für ne Funkkomponente, meine Antwort aber …

Ich versorge viele FS20 Komponenten schlicht mit ner kleinen Spannungsquelle. Man hat an mehr Stellen als auf den ersten Blick gedacht, die Möglichkeit, die Dinger einfach „mit Strom aus der Steckdose“ zu versorgen.

Für die tatsächlich abgesetzten Einheiten mach ich’s aber auch mit ner Zeitüberwachung.

Ein ungelöstes Problem stllen allerdings die Dauerfunker dar, wenn die Batterie in die Knie geht. Dann nutz auch keine Abfrage, denn sie senden ja dauernd (und stören den gesamten Funkverkehr). Tritt natürlich meist ein, wenn man grad länger nicht zu Hause ist …

jwka

Hilft wahrscheinlich nur vorbeugendes Wechseln der Batterien

Gruß
Bruno