Bedingung, wenn ein oder mehr Sensoren keine Werte gesendet haben?

Hi,

Ich habe hier einen Sensor der hin und wieder seine Werte nicht aktualisiert und dann neu gestartet werden muss. Meistens fällt das erst Tage später auf und deshalb lasse ich mich daran erinnern, wenn er mal nicht mehr aktualisiert.
Jetzt im Frühjahr/Sommer kommt es aber zu Fehlalarmen und die wollte ich verfeinern.
Wie kann ich als Bedingung hinzufügen das ein Sensor eine bestimmte Zeit seinen Wert nicht geändert haben darf bevor die Aktion ausgeführt wird?
bzw. Wie kann ich die Auslöser „und“-Verknüpfen?

alias: "Information: Ausfall Sensor Heizungsraum"
description: ""
triggers:
  - entity_id:
      - sensor.heizungsraum_temperaturen_air_temperature_4
      - sensor.heizungsraum_temperaturen_air_temperature_5
      - sensor.heizungsraum_temperaturen_air_temperature
      - sensor.heizungsraum_temperaturen_air_temperature_6
    for:
      hours: 0
      minutes: 20
      seconds: 0
    trigger: state
conditions: []
actions:
  - action: rest_command.tablet_sprache4
    data:
      text: Sensor könnte ausgefallen sein, bitte kontrollieren!
  - action: notify.persistent_notification
    metadata: {}
    data:
      message: >-
        Sensor {{ trigger.entity_id }} könnte ausgefallen sein, bitte
        kontrollieren.
mode: restart

Und wenn wir schon mal da sind, ist aber nicht die Hauptfrage :smiley:
Wie kann ich eine Sprachnachricht mit der HA-App auf Android ausgeben?

hier fehlt das „to: unavailable“

alias: "Information: Ausfall Sensor Heizungsraum"
description: ""
triggers:
  - entity_id:
      - sensor.heizungsraum_temperaturen_air_temperature_4
      - sensor.heizungsraum_temperaturen_air_temperature_5
      - sensor.heizungsraum_temperaturen_air_temperature
      - sensor.heizungsraum_temperaturen_air_temperature_6
      - button.pa_08_garage_door_closed
    to: unavailable
    for:
      hours: 0
      minutes: 20
      seconds: 0
    trigger: state

Nein, das fehlt da tatsächlich nicht, das wäre ja zu einfach. :slight_smile:
Das ist ein Fibaro FGBS001, der friert gerne mal seine DS18B20 Sensoren ein und sendet aber munter weiter Lebenszeichen.

Wie kann ich also als Bedingung festlegen, das sich ein Sensor eine bestimmte Zeit nicht verändert haben darf bevor es weiter geht?

Hi, wenn ich das richtig verstanden, möchtest du eine Meldung, wenn mehrere Sensoren gleichzeitig nicht mehr verfügbar sind. Aktuell wird nur eine oder Prüfung gemacht, also wenn Sensor 1 oder Sensor 2 nicht verfügbar, dann führe Aktion aus.

Man könnte daher eine Automatisierung schreiben, die z.B. alle 5min eine Template Bedingung prüft und so jeden Sensor prüft oder dieser länger als 20min nicht erreichbar ist. Kannst du ja mal testen, müsste eigentlich funktionieren.

alias: "Information: Ausfall Sensor Heizungsraum"
trigger:
  - platform: time_pattern
    minutes: "/5" 
condition:
  - condition: template
    value_template: >
      {% set min_diff = 20 %}
      {% set sensors = [
        'sensor.heizungsraum_temperaturen_air_temperature',
        'sensor.heizungsraum_temperaturen_air_temperature_4',
        'sensor.heizungsraum_temperaturen_air_temperature_5',
        'sensor.heizungsraum_temperaturen_air_temperature_6'
      ] %}
      {% for sensor in sensors %}
        {% if (now() - states[sensor].last_changed).total_seconds() < min_diff * 60 %}
          {{ false }}
        {% endif %}
      {% endfor %}
      {{ true }}
action:
DEINE AKTIONEN einfügen
1 „Gefällt mir“

Was zeigen diese Sensoren in den Entwicklerwerkzeugen
Wenn Sie Funktionieren?
Wenn Sie „friert“?
Und was wenn sie „munter weiter Lebenszeichen“ ?

