Bonjour à tous et meilleurs vœux 2025,
Voici ma solution pour suivre en permanence sa facture d’électricité et ne plus être surpris (désagréablement) par sa facture d’énergie.
J’ai tenté de faire simple et facile, à la portée de tous.
Il s’agit de faire trois copié/collé afin d’avoir sa facture d’électricité dynamique sur son dashboard.
PRE-REQUIS : il vous faut un capteur sur votre compteur d’électricité afin de recueillir en temps réel les index de consommation.
Dans mon cas, j’ai un module filaire de Teleinformation Cartelectronique qui me fournit les entités Heures Creuses et Heures Pleines. Si vous avez un abonnement Tempo ou autre, il faudra adapter les variables.
Principe :
A la réception de la facture d’électricité, on repart sur une nouvelle période de facturation.
Il faut donc modifier la valeur (ligne initial: ) des input_number, entités déclarées dans configuration.yaml :
- Index HP et HC : Il s’agit des index retenus pour clôturer votre dernière facture et donc
débuter la nouvelle - Tarifs HP et HC : le côut TTC du kWh facturé
- Tarif abonnement mensuel : L’abonnement mensuel TTC
- Date de la dernière facture : Format YYY-MM-DD
C’est parti !
Tout d’abord, si ce n’est déja fait, je vous conseille, pour plus de clarté, de créer un fichier template.yaml dans /homeassistant et de placer la ligne suivante dans le fichier configuration.yaml :
template: !include template.yaml
Insérer le code suivant dans votre fichier template.yaml :
Remplacer avant tout les deux entités
sensor.teleinfo_022164498820_hchc
sensor.teleinfo_022164498820_hchp
par vos entités provenant de votre module de téléinfo
#
# Facture électricité dynamique
# @nissa33 12/2024
#
# Code à insérer dans template.yaml
# On retire ici du compteur HC/HP les index HP/HC de la dernière facture
# Heures Creuses
#
- sensor:
- name: hc_sur_facture_en_cours
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
state: >
{% set temp = states('sensor.teleinfo_022164498820_hchc') | round(default=0) %}
{% set temp2 = states('input_number.dernier_index_hc') | round(default=0) %}
{{ (temp / 1000) - temp2 | round(default=0) }}
#
# Heures Pleines
- sensor:
- name: hp_sur_facture_en_cours
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
state: >
{% set temp = states('sensor.teleinfo_022164498820_hchp') | round(default=0) %}
{% set temp2 = states('input_number.dernier_index_hp') | round(default=0) %}
{{ (temp / 1000) - temp2 | round(default=0) }}
#
# Calcul du montant des HP et HC
# Montant HC
#
- sensor:
- name: montant_hc_sur_facture_en_cours
unit_of_measurement: "€"
state_class: total_increasing
state: >
{{ states('sensor.hc_sur_facture_en_cours') | round(0) * states('input_number.tarif_heures_creuses') | round(4) | round(4) }}
# Montant HP
#
- sensor:
- name: montant_hp_sur_facture_en_cours
unit_of_measurement: "€"
state_class: total_increasing
state: >
{{ states('sensor.hp_sur_facture_en_cours') | round(0) * states('input_number.tarif_heures_pleines') | round(4) | round(4) }}
#
# Calcul nombre de mois d'abo
#
- sensor:
- name: nombre_mois_abo
unit_of_measurement: "mois"
state: >
{% set date = states('input_datetime.date_derniere_facture') %}
{% set date = strptime(date, '%Y-%m-%d') %}
{% set today = now() %}
{{ today.year*12+today.month - (date.year*12+date.month) }}
#
# Montant abonnement en cours
#
- sensor:
- name: montant_abo_sur_facture_en_cours
unit_of_measurement: "€"
state_class: total_increasing
state: >
{% set temp = states('sensor.nombre_mois_abo') | round(default=0) %}
{% set temp2 = states('input_number.abonnement_mensuel_electicite') | float(default=2) %}
{{ (temp2 * temp) | float(default=2) }}
# Montant total HP + HC + Abonnement
- sensor:
- name: total_facture_electrique
unit_of_measurement: "€"
state_class: total_increasing
state: >
{% set temp = states('sensor.montant_hc_sur_facture_en_cours') | float(default=2) %}
{% set temp2 = states('sensor.montant_hp_sur_facture_en_cours') | float(default=2) %}
{% set temp3 = states('sensor.montant_abo_sur_facture_en_cours') | float(default=2) %}
{{ (temp + temp2 + temp3) | float(default=2) }}
Insérer le code suivant dans votre fichier configuration.yaml :
#
# Facture électricité dynamique
# @nissa33 12/2024
#
# Code à insérer dans configuration.yaml
# Entités à valeur fixe
# saisir les nouvelles données (ligne initial: )
# A MODIFIER uniquement à réception de la facture annuelle d'électricité,
#
input_number:
# Indexs figurants sur la dernière facture
dernier_index_hc:
name: Index Heures creuses
initial: 10145
max: 999999
min: 0
unit_of_measurement: kWh
#
dernier_index_hp:
name: Index heures pleines
initial: 10279
max: 999999
min: 0
unit_of_measurement: kWh
#
# Tarifs TTC : Attention pas de virgule, mais un point
#
tarif_heures_creuses:
name: Tarif heures creuses
initial: 0.1656
max: 99
min: 0.0001
unit_of_measurement: "€"
#
tarif_heures_pleines:
name: Tarif heures pleines
initial: 0.2288
max: 99
min: 0.0001
unit_of_measurement: "€"
#
# Cout mensuel TTC de l'abonnement
#
abonnement_mensuel_electicite:
name: Abonnement electrique mensuel
initial: 20.13
max: 99999
min: 0
unit_of_measurement: "€"
#
# Date : format YYYY-MM-DD
#
input_datetime:
date_derniere_facture:
name: Date derniere facture electricite
has_date: true
initial: 2024-06-22
#
Recharger sa configuration YAML (Outils de développement / Toute la configuration YAML)
Insérer le code suivant sur votre dashboard :
type: custom:vertical-stack-in-card
cards:
- type: custom:text-divider-row
text: Ma facture d'électricté dynamique
align: center
- type: entities
entities:
- entity: sensor.hc_sur_facture_en_cours
type: custom:multiple-entity-row
name: Heures Creuses
icon: mdi:hours-12
show_state: false
entities:
- entity: sensor.hc_sur_facture_en_cours
name: false
format: precision0
styles:
color: blue
- entity: sensor.montant_hc_sur_facture_en_cours
name: false
format: precision2
styles:
color: red
- entity: sensor.hp_sur_facture_en_cours
type: custom:multiple-entity-row
name: Heures Pleines
icon: mdi:hours-24
show_state: false
entities:
- entity: sensor.hp_sur_facture_en_cours
name: false
format: precision0
styles:
color: blue
- entity: sensor.montant_hp_sur_facture_en_cours
name: false
format: precision2
styles:
color: red
- entity: sensor.montant_abo_sur_facture_en_cours
type: custom:multiple-entity-row
name: Abonnement
icon: mdi:currency-eur
show_state: false
entities:
- entity: sensor.nombre_mois_abo
name: false
format: precision0
styles:
color: blue
- entity: sensor.montant_abo_sur_facture_en_cours
name: false
format: precision2
styles:
color: red
- entity: sensor.total_facture_electrique
type: custom:multiple-entity-row
name: Total
icon: mdi:currency-eur
show_state: false
entities:
- entity: sensor.total_facture_electrique
name: false
format: precision2
card_mod:
style: |
:host {
--mdc-icon-size: 20px;
color:black;
}
card_mod:
style: |
.card-content div {
margin-top: 0px !important;
margin-bottom: 0px !important;
}
ha-card {
margin-top: -25px;
background: transparent;
}
Voilà c’est terminé, merci de me faire part de vos remarques.
A+