J’ai un petit souci de comptage du nombre de lampes allumées…
voila le script
sensors:
lights_on_count:
friendly_name: Number of lights on
icon_template: mdi:lightbulb-on-outline
value_template: >-
{{ states.light | selectattr('state', 'eq', 'on') | list | length }}
mais quand j’ai des lampes qui sont dans un groupe, la lampe allumée est comptée deux fois…
et j’ai quelques groupes:
light.groupe_ampoules_couloir
light.groupe_ampoules_technique
light.groupe_ampoules_salon
light.groupe_liseuses
y’aurait un moyen de retirer les groupes_* ???
ce sont des groupes créés dans zigbee2mqtt, avant que les groupes apparus en 2022.4 n’existent. d’ailleurs, ca change quelque chose ?
La proposition de @fredarro doit marcher.
Il y a aussi une autre possibilité, au même titre que states.light, on peut récupérer les éléments d’un groupe :
{% set couloir =expand('light.groupe_ampoules_couloir') %}
{{ couloir | selectattr('state', 'eq', 'on') | list | count}}
Bon, alors je suis parti sur ton idée @Pulpy-Luke , bosser sur les éléments d’une ou plusieurs listes.
lights_on_count:
friendly_name: Number of lights on
icon_template: mdi:lightbulb-on-outline
value_template: >
{% set eclairages = expand(
states.light.groupe_ampoules_technique_2,
states.light.groupe_ampoules_couloir_2,
states.light.groupe_ampoules_salon_2,
states.light.groupe_liseuses_2,
states.light.groupe_leds_chambre,
) %}
{{ eclairages | selectattr('state','eq','on') | list | count }}
reste à penser à ajouter un groupe bateau pour y mettre les autres ampoules
et réussir à virer les groupes MQTT créés par Z2M…
Où est ce que je pourrais trouver des explication sur la syntaxe machin | selectattr('state','eq','on') | list | count
bon, le « selectattr state eq on » et le pipe j’ai bien une petite idée, mais le reste, j’ai quand même besoin des commandes possibles… d’ailleurs, c’est quoi ce langage ? (c’est pas ironique, je me suis arrêté au basic sur mon Apple 2c et au C au siècle dernier et le shell -bourne et Korn- )…
comment avoir un mode debug, ou un affichage ou un log des valeurs du genre "set toto = expand(state.groupe) = on, off…
Bon plus sérieusement, tout ça c’est du Jinja2.
C’est pas si simple car les options sont nombreuses (parfois même avec des formes différentes pour faire la même chose !!
Le gros avantage quand même c’est que les mots (anglais) sont parlant : list pour faire la liste, count pour compter.
Il y a bien une référence avec pleins d’info, mais finalement le mieux c’est encore google https://jinja.palletsprojects.com/en/3.1.x/templates/
Pour le débug (et pour beaucoup d’autres trucs) ==> Les outils de dev => modèles !!
Chez moi, ça me met le nombre d’ampoule allumée + le nombre de groupe d’ampoules allumé.
comme si la ligne rejectattr( 'entity_id', 'in', 'group') n’était pas prise en compte.
@Clemalex
C’est très intéressant, il faut mettre comme friendly_name_template : C’est pas Versailles ici !!!
Ca récapitule tout, mais c’est peut être un poil overkill:
Dans mon tableau, je veux mettre que 2 caractères, de 0 à 99, juste le nombre d’ampoules allumé histoire de vérifier qu’on ne brûle pas d’électricité pour rien.
Je n’avais pas capté.
ce sont des « light » , pas des « group », normal qu’ils soient comptabilisés. ils faut donc les exclure un à un ou, si ils ont le même schéma de nom faire un regex sur celui-ci