ich habe eine Gruppe Bodefeuchtemelder und möchte wenn diese einen Wert x unterschreiten eine Benachrichtigung mit dem betreffenden Gerät "Bitte Blumen gießen weil Bodenfeuchte bei ??? nur 40%
Ich hab das schon mal von @Osorkon eine Vorlage für ein Binärs Gerät bekommen:
- action: notify.alexa_media_uberall
metadata: {}
data:
title: Pflanzen haben durst
message: >-
{% for entity in trigger.to_state.attributes.entity_id %} {% if
states(entity) == 'on' %} {{ state_attr(entity,'friendly_name')}}
braucht Wasser {% endif %} {% endfor %}
data:
type: announce
methode: all
enabled: false
jetzt bräuchte ich das für % Werte und den Namen der auslösenden Edentität im Klartext. Wer kann mir helfen?
alias: "Meldung: Pflanzen"
description: ""
triggers:
- trigger: time
at: "17:00:00"
- trigger: numeric_state
entity_id:
- sensor.plt_feuchte_min
below: 80
conditions:
- condition: numeric_state
entity_id: sensor.plt_feuchte_min
below: 80
actions:
- action: persistent_notification.create
metadata: {}
data:
message: >-
{% set result = namespace(sensors=[]) %}
{% for state in states.sensor | selectattr('attributes.device_class',
'==', 'moisture') %}
{% if 0 <= state.state | int(-1) <= 79 | int %}
{% set result.sensors = result.sensors + [state.name.replace('PLT_',
'').replace(' Feuchtigkeit', '') ~ ' (' ~ state.state ~ ' %)'] %}
{% endif %}
{% endfor %}
Folgende Pflanzen haben zu wenig Wasser:
{{result.sensors|join(', ')}}
title: Bitte Blumen gießen!
- action: notify.mobile_app_larss_iphone
metadata: {}
data:
title: Bitte Blumen gießen!
message: >-
{% set result = namespace(sensors=[]) %} {% for state in states.sensor |
selectattr('attributes.device_class', '==', 'moisture') %} {% if 0 <=
state.state | int(-1) <= 79 | int %} {% set result.sensors =
result.sensors + [state.name.replace('PLT_', '').replace('
Feuchtigkeit', '') ~ ' (' ~ state.state ~ ' %)'] %} {% endif %} {%
endfor %} Folgende Pflanzen haben zu wenig Wasser:
{{result.sensors|join(', ')}}
mode: single
Dabei ist sensor.plt_feuchte_min ein Helfer, welcher den min() aller Sensoren ermittelt. Wenn Dir die Nachricht zu einem bestimmten Zeitpunkt (hier 17 Uhr) reicht, könntest du den auch noch streichen.
Zusätzlich beginnt der Name meiner Pflanzensensoren mit PLT_ (also z.B. PLT_EINGANG)
Mit dem Code oben gibst du ja bereits den Sensornamen aus. Jetzt muss er nur angepasst werden. Ich nutze (aus Faulheit) grundsätzlich die Variable x:
{% for x in state_attr(trigger.entity_id, 'entity_id') if states(x)|int(0) < 40 %}
{{ state_attr(x,'friendly_name')}} braucht Wasser ({{ states(x) }}%)
{% endfor %}
In Anlehnung an Lars’ Formatierung: Als Liste isses schöner:
Variable x:
message: |
Folgende Pflanzen brauchen Wasser:
{% for x in state_attr(trigger.entity_id, 'entity_id') if states(x)|int(0) < 40 %}
- {{ state_attr(x,'friendly_name') }}: {{ states(x) }}%
{% endfor %}