Ist die Website online oder gibt es Probleme?

Home Assistant Quickie: Webseiten-Status überwachen

Wer eine Website wie ein Blog oder einen Onlineshop betreibt, will auch wissen, ob sie erreichbar sind. Mit Home Assistant geht das schnell und einfach.

Wenn eine Website nicht erreichbar ist, kann das ein einfacher Ausfall beim Provider sein – oder ein größeres Problem wie z. B. ein Hackerangriff. Über Down-Zeiten kann man sich mit Home Assistant recht einfach informieren lassen.

Dazu bauen wir einen neuen Binary-Sensor mit einem Kommandozeilenaufruf.

  - platform: command_line
    name: nachbelichtet Status
    command: response=$(curl -LIk -m 3 --insecure https://nachbelichtet.com/ -o /dev/null -w "%{http_code}\n" -s); test "$response" -eq 200 && echo "OFF" || echo "ON"
    scan_interval: 60
    value_template: '{{ value }}'
    device_class: 'problem'Code-Sprache: YAML (yaml)

Wir nutzen dazu die Platform command_line und rufen damit den CURL-Befehl auf. Wir konfigurieren den Aufruf so, dass wir den Response-Code der zu überwachenden Seite bekommen – in meinem Fall https://nachbelichtet.com. Eine erreichbare Seite gibt den Response-Code 200 zurück. Der Parameter –insecure sorgt dafür, dass der Test nicht an einer SSL-Zertifikatsabfrage hängen bleibt.

Diese Abfrage wird dann mit scan_interval: 60 alle 60 Sekunden durchgeführt, was man natürlich auch ändern kann.

Gibt es keine Probleme, hat die neue Binary-Sensor-Entität „nachbelichtet Status“ den Status off. Gibt sie jedoch einen anderen Response-Code als 200 zurück, hat sie den Status on oder problem.

Damit kann man nur eine Automation bauen, die z. B. eine E-Mail mit einem Hinweis verschickt, die Beleuchtung im Büro blinken lassen oder was ihr sonst damit auslösen wollt.

Diese Lösung ist übrigens sinnvoller als ein einfacher Ping-Befehl. Dieser würde immer eine positive Rückmeldung geben, wenn auch nur der Webserver eine Reaktion zeigt, was aber z. B. auch ein Fehler 500 sein könnte.

Melde dich zu meinem Newsletter an!

Du kannst dich jederzeit abmelden und ich verspreche: Kein Spam!


Die mit Sternchen (*) gekennzeichneten Verweise sind sogenannte Provision-Links. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen.Wenn du auf so einen Verweislink klickst und über diesen Link einkaufst, bekomme ich von deinem Einkauf eine Provision. Für dich verändert sich der Preis nicht und du unterstützt damit meine Arbeit. Preisänderungen und Irrtümer vorbehalten.

2 Kommentare

  1. Hallo Markus,
    danke für diesen Artikel und die Idee, die ich gleich bei mir in HA umgesetzt habe.
    Was mir aber nicht so gut gefallen hat war, dass der Webseitenstatus nur als OFF/ON angezeigt wurde. Deshalb hier für alle, denen es genauso geht, eine kleine Erweiterung. Meine sensors.yaml habe ich um folgendes erweitert und nun kann ich mir die Erreichbarkeit als online/offline in Home Assistant anzeigen lassen.

    
    # Abenteuersuechtig.de auf Erreichbarkeit prüfen
    - platform: command_line
      name: abenteuersuechtig_status
      command: response=$(curl -LIk -m 3 --insecure https://www.abenteuersuechtig.de/ -o /dev/null -w "%{http_code}\n" -s); test "$response" -eq 200 && echo "OFF" || echo "ON"
      scan_interval: 60
      value_template: '{{ value }}'
    
    # dennis-henss.de auf Erreichbarkeit prüfen
    - platform: command_line
      name: dennis-henss_status
      command: response=$(curl -LIk -m 3 --insecure https://www.dennis-henss.de/ -o /dev/null -w "%{http_code}\n" -s); test "$response" -eq 200 && echo "OFF" || echo "ON"
      scan_interval: 60
      value_template: '{{ value }}'
    
    # Status Sensoren Webseitenerreichbarkeit umbenennen in online/offline
    - platform: template
      sensors:
        sensor_dennis_henss_status:
          value_template: '{% if is_state("sensor.abenteuersuechtig_status", "OFF") %}online{% else %}offline{% endif %}'
          friendly_name: 'Abenteuersuechtig.de'
        sensor_abenteuersuechtig_status:
          value_template: '{% if is_state("sensor.dennis_henss_status", "OFF") %}online{% else %}offline{% endif %}'
          friendly_name: 'dennis-henss.de'
    Code-Sprache: PHP (php)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert