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
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