Alarm wenn Sensor nicht mehr sendet

Begonnen von schlauby, 06 Oktober 2013, 22:02:13

Vorheriges Thema - Nächstes Thema

schlauby

Hallo zusammen,

Hat jemand eine Idee, wie ich überprüfen kann, ob mein Temperatur Sensor oder Wassermelder noch sendet.
Eine Batterie Überwachung hab ich schon eingefügt.

Der Sensor schreibt einen timestamp in sein Log, aber wie kann ich darauf zugreifen?

Vielen Dank für eure Tips!

HMS100TF und HMS100W

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

UliM

Hi,
in HM gibt's doch die alive-Prüfung - ich weiss, dass mein batterieloser TC als "dead" angezeigt wird.
Ich wiss aber nicht, wie man diese Funktionalität beeinflusst oder (de)aktiviert.
Soll ich den Fred mal in die HomeMatic-Gruppe verschieben?

Wenn's in HM nix gibt, ist watchdog für sowas da, siehe commandref.

=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

schlauby

Vielen Dank für die Tips.

Da ich FS20 einsetzen, bringen mir leider Homematic Tips nicht viel.
Mit der Funktion ReadingsTimestamp() komm ich schon näher an mein Ziel.

Ich verwende ein Notify um mich per email zu informieren.

Auszug auf meinem Code:
define testNotify notify ReadingsTimestamp("HMS100TF_9661", "temperature",0)
{
   if("%" eq "2013-10-*")
   {
       DebianMail(......)
   }
}

