Problemes de sensors en yaml et passage au nouveau template

Bonjour,

J’essai de créer des sensors pour avoir des valeurs de productions solaires ;

J’ai fait cette gribouille :


- platform: template
  sensors:
    solar_energy_export:
      friendly_name: "Export d'énergie solaire"
      unit_of_measurement: "W"
      value_template: >-
        {% if states('sensor.solaredge_m1_ac_power') | float > 0 %}
          {{ states('sensor.solaredge_m1_ac_power') | float }}
        {% else %}
          0
        {% endif %}

    solar_energy_import:
      friendly_name: "Import d'énergie"
      unit_of_measurement: "W"
      value_template: >-
        {% if states('sensor.solaredge_m1_ac_power') | float < 0 %}
          {{ (states('sensor.solaredge_m1_ac_power') | float * -1) }}
        {% else %}
          0
        {% endif %}

    home_energy_consumption:
      friendly_name: "Consommation d'énergie de la maison"
      unit_of_measurement: "W"
      value_template: >-
        {% set production = states('sensor.solaredge_ac_power') | float %}
        {% set export_import = states('sensor.solaredge_m1_ac_power') | float %}
        {{ (production - export_import) | round(2) }}

Mes capteurs sont notés indisponibles

Si une ame charitable peut me dire ou ça pêche

Merci

edit : script édité et corrigé

Salut

Tu es sur de ça :

{{ states('binary_sensor.solaredge_m1_ac_power') | float }}

Parce que ça me parait bizarre qu’un binary_sensor puisse remonter une valeur.

Si tu tapes dans outils de développement / modèle ça dit quoi:

{{ states('binary_sensor.solaredge_m1_ac_power') }}

Bonsoir

Tu as raison ! J’ai remplacé par « sensor » et j’ai des valeurs qui s’affichent

Et modifié le 3° item qui comportait une erreur

Je met à jour si ça peut aider

Demain, je vérifie les valeurs avec la production solaire

Un grand merci @Tochy :pray:

Si ta production et ton export_import sont les mêmes c’est normal que l’un moins l’autre fasse zero non ? Je pense que tu te plante de sensor source pour l’un ou l’autre.

1 « J'aime »

Oui, voilà je viens de voir

Merci beaucoup pour ton aide :innocent:

Bonjour,
comme tu débutes, tu devrais partir sur le nouveau format de template. Là, tu utilises l’ancien format.

exemple, nouveau format :

Comme indiqué dans la doc, le nouveau est recommandé. Car un jour l’ancien format sera supprimé et tu devras convertir tout t’est template.

Sinon, tu peux utiliser les templates directement du UI, dans paramètres / appareils et service, onglet entrée.
image

Salut,

Merci pour ton message
Concretement sur mon yaml, il faut que je change une ligne de code ?
Je comprends pas la logique

La tout est écrit dans « sensors.yaml »

Le nouveau format de template est appart, c’est plus dans sensor.yaml.

Il te faut ajouter dans ton configuration.yaml, la ligne:
template: !include template.yaml
tu crées un fichier template.yaml dans le dossier /config ( ou homeassistant sous file editor ).

Et tu colles les templates dans le fichier template.yaml.
exemple:

  - sensor:
      - name: "Average temperature"
        unit_of_measurement: "°C"
        state: >
          {% set bedroom = states('sensor.bedroom_temperature') | float %}
          {% set kitchen = states('sensor.kitchen_temperature') | float %}

          {{ ((bedroom + kitchen) / 2) | round(1, default=0) }}

Attention à la conversion de l’ancien vers le nouveau format, des options ont changé de noms.
ex: value_template: devient state:

une conversion d’un de t’est template comme exemple:
ancien format dans le sensor.yaml:

- platform: template
  sensors:
    home_energy_consumption:
      friendly_name: "Consommation d'énergie de la maison"
      unit_of_measurement: "W"
      value_template: >-
        {% set production = states('sensor.solaredge_ac_power') | float %}
        {% set export_import = states('sensor.solaredge_m1_ac_power') | float %}
        {{ (production - export_import) | round(2) }}

nouveau format dans template.yaml:

  - sensor:
      - name: "Consommation d'énergie de la maison"
        unique_id: home_energy_consumption
        unit_of_measurement: "W"
        state: >
          {% set production = states('sensor.solaredge_ac_power') | float %}
          {% set export_import = states('sensor.solaredge_m1_ac_power') | float %}
          {{ (production - export_import) | round(2) }}

          {{ ((bedroom + kitchen) / 2) | round(1, default=0) }}

Grand grand merci pour tes explications :pray:

Voici le code corrigé, pour la communauté

- sensor:
    - name: "Export d'énergie solaire"
      unit_of_measurement: "W"
      unique_id: solar_energy_export
      state: >-
        {% if states('sensor.solaredge_m1_ac_power') | float > 0 %}
          {{ states('sensor.solaredge_m1_ac_power') | float }}
        {% else %}
          0
        {% endif %}

  
    - name: "Import d'énergie"
      unit_of_measurement: "W"
      unique_id: solar_energy_import
      state : >-
        {% if states('sensor.solaredge_m1_ac_power') | float < 0 %}
          {{ (states('sensor.solaredge_m1_ac_power') | float * -1) }}
        {% else %}
          0
        {% endif %}

    - name: "Consommation d'énergie de la maison"
      unit_of_measurement: "W"
      unique_id: home_energy_consumption
      state: >-
        {% set production = states('sensor.solaredge_ac_power') | float %}
        {% set export_import = states('sensor.solaredge_m1_ac_power') | float %}
        {{ (production - export_import) | round(2) }}

Reste plus qu’à convertir tous mes autres templates

Merci

1 « J'aime »

Salut @WarC0zes

J’ai des lignes dans le fichier « binary_sensors.yaml »

- platform: template
  sensors:
    pergola_rain:
      value_template: "{{ ('%04d' % '{:b}'.format(states.sensor.pergola.attributes['user']|int)|int)[3:4] }}"
      unique_id: "Pergola: fermeture si pluie"
    pergola_suntracking:
      value_template: "{{ ('%04d' % '{:b}'.format(states.sensor.pergola.attributes['user']|int)|int)[2:3] }}"
      unique_id: "Pergola: suivi solaire"
    pergola_shade:
      value_template: "{{ ('%04d' % '{:b}'.format(states.sensor.pergola.attributes['user']|int)|int)[1:2] }}"
      unique_id: "Pergola: ombrage minimum"
    pergola_winter:
      value_template: "{{ ('%04d' % '{:b}'.format(states.sensor.pergola.attributes['user']|int)|int)[0:1] }}"
      unique_id: "Pergola: hivernage"
    pergola_status:
      device_class: connectivity
      value_template: "{{ states.binary_sensor.pergolahttp.state }}"
      unique_id: "pergola"


ça se convertit aussi ça ?
Si oui, comment ?
Merci

Pour les binary_sensor, tu rajoutes - binary_sensor: et les templates sous c’est parti.
Toujours dans le template.yaml.

Exemple :

- sensor:
    - name: "Export d'énergie solaire"
      unit_of_measurement: "W"
      unique_id: solar_energy_export
      state: >-
        {% if states('sensor.solaredge_m1_ac_power') | float > 0 %}
          {{ states('sensor.solaredge_m1_ac_power') | float }}
        {% else %}
          0
        {% endif %}

- binary_sensor:
    - name: "pergola status"
      unique_id: pergola_status
      device_class: connectivity
      state: "{{ states.binary_sensor.pergolahttp.state }}"