Help nouvelle version et template sensor

Bonjour,

La nouvelle version 2025-12 s’est bien installée mais j’ai ensuite vu une série de messages me demandant de revoir la syntaxe de mon sensor.yaml car la formulation platform: templte ou value_template serait refusée dans la version 2026-xx, et il y avait un message pour chaque sensor défini là, avec la nouvelle syntaxe à utiliser.
J’ai fait le copier / coller pour les 2 premiers mais je vois des warnings ou erreurs apparaître sur cette nouvelle syntaxe donc je voudrais savoir comment je devrais les réécrire exactement ?

ici le nouveau sensor.yaml, réécrit dans la nouvelle syntaxe :

# ====================================================================
# 1. CAPTEURS TEMPLATE (COUT ANNUEL ET BATTERIE)
# Utilise la syntaxe moderne "template:"
# ====================================================================
template:
  - sensor:
      # --- Capteurs de Puissance (Format original) ---
      - name: gonthiers_conso_hors_solaire
        unit_of_measurement: W
        state: "{{ states('sensor.global_power') | float - states('sensor.panneaux_power') | float }}"
      - name: gonthiers_injection
        unit_of_measurement: W
        state: >
          {% set global_power = states('sensor.global_power') | float(default=0) %} 
          {% if global_power < 0 %} 
            {{ global_power * -1 }} 
          {% else %} 
            0
          {% endif %}
      # --- Coûts Annuels ---
      # --- Capteurs de Batterie (Helpers) ---
      - name: canon_g6000_black_pgbk_last_known
        friendly_name: "Canon G6000 Black PGBK (dernière valeur)"
        state: >-
          {% if is_state('sensor.canon_g6000_series_black_pgbk', 'unavailable') %}
            {{ states('sensor.canon_g6000_black_pgbk_last_known') }}
          {% else %}
            {{ states('sensor.canon_g6000_series_black_pgbk') }}
          {% endif %}
      
      # [Répétez la structure pour les autres cartouches: cyan, magenta, yellow]
      
      - name: galaxy_tab_a_last_known
        friendly_name: "Galaxy Tab A Batterie (dernière valeur)"
        state: >-
          {% if is_state('sensor.galaxy_tab_a_batterie', 'unavailable') %}
            {{ states('sensor.galaxy_tab_a_last_known') }}
          {% else %}
            {{ states('sensor.galaxy_tab_a_batterie') }}
          {% endif %}
          
      # --- FIN des capteurs template ---

# ====================================================================
# 2. CAPTEURS REST (La syntaxe correcte est 'sensor:', pas 'platform: rest')
# ====================================================================
sensor:
  - platform: rest
    name: CloudCoverCurrent
    resource: "https://www.meteosource.com/api/v1/free/point?place_id=saintcolombdelauzun-2981036&sections=current%2Chourly&language=en&units=auto&key=9bt3qqpfx11t8pleow71dfkrtb0ci8de0mdk693y"
    value_template: "{{ value_json.hourly.data[0].cloud_cover }}"
    unit_of_measurement: "%"
    scan_interval: 300

et j’ai toujours cette erreur DisallowedExtraPropWarning#

Je ne trouve pas comment rectifier…

je progresse, l’erreur subsiste uniquement sur le 1er template en ligne 1

# ====================================================================
# 1. CAPTEURS TEMPLATE (COUT ANNUEL ET BATTERIE)
# Utilise la syntaxe moderne "template:"
# ====================================================================
template:
  - sensor:
    - name: gonthiers_conso_hors_solaire
      unit_of_measurement: W
      state: "{{ states('sensor.global_power') | float - states('sensor.panneaux_power') | float }}"
    - name: gonthiers_injection
      unit_of_measurement: W
      state: >-
        {% set global_power = states('sensor.global_power') | float(default=0) %} 
        {% if global_power < 0 %} 
          {{ global_power * -1 }} 
        {% else %} 
          0
        {% endif %}
    - name: canon_g6000_black_pgbk_last_known
      friendly_name: "Canon G6000 Black PGBK (dernière valeur)"
      state: >-
        {% if is_state('sensor.canon_g6000_series_black_pgbk', 'unavailable') %}
          {{ states('sensor.canon_g6000_black_pgbk_last_known') }}
        {% else %}
          {{ states('sensor.canon_g6000_series_black_pgbk') }}
        {% endif %}
    - name: galaxy_tab_a_last_known
      friendly_name: "Galaxy Tab A Batterie (dernière valeur)"
      state: >-
        {% if is_state('sensor.galaxy_tab_a_batterie', 'unavailable') %}
          {{ states('sensor.galaxy_tab_a_last_known') }}
        {% else %}
          {{ states('sensor.galaxy_tab_a_batterie') }}
        {% endif %}
