Alarm, wenn Update eines Items länger als 24 h Stunden zurückliegt

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Absinthe
Beiträge: 78
Registriert: 16. Jan 2022 13:30

Alarm, wenn Update eines Items länger als 24 h Stunden zurückliegt

Beitrag von Absinthe »

Hallo zusammen,

ich würde gerne eine E-Mail Benachrichtigung erhalten, wenn das letzte Update eines Items, z.B. eines Leckage-Sensors, länger als 24h zurückliegt.

Leider bekomme ich die Berechnung bzw. die IF-Bedingung in der Rule nicht hin. Kann mir vllt. jemand einen Tipp geben, wie ich ansetzen könne?

Soweit bin ich schon mal...

Die Rule wird momentan noch per Schalter ausgelöst. Soll später einmal am Tag geprüft werden. Das Item "DatumundZeit" enthält die aktuelle Systemzeit als ZonedTime 2022-05-14T14:43:32.000+0200. Der Sensor liefert im gleichen Format die Zeit.

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      itemName: Test_Test_Switch_1
      state: ON
    type: core.ItemStateChangeTrigger
conditions: []
actions:
  - inputs: {}
    id: "2"
    configuration:
      type: application/vnd.openhab.dsl.rule
      script: >+
        
        var TimeShelly1 = (Shelly_Humidity_01_Last_Update)

        var TimeDiff = (Shelly_Humidity_01_Last_Update-DatumundZeit)
          

        if (TimeDiff != 0) { 

        val mailActions = getActions("mail","mail:smtp:Mail_SMTP")  

        val success = mailActions.sendMail("E-Mail-Adresse", "WARNING - OPENHAB", "Letzte Aktualisierung liegt: "+(TimeDiff.state)+
        " Tage zurück!")) 

        }
          
    type: script.ScriptAction
VG
OpenHAB 4.1.1
in einem Docker-Container
auf einer Synology DS1515+

Benutzeravatar
KellerK1nd
Beiträge: 432
Registriert: 17. Jun 2019 16:45
Answers: 1
Wohnort: Griesheim

Re: Alarm, wenn Update eines Items länger als 24 h Stunden zurückliegt

Beitrag von KellerK1nd »

Mach dir eine Gruppe nur für diese Items. In der Konfiguration der einzelnen Items setzt du einen Expiretimer von 24h. Bekommt dein Item nach 24h kein Update geht es auf UNDEF. Jetzt brauchst du eine Rule die auf den Trigger „Member of gUpdate changed to UNDEF“ (gUpdate ist jetzt nur der Platzhalter für den Gruppennamen) arbeitet, hier kommt deine Benachrichtigung anschließend rein.

Jetzt kannst du das ganze auch umdrehen, wenn ein Item wieder Online kommt, der Trigger dafür ist „Member of gUpdate changed from UNDEF“, anschließend mit der Benachrichtigung, das das Item wieder Online ist.

Anbei ein paar Beispiele:

Gruppe:

Code: Alles auswählen

Group:Number:COUNT("UNDEF")        gItemUpdate                         "Item Status Update"                              <network_wireless>    (Home)
ein Beispielitem:

Code: Alles auswählen

Number                Badezimmer_Sensor_Batterieladung        "Badezimmer Temperatursensor [%s %%]"                 <battery>        (gBatterie, gItemUpdate)                {channel="deconz:temperaturesensor:homeserver:Badezimmer_Temperatursensor:battery_level", expire="12h"}
hier die Rule für Offlinemeldung:

Code: Alles auswählen

rule "Überwachung der Sensoren failed"
when
    Member of gItemUpdate changed to UNDEF
then
    val pushactions = getActions("pushover", "pushover:pushover-account:account")
    var String ItemName = triggeringItem.label.toString

    pushactions.sendMessage("Ein Sensor ist ausgefallen! Folgender Sensor ist offline: " + ItemName, "openHAB 3")
    logInfo("Sensoren", "{} ausgefallen.", ItemName)
    ausgefallenerSensor.postUpdate(ItemName)
end
und zum Schluß die Retourmeldung:

Code: Alles auswählen

rule "Überwachung der Sensoren true"
when
    Member of gItemUpdate changed from UNDEF
then
    val pushactions = getActions("pushover", "pushover:pushover-account:account")
    var String ItemName = triggeringItem.label.toString

    pushactions.sendMessage("Ein Sensor ist wieder online! Folgender Sensor ist online: " + ItemName, "openHAB 3")
    logInfo("Sensoren", "{} wieder.", ItemName)
    ausgefallenerSensor.postUpdate(ItemName)
    if(gItemUpdate.state as Number == 0 && ausgefallenerSensor.state != "keiner"){
        logInfo("Sensoren", "Alle Sensoren sind wieder online.")
        pushactions.sendMessage("Alle Sensoren sind wieder online!", "openHAB 3")
        ausgefallenerSensor.postUpdate("keiner")
    }
end
Nicht wundern, ich habe noch ein Proxyitem (ausgefallenerSensor) welches mir in der Sitemap noch anzeigt, welcher letzter Sensor ausgefallen ist.
Betriebssystem: Proxmox 7.3-4
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box

Absinthe
Beiträge: 78
Registriert: 16. Jan 2022 13:30

Re: Alarm, wenn Update eines Items länger als 24 h Stunden zurückliegt

Beitrag von Absinthe »

@KellerK1nd: VIELEN DANK!!! Es hat funktioniert und läuft.

Eine Frage: Wenn ich mit dem Expiration Timer, z.B. nach 12 Stunden, den Status UNDEF im Item setze, wird leider der letzte Staus überschrieben. Beispiel: Ich habe den Expiration Timer in dem Item erstellt, welcher den Wert (Datum & Uhrzeit) der letzten Aktualisierung speichert. Mit dem neuen Wert UNDEF ist dieser Wert leider überschrieben. Gibt es hier einen Weg, dass ich den "vorletzten Wert" anzeigen lassen kann?

VG
OpenHAB 4.1.1
in einem Docker-Container
auf einer Synology DS1515+

Benutzeravatar
KellerK1nd
Beiträge: 432
Registriert: 17. Jun 2019 16:45
Answers: 1
Wohnort: Griesheim

Re: Alarm, wenn Update eines Items länger als 24 h Stunden zurückliegt

Beitrag von KellerK1nd »

Nimm doch ein Item von dem Thing, bei dem es dir nicht um den Wert geht, der aber mit bei jedem Update mit geschrieben wird. Oft gibt es doch ein DateItem mit LastUpdate. Oder wenn nicht, dann die Batterieladung. Die letzte Option, wäre ein Proxyitem zusätzlich anzulegen.
Betriebssystem: Proxmox 7.3-4
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box

Antworten