Inclure fichier yaml dans configuration

Bien le bonjour,
Désolé pour la stupidité de ma question, mais j’ai du mal à comprendre comment fonctionne l’ajout de fichiers yaml dans celui de configuration.

J’ai créé le fichier « vacances_scolaires.yaml » au même endroit que celui de « configuration.yaml ».
J’ai rajouté dans la conf, la ligne vacances_scolaires: !include vacances_scolaires.yaml.
Mais lorsque je fais une vérification de la configuration, j’ai cet avertissement :
Integration error: vacances_scolaires - Integration 'vacances_scolaires' not found.

De ce que j’ai compris des recherches que j’ai faites, il y a une liste bien définie d’include possible (template, sensor, automation, …), mais est-il possible d’en ajouter d’autre ?
Ce que je voudrais, c’est avoir un yaml propre à ce projet, sans tout splitter dans divers fichiers.

Salut,

ce n’st pas vraiment une liste bien définie d’includes possibles.
Mais de base quand tu écris par exemple:

sensor: !include sensor.yaml

Le sensor: du début de ligne correspond au plus haut niveau de configuration des sensors, valeur qui ne peut exister qu’une seule fois dans toute ta config.

C’est mieux expliqué dans le lien ci-dessous:

Du coup, je suis parti sur la notion de packages: !include_dir_named packages cela devrait me permettre d’utiliser les noms de fichier que je souhaite.
Sinon, je diviserais le code dans les fichiers correspondant.

Pfff, la galère, ca ne fonctionne toujours pas.
Si j’ai bien compris la doc, ceci devrait me permettre d’accéder au sensor et template contenu dans mon fichier « vacances_scolaires.yaml »

homeassistant:
  packages: !include_dir_named packages

Ou est-ce que je me suis planté :thinking: ?

Bj

As tu cree un dossiers packages ?

Hello @Nothing, oui c’est la première chose que j’ai faite pour pouvoir y déposer mon fichier yaml.
J’ai aussi fait attention à ce que tout soit en minuscule.

ok , post au complet ton message d’erreur

et le contenu de ton / tes fichiers .yaml

J’ai travaillé tard sur le sujet mais avec un résultat mitigé.
Petite modification, j’ai créé un dossier « integrations » et j’ai mis le fichier « vacances_scolaires.yaml ».

homeassistant:
  packages: !include_dir_named integrations

Quand je test la config, je n’ai plus d’erreur.
Je trouve bien les entitées dans HA mais elles ne retournent rien.

homeassistant:
  customize:
    sensor.vacances_scolaires:
      name: Vacances
      friendly_name: "Vacances"
      icon: mdi:umbrella-beach

sensor:
  - platform: rest
    scan_interval: '01:00:00'
    name: vacances_scolaires
    json_attributes_path: "$.records[0].fields"
    json_attributes:
      - start_date
      - end_date
      - description
    resource_template: |-
      {% set location = 'Lyon' %}
      {% set rows = '1'%}
      {% set aujourdhui = now().strftime('%Y-%m-%d')%}
      {% set dayOfYear =  now().strftime('%j') %}
      {% set year =  now().strftime('%Y') | int %}
      {% set lastYear = year - 1 %}
      {% set nextYear = year + 1 %}
      {% if dayOfYear > '244' %}
      {% set schoolYear = (year | string) + "-" + (nextYear | string) %}
      {%- else -%}
      {% set schoolYear = (lastYear | string) + "-" + (year | string) %}
      {%- endif %}
      https://data.education.gouv.fr/api/explore/v2.1/catalog/datasets/fr-en-calendrier-scolaire/records?where=end_date%3E%22{{aujourdhui}}%22&order_by=end_date%20ASC&limit={{rows}}&refine=location%3A{{location}}
#      https://data.education.gouv.fr/api/records/1.0/search/?dataset=fr-en-calendrier-scolaire&facet=start_date&facet=end_date&rows={{rows}}&refine.location={{location}}&sort=-end_date&q=end_date%3E={{aujourdhui}}
    value_template: |-
      {% set aujourdhui = now().strftime('%Y-%m-%d')%}
      {% for record in value_json.records -%}
      {% if aujourdhui >= record.fields.start_date and aujourdhui <= record.fields.end_date %} 
      {%- if record.fields.description %}{{record.fields.description}} jusqu'au {{ as_timestamp(record.fields.end_date) | timestamp_custom('%d-%m-%Y') }} {% endif %}
      {% else %} 
      {%- if record.fields.end_date > aujourdhui and record.fields.description %} prochaines : {{record.fields.description}} {{ as_timestamp(record.fields.start_date) | timestamp_custom('%d-%m-%Y') }}{% endif %}
      {% endif %}
      {%- endfor %}

binary_sensor:
  - platform: template
    sensors:
      vacances_scolaires_aujourdhui:
        friendly_name: "Vacances scolaires aujourd'hui"
        icon_template: mdi:calendar-today
        value_template: |-
          {% set aujourdhui = now().strftime('%Y-%m-%d')%}
          {% if aujourdhui < states.sensor.vacances_scolaires.attributes["start_date"] or aujourdhui > states.sensor.vacances_scolaires.attributes["end_date"] %}
          false
          {% else %} 
          true
          {% endif %}

  - platform: template
    sensors:
      vacances_scolaires_demain:
        friendly_name: "Vacances scolaires demain"
        icon_template: mdi:calendar-arrow-right
        value_template: |-
          {% set demain = (as_timestamp(now()) + (24*3600)) | timestamp_custom('%Y-%m-%d', True) %}
          {% if demain < states.sensor.vacances_scolaires.attributes["start_date"] or demain > states.sensor.vacances_scolaires.attributes["end_date"] %} 
          false
          {% else %} 
          true
          {% endif %}

La je sèche complétement et je ne sais pas ou trouver les erreurs des entitées.

vire ceci pour commencer

dans le fichier du fait que tu passe par packgage

##############################
#Sensor Templates 
##############################
sensor:
  - platform: template
    sensors:
      vacances_scolaires_demain:
        friendly_name: "Vacances scolaires demain"
        icon_template: mdi:calendar-arrow-right
        value_template: |-
          {% set demain = (as_timestamp(now()) + (24*3600)) | timestamp_custom('%Y-%m-%d', True) %}
          {% if demain < states.sensor.vacances_scolaires.attributes["start_date"] or demain > states.sensor.vacances_scolaires.attributes["end_date"] %} 
          false
          {% else %} 
          true
          {% endif %}

cela est pas bon

      https://data.education.gouv.fr/api/explore/v2.1/catalog/datasets/fr-en-calendrier-scolaire/records?where=end_date%3E%22{{aujourdhui}}%22&order_by=end_date%20ASC&limit={{rows}}&refine=location%3A{{location}}
#      https://data.education.gouv.fr/api/records/1.0/search/?dataset=fr-en-calendrier-scolaire&facet=start_date&facet=end_date&rows={{rows}}&refine.location={{location}}&sort=-end_date&q=end_date%3E={{aujourdhui}}
    value_template: |-

neutralise jamais dans un sensor avec # , cela ne marche pas et ton sensor ne marchera pas

1 « J'aime »

Ok, j’ai viré le customize du fichier, mais faut-il le rajouter dans le fichier de configuration ?

Pour la partie du code qui n’est pas bonne, pourrais-tu me donner plus d’explications je ne sais que chercher ? De plus pourquoi tu as rajouté « sensor » au-dessus de template alors que plus haut c’est un binary_sensor: qui est défini ?

J’ai viré la ligne commenté.

Merci pour ton aide.

tu as deja du mal avec un simple fichier , alors si en plus tu commence avec des customize tu va etre largué et blindé d’erreur…

Alors je vais te donné un coup de pousse

dans configuration.yaml qui est à la racine tu mets ceci:

homeassistant:
  packages: !include_dir_named packages

tu verifié si ok avant de reboot

Une fois OK

dans le packages tu cree un fichier du nom voulu par exemple
tele.yaml
Attention cela est pour SWITCH
et tu met ceci

switch:

  - platform: template
    switches:   

      power_tv_hisense_salon:
        friendly_name: "Power TV Hisense"
        value_template: "{{ is_state('script.power_tv_hisense', 'on') }}"
        turn_on:
          service: script.turn_on
          entity_id: script.power_tv_hisense
        turn_off:
          service: script.turn_off
          entity_id: script.power_tv_hisense
          
          
      power_tv_philips_chambre:
        friendly_name: "Power TV Philips"
        value_template: "{{ is_state('script.power_tv_philips', 'on') }}"
        turn_on:
          service: script.turn_on
          entity_id: script.power_tv_philips
        turn_off:
          service: script.turn_off
          entity_id: script.power_tv_philips

pour des sensors:
lumieres.yaml

############################################
# Compte le nombre de lumiere Allumées
##############################
sensor:
  - platform: template
    sensors:    
      lights_on_count:
        friendly_name: Nombre de lumières allumées
        icon_template: mdi:lightbulb-on-outline
        value_template: >
          {% set eclairages = expand(          
          states.light.XXXXXXX,
          states.light.XXXXXXX,    
          ) %}
          {{ eclairages | selectattr('state','eq','on') | list | count }}

Pour tes templates sensors:
voitures.yaml

template:
  - sensor:
  
      - name: "Renault "
        state: >-
          {% if is_state('device_tracker.cles_renault', 'home') and is_state('device_tracker.cles_renault_1', 'home') %}
            Présente
          {% else %}
            Absente
          {% endif %}

      - name: "Mercedes Slk"
        state: >-
          {% if is_state('device_tracker.cles_mercedes', 'home') and is_state('device_tracker.cles_mercedes_1', 'home') %}
            Présente
          {% else %}
            Absente
          {% endif %} 

Pour ma configuration j’ai split dans des sous dossiers. Voilà un exemple fonctionnel (attention à respecter l’indentation entre les fichiers)

image

image

image

1 « J'aime »

@Oles67 Merci pour toutes ses informations. J’ai opté pour le découpage du code. J’ai eu beaucoup moins de problèmes pour le mettre en œuvre.

@Nothing Merci aussi d’avoir tenté de m’aider. D’ailleurs j’ai trouvé un sujet sur le forum concernant l’intégration des Vacances scolaires et l’API data.education.gouv.fr, c’était ce que je cherchais à faire avec ce fichier yaml.
Vacances scolaires - API data.education.gouv.fr - #5 par Giga77
J’ai vu que tu avais participé aux échanges sur ce poste. Ça fonctionne toujours chez toi ?
De mon côté ça fonctionne, mais je viens de voir des erreurs.

* TemplateError('TypeError: '<' not supported between instances of 'str' and 'NoneType'') while processing template 'Template<template=({% set aujourdhui = now().strftime('%Y-%m-%d')%} {% if aujourdhui < state_attr('sensor.vacances_scolaires', 'start_date') or aujourdhui > state_attr('sensor.vacances_scolaires', 'end_date') %} false {% else %} true {% endif %}) renders=134>' for attribute '_state' in entity 'binary_sensor.vacances_scolaires_aujourdhui'
* TemplateError('TypeError: '<' not supported between instances of 'str' and 'NoneType'') while processing template 'Template<template=({% set demain = (as_timestamp(now()) + (24*3600)) | timestamp_custom('%Y-%m-%d', True) %} {% if demain < state_attr('sensor.vacances_scolaires', 'start_date') or demain > state_attr('sensor.vacances_scolaires', 'end_date') %} false {% else %} true {% endif %}) renders=134>' for attribute '_state' in entity 'binary_sensor.vacances_scolaires_demain'

Merci pour ton exemple. Super ca va bien m aider à organiser mon dossier.

Petite question le ! plus espace avant le nom du fichier ca sert à quoi ? Pas vu cette balise. homeassistant/…/mqtt/ ! machin.yaml ?

Tu parles duquel ?
Je le vois pas.

f729347a70666d71a2a7c6e2f5690f065faf95d0

1 « J'aime »

Ça c’est rien. Il me semble que c’est le symbole pour dire que le fichier est modifié mais par enregistré sur vscode

1 « J'aime »

Merci bien à vous deux :smiley:

1 « J'aime »