Contents
Intro
Le comptage d’énergie est souvent évoqué sur les réseaux sociaux, qu’il s’agisse de kWh ou autres grandeurs physiques et semble être l’objet d’interrogations récurrentes.
Récemment HA, dans sa version 2022-04 a ajouté des intégrations directement configurables depuis l’interface utilisateur, simplifiant de fait leur déclaration, c’est ce que je vous invite à découvrir dans cet article. J’ai déjà abordé le sujet avec l’intégration « entrées threshold » dans cet article .
Un des avantages est qu’il n’est besoin de rebooter le système pour leur prise en compte.
Un des inconvénients, est qu’une fois créé et c’est regrettable, tous les paramètres ne sont pas modifiables et à ma connaissance la seul solution est de les supprimer puis de recréer une entité avec le même nom, de fait vous ne perdrez pas l’historique.
Conversion de la puissance en énergie
Comme pré requis il faut commencer par déclarer l’entité que vous souhaitez comptabiliser. En général nous nous intéressons au kWh mais c’est également valable pour des m3 d’eau ou de gaz.
Rappelons qu’un kilo watt heure correspond à une consommation de 1000 W ou 1 kW pendant 1 heure, il s’agit d’une énergie et non d’une puissance. Si votre capteur fournit uniquement une puissance en W ou kW, vous devez convertir la convertir en Wh ou kWh avec l’une des deux méthodes suivantes:
Methode de Riemann
HA dispose d’une intégration « intégration par le méthode de Riemann » configurable depuis une interface utilisateur.
Pour cela vous allez dans « paramètres/appareils et service/entrées » puis « Ajouter un capteur d’intégrale de Riemann ».
Vous saisissez:
- le nom que vous souhaitez donner à l’entité
- le capteur qui vous délivre des W.
- la méthode de calcul de l’intégrale:
- Trapézoïdal si la grandeur physique mesurée évolue régulièrement dans le temps.
- Left ou right si votre grandeur évolue avec des alternance de pics de puissance et de valeurs plus faibles voir nulles, une machine à laver par exemple.
- la précision
- le préfixe métrique (k en général)
- l’unité de temps (h en général).
HA définit automatiquement les attributs de l’entité indispensable à sa classification (state_class, device_class,..)
Autre méthode de calcul
Vous trouverez dans ce lien, un script python, qui d’après l’auteur calcule plus précisément les kWh,. J’ai testé, il fonctionne, mais plus compliqué à mettre en oeuvre, perso je ne cours pas après le kWh au 100 eme pret.
Configuration des compteurs de service.
Votre entité en kWh (ou Wh) est maintenant créée, vous pouvez configurer votre compteur de service via une interface utilisateur.
Pour ce faire, allez dans « paramètres/appareils et service/entrées », puis ajouter « un compteur de services publics (eau, gaz, électricité…) ».
Vous saisissez:
- le nom que vous souhaitez donner à l’entité
- le capteur que vous souhaitez comptabiliser (celui calculé avec l’intégrale de rieuman par ex)
- le cycle de remise à zéro (15 mn, heure, semaine,mois,..)
- le décalage de remise à zéro (laisser zéro par défaut sauf cas particulier)
- les tarifs pris en charge, laisser vide si un seul tarif, sinon saisissez « hc » et hp » par exemple, ceux sont ces tarifs que vous utiliserez dans l’automatisme.
- cocher « consommation nette » si la valeur évolue en positif/négatif
- cocher « valeur delta » si les valeurs de la source sont des valeurs delta depuis la dernière lecture au lieu de valeurs absolues, Lorsque cette option est activée, chaque nouvelle valeur reçue sera ajoutée telle quelle au compteur au lieu d’ajouter la différence entre la nouvelle valeur et la valeur précédente. Par exemple, vous devez l’activer lorsque le capteur source renvoie des lectures telles que « 1 », « 0,5 », « 0,75 » contre « 1 », « 1,5 », « 2,25 »
Vous obtiendrez des informations complémentaires sur « utility meter » dans ce lien.
HA définit automatiquement les attributs de l’entité indispensable à sa classification (state_class, device_class,..)
A noter que vous devez déclarer autant de compteur que de cycles de remise à zéro (jour, semaine, mois année, ..) nécessaires.
Exploitation des compteurs
Une fois créé, HA ajoute une entité par compteur, par ex « linky » et, si vous les avez déclaré, une entité supplémentaire par tarif , « linky_hc » et « linky_hp ».
Si vous avez un seul tarif, vous n’avez rien à faire de plus, votre compteur sera remis à zéro en fonction de votre unité de temps (jour, semaine,..).
Si vous avez un double tarif, vous devez indiquer au compteur quel tarif est en cours, pour ce faire vous pouvez utiliser un automatisme.
Les déclencheurs peuvent être des plages horaires ou encore mieux le tarif en cours dans votre linky par exemple.
Selon une plage horaire fixe
Il faut créer un automatisme:
Les options « hc » et « hp » correspondent à celles que vous avez déclarées dans le compteur de service.
alias: 6_1_0 Energie Changement HP<->HC (Dupliquer)
description: ''
trigger:
- platform: time
id: tarif_hc
at: '01:00:00'
- platform: time
id: tarif_hp
at: '02:00:00'
condition: []
action:
- choose:
- conditions:
- condition: trigger
id: tarif_hc
sequence:
- service: select.select_option
data:
option: hc
target:
entity_id:
- select.linky_energie_jour
- conditions:
- condition: trigger
id: tarif_hp
sequence:
- service: select.select_option
data:
option: hp
target:
entity_id:
- select.linky_energie_jour
default: []
mode: single
Si vous avez déclaré plusieurs compteurs avec les mêmes tarifs, vous les ajoutez les entités dans les « target: entity_id ».
Selon plusieurs plages horaires fixes
alias: 6_1_0 Energie Changement HP<->HC (Dupliquer)
description: ''
trigger:
- platform: time
id: tarif_hc1
at: '01:00:00'
- platform: time
id: tarif_hp2
at: '02:00:00'
- platform: time
at: '05:00:00'
id: tarif_hc2
- platform: time
at: '06:00:00'
id: tarif_hp2
condition: []
action:
- choose:
- conditions:
- condition: trigger
id: tarif_hc1
- condition: trigger
id: tarif_hc2
sequence:
- service: select.select_option
data:
option: hc
target:
entity_id:
- select.linky_energie_jour
- select.linky_energie_mois
- conditions:
- condition: trigger
id: tarif_hp1
- condition: trigger
id: tarif_hp2
sequence:
- service: select.select_option
data:
option: hp
target:
entity_id:
- select.linky_energie_jour
- select.linky_energie_mois
default: []
mode: single
Selon une plage horaire paramétrable
Commencer par créer le deux « input_datetime » qui vont définir le début et la fin de la plage horaire des heures creuses.
Pour ce faire, allez dans « paramètres/appareils et service/entrées », puis ajouter « une date et/ou heure »:
Saisir
- Le nom de l’entité que vous souhaitez
- Cocher « heure »
J’ai ainsi créé deux entités:
- input_datetime.debut_heure_creuse
- input_datetime.fin_heure_creuse
que l’on va pouvoir exploiter dans un automatisme:
Les options « hc » et « hp » correspondent à celles que vous avez déclarées dans le compteur de service.
Si vous avez déclaré plusieurs compteurs avec les mêmes tarifs, vous ajoutez les entités dans les « target: entity_id ».
alias: 6_1_0 Energie Changement HP<->HC
description: ''
trigger:
- platform: time
id: tarif_hc
at: input_datetime.debut_heure_creuse
- platform: time
id: tarif_hp
at: input_datetime.fin_heure_creuse
condition: []
action:
- choose:
- conditions:
- condition: trigger
id: tarif_hc
sequence:
- service: select.select_option
data:
option: hc
target:
entity_id:
- select.linky_energie_jour
- conditions:
- condition: trigger
id: tarif_hp
sequence:
- service: select.select_option
data:
option: hp
target:
entity_id:
- select.linky_energie_jour
default: []
mode: single
Avec l’information HP/HC du Linky
L’automatisme est déclenché par une information délivrée par le Linky, qui, rappelons le, peux fonctionner sous 2 modes:
- En mode historique (mode par défaut):
- voir mon article https://domo.rem81.com/index.php/2022/01/03/ha-teleinformation-linky-mode-historique/
- C’est le « sensor.linky_ptec » qui prend la valeur « HC.. » ou « HP.. » et qu’il faut tester
- En mode standard (en faire la demande au fournisseur d’énergie)
- https://domo.rem81.com/index.php/2022/01/12/ha-teleinformation-linky-mode-standard/
- C’est le « sensor.linky_n_tarif » qui prend la valeur 1 en HC et 2 en HP.
- Il peut également valoir 3 et plus selon votre abonnement tarifaire auprès de votre fournisseur d’énergie.
Les options « hc » et « hp » correspondent à celles que vous avez déclarées dans le compteur de service
Si vous avez déclaré plusieurs compteurs avec les mêmes tarifs, vous ajoutez les entités dans les « target: entity_id ».
alias: 6_1_0 Energie Changement HP<->HC
description: ''
trigger:
- platform: state
entity_id: sensor.linky_n_tarif
id: tarif_hc
from: '2'
to: '1'
- platform: state
entity_id: sensor.linky_n_tarif
from: '1'
id: tarif_hp
to: '2'
condition: []
action:
- choose:
- conditions:
- condition: trigger
id: tarif_hc
sequence:
- service: select.select_option
data:
option: hc
target:
entity_id:
- select.linky_energie_jour
- conditions:
- condition: trigger
id: tarif_hp
sequence:
- service: select.select_option
data:
option: hp
target:
entity_id:
- select.linky_energie_jour
default: []
mode: single
Calcul du cout de l’énergie
Il faut commencer par créer deux inputs permettant des saisir le prix du kWh HP et HC
input_number:
# Calcul des coûts journaliers
cout_kwh_hp:
name: Cout du Kwh HP
min: 0
max: 10
unit_of_measurement: €
icon: mdi:currency-eur
step: 0.00001
mode: box
cout_kwh_hc:
name: Cout du Kwh HC
min: 0
max: 10
unit_of_measurement: €
icon: mdi:currency-eur
step: 0.00001
mode: box
Puis utiliser trois templates pour le calcul: HP+HC, HP, HC.
template:
- sensor:
# Cout de l'Energie
- name: "Cout Energy Total Jour HPHC"
state: >-
{% set hp = states('sensor.energy_total_usage_daily_hp') | float(default=0) | round(2) %}
{% set hc = states('sensor.energy_total_usage_daily_hc') | float(default=0) | round(2) %}
{% set chp = states('input_number.cout_kwh_hp') | float(default=0) | round(5) %}
{% set chc = states('input_number.cout_kwh_hc') | float(default=0) | round(5) %}
{{((hc*chc) + (hp*chp)) | round(2) }}
unit_of_measurement: "€"
device_class: "monetary"
state_class: "total"
unique_id: "cout_energy_total_jour_hphc"
- name: "Cout Energy Total Jour HP"
state: >-
{% set hp = states('sensor.energy_total_usage_daily_hp') | float(default=0) | round(2) %}
{% set chp = states('input_number.cout_kwh_hp') | float(default=0) | round(5) %}
{{(hp*chp) | round(2) }}
unit_of_measurement: "€"
device_class: "monetary"
state_class: "total"
unique_id: "cout_energy_total_jour_hp"
- name: "Cout Energy Total Jour HC"
state: >-
{% set hc = states('sensor.energy_total_usage_daily_hc') | float(default=0) | round(2) %}
{% set chc = states('input_number.cout_kwh_hc') | float(default=0) | round(5) %}
{{(hc*chc) | round(2) }}
unit_of_measurement: "€"
device_class: "monetary"
state_class: "total"
unique_id: "cout_energy_total_jour_hc"
Tableau de bord
Exemple avec l’excellente intégration « mini-graph-card » disponible dans HACS.
type: custom:mini-graph-card
entities:
- entity: sensor.linky_energie_jour_hp
name: HP
show_state: true
- entity: sensor.linky_energie_jour_hc
name: HC
show_state: true
name: Conso Linky 7j
hours_to_show: 168
aggregate_func: max
group_by: date
show:
graph: bar
icon: mdi:flash
Vous trouverez d’autres exemples dans mon article https://domo.rem81.com/index.php/2022/01/12/ha-teleinformation-linky-mode-standard/.
Conclusion
Tuto tout simple qui, je l’espère, vous aidera à définir vos compteurs.
Approche intéressant (sympa l’application de l’intégrale de Riemann, ça montre comment HA est complet).
Dans mon cas, j’ai tenté ma chance avec la clé Linky_TIC et les panneaux ‘énergie’ de HA, mais pas de bol : ça ne marche pas bien avec ZHA.
Bonjour, merci pour ton retour. J’utilise aussi ZHA avec quelques capteurs SONOF, ça marche pas trop mal, ça dépend beaucoup de la stabilité du WIFI c’est pourquoi quand je peux je mets du fil, c’est moins pratique à mettre en oeuvre souvent plus chère mais une fois en fonctionnement on y revient pas.
J’ai suivi cet article avec intérêt. Je débute avec Home assistant et j’ai du mal à tout comprendre. J’ai une pince ampèremètre owl cm180 que j’utilisais avant sous domoticz. Je l’ai mise sur mon jacuzzi pour savoir combien cette petite folie me coûte 🙂
Elle me renvoie 2 données : une en watts « instantané » et une en kilowatts « cumulés ». Je suis parti sur ce deuxième sensor. J’ai donc sauté le paragraphe relatif à la méthode de Rieman puisque j’ai déjà un sensor en KwH (heureusement sinon on m’aurait définitivement perdu)
J’ai donc créé un compteur spa_journalier et un compteur spa_mensuel. Puis j’ai créé l’automatisme « selon une plage horaire paramétrable ». J’ai renseigné le début de mes heures creuses à 22h et la fin à 06h.
Ce que je ne comprends pas trop c’est la suite maintenant. Ou je renseigne mes prix HC et HP ? Et où est ce que je peux voir les données extraites ? Merci
Bonjour, j’ai ajouté le mode de calcul des coûts dans l’article. Lorsque que tu as créé tes utili-meter tu retrouve deux entités (par exemple: « sensor.linky_energie_jour_hc » pour les HC et « sensor.linky_energie_jour_hp » pour les HP) et cela pour le journalier et autant pour le mensuel: donc quatre sensors. C’est ces sensors qu’ils faut exploiter voir « tableau de bord » dans mon article ou tu retrouve les deux entités. Pour le calcul des coûts, c’est pareil il faut exploiter ces sensors. J’espère avoir répondu à ta question. cdlt
Hello, merci à toi ! Je n’arrive pas a adapter ton tuto pour avoir la consommation de prise electrique individuel à la place du linky. je voudrais calculer les cout individuellement pour chaque prise mais je ne comprend pas la logique. Je récupère bien les infos en KWh de mes prises, mais le cout n’évolue pas. J’ai rempli le prix des cout dans l’état des entités, mais je pas sur que ce soit la qu’il faille aller ! Tu peux m’éclairer sur la marche à suivre pour avoir les conso individuel de chaqune de mes prises, sachant que je récupère bien les valeures nécessaire
Bonsoir, je comprends pas ton problème, as tu crée les utility-meter par prise ?, as tu crée les templates qui multiplie le coup par le utility-meter ? Regarde le commentaire précédent pour info.
Bonsoir,
tout d’abord merci pour ce travail !
J’ai un petit soucis avec le code de cet article pour l’adapter à mes besoins.
J’ai une clé Lixee ZLinky qui me remonte bien mes valeurs de compteur HC et HP avec laquelle j’obtiens bien des données différenciées HC HP selon les périodicités que j’ai déclaré pour chacun de mes compteurs.
Je peux aussi obtenir le mode en court via la téléinfo en mode historique hp.. ou hc…
Cependant pour mes autres prises connecté NOUS qui disposent que d’un unique compteur d’energie en Kwh .
J’ai bien compris le code que je dois adapter et à peu prés comment,
Mais j’ai une information essentiel qui me manque c’est sur quel fichier écrire ce code qui fait le switch de tarif hc ou hp pour changer le compteur de cumul.
ça parait bête, mais je ne trouve pas.
Peut être un automation.yaml ou autre.
Est-ce qu’il est possible de le préciser ?
Merci pour tous.
Samuel
bonjour
Il faut creer un compteur de service avec ton sensor en kwh, voir chapitre « configuration des compteurs de service » puis activer le cumul HC ou HP en creant un automatisme comme décrit au chapitre « Exploitation des compteurs » « avec l’exploitation HP/HC du linky » en adaptant le « sensor.linky_n_tarif » avec le sensor qui te donne le tarif en cours et le id target « select.linky_energie_jour » avec ton ou tes compteurs de service » (tu peux en mettre plusieurs en parallèle), j’espère avoir été clair, bonne continuation.