Luftfeuchtigkeitswarnung von mehreren Geräten

Hallo zusammen,

ich habe in meinem System 12 Thermometer eingebunden. Jetzt hätte ich gerne eine Automation die in allen Räumen die Luftfeuchtigkeit prüft und mich benachrichtigt wenn diese nicht stimmt.

Jetzt könnte ich alle 12 Thermometer einzeln einbinden und 12x den Wert definieren, aber wenn irgendwann mal ein neues Thermometer dazu kommt müsste ich die Automation anpassen und dran denken das Thermometer einzufügen, was ich nicht will. Gibt es hier eine Möglichkeit mit * bzw. whitecards zu arbeiten? Die Sensoren sind alle nach einem bestimmten Namensschema (sensor.thermometer_raumname_humidity) aufgebaut.

Das einfachste wäre ein Template zu verwenden.

Die Ausgabe aller Luftfeuchtigkeit Sensoren mit einer Luftfeuchtigkeit >60 %


{% for s in states.sensor
   if s.attributes.device_class == 'humidity'
   and s.state not in ['unknown','unavailable']
   and s.state | float > 60 %}
- {{ s.name }}: {{ s.state }} %
{% endfor %}

Als Auslöser für Automationen, wenn mindest ein Sensor 60% übersteigt


{{ states.sensor
   | selectattr('attributes.device_class', 'eq', 'humidity')
   | rejectattr('state', 'in', ['unknown', 'unavailable'])
   | selectattr('state', 'gt', '60')
   | list
   | count > 0 }}

Gruß Osorkon

Das Problem bei der Lösung ist, dass man nicht rausfindet welcher Sensor getriggert hat wenn es mehr als 1 ist oder wenn ein Zimmer länger über 60 ist und ein zweiter triggern könnte.

Und nein wildcard trigger gibt es aktuell nicht.

Dir bleibt nur @Osorkon Lösung für dynamisches, eine Gruppe oder manuell der automation hinzufügen.

Alle haben Vor- und Nachteile keiner löst es komplett zufriedenstellend musst dich leider entscheiden, hatte das Problem auch schon öfters

Ist kein Problem sondern eine Herausforderung. :wink:
Dann nimmst als Auslöser, diesen Template Sensor


{{ states.sensor
   | selectattr('attributes.device_class', 'eq', 'humidity')
   | rejectattr('state', 'in', ['unknown', 'unavailable'])
   | selectattr('state', 'gt', '60')
   | list
   | count }}

Und als Bedingung, wenn neuer Wert größer als der alte. Dann löst der Trigger jedesmal aus wenn ein neuer Sensor, den Schwellenwert überschreitet.

Gruß Osorkon

Dann findest aber immer noch nicht heraus welcher gerade getriggert hat, wenn man irgendwie Nachrichten anzeigen lassen will finde ich es ganz charmant wenn man weiß welcher Raum es ist anstatt einfach gerade alle anzeigen zu lassen. Kommt vermutlich ein wenig auf sein Nachrichtensystem ab. Darum meine ich muss halt einen Kompromiss eingehen der zum Use Case passt.

Ich benutze notify mit mobile app + persistent_notification.

@Moekli bedenke auch wenn die Luftfeuchtigkeit über 60% (oder was auch immer deine schwelle ist) es nicht immer sinnvoll is zu lüften. Das hängt auch von den außen Bedingungen ab.

Oben hast Du doch das Template für die Ausgabe aller Luftfeuchtigkeit Sensoren über den Schwellenwert. inkl. des Wertes

Gruß Osorkon

Eben über ALLE und nicht über den der gerade getriggert hat

Dann sortierst die Ausgabe nach zuletzt geändert.
:wink:

Wo ein Wille, da auch ein Weg.

Gruß Osorkon

Stimmt, wenn man das für wartbar und lesbar hält, findet man immer was.

Ich habe das folgendermaßen gelöst (im meinem speziellen Fall für geöffnee Fenster):

Um festzustellen, ob ein oder mehrere Fenster geöffnet sind habe ich Funktion genommen die auch @Osorkon vorgeschlagen hat.

Wenn der Sensor aktiv ist (Fenster offen) dann bekomme ich eine Meldung über den Telegram-Messanger und in HA wird auf dem Start Dashboard ein Badge gesetzt.

Bei Tip auf das Badge wird ein Unter-Dashboard aufgerufen das mit die offenen Fenster auflistet.

Dafür benutze ich die “Auto Entity Card” aus dem HACS .

Obwohl hier schon die Experten dabei sind, werfe ich eine visuelle Dashboard Karten Warnung per Mardown in den Ring … sozusagen neben einer Automatrisation.

Alles bleibt dynamisch also ohne einen spezifischen Feuchtigkeitssensor einpflegen jetzt oder später zu müssen. Nur der Grenzwert und ggf. die Anzahl der gewünschten Namenszeichen setzen.

Bsp. wenn alles ok

Bsp. wenn > 60 % und Namen auf 20 Zeichen eingekürzt

Bsp. wenn man kompletten Namen sehen will als Layoutabschreckung

Hier der Code.

  • Einfach nur Markdownkarte anlegen
  • und hineinmkopieren
  • die ersten beiden Variablen ggf. anpassen
Zusammenfassung
{% set Feuchtigkeitrsgrenze = 60 %}
{# Anzahl Zeichen des Friendly Names -> wer wegen Lesbarkeit einkürzen möchte #}
{% set NameEinkuerzenAuf = 20 %}

{# ---- #}
{% set sensoren_ges = namespace(count=0) %}
{% set sensoren_drueber = namespace(count=0, list=[]) %}

{% for s in states.sensor
   if s.attributes.get('device_class') == 'humidity'
   and s.state not in ['unknown', 'unavailable'] %}
  {% set sensoren_ges.count = sensoren_ges.count + 1 %}
  {% if (s.state | float(0)) > Feuchtigkeitrsgrenze %}
    {% set sensoren_drueber.count = sensoren_drueber.count + 1 %}
    {% set sensoren_drueber.list = sensoren_drueber.list + [s] %}
  {% endif %}
{% endfor %}

{% if sensoren_drueber.count > 0 %}
Bei **{{ sensoren_drueber.count }} / {{ sensoren_ges.count }}** Sensoren ist die Luftfeuchtigkeit **> {{ Feuchtigkeitrsgrenze }} %**

<font color=red>
{% for s in sensoren_drueber.list
   | sort(attribute='state', reverse=true) %}
{% set name = s.attributes.friendly_name %}
- {{ name[:NameEinkuerzenAuf] }}{% if name | length > NameEinkuerzenAuf %}...{% endif %} : <font size= 5>{{ s.state | round(0) }} %</font>
{% endfor %}
{% else %}
<font color=green>
Alle {{ sensoren_ges.count }} Luftfeuchtesensoren liegen unter {{ Feuchtigkeitrsgrenze }} %
{% endif %}
</font>

Danke erstmal für die ganzen Vorschläge aber ein Dashboard kommt nicht in frage, denn ich will das ganze wenn per Push Benachrichtigung bekommen und nicht noch die App öffnen müssen um zu sehen welcher Sensor jetzt ausgelöst hat. Aber anscheinend geht das ganze leider so nicht wie ich mir das vorstelle daher wirds dann wohl oder übel darauf hinaus laufen das ich jeden Sensor einzeln einpflege

Warum soll das nicht gehen?
Habe Dir doch oben gezeigt wie Du es über einen Template Trigger oder Template Sensor als Trigger umsetzen kannst.

Gruß Osorkon

Ja als Trigger schon aber nicht mit einer sauberen Benachrichtigung welcher Trigger ausgelöst hat.

Du kannst Dir doch ausgeben lassen, welche Sensoren über dem Schwellenwert liegen.
Reicht es Dir nicht aus?

Oder willst explizit wissen, welcher der Sensoren die alle über dem Schwellenwert liegen zuletzt den Schwellenwert überschritten hat?
Dann kannst Du diese auch nach letzter Änderung sortieren.

Gruß Osorkon

@Osorkon Hast du das eigentlich selber in der Art so im Einsatz?

Ich werde es mal mit einer automation testen wie es sich anfühlt.

Das habe ich nicht ganz kapiert wie du das meinst.