Séparation de fichier

Bonjour,
Je suis assez nouveau sur Home Assistant et j’essaie tant bien que mal de créer une domotique au top.
L’intégration se passe dans l’ensemble plutôt bien.

Mon problème

Mon problème survient lorsque je commence à créer des automatisations et autres interfaces Lovelace…

Tout le monde ici a bien compris qu’il est nécessaire de séparer les fichiers de configuration, sinon cela devient rapidement un vrai chaos. Normalement, tout le monde me suit jusqu’à présent…

Ma question est simple : est-ce que quelqu’un peut expliquer de manière simple comment séparer les fichiers ?

Je ne comprends pas les autres posts qui vont dans un sens puis dans l’autre.

Pourquoi je veux faire cela !

Je veux simplement avoir :

  • un dossier pour Lovelace, qui !include d’autres fichiers Lovelace à l’intérieur,
  • un dossier ou un fichier par « projet », en fonction de la taille de mon projet,
  • et d’autres choses auxquelles je n’ai pas encore pensé, car je n’ai pas encore été confronté à ces problèmes.

Mais lorsque dans les faits j’essai de le faire, les « input » ne marche pas dans les « automation », etc, etc, etc.

En ce moment, je suis en train de domotiser plusieurs potagers (un extérieur et un intérieur). Pour le moment, j’ai écrit du code qui dit : si le capteur d’humidité est inférieur à X %, alors active le relais correspondant. C’est bien, mais j’aimerais aussi prendre en compte la température, la pluie (avant ou après, donc n’arrose pas), la période de l’année, etc.

Cela est réalisable, mais étant donné la taille du code, je ne peux pas me permettre de tout regrouper dans le même fichier que les autres.

J’espère que quelqu’un pourra faire quelque chose de succinct facile et clair pour que tous les débutant en profite.
PS : le partage de postes bien expliqué est bien entendu le bienvenu. je n’ai pas encore trouvé mon bonheur dans cette jungle du/des forums.

Bonjour Hugo

Regarde si cette discussion peut faire ton bonheur
https://forum.hacf.fr/t/mise-en-place-de-la-fonction-packages-dans-configuration-yaml/24996

Lien vers la doc officielle https://www.home-assistant.io/docs/configuration/packages/

Cordialement,

Abel

2 « J'aime »

Il faut tous simplement dans ton fichier configiguration.yaml ajouter la ligne suivante:

homeassistant:
  packages: !include_dir_named packages

ensuite il faut creer un dossier packages au même niveau/endroit ou et ton fichier configuration.yaml

et dans ce dossier tu peut ensuite faire des sous dossier avec les fichier qui porte les noms que tu souhaite.

Par contre ne pas oublier a chaque fois d’indiquer dans ton fichier si ce sont des sensors, binary_Sensor etc…

éxemple:

et ensuite dans le fichier (pour l’exemple le contenue du fichier youtube.yaml qui est une integration pour aller chercher les infos de certaine chaine youtube, c’est un sensor donc ne pas oublier de l’indiquer en haut du fichier, comme si tu le configurais dans le fichier configuration.yaml):

@Abel Merci pour tes lien je n’ai pas encore tous lu mais je sui dessus.

@barto_95
Si je résume :

/config/configuration.yaml :

# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

# Text to speech
tts:
  - platform: google_translate

#//////////////SEPARATION DES DOSSIERS//////////////
#///////SCRIPT///////
script: !include scripts.yaml

#///////SCENE///////
scene: !include scenes.yaml

#///////AUTOMATISATION///////
automation: !include automations.yaml
automation telegram_automation: !include telegram_automation.yaml

#///////DOSSIER POTAGER///////
homeassistant:
  potager: !include_dir_named potager

#///////LOVELACE///////


#//////////////APPLICATION TELEGRAM//////////////
telegram_bot:
  - platform: polling
    api_key: !secret telegram_token
    allowed_chat_ids:
      - !secret id_telegram_XX
      - !secret id_telegram_XXX

notify:
 - platform: telegram
   name: Telegram_XX
   chat_id: !secret id_telegram_XX
 - platform: telegram
   name: Telegram_XXX
   chat_id: !secret id_telegram_XXX

/config/potager/potager.yaml :
automation potager_exterieur: !include potager_exterieur.yaml
input_boolean potager_exterieur_boolean: !include potager_exterieur_boolean.yaml

automation potager_exterieur: !include potager_interieur.yaml
input_boolean potager_interieur_boolean: !include potager_interieur_boolean.yaml
/config/dossier/fichier.yaml : (exemple)
automation fichier: !include fichier.yaml
input_boolean fichier_boolean: !include fichier_boolean.yaml
input_select fichier_select: !include fichier_select.yaml
...
script fichier_script: !include fichier_script.yaml
switch fichier_switch: !include fichier_switch.yaml
sensor fichier_sensor: !include fichier_sensor.yaml
...

potager: n’est pas un "domaine"reconnu

il faut que ce soit package:

package: !include_dir_named potagers

ensuite pas besoin d’autre include dans potager.yaml

Imaginons la structure suivante

image

Chaque yaml aura les sensors, automation, scripts, … propres à ce potager

image

J’ai mis les domaines uniquement pour montrer la scructure

cordialement,

Abel

1 « J'aime »

Alors édit :

Ca à l’air de marcher

configuration.yaml :

homeassistant:
  packages: !include_dir_merge_named packages/

Ajouter le dossier « packages » à la racine

choix numéro 1 = tous dans un dossier

Ajouter le dossier du projet (exemple " potager")
Dans « potager.yaml »

potager_potager_exterieur:
input_boolean:
...
  
binary_sensor:
...
  
  automation:
...
choix numéro 2 = séparer les fichiers du dossier

Ajouter le dossier du projet (exemple " potager")
Dans « potager.yaml »

potager_potager_exterieur:

automation potager_exterieur: !include potager_exterieur.yaml
script potager_exterieur_script: !include potager_exterieur_scripts.yaml
...

Ah et du coup tu n’externalise pas l’ensemble !?

Dans ma vision il y aura pas mal d’automation quelques script et quelque sensor et pas mal de input/output en tous genre.

Du coup je voulais faire un fichier

  • automation
  • input
  • script et pourquoi pas sensor au même endroit

Si tu as des dossiers sous potagers et ensuite les yamls, dans ce cas il faut passer par !include_dir_merge_named

comme dans le choix N°2

Désoler d’être relou mais c’est pas mal flou et merci de prendredu temps pour m’aider (moi et potentiellement les autres)

Personellement, j’utilise la méthode que j’ai décrite.Je n’ai pas beaucoup d’automation, Elles sont presque toutes sur Node Red. Du coup mes fichiers yaml ne sont pas très longs et assez facile à gérer

Je vois, mais je n’aime pas trop NodeRed pour le moment, j’ai quelques truc dessus mais je ne vois pas une grande utilité mis a part pour des choses à mettre en place rapidement… mais cela est encore un autre sujet

Je reviens sur la solution que tu ma donné

Selon moi j’ai fais exactement l’a solution que tu m’as donné, cependant j’ai bien mes input, et sensors mais pas mes automatisation. Est ce normal, puisque tu les traite sur node red ou j’ai manquer quelque chose?

J’en ai aussi en dehors de node red.

As-tu la ligne automation: ? et verifie l’indentation

automation:

# Ask to turn on the TV when sitting in the living room
  - id: '1684372277717'
    alias: Actionable - Ask to Turn On TV
    description: Ask to turn on the TV when sitting in the living room
    trigger:
    ...

Abel

Alors dans le fichier configuration :

#///////DOSSIER///////
homeassistant:
  packages: !include_dir_named .packages

#//////////////SEPARATION DES DOSSIERS//////////////
#///////SCRIPT///////
script: !include scripts.yaml

#///////SCENE///////
scene: !include scenes.yaml

#///////AUTOMATISATION///////
automation: !include automations.yaml
automation telegram_automation: !include telegram_automation.yaml

Et dans mon fichier « /config/.packages/test.yaml » :


input_number:
    test_position:
      name: "Test - Position désirée"
      min: -1
      max: 100
      step: 1
      unit_of_measurement: "%"


automation:
    - id: pot_ext_test
      alias: sync_status_on_bureau_1
      description: >
        on H.A startup or heater status change,
        check if heater is currently on to
        update the climate object in HA
      trigger:
        - platform: homeassistant
          event: start
      condition:
        - condition: state
          entity_id: binary_sensor.bureau_1_chauffage
          state: 'on'
      action:
        - service: climate.turn_on
          target:
            entity_id: climate.bureau_1
      mode: single

Je ne vois pas de problème particulier, c’est du code test que j’ai pris sur un lien que tu m’as envoyé :