Sensor.yaml invalid

Bonjour a tous.
Je pêche complet sur mon soucis…

J’ai crée de nouveau sensor et depuis HA ne veux plus me le charger…
Je ne comprends pas du tout l’erreur.

Voici mon config.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

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
sensor: !include sensors.yaml

Voici mon sensors.yaml

# sensors.yaml
sensor:
  # sensor importation
  - platform: template
    sensors:
      energy_importing:
        friendly_name: "Current Energy Importing"
        value_template: "{{ [0, (states('sensor.envoy_122246080483_current_power_consumption') | int - states('sensor.envoy_122246080483_current_power_production') | int)] | max }}"
        unit_of_measurement: 'W'
        device_class: energy
        unique_id: energy_importing
        icon_template: 'mdi:flash'
  #sensor exportation
  - platform: template
    sensors:
      energy_exporting:
        friendly_name: "Current Energy Exporting"
        value_template: "{{ [0, (states('sensor.envoy_122246080483_current_power_production') | int - states('sensor.envoy_122246080483_current_power_consumption') | int)] | max }}"
        unit_of_measurement: 'W'
        device_class: energy
        unique_id: energy_exporting
        icon_template: 'mdi:flash'
  #sensor combiné
  - platform: template
    sensors:
      energy_import_export_combined:
        friendly_name: "Combinaison Import/Export Power"
        unit_of_measurement: "W"
        device_class: energy
        unique_id: energy_import_export_combined
        value_template: "{{ (states('sensor.energy_importing') | float + states('sensor.energy_exporting') | float) }}"
  #sensor import negatif
  - platform: template
    sensors:
      energy_importing_negative:
        friendly_name: "Energy Importing (Negative)"
        unit_of_measurement: "W"
        device_class: energy
        unique_id: energy_importing_negative
        icon_template: 'mdi:flash'
        value_template: >-
          {% set original_value = states('sensor.energy_importing') | float %}
          {% if original_value > 0 %}
            {{ -original_value }}
          {% else %}
            0
          {% endif %}
  ##### Teste batterie virtuel ####
  # calculate electric power flows
  - platform: template
    sensors:
        battery_power:
            value_template: >
                {% if is_state("binary_sensor.battery_empty", "off") %}
                    {{ '%0.0f' | format(states('sensor.envoy_122246080483_current_power_production') | float - states('sensor.envoy_122246080483_current_power_consumption') | float) }}
                {% else %}
                    {{ '%0.0f' | format([ (states('sensor.envoy_122246080483_current_power_production') | float - states('sensor.envoy_122246080483_current_power_consumption') | float), 0 ] | max) }}
                {% endif %}
            unit_of_measurement: 'W'
        utility_power:
            value_template: >
               {{ '%0.0f' | format(states('sensor.envoy_122246080483_current_power_consumption') | float - states('sensor.envoy_122246080483_current_power_production') | float + states('sensor.battery_power') | float) }}
            unit_of_measurement: 'W'
        actual_power:
            value_template: >
               {{ '%0.0f' | format(states('sensor.envoy_122246080483_current_power_consumption') | float - states('sensor.envoy_122246080483_current_power_production') | float) }}
            unit_of_measurement: 'W'
        

    # calculate electric energy
  - platform: integration
    source: sensor.envoy_122246080483_current_power_production
    name: energy_produced
    method: left
    unit_prefix: k
    unit_time: h
    round: 3
    
  - platform: integration
    source: sensor.battery_power
    name: energy_stored
    method: left
    unit_prefix: k
    unit_time: h
    round: 3
    
  - platform: integration
    source: sensor.envoy_122246080483_current_power_consumption
    name: energy_consumed
    method: left
    unit_prefix: k
    unit_time: h
    round: 3
  - platform: integration
    source: sensor.utility_power
    name: energy_imported
    method: left
    unit_prefix: k
    unit_time: h
    round: 3
    # Battery storage (virtual mains battery)
  - platform: template
    sensors:
        battery_empty:
            value_template: "{{ states('sensor.energy_stored_meter') <= '0' }}"
            icon_template: >
                {% if is_state('binary_sensor.battery_empty', 'on') %}
                    mdi:battery-alert
                {% else %}
                    mdi:battery
                {% endif %}
# Meters
utility_meter:
  # virtual battery (charge or discharge)
  energy_stored_meter:
    source: sensor.energy_stored
    net_consumption: true
    cycle: yearly

  # consumption
  energy_consumed_meter:
    source: sensor.energy_consumed
    cycle: yearly

  # net consumption
  energy_imported_meter:
    source: sensor.energy_imported
    cycle: yearly

