Geräte überwachen

Moin,

ich habe Sensoren, die sich mehr oder weniger regelmäßig „aufhängen“ und würde mich gerne darüber informieren lassen bevor eine Automatisierung dann versagt.

alias: Test
description: ""
triggers:
  - entity_id:
      - sensor.heizungsraum_temperaturen_air_temperature_4
    for:
      hours: 0
      minutes: 10
      seconds: 0
    trigger: state
actions:
  - action: rest_command.tablet_sprache4
    data:
      text: Sensor hat sich aufgehängt, bitte kontrollieren
  - action: notify.persistent_notification
    metadata: {}
    data:
      message: Sensor {{sensors}} könnte sich aufgehängt haben, bitte kontrollieren

Meine Automatisierung klappt soweit ganz gut aber ich würde sie gerne noch etwas verfeinern. Und da liegt der Hase im Pfeffer. Ich könnte da noch ein wenig Profihilfe gebrauchen :smiley: Nach 2 Monaten bin ich da noch nicht so firm, hat jemand Lust?

Hier mal meine Fragen:

Warum wird mir der Name des Sensors nicht ausgegeben? In einer Anderen Automation wo ich die Batteriestände anzeigen lasse klappt das.

Kann ich mehrere Sensoren in einer Automation überwachen lassen oder muss ich für jeden Sensor eine eigene erstellen?

Kann ich mir parallel dazu eine Automation erstellen, die mir alle Geräte (nicht Entitäten) in meinem Smarthome überwacht und eine Meldung ausgibt wenn ein Gerät sich X Stunden nicht gemeldet hat?
Ich habe oft Batteriegeräte die einfach von 100% Batterie auf nix geht mehr abfallen und ich kriege das erst mit wenn Automationen nicht mehr funktionieren

Puh, ist doch ganz schön viel geworden, ich hoffe jemand hat Lust zu antworten :smiley:

vg

Was deine Benachrichtigung angeht, so scheinst du eine Variable mit der Bezeichnung sensors zu verwenden. Diese Variable wird aber in deiner Automation nicht definiert und somit existiert diese Variable nicht und es kann auch somit nichts ausgegeben werden. Da du aber den Gerätenamen ausgeben möchtest kommst du um eine Erstellung einer bzw. mehrerer Variablen nicht drum herum.

Was die Thematik mit den Geräte angeht die sich über einen gewissen Zeitraum nicht mehr an deinem Zigbee-Netzwerk gemeldet haben, gabe es die Möglichkeit über das Gerät unter dem Punkt Diagnose den Sensor Last seen zu aktivieren, dieser gibt aus wann zuletzt dieser Sensor sich im Netzwerk gemeldet hat. Damit wäre es möglich eine Rückmeldung zu erstellen, falls dieser z.B. seit 2 Stunden keine Meldung mehr gegeben hat.

2 „Gefällt mir“

Ja die Variable muss genau definiert werden mit deinem Sensor oder {{ trigger.entity_id }}, dass ruft dann die eingetragene id ab. Mehrere Trigger kannst du auch verwenden. Dann musst du aber auch die Message anpassen.

triggers:
  - entity_id:
      - sensor.heizungsraum_temperaturen_air_temperature_4
      - sensor.ein_anderer_sensor

Das hier müsste klappen.

alias: Geräte-Überwachung
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.heizungsraum_temperaturen_air_temperature_4
    to: "off"  
    for:
      hours: 12  
action:
  - service: notify.persistent_notification
    data:
      message: "Das Gerät {{ trigger.entity_id }} hat sich seit 12 Stunden nicht mehr gemeldet."

1 „Gefällt mir“

Wichtig wäre noch falls er wirklich den Gerätenamen und nicht den Entitätsnamen des Triggers möchte ist die Sache etwas komplexer. Da der Gerätename meines Wissens nur über {{ device_attr('entity_id', 'name') }} oder {{ device_attr('entity_id', 'name_by_user') }} ausgelesen werden kann.

Wenn dies aber von dem Sensor der den Trigger ausgelöst hat erfolgen soll, kann man leider nicht einfach trigger.entity_id anstelle der ID der Entität eintragen, da dann immer None ausgegeben wird. Hier gibt es jedoch eine Möglichkeit dies über eine Variable zu ermöglichen.

alias: Geräte-Überwachung
description: ""
triggers:
  - entity_id:
      - sensor.heizungsraum_temperaturen_air_temperature_4
    to: "off"
    for:
      hours: 12
    trigger: state
actions:
  - variables:
      entity_id: "{{ trigger.entity_id }}"
  - data:
      message: >-
        Das Gerät {{ device_attr(entity_id, 'name_by_user') }} hat sich seit 12
        Stunden nicht mehr gemeldet.
    action: notify.persistent_notification

Empfehlenswert ist es name_by_user zu verwenden, da der Name des Gerätes ein vollkommen anderer sein kann. Daher einfach selbst einen Namen für die Geräte vergeben und dieser wird dann auch so angezeigt. Und man geht eventuellen Problemen aus dem Weg.