# ====================================================================
# 2. CAPTEURS REST (La syntaxe correcte est 'sensor:', pas 'platform: rest')
# ====================================================================
  - sensor:
    - platform: rest
      name: CloudCoverCurrent
      resource: "https://www.meteosource.com/api/v1/free/point?place_id=saintcolombdelauzun-2981036&sections=current%2Chourly&language=en&units=auto&key=9bt3qqpfx11t8pleow71dfkrtb0ci8de0mdk693y"
      value_template: "{{ value_json.hourly.data[0].cloud_cover }}"
      unit_of_measurement: "%"
      scan_interval: 300

Salut @bemo47
Tu trouveras des pistes sur ce poste

1 « J'aime »

Bonjour,

Le sensor dans ton point 2 n’est pas un template. Il utilise la plate-forme rest.

Il ne devrait pas avoir d’indexation.

1 « J'aime »

j’ai simplifié en le supprimant, mais toujours erreur disallowedextrapropertywarning sur la ligne template

template:
  - sensor:
    - name: "gonthiers_conso_hors_solaire"
      unit_of_measurement: "W"
      state: "{{ states('sensor.global_power') | float - states('sensor.panneaux_power') | float }}"
    - name: "gonthiers_injection"
      unit_of_measurement: "W"
      state: >-
        {% set global_power = states('sensor.global_power') | float(default=0) %} 
        {% if global_power < 0 %} 
          {{ global_power * -1 }} 
        {% else %} 
          0
        {% endif %}
    - name: "canon_g6000_black_pgbk_last_known"
      friendly_name: "Canon G6000 Black PGBK (dernière valeur)"
      state: >-
        {% if is_state('sensor.canon_g6000_series_black_pgbk', 'unavailable') %}
          {{ states('sensor.canon_g6000_black_pgbk_last_known') }}
        {% else %}
          {{ states('sensor.canon_g6000_series_black_pgbk') }}
        {% endif %}
    - name: "galaxy_tab_a_last_known"
      friendly_name: "Galaxy Tab A Batterie (dernière valeur)"
      state: >-
        {% if is_state('sensor.galaxy_tab_a_batterie', 'unavailable') %}
          {{ states('sensor.galaxy_tab_a_last_known') }}
        {% else %}
          {{ states('sensor.galaxy_tab_a_batterie') }}
        {% endif %}

je suis allé voir , j’ai ajouté les guillemets que j’avais pas, mais à part ça je ne vois pas ce qui cloche

peut etre devrais je aller les définir via l’UI ? mais à quel endroit ? paramètres/appareilsetservices/entrées ?

Je pense que c’est un warning pour le friendlyname qui n’est plus dans template.

je suis allé dans l’UI entrées et j’ai déjà recréé les deux 1ers, je vais faire de même pour les autres mais ils sont de nature différente, je vais chercher… et ça supprimera ce bloc sensors

Pour répondre à ta question sur le yaml
Il faut modifier

    - name: "galaxy_tab_a_last_known"
      friendly_name: "Galaxy Tab A Batterie (dernière valeur)"

en

    - name: "Galaxy Tab A Batterie (dernière valeur)"
      unique_id: "galaxy_tab_a_battery_last_known"

Dans l’UI c’est modèle puis capteur si tu as HA en français.

Le choix UI versus yaml est personnel.

1 « J'aime »

Tu as toutes les info regroupées dans ce post, avec des exemples:

1 « J'aime »

Ça va être le bordel, avec la 2025.12.0 !!
3 ans (voir plus) que le nouveau format de template existe, 3 ans que je dis de l’utiliser… mais toujours du monde sur le legacy.
J’avais prévenu, qu’un jour ça changerait et c’est chose faite le 2026.6.
Heuresement j’ai ma Magic Ball USB. :joy:

2 « J'aime »

Hello,

Je l’ai pas vu, donc tu ne l’as pas assez répété, donc c’est la faute de la Magic Ball USB ? ou c’est ta faute ? je plaisante bien évidement :wink:
C’est surtout le cumul … j’ai encore cord-mod et button card à corriger, et ça devient un peu lassant :wink: et « heureusement » que j’ai un max de template streamline …

Bon courage à tous :sign_of_the_horns:

cdt

1 « J'aime »

Heuuu, je confirme, ça va être le bordel :sweat_smile:
La preuve avec moi, ce lien m’a été donné 3 ou 4 réponses au dessus, je suis allé voir, et j’ai encore le friendly_name au lieu de unique_id !!!
Bon j’ai de la poussière dans les yeux, en restant poli :rofl:

Mais au moins ça m’a permis de découvrir ou redécouvrir les entrées ce qui devrais alléger mon yaml…

Et encore j’ai longtemps fait du développement à la base !!! Et j’ai même développé des systèmes temps réels plutot sophistiqués !
Mais, mais dans les années 80… donc Assembleur IBM 360, COBOL, oui, oui, je sais beaucoup n’ont même pas connu, mais le fait est que ce type de codage, je n’y comprends rien, c’est totalement hermétique pour moi !

Allez, merci encore de votre aide !!! :grinning_face:

Avec le 2025.12.1, ça devrait être amélioré, l’avertissement.

Ce sujet a été automatiquement fermé après 60 jours. Aucune réponse n’est permise dorénavant.