Je viens de Lifedomus et tous les automatismes étaient rangés dans un « fichier » bloc.
Je me demande s’il n’est pas possible de placer chaque automatisme dans un fichier yaml séparé, afin de ne pas avoir un fichier automation.yaml important et difficile à lire.
Avez-vous une idée de comment faire ?
D’avance merci de votre coopération.
Facile avec les « packages », mais uniquement pour les automations non GUI. Tout ce qui est GUI va dans le fichier racine automations.yaml, et ce fichier on ne le touche pas !
J’ai un fichier automations.yaml avec plein de choses, dont ceci :
- id: '1723966877784'
alias: **remote 1 bouton 3 lampe sejour hall**
description: ''
trigger:
- device_id: 3c859eed9aa62daa9bd35a97fc0f0ec3
domain: zha
platform: device
type: remote_button_short_press
subtype: button_3
condition: []
action:
- service: light.toggle
metadata: {}
data: {}
target:
entity_id: light.lampe_hall_tz3000_lmlsduws_ts0002_lumiere
mode: single
- id: '1724676465663'
alias: **lampe_sas_porte_hall_bas** __ Éteindre la lumière lorsque le timer expire
à condition que le detecteur n est pas actif et qu il n'a pas entre temps relancé
le timer
description: Éteindre la lumière lorsque le timer expire à condition que le detecteur
n est pas actif et qu il n'a pas entre temps relancé le timer
trigger:
- platform: event
event_type: timer.finished
event_data:
entity_id: timer.sas_porte_timer
action:
- delay: 00:00:01
- choose:
- conditions:
- condition: state
entity_id: timer.sas_porte_timer
state: idle
sequence:
- target:
entity_id: light.lampe_sas_porte_hall_bas
data: {}
action: light.turn_off
- id: '1724678162539'
alias: **lampe_sas_porte_hall_bas** __ arrêter le timer lorsque la lumière lampe_sas_porte_hall_bas
passe à off
description: ''
J’aurais bien voulu que l’ensemble de mes automatismes correspondant à « lampe_sas_porte_hall_bas » soit dans un fichier séparé automation_quecchose.yaml, et qu’il ne se retrouve pas dans le même fichier automation.yaml que « remote 1 » et autres.
Je ne vois pas comment utiliser les packages ! Il y a quelque chose que je n’ai pas compris.
Si ce sont des automatisations que tu écris à la main, avec l’éditeur texte, directement en YAML c’est possible.
Si ce sont des automatisations que tu construits avec l’interface graphique de HA, c’est impossible. Toutes ces automatisations sont obligatoirement dans un seul est même fichier : automation.yaml. ça semble être ton cas actuellement
ils ont été écrit à la main dans l’interface automatisation en basculant en yaml. je pense que c’est pour ça qu’ils ont un ID que je n’ai pas décidé.
Je suppose qu’à la main, il doit falloir déclarer le nom des fichiers d’automation dans le fichier principale automation.yaml. Mais je n’ai pas compris comment faire.
Sauf de créer l’automatisme avec UI, puis d’ôter les lignes du fichier automation.yaml et les mettre dans un autre fichier ex : mon_automatisme.yaml que tu ranges dans le dossier packages, créer dans homeassistant, en ayant pris soin d’ajouter :
Donc si j’ai bien compris, je créer un répertoire « packages » avec à l’intérieur des sous répertoires avec mes fichiers automation_machin.yaml.
Le répertoire « packages » doit se trouver au même niveau configuration.yaml
Dans configuration.yaml, j’ajoute « packages » :
et tout mes fichiers d’automation vont être vus et utilisés.
Par contre dans mes fichiers de « automation_machin.yaml », je suppose qu’il faut déclarer comme automation ?
comme par exemple :
automation:
- alias: "Démarrer le timer sas_porte_timer lorsque la lumière est allumée"
trigger:
- platform: state
entity_id: light.lampe_sas_porte_hall_bas
from: 'off'
to: 'on'
action:
- service: timer.start
target:
entity_id: timer.sas_porte_timer
c’est bien ça ?
merci pour vos réponses
je viens de faire un essai, j’ai ce message :
Integration error: packages - Integration ‹ packages › not found.
c’est étonnant comme syntaxe d’ajouter « homeassistant: »
J’ai donc ça, et je n’ai plus d’erreur
# Loads default set of integrations. Do not remove.
default_config:
# Load frontend themes from the themes folder
frontend:
themes: !include_dir_merge_named themes
homeassistant:
packages: !include_dir_named packages/
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
sensor: !include sensors.yaml
switch: !include switchs.yaml
timer: !include all_timers.yaml
Maintenant, il faudra que je bascule mes automatismes. Ce sera mieux ordonné. C’est toujours pénible d’avoir des fichiers trop longs avec tout de mélangé.
Je l’utilisais pour styliser quelques sensors en affectant une couleur ou une icone en fonction de l’état.
pour cela maintenant j’utilise des sensors ou binary-sensors {template}.
Plus simple.
Moi je suis revenu de ranger les automatismes dans chaque fichier, car il est très souvent plus facile de modifier un automatisme avec UI que directement dans le fichier yaml.
Pour les ranger, j’utilise beaucoup les étiquettes et les catégories. Je ne regarde plus le fichier automation.yaml, effectivement il devient de plus en plus lourd et difficile à gérer.
100% en accord. L’UI est de mieux en mieux pour gérer le contenu du fichier. Plus besoin de passer par l’éditeur. Et dans le pire des cas, bascule en mode yaml pendant l’écriture/édition
c’est ce que j’ai fait jusqu’à present : [quote=« Pulpy-Luke, post:11, topic:46544 »]
Et dans le pire des cas, bascule en mode yaml pendant l’écriture/édition
[/quote]
mais j’avais envie de mettre de l’ordre !! En résumé, vous ne m’encouragez pas à le faire.
Tu dis [quote=« BLANCA, post:10, topic:46544 »]
Pour les ranger, j’utilise beaucoup les étiquettes et les catégories. Je ne regarde plus le fichier automation.yaml, effectivement il devient de plus en plus lourd et difficile à gérer.
[/quote]
Si tu as un exemple à me montrer. Parce qu’après tout, je ne suis pas intégriste, et si ça me plait, je peux l’adopter et abandonner les packages, ou faire un mix des deux.
Tu as trois petits points à gauche de chaque automatisme, tu choisis Attribuer une catégorie/ Ajouter une nouvelle catégorie - tu valides.
Il va se créer un onglet de la catégorie avec ton automatisme rangé dessous.
Voilà.
Bon rangement.
Une petite question supplémentaire.
En réalité, ce groupement qui est le premier réalisé pour le sas hall avec timer va être identique pour les autres lampes du séjour, cuisine, etc… avec juste pour différence le nom des détecteurs, le nom des lampes, et le nom du timer. L’idée est que toutes les lampes finissent toujours par être éteintes, et ne reste pas toutes la journée allumées même s’il n’y a plus personne depuis 2h.
La question est de savoir s’il est possible de faire une fonction en yaml qui fasse ces automatismes juste en lui présentant les noms en question. Et donc ne ne pas répéter plusieurs fois le même code avec des noms différents. (comme en python)
c’est vrai c’est un autre sujet, mais au passage, ça m’a donné une idée
Jusqu’à présent, j’avais contourné le blueprint. Ce que j’avais vu de déjà créé m’avait semblé touffu, et je ne voyais pas trop l’intérêt de se compliquer la vie avec des trucs qui pouvait tout faire de façon compliqué, et pas ce que je voulais.
Mais, je n’avais pas pensé que l’on pouvait en créer soit même pour de la réutilisation de code. Je vais donc fouiller dans ce sens, et voir ce que je peux faire avec ça.
Malgré tout ça semble bien plus compliqué qu’une simple fonction sous python. Après, je ne sais pas utiliser python dans le cadre de home assistant.
Pour éteindre toutes les lampes avec un seul automatisme, il te faut créer un sensor groupe, qui regroupe toutes tes lampes.
Là par un automatisme tu éteins ou allumes tout d’un seul coup.
Voilà mon rangement des sensors avec des groupes de volets :
volets étage (étiquettes ouvrants - groupe)
volets rez-de-chaussée
volets cuisine
volets maison
Cette solution de groupe marche très bien pour éteindre/allumer toutes les lampes ou des groupes de lampes.
Par forcément pour appliquer le même modèle d’automatisations à toutes les lampes afin d’avoir le même type de comportement… (par exemple avoir le même type d’allumage/extinction avec timer et detection de mouvement dans l’escalier, dans le couloir ou sur la terrasse…) => pour ça il faut définir des blueprints et les appliquer à chaque groupe de lampe.