1 „Gefällt mir“

Das muss ich mir mal anschauen mit den Variablen. kommst man denn nicht so irgendwie an den „Auslöser“ heran?

Das ist eine gute Idee, manchmal sieht man den Wald vor lauter Bäumen nicht, der sollte ja auch für alle Protokolle verfügbar sein und nicht nur für Zigbee…

Vielen Dank Euch beiden, da habe ich erstmal ein bissel was aufzuarbeiten, ich hoffe ich kriegs hin.

Edit: Aber eine Frage habe ich noch.
Ich setze ja einen Befehl per Webhook ab um eine Nachricht anzusagen, wenn da ein Timeout kommt wir diese „verschluckt“ und die Automatisierung abgebrochen. Kann ich das irgendwie verhindern? Notfalls im Fehlerfall nochmal abfeuern.

mit continue_on_error: bin ich nicht weiter gekommen

Das ist die Fehlermeldung:

Ausgeführt: 5. Januar 2025 um 18:32:38
Fehler: Client error occurred when calling resource "http://192.168.1.59:8080/sprachausgabe4?value1=Das Garagen tor von Biene wurde geschlossen!"
Ergebnis:

Du kannst den Auslöser auch direkt auslesen, das Problem ist aber der das du dann nur den Namen der Entität angezeigt wird.

Beispiel:

  • Gerätename = Sensor
  • Entitätsname = Sensor Batterie

Alternativ kannst du naürlich auch die Auslöser Entität so benennen wie das Gerät. Wäre noch eine Alternative.

Was den Last seen Sensor angeht, habe ich diesen nur bei meinen Zigbee-Geräten, ich will aber nicht ausschließen das auch andere Hersteller diesen Sensor verwenden. Da kann ich dir aber nichts genaues sagen.

Edit:
Mit dem Thema Webhook habe ich bisher noch garnicht gearbeitet. Aber kannst du vielleicht diesen Part genauer erklären. Vielleicht auch mit Code das man versteht wie das ganze ineinander greift.

Gibt es zumindest bei Enocean und Z-wave auch.

Also den Webhook setze ich über einen RESTful Command ab wie oben in der Automatisierung in der configuration.yaml ist das dann so definiert:

tablet_sprache4:
  url: "http://192.168.1.59:8080/sprachausgabe4?value1={{text}}"

Also im Grunde rufe ich nur eine URL auf und da kommt nichts zurück, meine alte Zentrale war da nicht so empfindlich und hat den Befehl ein abgefeuert und dann weiter gemacht. HA scheint da eine Rückmeldung zu erwarten, aber eben nicht immer.
Das ist derzeit meine einzige Möglichkeit eine lokale Sprachausgabe zu ermöglichen.

Edit: @jayjojayson funktioniert soweit und ich habe das erstmal so übernommen
@UncleSam139 bei deiner Lösung kommt das gleiche wie bei Jans Lösung, da habe ich wohl einen Fehler gemacht :smiley:

Wie gesagt ich kenne mich damit absolut nicht aus, aber soweit ich das hier verstehe. Wird über die configuration.yaml eine Verbindung zu deinem Gerät aufgebaut und die Automation sendet dann den Text der ausgegeben werden soll.

Hiebei habe ich einfach mal ChatGPT gefragt, hat mir schon öfter bei Sachen geholfen wo ich richtig auf dem Schlauch stand.

Laut diesem muss der Code in der configuration.yaml so aussehen.

rest_command:
  tablet_sprache4:
    url: "http://192.168.1.59:8080/sprachausgabe4?value1={{ text }}"
    method: GET

Vielleicht noch einige Anpassungen, je nachdem wie deine configuration.yaml aufgebaut ist. Hoffe das hilft dir, sonst habe ich da keine weitere Idee oder jemand der sich besser damit auskennt kann dir vielleicht den finalen Tipp geben.

1 „Gefällt mir“

Hast Du da einen speziellen Client oder gehst du über die chatgpt.com? Ich hatte da früher mal damit rumgespielt aber dann schnell das Interesse daran verloren.

Das ist ein guter Hinweis, dankeschön. Ich meine meine Alte Zentrale hat das auch als GET verarbeitet, ich dachte aber das ist default… Ich hoffe das klappt…

Nein, ganz normal https://chatgpt.com/, du kannst natürlich auch andere GPTs abonnieren/hinzufügen. Die haben aber täglich eine begrenzte Anzahl an Posts die du abgeben kannst. Und diese sind auch mit dem normalen ChatGPT verknüpft heißt hast du das Kontingent auch vorher schon mit den Standard-GPT verbrauchen kannst.

1 „Gefällt mir“

Nur mal eine kurze Rückmeldung, seit dem Zusatz mit der GET-Methode hatte ich keine Ausfälle mehr… Sieht also sehr gut aus und danke dafür…

Super. Freut mich wenn ich dir helfen konnte. :smile:

1 „Gefällt mir“