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 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
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.
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.
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."
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.
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.
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
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.
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.