utility_meter:
daily_energy:
source: sensor.shelly_compteur_total_active_energy
name: "Consommation Énergie Quotidienne"
cycle: daily
tariffs:
- peak
- offpeak
monthly_energy:
source: sensor.shelly_compteur_total_active_energy
name: "Consommation Énergie Mensuelle"
cycle: monthly
tariffs:
- peak
- offpeak
template:
- sensor:
- name: "Compteur jour (kWh)"
unit_of_measurement: "kWh"
device_class: "energy"
state_class: "total_increasing"
state: >
{% if is_state('select.daily_energy', 'peak') %}
{{ (states('sensor.shelly_compteur_total_active_energy') | float(0) | round(3)) }}
{% else %}
{{ (states('sensor.compteur_jour') | float(0) | round(3)) }} # Ne pas changer la valeur si ce n'est pas un jour peak
{% endif %}
availability: "{{ states('sensor.shelly_compteur_total_active_energy') not in ['none', 'unknown', 'unavailable', 'Inconnu'] }}"
- name: "Compteur nuit (kWh)"
unit_of_measurement: "kWh"
device_class: "energy"
state_class: "total_increasing"
state: >
{% if is_state('select.daily_energy', 'offpeak') %}
{{ (states('sensor.shelly_compteur_total_active_energy') | float(0) | round(3)) }}
{% else %}
{{ (states('sensor.compteur_nuit') | float(0) | round(3)) }} # Ne pas changer la valeur si ce n'est pas un jour offpeak
{% endif %}
availability: "{{ states('sensor.shelly_compteur_total_active_energy') not in ['none', 'unknown', 'unavailable', 'Inconnu'] }}"
[/details]
Les compteurs fonctionnent correctement avec les changements peak et nopeak.
Le problème est le suivant :
Le compteur jour va enregistrer pendant le peak. Lors du changement vers le nopeak, le compteur jour devrait avoir la valeur X et le compteur nuit, une valeur Y. Au changement, c’est la valeur Y qui commence à augmenter et la valeur X qui est figée jusqu’au prochain changement.
Sauf, qu’en réalité, ce qu’il se passe est tout autre.
La valeur X est transférée vers le compteur nuit et continue à augmenter sur le compteur nuit au lieu du jour.
Comment faire pour qu’au changement peak/nopeak, la valeur X du jour se fige et que le compteur nuit reprenne là où il s’était arrêté avec la valeur Y ?
J’espère être clair dans ma demande, sinon, n’hésitez pas à demander plus de précisions.
Merci pour votre aide.
Mon système :
System Information
version
core-2025.5.3
installation_type
Home Assistant OS
dev
false
hassio
true
docker
true
user
root
virtualenv
false
python_version
3.13.3
os_name
Linux
os_version
6.12.23-haos
arch
x86_64
timezone
Europe/Brussels
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.5
Stage
running
Available Repositories
2012
Downloaded Repositories
18
Home Assistant Cloud
logged_in
false
can_reach_cert_server
ok
can_reach_cloud_auth
ok
can_reach_cloud
ok
Home Assistant Supervisor
host_os
Home Assistant OS 15.2
update_channel
stable
supervisor_version
supervisor-2025.05.3
agent_version
1.7.2
docker_version
28.0.4
disk_total
70.2 GB
disk_used
19.7 GB
healthy
true
supported
true
host_connectivity
true
supervisor_connectivity
true
ntp_synchronized
true
virtualization
kvm
board
ova
supervisor_api
ok
version_api
ok
installed_addons
Samba Backup (5.2.0), Studio Code Server (5.19.3), Terminal & SSH (9.17.0), Matter Server (8.0.0), OpenThread Border Router (2.13.0), UniFi Network Application (4.1.0), Node-RED (19.0.2), ESPHome Device Builder (2025.5.2), Cloudflared (5.3.2)
il semble que tu besoin de maintenir l’état des compteurs jour et nuit indépendamment l’un de l’autre, de sorte que lorsque tu passe de « peak » à « offpeak » (ou vice versa), le compteur qui devient inactif conserve sa dernière valeur, tandis que l’autre reprend là où il s’était arrêté.
tu peut utiliser des variables pour stocker les valeurs des compteurs jour et nuit lorsque il change de tarif. tu peut le faire en utilisant des entités input_number pour stocker ces valeurs.
revoir aussi ta structure template , et crée des automatisations pour mettre à jour la valeur du compteur lors du passage de « peak » à « offpeak » (et vice versa)
En effet, dans le scénario actuel, sensor.shelly_compteur_total_active_energy continue à croitre en continu. Du coup, par exemple, si au moment du passage à « offpeak », ce sensor est à 100, tu auras ton compteur jour = 100. Ensuite, tant que tu es en « offpeak », tu peux maintenir ton compteur jour à 100, mais pendant ce teamps, le sensor du Shelly continue à augmenter… du coup, la prochaine fois que ton select.daily_energy repasse à « Peak », ton compteur jour va reprendre la valeur actuelle du Shelly. Je ne panse pas que c’est ce que tu veux.
Une solution serait peut-être de stocker dans ton compteur jour la valeur du shelly en « peak » et la valeur du shelly moins le compteur nuit lorsque tu es « offpeak ». Même chose pour le compteur nuit, qui prendra la valeur du shelly en « offpeak » et la valeur du Shelly mois ne compteur jour pendant les périodes « peak ».
Tu as effectivement compris ce que je voulais faire.
Par contre, peux-tu m’aider dans la réalisation de cette affaire, svp ? Je ne m’y connais pas beaucoup même si je comprend ce que je fais.
input_select: #Utilisé pour basculer entre les tarifs "peak" et "offpeak"
daily_energy:
name: "Tarif Énergie Quotidien"
options:
- peak
- offpeak
initial: peak
input_number: #Utilisé pour stocker les valeurs des compteurs jour et nuit lorsque le tarif change.
compteur_jour_value:
name: "Valeur du compteur jour"
initial: 0
min: 0
max: 100000
step: 0.001
compteur_nuit_value:
name: "Valeur du compteur nuit"
initial: 0
min: 0
max: 100000
step: 0.001
les scripts pour les mise a jours en automations:
alias: Mettre à jour "offpeak"
trigger:
platform: state
entity_id: input_select.daily_energy
to: offpeak
action:
service: input_number.set_value
target:
entity_id: input_number.compteur_jour_value
data:
value: "{{ states('sensor.compteur_jour_kwh') | float(0) }}"
alias: Mettre à jour "peak"
trigger:
platform: state
entity_id: input_select.daily_energy
to: peak
action:
service: input_number.set_value
target:
entity_id: input_number.compteur_nuit_value
data:
value: "{{ states('sensor.compteur_nuit_kwh') | float(0) }}"
avec ça tu devrais obtenir ce que tu cherchais a faire .
Merci mais je pense que cela ne fonctionnera pas dans mon cas car je suis en Belgique et le tarif offpeak fonctionne de 22 à 7h chaque jour de la semaine, de 22h le vendredi au lundi 7h (donc tout le mwe) ainsi que toute la journée des jours fériés.
C’est pour cela que le peak et offpeak sont changé avec Jour de travail.
Bien, j’ai mis tout cela en place.
Comme chaque compteur, qui doivent refléter mon compteur électrique, avait déjà des valeurs, j’ai donc mis une valeur initiale pour le compteur nuit. Cette dernière apparaît bien correctement mais durant la nuit, cette dernière n’a pas changé. Il est vrai que je n’ai pas contrôlé si le système était bien passé en offpeak. Après contrôle des automations, elles n’ont pas changé. Elles n’ont jamais été appliquées.
Par contre, hier soir, j’ai mis la valeur du compteur jour en valeur initiale puisque le compteur était passé en mode nuit. Là aussi, la valeur n’apparaît pas. Pire, ce matin, elle repartait de zéro.
Qu’est-ce qui cloche ?
Pour @Tochy, sorry mais je ne vois pas comment mettre les triggers correctement vu la complexité des changement chez moi. C’est donc, comme je l’ai dit plus haut, le service ‹ jour de travail › qui régit cela.
Ils ne sont pas si complexe que ça tes changements. Il faut juste chercher un peu comment on pourrai faire.
A 22h on passe en heures creuses
A 7h on passe en heures pleines si ce n’est pas le week end ou un jour férié sinon on reste en heures creuses
Il faut donc créer un trigger qui respectent ces conditions.
1- On crée un input_boolean (input_boolean.trigger_hp_hc) qui servira de trigger pour l’automatisation donnée dans la doc
2- On crée une automatisation qui change l’état de cet input_boolean en fonction des conditions énoncées au dessus :
automation:
triggers:
- trigger: state
entity_id:
- input_boolean.trigger_hp_hc
to: "on"
variables:
tariff: "peak"
- trigger: state
entity_id:
- input_boolean.trigger_hp_hc
to: "off"
variables:
tariff: "offpeak"
actions:
- action: select.select_option
target:
entity_id: select.daily_energy
data:
option: "{{ tariff }}"
J’ai pas testé bien sur mais il n’y a aucune raison que ça ne fonctionne pas.
Quand input_boolean.trigger_hp_hc sera activé on passera en HP et quand il sera désactivé au basculera en HC