Versehe das nicht :thinking:
Bitte Screenshots

Das ist ja ein lustiges (teures und anscheinend veraltetes) kleines Teilchen :hugs:
In welchem Abstand macht er denn so seine zicken?
Wie siehts aus mit einer Automation: diese Integration alle 24 std neu starten?
Oder tauschen gegen ESP32 mit ESPHome (mit natürlich viel viel mehr Funktionen)?

@jayjojayson

Habe ich mal ergänzt, mal schauen ob es klappt. magst du das Template ein wenig erklären?

{% set min_diff = 20 %}

Setzt die Zeit und

{% set sensors = [
        'sensor.heizungsraum_temperaturen_air_temperature',
        'sensor.heizungsraum_temperaturen_air_temperature_4',
        'sensor.heizungsraum_temperaturen_air_temperature_5',
        'sensor.heizungsraum_temperaturen_air_temperature_6'
      ] %}

die Sensoren die verglichen werden sollen?

{% for sensor in sensors %}

Das verstehe ich überhaupt nicht :frowning:

@Dreckfresse

In den Entwicklerwerkzeugen habe ich nicht geschaut, aber das Gerät aktualisiert immer weiter den „zuletzt gesehen“-Status und kann auch angepingt werden. Die Sensoren bleiben aber immer auf dem gleichen Temperaturwert.
Ist ein Problem des FGBS001.

So macht es sich dann im Verlauf bemerkbar…

Das passiert nicht oft eher in Wochen oder Monaten. Tut aber auch nichts zur Sache, weil es ja nicht um diesen Sensor geht sondern meine Frage ist ja eigentlich wie ich in einer Bedingung erfassen kann, das mehrere Sensoren keine Werte aktualisieren.
Vielen Dank für Deine Alternativvorschläge, aber das ist nicht die Antwort auf meine Frage :wink:

Mit dem Template sollte dann geprüft werden, ob wirklich alle Sensoren seit 20 Minuten nicht erreicht werden, hoffe ich zumindest. :wink:

Setzt als Variable min_diff die Zeit 20min. Die wird dann später in Sekunden umgerechnet

{% set min_diff = 20 %}

In der Variable sensors werden die Sensoren vereint und danach findet dann die eigentliche Prüfung statt. Ist die letzte Änderung vor weniger als 20 Minuten gewesen, wenn ja dann brich die Prüfung ab und gib false aus (weil ja noch irgendein Sensor aktiv ist). Falls keiner der Sensoren kürzlich aktualisiert wurde, kommt am Ende {{ true }} raus und die Bedingung wäre erfüllt.

{% for sensor in sensors %}

Das steht für, prüfe jeden Sensor in der Variable sensors.
Darunter in der Zeile dann der Vergleich, ob ein Sensor die Bedingung unter 20min erfüllt.

1 „Gefällt mir“

Danke für deine geduldigen Erklärungen, das bringt mich wirklich weiter und ich kann vielleicht später mal eigene Templates erstellen. Die Anleitungen im Netzt sind da bisher weniger hilfreich gewesen…

Woher weiß er das? Gibt HA diese Information weiter?

Gerne, ich lerne das auch nur durch nachlesen, ausprobieren, kopieren, testen und Wissen sammlen. Manchmal hat man so etwas auch ähnlich im Einsatz und muss sich nur daran erinnern. :slight_smile:

Cool ist auch die Template Testfunktion in Home Assistant, dort kann man oft seine Templates vorab prüfen, ob sie auch das machen, was sie machen sollen.

Hilfreich ist es natürlich auch, wenn man eine Programmiersprache beherrscht, so kann man sich meist viel herleiten.

Home Assistant hat im Wiki ein paar sehr gute Erklärungen und Beispiele für Templates, aber ist halt alles in Englisch.

Ja das stimmt, da habe ich auch schon viel ausprobiert bevor ich es aktiv eingesetzt habe.

Fürs beherrschen mach ich das einfach zu wenig und vergesse es dann einfach wieder. :frowning:

btw: Bisher kamen noch keine Fehlalarme, mal sehen wenn das Teil wieder ausfällt

1 „Gefällt mir“