Les groupes dans Home Assistant

Les groupes permettent à l’utilisateur de combiner plusieurs entités en une seule.

Je ne vais pas révolutionner l’explication des groupes, la documentation officielle même traduite avec Google vous permet de comprendre.

Prérequis, matériels nécessaires & utilisés :

Fonctionnement.

A l’installation, un fichier groups.yaml est automatiquement créé. Il est vide.

NOTA : Vous pouvez supprimer ce fichier et tout mettre dans configuration.yaml mais cela va vite mettre le fouillis dans votre installation.

Dans ce fichier, il faudra y mettre vos groupes sous cette forme.

NOTA : Seul les entités ETAT (On/Off, Ouvert/Ferme, Présent/Absent, etc) peuvent être dans des groupes.

Vous pouvez par contre utiliser plusieurs fois la même entité dans un groupe différents.

#group:#nécessaire seulement si vous mettez tout dans configuration.yaml ou dans un fichier package.yaml
  ouvertures:
    name: Ouvertures Generales
    entities:
    ## Portes
      - binary_sensor.porte_entree_contact
      - binary_sensor.porte_fenetre_cuisine_contact
      - binary_sensor.baie_vitree_salon_contact
      - binary_sensor.baie_vitre_salon_2_contact
    ## Fenetres RDC
      - binary_sensor.fenetre_salon_contact
      - binary_sensor.fenetre_salle_a_manger_1_contact
      - binary_sensor.fenetre_salle_a_manger_2_contact
    ## Fenetres 1ier
      - binary_sensor.fenetre_chambre_parents_contact
      - binary_sensor.fenetre_chambre_agathe_contact
      - binary_sensor.0x00158d0002bfb3f8_contact
      - binary_sensor.0x00158d0002bfed2b_contact
      - binary_sensor.fenetre_escalier_1_contact
    ## Fenetres 2eme
mouvements:
name: Mouvements Generales
all: true #le groupe passe a ON seulement si TOUS les capteurs sont sur ON.
entities:
## Mouvements RDC
- binary_sensor.mouvement_salle_a_manger_occupancy
- binary_sensor.mouvement_salon_occupancy
## Fenetres 1ier
- binary_sensor.mouvement_bureau_occupancy
## Fenetres 2ieme

Par défaut, si une entité est sur ON alors le groupe est sur ON. Si vous souhaitez que le groupe passe sur ON seulement si toutes les entités sont sur ON alors il faudra rajouter la fonction all: true (dernier exemple)

Variables de configuration.

  • name
  • entities (obligatoire)
  • all
  • icon

Une fois vos groupes créés, il faudra recharger le fichier groups.yaml dans configuration, contrôle du serveur puis cliquer sur recharger les groupes.

Après ça, vous pouvez utiliser vos nouveau groupes en recherchant l’entité group.nomdevotregroupe.

Conclusion.

C’est un intégration importante car elle vous permet de ne pas avoir à tout saisir dans vos automatisations.

Trucs & astuces.

  • Vide

To do :

  • RAS

Mise à jour : (détails)

  • 22/05/2020 : Création de l’article.

Sources.

2 « J'aime »

Bonjour,
Lorsque je créer des groupes en suivant la démarche décrite ici, je ne vois pas apparaître la ligne « recharger les groupes ». J’ai vidé le cache du navigateur mais sans résultat.
Peut-être un problème dans mon fichier groups.yaml…

Bonjour, ma question est peut-être idiote mais je voudrais savoir s’il était possible d’utiliser un groupe comme une entité ? Si c’est le cas, faut-il utiliser le name pour appeler le groupe dans file editor ?
Merci d’avance

oui c’est une entité qui sera nommée group.********* :wink:

Merci, J’ai vu ça après, mais le temps d’essayer ce que je voulais faire, je n’ai pas eu le temps de la retirer. Je vais la laisser au cas où un débutant se poserait la question comme moi. Finalement, je n’arrive pas à faire ce que je veux.
Encore merci à toi

