Alerte batterie faible

Bonjour
Je partage une automatisation qui me permet de m’envoyer un message via telegram en cas de batterie faible.

alias: Battery alert
description: ""
trigger:
  - platform: time
    at: "07:30:00"
condition: []
action:
  - service: telegram_bot.send_message
    data:
      message: "    {% set result = namespace(sensors=[]) %}  {% set threshold = 30 %}   {% set exclude = [\"sensor.i10_pro_row_batterie\",\"sensor.pixel_7_battery_level\",\"sensor.domotab_battery_level\" ,\"sensor.21051182g_battery_level\"] %}          {% for state in states.sensor | selectattr('attributes.device_class', '==', 'battery') %}       {% if 0 < state.state | int(0) < threshold | int and not state.entity_id in exclude %}         {% set result.sensors = result.sensors + [state.name ~ ' (' ~ state.state ~ ' %)'] %}       {% endif %}     {% endfor %}     {% for state in states.binary_sensor | selectattr('attributes.device_class', '==', 'battery') | selectattr('state', '==', 'on') %}       {% if not state.entity_id in exclude %}         {% set result.sensors = result.sensors + [state.name ~ ' (' ~ state.state ~ ' %)'] %}       {% endif %}     {% endfor %}     {{result.sensors|join( '\\n')}}"
mode: single

c’est basé sur les différents truc que j’ai pu lire sur les forums FR et international.

1 « J'aime »

Si je peux me permettre, ceci va chercher toutes les entités battery inferieures au seuil décidé dans le template et les sortir en format texte avec en plus le state numérique a coté du nom…

            {% set low_battery_entities = states.sensor
              | selectattr('attributes.device_class', 'defined')
              | selectattr('attributes.device_class', 'eq', 'battery')
              | rejectattr('state', 'in', ['unavailable', 'unknown', '100'])
              | list %}
            
            {% for entity in low_battery_entities %}
              {% if entity.state | float < 20 %}
                {{ entity.name }} ({{ entity.state }}%){{ not loop.last and ',' or '' }}
              {% endif %}
            {% endfor %}
4 « J'aime »

Bonjour,

Ton automatisation m’intéresse mais je ne comprends pas où tu mets cette partie du code.

On a pas mal de sondes à batteries au boulot.

merci d’avance

J’ai la même question que Azoura-Flav : le modèle proposé fonctionne bien en test dans les Outils de développement, mais ensuite que faire du contenu de l’éditeur de modèle (une automatisation, un script, mettre diretement dans configuration.yaml ?).
Merci

Salut…

C’est le contenu du message :wink:

Ah OK je vais essayer

En fait j’ai fait un script mais ça coince … peux tu me dire ?
message malformed : extra keys not allowed @ data[‹ service ›]

<

alias: Notification batterie faible
sequence:
service: notify.mobile_app_iphone_och
data:
title: Batterie faible
message:
{% low_battery_entities = states.sensor
| selectattr(‹ attributes.device_class ›, ‹ defined ›)
| selectattr(‹ attributes.device_class ›, ‹ eq ›, ‹ battery ›)
| rejectattr(‹ state ›, ‹ in ›, [‹ unavailable ›, ‹ unknown ›, ‹ 100 ›])
| list %}
{% for entity in low_battery_entities %}
{% if entity.state | float < 20 %}
{{ entity.name }} ({{ entity.state }}%){{ not loop.last and ‹ , › or ‹  › }}
{% endif %}
{% endfor %}
mode: single

Bonjour @oldchap,
ce n’est pas un script que tu dois utiliser, mais une automatisation !
Dans la nouvelle automatisation que tu vas créer, tu te mets en yaml et tu copies le code de @nococha avec éventuellement la variante de @herveaurel.
Encore plus simple, tu utilises le Blueprint suivant qui fonctionne très bien et que tu peux adapter à ton besoin : Low battery level detection & notification for all battery sensors
Bonne soirée.

1 « J'aime »

Y a-t-il une possibilité de mettre en déclencheur de l’automation une sorte de capteur générique qui activerait l’automation dès qu’une batterie passe sous un certain seuil ?
sans avoir à ajouté les entités de batterie ou d’attendre comme dans cet exemple un horaire précis