Ankündigung

Einklappen
Keine Ankündigung bisher.

http-Binding und Rule triggern, wenn URL nicht erreichbar

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    http-Binding und Rule triggern, wenn URL nicht erreichbar

    Hallo zusammen,

    ich überwache mit dem http-Binding, ob im Content einer Webseite ein bestimmter String vorhanden ist. Ist dies nicht der Fall, sendet mir OpenHAB per E-Mail eine Warnung.

    Die zugeörige Rule lautet:
    Code:
    rule "sunsetmobil.de status"
            when
                    Item SunsetmobilMonUrl changed
            then
                    if (SunsetmobilMonUrl.state == 'sunsetmobil.de is available') {
                            Sunsetmobil.postUpdate(ON)
                            sendMail('info@sunsetmobil.de', 'sunsetmobil.de - OK',  'Die URL https://www.sunsetmobil.de/monitoring funktioniert wieder.')
                    } else {
                            Sunsetmobil.postUpdate(OFF)
                            sendMail('info@sunsetmobil.de', 'sunsetmobil.de - WARNING',  'Problem beim Zugriff auf https://www.sunsetmobil.de/monitoring')
                    }
    end

    Leider funktioniert das nicht, wenn die Seite gar nicht erreichbar ist. Die Rule wird dann nicht getriggert, da OpenHAB den Status des Items ja nicht ändert.
    Im openhab.log taucht in diesem Fall folgende Fehlermeldung auf:
    Code:
    2020-03-09 14:04:15.281 [ERROR] [org.openhab.io.net.http.HttpUtil    ] - Fatal transport error: java.net.UnknownHostException: www.sunsetmobil.de
    2020-03-09 14:04:15.282 [ERROR] [ab.binding.http.internal.HttpBinding] - No response received from 'https://www.sunsetmobil.de/monitoring'

    Gibt es eine Möglichkeit, die Rule auch zu triggern sobald ein Fehler in der o.g. Form auftritt?

    Vielen Dank schon mal und schöne Grüße
    thoern

    #2
    Die Frage ist, wie das Item SunsetmobilMonUrl aktualisiert wird. Wenn Du das direkt über das http1 Binding machst, wäre die pragmatische Lösung, parallel dazu auf das Item noch das expire Binding zu verlinken, und dieses mit der gleichen Zykluszeit auf NULL zu setzen. Dann sollte das expire Binding das Item automatisch "leeren", wenn http1 kein Update ins Items schreibt.

    Das wird vermutlich nicht funktionieren, wenn man den http Cache verwendet.

    Kommentar


      #3
      Hallo,

      vielen Dank für die Rückmeldung. Auf das Expire-Binding wäre ich nicht gekommen, da ich das noch gar nicht kannte.
      Ich habe das inzwischen mit zwei weiteren Rules gelöst, wo ermittelt wird, ob ein Update auf das Item innerhalb einer Zeitspanne erfolgte, die etwas größer ist als das Refresh-Intervall des http-Bindings.
      Funktioniert gut, aber dein Vorschlag mit dem Expire-Binding gefällt mir irgendwie besser. Hätte doch mit dem Coding meines eigenen Workarounds noch etwas warten sollen...
      Ich denke, ich baue das bei Gelegenheit nochmals um...

      Danke & Gruß
      thoern

      Kommentar

      Lädt...
      X