Bonjour,
J’ai un template qui me sert a calculer ma consommation d’electricité en euros (merci a l’auteur de ce tuto : Redirecting...). Elle est plutôt efficace car je n’ai que quelques centimes de difference par rapport au module Energy de HA.
Mais le problème est que régulièrement au reboot de HA cette entité double ou atteint une valeur que je ne comprend pas.
Ma configuration
[center]## System Information
version |
core-2024.11.3 |
installation_type |
Home Assistant OS |
dev |
false |
hassio |
true |
docker |
true |
user |
root |
virtualenv |
false |
python_version |
3.12.4 |
os_name |
Linux |
os_version |
6.6.54-haos |
arch |
x86_64 |
timezone |
Europe/Paris |
config_dir |
/config |
Home Assistant Community Store
GitHub API |
ok |
GitHub Content |
ok |
GitHub Web |
ok |
HACS Data |
ok |
GitHub API Calls Remaining |
5000 |
Installed Version |
2.0.1 |
Stage |
running |
Available Repositories |
1548 |
Downloaded Repositories |
57 |
Home Assistant Cloud
logged_in |
true |
subscription_expiration |
11 novembre 2025 à 01:00 |
relayer_connected |
true |
relayer_region |
eu-central-1 |
remote_enabled |
true |
remote_connected |
true |
alexa_enabled |
true |
google_enabled |
false |
cloud_ice_servers_enabled |
true |
remote_server |
eu-central-1-15.ui.nabu.casa |
certificate_status |
ready |
instance_id |
015be20c62b34338a102a0c8ef176524 |
can_reach_cert_server |
ok |
can_reach_cloud_auth |
ok |
can_reach_cloud |
ok |
Home Assistant Supervisor
host_os |
Home Assistant OS 13.2 |
update_channel |
stable |
supervisor_version |
supervisor-2024.11.4 |
agent_version |
1.6.0 |
docker_version |
27.2.0 |
disk_total |
468.7 GB |
disk_used |
26.0 GB |
healthy |
true |
supported |
true |
host_connectivity |
true |
supervisor_connectivity |
true |
ntp_synchronized |
true |
virtualization |
|
board |
generic-x86-64 |
supervisor_api |
ok |
version_api |
ok |
installed_addons |
Terminal & SSH (9.15.0), Samba share (12.3.2), File editor (5.8.0), Zigbee2MQTT (1.42.0-2), Mosquitto broker (6.4.1), Samba Backup (5.2.0), SAIC MQTT Gateway (Python) (0.6.3), ESPHome Device Compiler (2024.11.2) |
Dashboards
dashboards |
4 |
resources |
40 |
views |
46 |
mode |
storage |
Recorder
oldest_recorder_run |
24 novembre 2024 à 10:20 |
current_recorder_run |
3 décembre 2024 à 02:48 |
estimated_db_size |
1997.13 MiB |
database_engine |
sqlite |
database_version |
3.45.3 |
Xiaomi Miot Auto
component_version |
0.7.25 |
can_reach_server |
ok |
can_reach_spec |
ok |
logged_accounts |
0 |
total_devices |
0 |
[/center]
Bonjour,
il faudrait nous montrer ton template. Je n’ai pas Facebook !
Un exemple:
- name: 'Energie PC mois € hp+hc'
unique_id: energy_pc_cout_mois
unit_of_measurement: "€"
state: "{{ (((states('sensor.energie_mensuelle_pc_hp')|float(0))*states('input_number.box_prix_hp')|float(0)) + ((states('sensor.energie_mensuelle_pc_hc')|float(0))*states('input_number.box_prix_hc')|float(0))) |round(3) }}"
availability: "{{ states('sensor.energie_mensuelle_pc_hp')|is_number and states('sensor.energie_mensuelle_pc_hc')|is_number and states('input_number.box_prix_hp')|is_number and states('input_number.box_prix_hc')|is_number }}"
Il te faudrait utiliser l’option availability, pour éviter ce genre de problème.
Le voici :
{% set hp = states('sensor.consommation_edf_hp') | float(default=0) | round(2) %}
{% set hc = states('sensor.consommation_edf_hc') | float(default=0) | round(2) %}
{% set chp = states('input_number.prix_achat_heures_pleines') | float(default=0) | round(5) %}
{% set chc = states('input_number.prix_achat_heures_creuses') | float(default=0) | round(5) %}
{% set abo = states('sensor.cout_abonnement_edf_journalier_2_cost') | float(default=0) | round(5) %}
{{((hc*chc) + (hp*chp) + (abo)) | round(2) }}
Merci.
Il te faudrait adapter ton template pour vérifier si l’entité est unknow ou unavailable.3
{% if states('sensor.other') in ('unknown','unavailable') %}
{{ None }}
{% else %}
{{ states('sensor.other') }}
{% endif %}
Merci j’essayerais de rajouter cette ligne à la fin.
Du coup j’ai recreer mon code directement en yaml dans file editor et je le verifie avec modele mais d’ou viens le « NONE » ?
- sensor:
- name: cout energy total jour HPHC
unit_of_measurement: €
state_class: total_increasing
unique_id: cout_energy_total_jour_hphc
state: >-
{% set hp = states('sensor.consommation_edf_hp') | float(default=0) | round(2) %}
{% set hc = states('sensor.consommation_edf_hc') | float(default=0) | round(2) %}
{% set chp = states('input_number.prix_achat_heures_pleines') | float(default=0) | round(5) %}
{% set chc = states('input_number.prix_achat_heures_creuses') | float(default=0) | round(5) %}
{% set abo = states('sensor.cout_abonnement_edf_journalier_2_cost') | float(default=0) | round(5) %}
{{((hc*chc) + (hp*chp) + (abo)) | round(2) }}
{% if states('sensor.cout_energy_total_jour_hphc') in ('unknown','unavailable') %}
{{ None }}
{% else %}
{{ states('sensor.cout_energy_total_jour_hphc') }}
{% endif %}
et l’entité est a inconnu :
Je ne comprend pas ou est mon erreur
Merci.
Par template en YAML, utilise availability:
. ta juste a mettre les entités que tu utilises dans le template. Quand tu reboot, les entités peuvent mettre du temps avant d’afficher la bonne valeur, avec availability
, ca evite ce souci.
availability: "{{ states('sensor.energie_mensuelle_pc_hp')|is_number and states('sensor.energie_mensuelle_pc_hc')|is_number and states('input_number.box_prix_hp')|is_number and states('input_number.box_prix_hc')|is_number }}"
supprime ce code:
{% if states('sensor.cout_energy_total_jour_hphc') in ('unknown','unavailable') %}
{{ None }}
{% else %}
{{ states('sensor.cout_energy_total_jour_hphc') }}
{% endif %}
Du coup
- sensor:
- name: cout energy total jour HPHC
unit_of_measurement: "€"
state_class: total_increasing
unique_id: cout_energy_total_jour_hphc
state: >-
{% set hp = states('sensor.consommation_edf_hp') | float(default=0) | round(2) %}
{% set hc = states('sensor.consommation_edf_hc') | float(default=0) | round(2) %}
{% set chp = states('input_number.prix_achat_heures_pleines') | float(default=0) | round(5) %}
{% set chc = states('input_number.prix_achat_heures_creuses') | float(default=0) | round(5) %}
{% set abo = states('sensor.cout_abonnement_edf_journalier_2_cost') | float(default=0) | round(5) %}
{{((hc*chc) + (hp*chp) + (abo)) | round(2) }}
availability: "{{ states('sensor.energie_mensuelle_pc_hp')|is_number and states('sensor.energie_mensuelle_pc_hc')|is_number and states('input_number.box_prix_hp')|is_number and states('input_number.box_prix_hc')|is_number }}"
Du coup je suis en false, normale ?
oui, tu utilises met entité, il faut les changer par les tiennes dans availability 
je t’ai fait le code 
availability: "{{ states('sensor.consommation_edf_hp')|is_number and states('sensor.consommation_edf_hc')|is_number and states('input_number.prix_achat_heures_pleines')|is_number and states('input_number.prix_achat_heures_creuses')|is_number and states('sensor.cout_abonnement_edf_journalier_2_cost')|is_number }}"
Ha l’idiot 
En tout merci de ton aide. Je vais laisser passer quelques jours pour voir comment cela évolue.
1 « J'aime »
Je viens d’apprendre le availability
qui m’a tellement manqué tout ce temps. Ca simplifie de beaucoup les templates.
Merci @WarC0zes
1 « J'aime »
Moi aussi j’en apprend tout les jours avec Home Assistant 