Bonjour.
Je déterre ce post car je bute sur un problème. Je précise que j’ai écumé les recherches diverses (probablement mal…) avant d’appeler au secours !
J’ai créé des groupes, notamment de fenêtres.
Comment savoir avec un template le nombre de fenêtres ouvertes (state == ‹ on ›) dans le groupe ?
{{ expand('group.windows') | count }} me permet bien de connaître le nombre d’entités du groupe, mais je n’arrive pas à faire une sélection sur l’état comme on peut en faire avec un | state_attr
Merci pour l’aide.

Salut,

regarde là

1 « J'aime »

Merci @Pulpy-Luke
J’avais déjà regardé ce post pour la carte mais j’ai pas épluché le template… je vais creuser car c’est encore un peu du Chinois pour moi… :wink:

Dans un premier temps c’est pas le template le plus important pour toi mais la partie jinja de secondary
Le template sert juste à éviter d’écrire X fois le même code, quand on a X groupes de volets

Oui, j’avais compris et c’est ce à quoi je pensais. Je travaille dessus sur l’éditeur de modèle mais faut que j’upgrade mon niveau ! :joy:

Update : J’ai trouvé !

{{ expand(‹ group.windows ›) | selectattr(‹ state ›, ‹ eq ›, ‹ on ›) | list | count }}

Je ne saisissais pas la syntax de selectattr et j’ai réalisé à postériori que ‘eq’ signifiait ‘équivalent’ ou ‘égal à’.
Mais pas en utilisant ton template qui est assez toufu ! Je me replonge dedans pour mieux comprendre néanmoins. Merci !

1 « J'aime »

oui souvent

eq = equal egale
lt = less than plus petit que
gt = greater than plus grand que
ge = greater ou equal égale ou supérieure
le = less ou equal égale ou inférieur
ne = not equal different de

2 « J'aime »

ça fait juste le compte des élements dans 5 sous listes (les set) à partir d’une liste principale (le expand du groupe)
et ensuite ça somme/soustrait pour avoir les bons totaux et l’affichage
Ligne à ligne c’est plus lisible

{% set all = expand('cover.volets_[[groupe]]'|lower) -%}
{% set positions = all | map(attribute='attributes.current_position')|list-%}
{% set moving = all | selectattr('state', 'in', ['opening','closing'])|list|count-%}
{% set open = positions | reject("!=",100) |list |count -%}
{% set closed = positions | reject("!=",0) |list |count -%}
{% set other = positions|list|count - open - closed - moving -%}
Fermés={{closed }}
Partiels={{ other }}
Ouverts={{ open }}
{% if moving >0 -%}
	Actifs={{ moving }}
{% endif %}
1 « J'aime »

C’est effectivement plus lisible ainsi, merci.
Tu définis donc diverses variables pour gérer les différents états des volets si j’ai bien compris (ouvert, fermé, autre).
Ce qui reste un peu abscons pour moi, c’est la signification des lignes

Fermé={{ closed }}
Partiels={{ other }}
Ouverts={{ open }}

Est-ce que ça correspond à des variables définies plus haut ?

oui, {{ xxxxx }} affiche la valeur de xxxxx. Le texte Fermé= est concaténé

Je pense que je ferai un post quand j’aurai mené à bout ce projet, ça peut servir à d’autres. C’est un button-card qui affiche l’état d’un groupe de fenêtres avec icône variable et le nombre de fenêtres ouvertes en label avec style customisé en fonction du temps depuis lequel elles sont ouvertes (ça caille, fermer les fenêtres…).

Ah, je comprends mieux !!! Donc ça affiche un truc du style « Fermé=3 / Partiels=0 / Ouverts=5 »…
Ben oui…
Merci !

Exactement

Je vais regarder la carte Mushroom aussi :wink: