Sensors.yaml non conforme

Mon problème

Je n’arrive pas à intégrer un fichier sensors.yaml a ma configuration avec cette erreur lors du check validité (Error loading /config/configuration.yaml: mapping values are not allowed here correspondant à a ligne « sensor: !include sensors.yaml » du fichier configuration.yaml.
Le pb vient donc du fichier sensors.yaml mais je ne comprends pas pourquoi.
Merci de votre eclairage

Ma configuration


[center]

System Information

version core-2023.9.2
installation_type Home Assistant Supervised
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.11.5
os_name Linux
os_version 6.1.0-12-amd64
arch x86_64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 5000
Installed Version 1.32.1
Stage running
Available Repositories 1284
Downloaded Repositories 3
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Debian GNU/Linux 12 (bookworm)
update_channel stable
supervisor_version supervisor-2023.09.2
agent_version 1.5.1
docker_version 24.0.6
disk_total 27.3 GB
disk_used 13.0 GB
healthy true
supported true
supervisor_api ok
version_api ok
installed_addons InfluxDB (4.7.0), File editor (5.6.0), Studio Code Server (5.10.1), CEC Scanner (3.0)
Dashboards
dashboards 4
resources 0
views 4
mode storage
Recorder
oldest_recorder_run 7 septembre 2023 à 07:47
current_recorder_run 14 septembre 2023 à 17:58
estimated_db_size 24.70 MiB
database_engine sqlite
database_version 3.41.2
[/center] Comment récupérer ma configuration : Dans votre HA, Menu latéral `Paramètres` > `Système` > `Corrections` puis les trois petits points en haut a droite > `Informations Système` puis une fois en bas `Copier` ___ Voici également une copie du fichier "sensors.yaml" ... - platform: template sensors: solar_angle: friendly_name: "Sun Angle" unit_of_measurement: '°' value_template: "{{ '%+.1f'|format(states.sun.sun.attributes.elevation) }}" - platform: template sensors: temperature_salon: friendly_name: "Température air Salon" unit_of_measurement: '°C' value_template: "{{ states(sensor.temperature_humidity_sensor_ebed_temperature) }}" - platform: template sensors: temperature_chambre_1: friendly_name: "Température air Chambre 1" unit_of_measurement: '°C' value_template: "{{ states(sensor.temperature_humidity_sensor_a5be_temperature) }}" - platform: template sensors: temperature_chambre_2: friendly_name: "Température air Chambre 2" unit_of_measurement: '°C' value_template: "{{ states(sensor.temperature_humidity_sensor_45d7_temperature) }}" - platform: template sensors: temperature_WC: friendly_name: "Température air WC" unit_of_measurement: '°C' value_template: "{{ states(sensor.temperature_humidity_sensor_ad4b_temperature) }}" - platform: template sensors: temperature_bureau: friendly_name: "Température air Bureau" unit_of_measurement: '°C' value_template: "{{ states(sensor.temperature_humidity_sensor_8b39_temperature) }}" - platform: template sensors: humidity_salon: friendly_name: "Temérature air Salon" unit_of_measurement: '%' value_template: "{{ states(sensor.temperature_humidity_sensor_ebed_humidity) }}" ...

Bonjour,
sensor.yaml sans s

dans mon configuration.yaml:

group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
sensor: !include sensor.yaml
template: !include template.yaml
recorder: !include recorder.yaml
multiscrape: !include multiscrape.yaml
utility_meter: !include utility_meter.yaml
command_line: !include command_line.yaml

dans ton sensor.yaml, ne met pas a la première ligne sensor:, commence directement par les plateformes.
exemple du sensor.yaml:

- platform: history_stats
  name: Entrance Door Openings
  entity_id: binary_sensor.0x00158d0007ef4edc_contact
  state: 'on'
  type: count
  start: '{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}'
  end: '{{ now() }}'

Merci j’ai corrigé « sensors.yaml » en " sensor.yaml" et la ligne !includexx correspondante dans « configuration.yaml ».
Mais les erreurs au sein du fichier « sensor.yaml » empèchent le bon démarrage:
Voici les erreurs des premières lignes (elles se répètent aux autres senseurs):

Invalid config for [sensor.template]: expected dictionary for dictionary value @ data['sensors']['friendly_name']. Got 'Sun Angle'
expected dictionary for dictionary value @ data['sensors']['name']. Got 'solar_angle'
expected dictionary for dictionary value @ data['sensors']['unit_of_measurement']. Got '°'
expected dictionary for dictionary value @ data['sensors']['value_template']. Got "{{ '%+.1f'|format(states.sun.sun.attributes.elevation) }}". (See ?, line ?).

Voici le fichier sensor.yaml

- platform: template
  sensors:
        name: 'solar_angle'
        friendly_name: "Sun Angle"
        unit_of_measurement: '°'
        value_template: "{{ '%+.1f'|format(states.sun.sun.attributes.elevation) }}"
- platform: template
  sensors:
        name: 'temperature_salon'
        friendly_name: "Température air Salon"
        unit_of_measurement: '°C'
        value_template: "{{ states(sensor.temperature_humidity_sensor_ebed_temperature) }}"
- platform: template
  sensors:
        name: 'temperature_chambre_1'
        friendly_name: "Température air Chambre 1"
        unit_of_measurement: '°C'
        value_template: "{{ states(sensor.temperature_humidity_sensor_a5be_temperature) }}"  
- platform: template
  sensors:
          name: 'temperature_chambre_2'
          friendly_name: "Température air Chambre 2"
          unit_of_measurement: '°C'
          value_template: "{{ states(sensor.temperature_humidity_sensor_45d7_temperature) }}"  
- platform: template
  sensors:
          name: 'temperature_WC'
          friendly_name: "Température air WC"
          unit_of_measurement: '°C'
          value_template: "{{ states(sensor.temperature_humidity_sensor_ad4b_temperature) }}"  
- platform: template
  sensors:
          name: 'temperature_bureau'
          friendly_name: "Température air Bureau"
          unit_of_measurement: '°C'
          value_template: "{{ states(sensor.temperature_humidity_sensor_8b39_temperature) }}"  
- platform: template
  sensors:
          name: 'humidity_salon'
          friendly_name: "Temérature air Salon"
          unit_of_measurement: '%'
          value_template: "{{ states(sensor.temperature_humidity_sensor_ebed_humidity) }}"

bonjour,

ce ne sont pas des sensors, mais des templates qui doivent etre dans le fichier template.yaml
:slight_smile: les sensors ont changé de format, maintenant, se sont des template, et donc il y a une ligne dans le fichier de configuration :

template: !include template.yaml

ensuite, comme le disait @WarC0zes, si tu mets une ligne include, tu ne répète pas celle ci dans ton fichier.

donc, ton fichier template, il y a (car template est dans ton fichier configuration.yaml et sensor, tu ne le mets qu’une fois.)

  - sensor:

    - name: "sensorname1"
      icon: mdi:account-circle
      etc...

    - name: "sensorname2"
      icon: mdi:account-circle
      etc...

    - name: "sensorname3"
      icon: mdi:account-circle
      etc...

Pour une meilleur lecture du code, mes le avec la balise texte préformaté.

1 « J'aime »

Au delà du souci de format de sensor/template qui n’en est pas un réellement (les é marchent) je me pose plus la question de l’intéret de ce genre de choses :

value_template: « {{ states(sensor.temperature_humidity_sensor_8b39_temperature) }} »

Faire une entité pour simplement reprendre la valeur d’une entité existante (sans modif/conversion), c’est dans quel but ?
Si c’est pour donner un friendly_name, c’est ultra luxueux parce que ça peut se faire directement sur l’entité d’origine

EDIT: Format code, ajouté dans le message

1 « J'aime »

Merci beaucoup, après quelques corrections le fichier « template.yaml » est bien pris en compte!
Maintenant je pensais que cela suffirait pour que ces « valeurs » soient transférées a InfluxDB mais ce n’est pas le cas. J’aimerai savoir pourquoi et ce qui manque.

Très bonne question! En fait je pensais récupérer directement les valeurs fournis en direct par ces senseurs mais sans succès j’ai essayé de les faire passer via cet artifice qui ne marche pas plus! Alors ma question reste valable pour les senseurs direct: comment faire remonter leurs valeurs vers InfluxDB?
Merci d’avance

Salut

A condition que les valeurs soient disponibles (je n’ai pas compris ça marchais, ça ne marche plus), il y a uniquement à mettre sensor.temperature_humidity_sensor_8b39_temperature dans la liste des entités à remonter dans influxdb (cf doc influxdb)
Evidement le nom sera pas forcément lisible, mais c’est pareil ça se change.
Et quand l’envoie vers influxdb rale, c’est indiqué dans les logs