Voici le log :

Alors je dénote trois soucis potentiels dans ton yaml
Pour commencer je pense que tu ne devrais pas re-mettre sensor dans le sensors.yaml
Ecris simplament

- platform: template
  sensors:
    energy_importing:
      friendly_name: "Current Energy Importing"
      value_template: "{{ [0, (states('sensor.envoy_122246080483_current_power_consumption') | int - states('sensor.envoy_122246080483_current_power_production') | int)] | max }}"
      unit_of_measurement: 'W'
      device_class: energy
      unique_id: energy_importing
      icon_template: 'mdi:flash'
- platform: template
......

Mais je pense que cela ne vas pas fonctionner CAR quelqu’un pourra dire si je me trompe mais il me semble que la structure

sensor:
  - platform: template

n’existe plus. Elle est remplacé depuis plusieurs versions par

template
  - sensor:...

Donc ce dont tu as besoin finalement c’est de mettre dans ton configuration.yaml

template: !include template.yaml

Puis dans template.yaml

- sensor:
    - name:
      state: 
      unit_of_measurement: 
      ....
    - name: 
      state: 
      unit_of_measurement:
      ....
- binary_sensor:
    - name:
      state: 
      unit_of_measurement: 
     ....

Et finalement, je crois que utility_meter fait parti d’une integration non ? Si je ne me trompe pas et qu’il s’agit de la config d’une integration, tu ne devrais pas le mettre dans sensors.yaml ou template.yaml mais directement dans configuration.yaml et si tu veux vraiment séparer tes sensors de ton configuration.yaml alors je pense qu’il faudrait ajouter

utility_meter: !include utility_meter.yaml

Puis dans utility_meter.yaml

energy_stored_meter:
  source: sensor.energy_stored
  net_consumption: true
  cycle: yearly

energy_consumed_meter:
  source: sensor.energy_consumed
  cycle: yearly

energy_imported_meter:
  source: sensor.energy_imported
  cycle: yearly

Mais concernant utility_metter je ne suis pas sur du tout car je ne l’utilise pas ^^’

Voila, j’espère pouvoir t’aider :slight_smile: bon courage pour restructurer tout ca et si ca fonctionne toujours pas dis le nous. Et si ca fonctionne, dis le nous quand même :wink:

2 « J'aime »

Merci pour ta réponse…
J’avoue que je débute et ne maitrise pas du tout encore le yaml… je suis complètement passé a coté du changement d’écriture.
Je vais déjà tout remettre en page comme il faut.
Mais quand tu me conseil de crée un fichier template.yaml et d’y mettre mes sensors, mon fichier sensor.yaml du coup ne sert plus a rien ? ou j’ai pas compris :sweat_smile:

oui j’imagine. Ca dépend ce que tu as besoins de créer. J’ai dans le miens des sensors

 - platform: rest

et

- platform: influxdb

je t’ai répondu un peu vite, j’ai des sensor integration encore, du coup je les laisse dedans :smiley:

Merci beaucoup pour ce coup de main…ayant zappé la mise a jour d’écriture et en copiant des bout de code a droit a gauche…je m’y suis mit dedans tout seul comme un grand :joy:

Tout a était reécrit correctement… Tout fonctionne a nouveau.
Merci bcp

trop content pour toi :wink:

Dernière petite chose :stuck_out_tongue: l’utilisation des unique_id est recommandé surtout pour des sensors
c’est optionnel mais si tu as des sensors sur lesquels tu cliques tu risques de tomber sur

“This entity does not have a unique ID”

si c’est ton cas, il suffit d’ajouter un unique_id pour chaque sensor.

...
energy_stored_meter:
  unique_id: xxxxxxxxxxxxxxxxxxxxxxxxxx
  source: sensor.energy_stored
  net_consumption: true
  cycle: yearly

et vu que @Frosh t’a aidé à solutionner ton problème, n’hésites pas a lui en attribuer le mérite en marquant ce post comme résolu à partir du post qui t’as effectivement aidé

1 « J'aime »

Salut,
je rajoute, le unique_id sert a pouvoir personnaliser l’entité par le UI.

Citation
unique_id string (optional)
An ID that uniquely identifies the utility_meter. Set this to a unique value to allow customization through the UI.

Merci a tous pour ces précisions !
Je vais le marquer résolu effectivement.