Einzelne Datei überwachen -> Notify/Push Nachricht bei Nicht-Änderung

Begonnen von davidwohnthier, 15 November 2017, 19:02:15

Vorheriges Thema - Nächstes Thema

davidwohnthier

Hallo!

Ich bin mir sicher, für die meisten für euch wird das ganze recht simple sein, aber ich finde die Lösung einfach nicht.
Mein Ziel ist zur Feststellung von Stromausfällen von entfernten Lagerräumen folgendes:

In den jeweiligen Räumen sind OpenWRT Router installiert, die allerdings nicht von außen erreichbar gemacht werden können. Aus diesem Grund sollen diese per Cron und SSH-Verbindung zu einem Raspberry Pi auf dem FHEM läuft und welcher von außen erreichbar ist, jede Minute eine bestimmte Datei verändern (per touch).

FHEM auf dem Raspberry Pi soll diese bestimmte Datei durchgehend überwachen und falls sich über einen Zeitraum von 3-X Minuten der Datei-Zustand nicht ändert, soll FHEM eine eMail schreiben bzw. per Pushbullet benachrichtigen.

Der Punkt mit der Benachrichtigung ist ja nicht das komplizierte und das Ändern der entfernten Datei über eine SSH Verbindung und der dafür notwendige Austausch der Public Keys ist soweit klar. Nur weiß ich nicht wie ich FHEM dazu bekomme, eine bestimmte Datei zu überwachen und vor allem bei NICHT-Änderung des "Status/der letzten Änderung" innerhalb einer bestimmten Zeit anzuschlagen.

Könnte mir hier jemand auf die Sprünge helfen oder mir einen Tipp geben wo ich mich einlesen kann in der Coderef.

Ich wäre euch sehr dankbar!
Liebe Grüße

davidwohnthier

Ok also ich bin jetzt so weit:

Ich habe die Datei /home/pi/stillalive welche per touch immer wieder modifiziert wird
Dann habe ich ein Skript in /opt/fhem/FHEM erstellt (stillalive.sh) mit folgendem Inhalt
#/bin/bash
date -r /home/pi/stillalive
exit 0


In FHEM habe ich jetzt eine SYSMON2 hinterlegt mit folgender Deinfition:
## Check Still Alive
define SYSMON2 CustomReadings
attr SYSMON2 group SYSMON2
attr SYSMON2 interval 300
attr SYSMON2 readingDefinitions COMBINED:qx(/opt/fhem/FHEM/stillalive.sh),Last Change:
attr SYSMON2 room Alive


Das Gerät funktioniert und zeigt mir ein Reading "Last Change" an (z.B. Wed 15 Nov 19:30:19 CET 2017).

Weiß jemand wie ich es jetzt hinbekomme, dass FHEM "Alarm schlägt", wenn sich nach 10 Minuten das Reading nicht verändert hat?

gbomacfly

Hi zusammen,

dieses Thema interessiert mich doch auch. Ich würde gerne den State (über stateFormat) meines Sonoff Schalters mit Tempsensor steuern. Da die Readings per MQTT kommen, weiss ich nicht, ob der Schalter am Strom hängt. Und wenn er das nicht tut, stehen im state immer noch die letzten Readings.

Hier mein stateFormat:
attr Sonoff_1 stateFormat Power - Info2_IPAddress - Status_Vcc V<br />Sensor_DHT22_Temperature °C bei Sensor_DHT22_Humidity% Luftfeuchtigkeit

Jetzt hätte ich gerne, dass ich im stateFormat auch "Offline" angeben kann, wenn das Gerät seit 30 Minuten keine MQTT-Message gesendet hat.

Wie krieg ich das am besten hin? Irgendwelche Tips oder Ratschläge?

Danke schonmal :)
FHEM auf Debian Server, LogDB, MAX!-HT, Yeelight, Sonoff-Tasmota, IT, Signalduino434, nanoCUL868
FHEM-Keller auf RPI Zero mit OBIS (FHEM2FHEM)
FHEM-WZ auf RPI Zero - BT auf Alexa
Diverse Eigenbausensoren mit Arduino/MQTT

jmike

Hi.

Mit Attribut attr SYSMON2 event-on-change-reading readingDefinitions.* kannst du schonmal beeinflussen, dass ein Event nur erzeugt wird, wenn sich auch der Inhalt ändern.

Diese Events könntest du dann mit einem Watchdog verarbeiten.

define stillAliveWatchdog WATCHDOG SYSMON2:readingDefinitions.* 00:10:00 SYSMON2:readingDefinitions.* set fhemAlarm nicht-mehr-alive; setstate stillAliveWatchdog defined


... nicht getestet, sollte aber wenn nach 10Minuten kein "readingDefinitions" Event kommt (was nicht passiert wenn das Reading wegen event-on-change-reading gleich bleibt), den letzten Part ausführen.


gbomacfly

FHEM auf Debian Server, LogDB, MAX!-HT, Yeelight, Sonoff-Tasmota, IT, Signalduino434, nanoCUL868
FHEM-Keller auf RPI Zero mit OBIS (FHEM2FHEM)
FHEM-WZ auf RPI Zero - BT auf Alexa
Diverse Eigenbausensoren mit Arduino/MQTT