Mon problème
Bonjour à tous,
Je tente d’ajouter un sensor pour détecter les appareils inférieur à 15% de batterie.
Pour cela j’utilise la syntaxe jinja2.
J’ai créé un group avec mes sensor :
Thermo_batterie:
entities:
- sensor.capteur_temp_salon_battery
- sensor.capteur_temp_bureau_francois_battery
- sensor.capteur_temp_sdb_battery
- sensor.capteur_temp_chambre_battery
- sensor.capteur_temp_bureau_elsa_battery
- sensor.capteur_temp_buanderie_battery```
Exemple d’un sensor :
Mon groupe :
Puis une fonction jinja2 :
Code :
batterie_alerte:
friendly_name: "Alerte batterie"
value_template: >-
{% set thermo =
states
| selectattr('entity_id', 'in', state_attr('group.thermo_batterie','entity_id'))|selectattr('state', 'lt', '15' ) | map(attribute='name')| list %}
{%- if thermo | length == 0 -%}
OK
{%- else -%}
Pile thermo - de 15% : {{ thermo[:-1] | join(', ') }}{{', ' if thermo | length > 2 else ' '}}et {{ thermo[-1]}}
{%- endif -%}
Cette fonction me remonte des infos erronées (capteur avec 100% de batterie qui remontent malgré le « < 15 »
Le plus surprenant c’est que quand je change le attribute_name par state , il est bien affiche à 100
Code :
batterie_alerte:
friendly_name: "Alerte batterie"
value_template: >-
{% set thermo =
states
| selectattr('entity_id', 'in', state_attr('group.thermo_batterie','entity_id'))|selectattr('state', 'lt', '15' ) | map(attribute='state')| list %}
{%- if thermo | length == 0 -%}
OK
{%- else -%}
Pile thermo - de 15% : {{ thermo[:-1] | join(', ') }}{{', ' if thermo | length > 2 else ' '}}et {{ thermo[-1]}}
{%- endif -%}
Code sans filtrage :
batterie_alerte:
friendly_name: "Alerte batterie"
value_template: >-
Pile thermo - de 15% : <template TemplateState(<state sensor.capteur_temp_buanderie_battery=90; state_class=measurement, battery=90, humidity=77.98, linkquality=191, power_outage_count=11, pressure=1009.1, temperature=13.71, voltage=2985, unit_of_measurement=%, device_class=battery, friendly_name=capteur_temp_buanderie_battery @ 2023-01-07T00:57:01.851115+01:00>)>, <template TemplateState(<state sensor.capteur_temp_bureau_elsa_battery=97; state_class=measurement, battery=97, humidity=61.75, linkquality=255, power_outage_count=8, pressure=1009.6, temperature=17.37, voltage=2995, unit_of_measurement=%, device_class=battery, friendly_name=capteur_temp_bureau_elsa_battery @ 2023-01-06T14:27:48.198103+01:00>)>, <template TemplateState(<state sensor.capteur_temp_bureau_francois_battery=90; state_class=measurement, battery=90, humidity=62.04, linkquality=255, power_outage_count=5, pressure=1009.3, temperature=18.48, voltage=2985, unit_of_measurement=%, device_class=battery, friendly_name=capteur_temp_bureau_francois_battery @ 2023-01-06T14:27:48.264427+01:00>)>, <template TemplateState(<state sensor.capteur_temp_chambre_battery=100; state_class=measurement, battery=100, humidity=62.94, linkquality=207, power_outage_count=18, pressure=1007.9, temperature=17.53, voltage=3015, unit_of_measurement=%, device_class=battery, friendly_name=Chambre @ 2023-01-06T14:27:48.146425+01:00>)>, <template TemplateState(<state sensor.capteur_temp_salon_battery=100; state_class=measurement, battery=100, humidity=64.05, linkquality=255, power_outage_count=57, pressure=1007.8, temperature=17.75, voltage=3015, unit_of_measurement=%, device_class=battery, friendly_name=Salon @ 2023-01-07T01:14:47.007563+01:00>)>, et <template TemplateState(<state sensor.capteur_temp_sdb_battery=100; state_class=measurement, battery=100, humidity=60.15, linkquality=255, power_outage_count=5, pressure=1009.2, temperature=19.15, voltage=3005, unit_of_measurement=%, device_class=battery, friendly_name=Salle de bain @ 2023-01-06T14:27:48.194355+01:00>)>
Merci de votre aide !