Eine Benachrichtigung für mehrere Geräte und numerischen Werten

Hallo,

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?

Schau mal:

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)

Gruß, Lars

1 „Gefällt mir“

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 %}

Funktioniert soweit prima aber kann man das so auch über die Alexa ausgeben? Da macht er nix wenn ich das mit der Folmel einbinde

Poste bitte deinen Code.

gerne, das ist der Angepasste wie oben:

  - action: notify.alexa_media_ganzen_haus
    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!

Danke. Funktioniert bei mir ohne Tadel. Hast du in die Automations-Trace geschaut?

Alexa sagt da nichts, Meldung kommt am HA bei der App mit dem selben Code

Automation > die 3 vertikalen Punkte > Traces

habs, die Angaben nach data: haben gefehlt

> alias: Prüfen Pflanzenfeuchte
> description: “”
> triggers:
>
> * trigger: time
>   at: “17:00:00”
>
> * trigger: numeric_state
>   entity_id:
>
>   * sensor.gruppe_bodenfeuchte
>     below: 60
>     conditions:
>
> * condition: numeric_state
>   entity_id: sensor.gruppe_bodenfeuchte
>   below: 50
>
> * condition: numeric_state
>   entity_id: sensor.gruppe_bodenfeuchte
>   above: 1
>   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_mosmax
>   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(’, ')}}
>
> * action: notify.alexa_media_ganzen_haus
>   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!
>   data:
>   type: announce
>   method: all
>   mode: single

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)
s.a.: (Neues Update & Features - Hier in der Community 🫶)