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é
Tochy
Septembre 28, 2024, 9:21
2
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
Tochy
Septembre 28, 2024, 9:54
4
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
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.
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) }}
Chris73
Septembre 29, 2024, 10:07
9
Grand grand merci pour tes explications
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 }}"