Bonjour,
J’ai créé un groupe de volets et je voulais pouvoir compter les volets qui sont restés ouverts (position <> 0).
J’ai introduit cette formule inspirée de formules vues sur le site de HA mais elle ne semble pas correcte car elle me compte tous les volets même ceux à 0. J’ai remplacé ‹ eq › par ‹ >= ›.
{%set group = state_attr(‹ group.volets ›,‹ entity_id ›)%}
{{ states | selectattr(‹ entity_id ›,‹ in ›, group )|selectattr(‹ state ›,‹ >= ›,‹ 1 ›) | list |count }}
De manière générale, où peut-on trouver de l’aide sur la façon de concevoir ce type de formules (opérateurs existants) ?
Je vous en remercie d’avance.
Pascal
Bonjour,
J’ai toujours pas trouvé la solution.
J’ai commencé par créé un senseur à partir de l’attribut position de mes volets comme ci-dessous, pour chaque volet :
- platform: template
sensors:
position_volet_porte_salon:
friendly_name: Position du volet porte salon
entity_id: cover.volet_porte_salon
unit_of_measurement: ‹ % ›
value_template: « {{ state_attr(‹ cover.volet_porte_salon ›, ‹ current_position ›) }} »
Ensuite, j’ai créé un groupe reprenant toutes mes positions de volets :
volets:
name: Volets
entities:
- position_volet_porte_salon
- position_volet_fond_salon
- position_volet_avant_salon
…
Et enfin, j’ai créé, toujours dans mes platform: templates le compteur ci-dessous :
volets:
friendly_name: "Volets ouverts"
value_template: >-
{%set group = state_attr('group.volets','entity_id')%}
{{ states | selectattr('entity_id','in', group )|selectattr('state','>=',1) | list |count }}
Cela ne fonctionne pas.
Au moment où je vérifie ma configuration, j’ai le message d’erreur suivant :
Invalid config for [group]: Entity ID position_volet_porte_salon is an invalid entity ID for dictionary value @ data[‹ group ›][‹ volets ›][‹ entities ›]. Got [‹ position_volet_porte_salon ›, ‹ position_volet_fond_salon ›, ‹ position_volet_avant_salon ›, ‹ position_volet_cuisine ›, ‹ position_volet_bureau ›, ‹ position_volet_chambre_gauche ›, ‹ position_volet_chambre_droite ›, ‹ position_volet_gauche_chambre_avant ›, ‹ position_volet_droit_chambre_avant ›]. (See /config/configuration.yaml, line 11).
La ligne 11 de mon fichier configuration.yaml est celle qui ouvre le fichier group :
group: !include groups.yaml
Merci d’avance.
Pascal
Salut…
ça dit que position_volet_porte_salon
n’existe pas.
Et si la mise à en forme de n’est pas perdu quand tu poste le message, alors c’est normal
ça c’est pas du yaml correct, il manque les espaces en début de ligne comme dans ces exemples
Merci Pulpy.
Il y avait effectivement un problème dans l’indentation du fichier yaml au niveau des entités.
J’ai remplacé la tabulation par 4 espaces et cela fonctionnait.
Dans mon groupe, j’ai remis les entités « cover ».
Et j’ai modifié la formule comme ci-dessous :
volets:
friendly_name: "Volets ouverts"
value_template: >-
{%set group = state_attr('group.volets','entity_id')%}
{{ states | selectattr('entity_id','in', group )|selectattr('state','eq','open') | list |count }}
Et cela marche enfin.
Merci et bonne nuit !
Hello,
Dans le même registre j’essaie de comptabiliser des lumières qui sont ‹ on › ou ‹ off ›; j’ai donc tenté cette formule qui ne marche pas = savez-vous comment compter des entités qui sont ‹ on › ou ‹ off › ?
- platform: template
sensors:
compteur_lights:
friendly_name: Compteur lumières connectées
value_template: >-
{% set lum = [
states.light.extended_color_light_3,
states.light.extended_color_light_4,
states.light.extended_color_light_5,
states.light.extended_color_light_6,
states.light.color_temperature_light_7,
states.light.extended_color_light_8,
states.light.extended_color_light_9,
states.light.extended_color_light_10,
states.light.extended_color_light_11,
states.light.extended_color_light_12,
states.light.extended_color_light_13,
states.light.extended_color_light_14,
states.light.extended_color_light_15,
states.light.extended_color_light_16,
states.light.extended_color_light_17,
states.light.extended_color_light_18,
] %}
{{ lum | selectattr('state','eq',['on','off']) | list | count }}
Salut,
La définition de ton tableau lum n’est pas bonne. ça donne pas une liste de clé => valeur
mais juste une liste de valeur
.
Donc selectattr
ne selectionne rien …state n’existe pas.
Et tu comptes à la fois ON ET OFF … c’est juste le total de toutes tes lumières peut importe l’état
Pour finir, en principe, il faut passer par states("light.extended_color_light_3")
(l’ancienne syntaxe marche comme toi encore cependant)
ça c’est mieux
{% set lum = [
dict(state=states("light.extended_color_light_3")),
dict(state=states("light.extended_color_light_4")),
dict(state=states("light.extended_color_light_5")),
dict(state=states("light.extended_color_light_6")),
dict(state=states("light.color_temperature_light_7")),
dict(state=states("light.extended_color_light_8")),
dict(state=states("light.extended_color_light_9")),
dict(state=states("light.extended_color_light_10")),
dict(state=states("light.extended_color_light_11")),
dict(state=states("light.extended_color_light_12")),
dict(state=states("light.extended_color_light_12")),
dict(state=states("light.extended_color_light_13")),
dict(state=states("light.extended_color_light_14")),
dict(state=states("light.extended_color_light_15")),
dict(state=states("light.extended_color_light_16")),
dict(state=states("light.extended_color_light_17")),
dict(state=states("light.extended_color_light_18"))
] %}
{{ lum | selectattr('state','eq','on') | list | count }}
Dernier remarque pour la forme, comment tu fais pour t’y retrouver avec des noms si longs et pourtant si peu représenatifs ?
light.plafond_salon
light.chevet_beatrice
c’est pas plus simple ?
oups pardon @Pulpy , je voudrais comptabiliser dans 1 compteur les ON et OFF , pardon
Oui je vais modifier en mettant les friendly_name
Je vois pas bien l’intérêt dans ce cas ?
Si tu as 10 lumières, peu importe l’état au total ça fait 10 (3+7 ou 5+5 etc)
Il y a ça aussi pour les synthèse sur le forum :
https://forum.hacf.fr/t/synthese-lumieres/4517
2 « J'aime »
@Pulpy-Luke parce pour l’instant il y a des interrupteurs qui rendent certains ampoules ‹ unavailable › (mode waf oblige ) = donc j’ai plutôt 2 ‹ on › + 2 ‹ off › + 6 ‹ unavailable › = 10
As tu vu le lien que j’ai mis ? Il ne correspond pas à ton attente ?
Du coup tu as 3 états. Tu en comptes 2 et tu fait la somme ?
Compter uniquement les unvailable et soustraire du total chez bien aussi Tu gagnes 2 compteurs…
Et puis ça vaudrait le coup de se pencher sur le pourquoi du unvailable…
1 « J'aime »
Oui en effet sur la soustraction des unavailables
Le pourquoi des unavailables est simple : j’ai mis des ampoules zigbee rgb, mais derrière il y a forcément des interrupteurs physiques (soit muraux ou sur le fil). Comme je dois prendre le facteur waf en compte😉, quand l’interrupteur physique est éteins, il apparaît déconnecté sous HA.
Pour avoir une solution compatible HA et interrupteur physiques (waf) c’est-à-dire allumer tout autant par l’interrupteur que par HA , j’ai l’impression qu’il faudrait que j’installe aussi des micromodules aqara SSM-U02… pour les interrupteurs physiques sur fil, ça paraît impossible logique