Kann mir jemand sagen, was ich verkehrt mache? DebianMail funktioniert. Demnach sollte ich jetzt ganz viele emails bekommen. Aber es passiert nix :-(

UliM

Hi,
siehe Einteiger-pdf: Der Operator eq kann keine Mustersuche, sondern prüft auf exakte Gleichheit.
Du musst =~ m// verwenden

define testNotify notify HMS100TF_9661.* { if( ReadingsTimestamp("HMS100TF_9661", "temperature",0) =~ m/2013-10-*/)
  { DebianMail(......) }
}
(ungetestet)

Und nochmals der Hinweis auf watchdog - der ist für genau sowas da.  Im o.g. code prüfst Du auf "2013-10-.*" - das zu verallgemeinern wird ggf krampfig. Bei watchdog kannst Du einfach die 10 Minuten Delay angeben.

=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

betateilchen

vor allem frage ich mich, wie die Abfrage funktionieren soll? Einen Timestamp wird es immer geben. Du musst aber prüfen, wie alt der ist, um festzustellen, ob der Sensor noch lebt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

schlauby

@UliM: Vielen Dank. Hat funktionert!!!!
Dann werde ich mich jetzt mal mit "watchdog" beschäftigen...

betateilchen

und was machst Du im November? Jeden Monat das notify umschreiben?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Ralph

Zitat von: schlauby schrieb am So, 06 Oktober 2013 22:02... überprüfen kann, ob mein Temperatur Sensor oder Wassermelder noch sendet.

Auszug aus meiner 99_myUtils.pm# Abgaegige Devices checken
# define Chk at +00:00:05 {dev2chk}
sub dev2chk {
  Log 3, "\n";
  foreach my $dev (devspec2array("room=Check")) {
    my $tlast = ReadingsTimestamp($dev, "state", "-");
    if ($tlast eq "-") {
      $tlast = ReadingsTimestamp($dev, "Window", "1970-01-01 01:00:01");
    }
    my $slast = time_str2num($tlast);
    Log 3, $dev . " " . $tlast . " " . $slast . " " . time();
    if (time() - $slast > 3600) {
      Log 3, "^ " . $dev . " letzte Meldung am " . $tlast;
      if ( Value("A_AlarmMail") ne "AUS") { FB_mail('empfänger@mail.com',"^ " . $dev . " abgaengig","Letzte Meldung am " . $tlast); }
      if ( Value("A_AlarmGong") ne "AUS") { fhem "set GONGen off"; }
    }
  }
  Log 3, "\n";
  fhem "setstate CheckAlive off";
}


Ergebnis:
2013.10.07 10:00:00 3:

2013.10.07 10:00:00 3: Badfenster 2013-10-07 09:56:12 1381132572 1381132800
2013.10.07 10:00:00 3: Buerofenster 2013-10-07 09:57:01 1381132621 1381132800
2013.10.07 10:00:00 3: Flurfenster 2013-10-07 09:57:46 1381132666 1381132800
2013.10.07 10:00:00 3: Hz_Kueche 2013-10-07 09:43:02 1381131782 1381132800
2013.10.07 10:00:00 3: Hz_WoZi 2013-10-07 09:48:06 1381132086 1381132800
2013.10.07 10:00:00 3: Kuechenfenster 2013-10-07 09:57:22 1381132642 1381132800
2013.10.07 10:00:00 3: Kuechentuer 2013-10-07 09:58:23 1381132703 1381132800
2013.10.07 10:00:00 3: TH_Aussen 2013-10-07 09:59:45 1381132785 1381132800
2013.10.07 10:00:00 3: TH_KG_Flur 2013-10-07 09:58:00 1381132680 1381132800
2013.10.07 10:00:00 3: TH_OG_Buero 2013-10-07 09:58:44 1381132724 1381132800
2013.10.07 10:00:00 3: TH_OG_SchlaZi 2013-10-07 09:58:30 1381132710 1381132800
2013.10.07 10:00:00 3: TH_Z_Kuehl 2013-10-07 09:57:46 1381132666 1381132800
2013.10.07 10:00:00 3: Water2beOpen 2013-10-07 09:57:18 1381132638 1381132800
2013.10.07 10:00:00 3:
FHEM auf RaspberryPi3 mit Geekworm USV und SignalDUINO 433MHz und HM-MOD-RPI-PCB mit 3 HM-Sec-SD-2, 5 FHT, 2 RM 100-2 Uni S, 2 HMS100, 6 CUL_WS, 6 CUL_FHTTK, 11 FS20 und 7 FS20V Spannungsüberwachungen

UliM

Hi,
hier das entspr. Beispiel aus der commandref:

# Shout once if the HMS100-FIT is not alive
define w watchdog HMS100-FIT 01:00:00 SAME "alarm-fit.sh"

statt "alarm-fit.sh aufzurufen, kannst Du zB mit setstate nen Status auf einem Dummy setzen.
=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

schlauby

Vielen Dank für die Tips!!!
Prüfe jetzt jeden Tag ob der letzte Timestamp das gleiche Datum hat, wie die Systemzeit.
Und das ganze einmal am Tag :-)
Die Idee von Ralph muss ich noch umsetzten, dann werden nämlich alle devices geprüft -> super Idee

Im Fehlerfall wird jetzt eine mail erzeugt. Die Idee mit dem Dummy gefällt mir auch auch sehr gut!
Da kann man beim Mailversenden sicherstellen, dass es nur eine email gibt.

if(dummy != true && timestampZuAlt)
{
   dann email erzeugen
   dummy = true
}

Also vielen vielen Dank an ALLE!!!!

stromer-12

Was ist mit dem Modul "DeviceMonitor", das liefert dir ein entsprechendes Event wenn dein Sender nach einer definierten Zeit nichts von sich gibt.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

schlauby

Danke für den Tip. Werde es mal testen.
Scheint die Lösung meiner Probleme zu sein :-) ohne Programmieraufwand.

Gerhard

DeviceMonitor wird hier erwähnt, wo findet man es???

Gerhard
FB6890LTE, cubietruck, orangePi, raspberry 2/3/4, HM/HMIP, shelly > 50, etc.

justme1968

findest du in contrib/DeviceMonitor.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968