Forum KNX francophone / English KNX forum
Comptage energie - Version imprimable

+- Forum KNX francophone / English KNX forum (https://www.knx-fr.com)
+-- Forum : Français (https://www.knx-fr.com/forumdisplay.php?fid=3)
+--- Forum : Matériel KNX (https://www.knx-fr.com/forumdisplay.php?fid=5)
+--- Sujet : Comptage energie (/showthread.php?tid=6731)

Pages : 1 2 3 4 5 6 7


RE: Comptage energie - Ives - 23/03/2024

(23/03/2024, 11:07:44)XeNo a écrit : Même si je ne suis pas @aureOhwo , voici quelques éléments de réponses pour commencer !  Smile
 
Je vois bien sur la droite le sous flux mais comment l'afficher ?
Dans la barre de gauche de Node-Red il y les nœuds avec une rubrique sous-flux, il suffit de double cliquer sur le sous-flux pour l'afficher dans un onglet.

Il manque aussi un type d'élements visiblement à l'import "knxUltimate"
Dans Node-Red, il faut cliquer sur le pictogramme en haut à droite (3 petites barres horizontales), sélectionner "Gérer la palette" puis à partir de l'onglet "installer" , installer "node-red-contrib-knx-ultimate"


 tu parles d'input_number, cela se place à quel endroit ? je n'ai jamais utilisé ce type dans les fichiers yaml
Dans HA, tu vas dans paramètres/Appareils et Services/ Entrée et tu ajoutes des entrées de type "Nombre"

Ensuite tu parles de sensor. Je vois le terme template donc ca c'est ok, je le place dans sensor.yaml
Les sensors "index" apparaitront dans HA dès qu'ils auront été créés dans Node-Red. Il reste dans le yaml à créer ceux des totaux.

Par contre tu parles ensuite d'automation globale ? kasako ?
Le terme actuel dans HA est automatisation à créer depuis Paramètres/Automatisations et scènes soit avec l'assistant, soit en yaml (ou un mixte des deux)



RE: Comptage energie - aureOhwo - 23/03/2024

(23/03/2024, 12:14:07)Ives a écrit : Merci pour la précision.
Dans le code suivant il n'y a pas de "*" devant et/ou derrière "energie" ; il trouve quelque soit la position du mot "energie" dans le nom de l'entité ?

target:
    entity_id: >
      {{ states.select | selectattr('name','search','energie') |
      map(attribute='entity_id') | list }}

Oui ça marche sans avoir besoin de caractère "joker" 

Tu peux tester dans Outils de développement > Modèle pour voir si ça fonctionne chez toi aussi et adapter si nécessaire Smile


RE: Comptage energie - aureOhwo - 23/03/2024

@Xeno : je te conseille de lire cet article ou tout est correctement expliqué (hormis la partie Node Red mais avec les réponses d'Ives ca devrait le faire) : https://www.canaletto.fr/post/home-assistant-and-energie


RE: Comptage energie - Ives - 23/03/2024

(23/03/2024, 14:00:17)aureOhwo a écrit : Tu peux tester dans Outils de développement > Modèle pour voir si ça fonctionne chez toi aussi et adapter si nécessaire Smile

As-tu trouvé une astuce pour simuler une période tarifaire autre que celle en cours afin de faire des tests ?


RE: Comptage energie - aureOhwo - 24/03/2024

Suite à ta remarque Ives sur le template manquant, je viens de mettre à jour mon message ou j'expliquai mon comptage : https://www.knx-fr.com/showthread.php?tid=6731&pid=62710#pid62710

Je me contentais d'attendre un peu pour tester mais si tu es pressé tu dois pouvoir bidouiller un peu ce template en question pour obtenir le tarif que tu veux Smile


RE: Comptage energie - XeNo - 24/03/2024

Merci Ives et aureOhwo !

Avec vos infos j'arrive à mes fins  Smile

J'ai encore 3 interrogations :

@aureOhwo
Je n'arrive pas à interpréter ta condition et ce qu'elle fait réellement, tu pourrais expliquer stp ?

Code :
- service: select.select_option
  data:
    option: |
      {{
        states('sensor.electricite_teleinfo_tarif_en_cours_texte')
      }}
  target:
    entity_id: >
      {{ states.select | selectattr('name','search','energie') |
      map(attribute='entity_id') | list }}


J'arrive à calculer un tarif tempo en simulant tout (j'ai la saisie des tarifs et je récupère le tarif tempo chez edf)
Et mes conso viennent des TE331 donc elles sont exposées sur HA.
Du coup, je ne comprends pas pourquoi il y a du Node Red ?


Et enfin, on est d'accord que sur une journée complète, on peut avoir 2 HC différents + 1 HP ?

Merci d'avance !


RE: Comptage energie - aureOhwo - 24/03/2024

Salut Xeno,

La condition va récupérer la valeur textuelle du tarif en cours à partir de l'entier du TE331 (ex : 8 -> BLeu HC) et va le sélectionner dans tous les select des utility meters qui contienne le mot energie (j'en ai un sacré paquet chez moi, ca serait rébarbatif à écrire autrement).

Je viens de mettre à jour mes explications sur la page précédente pour avoir quelque chose de clair et au nouveau format de template, je te conseille de revérifier et de modifier chez toi si nécessaire.

Je te confirme que tu peux bien avoir 3 tarifs différents en tempo dans une même journée Smile


RE: Comptage energie - Ives - 25/03/2024

(24/03/2024, 11:51:13)XeNo a écrit : J'arrive à calculer un tarif tempo en simulant tout (j'ai la saisie des tarifs et je récupère le tarif tempo chez edf)
Et mes conso viennent des TE331 donc elles sont exposées sur HA.
Du coup, je ne comprends pas pourquoi il y a du Node Red ?
Je ne comprends pas comment du récupères les consommations des 6 plages horaires du TE331 sans utiliser NR ?
Pour disposer des 6 index TEMPO, le TE331 doit être configuré en mode 6 octets (énergie et information tarifaire) ; chaque octet étant émis sur le bus à intervalle de 5 secondes, il faut ensuite "trier". 
Le DPT utilisé est le 235.001 dont le format est le suivant :

[Image: nd8l.jpg]


Si tu as trouvé une solution plus simple je suis preneur.


RE: Comptage energie - Nitro24 - 25/03/2024

Perso j'utilise une automatisation HA déclenchée sur un KNX_event pour "trier" les 6 tarifs dans 6 inputs numbers en fonction de la valeur de l'octet n°2 du DPT.

Dans l'exemple ci dessous, la GA 10/5/1 correspond au comptage d'énergie du chauffage. 
il me semble que cette méthode avait déjà été décrite ici.


Code :
alias: Comptage KNX Chauffage
description: ""
trigger:
 - platform: event
   event_type: knx_event
condition:
 - condition: template
   value_template: "{{ trigger.event.data.destination == '10/5/1' }}"
action:
 - choose:
     - conditions:
         - condition: template
           value_template: "{{trigger.event.data.data[4] == 8 }}"
       sequence:
         - service: input_number.set_value
           target:
             entity_id: input_number.energie_chauffage_hp_bleu
           data:
             value: |-
               {{ (trigger.event.data.data[0] * 2**24) +
                  (trigger.event.data.data[1] * 2**16) +
                  (trigger.event.data.data[2] * 2**8) +
                  (trigger.event.data.data[3] * 2**0) }}    
     - conditions:
         - condition: template
           value_template: "{{trigger.event.data.data[4] == 9 }}"
       sequence:
         - service: input_number.set_value
           target:
             entity_id: input_number.energie_chauffage_hp_blanc
           data:
             value: |-
               {{ (trigger.event.data.data[0] * 2**24) +
                  (trigger.event.data.data[1] * 2**16) +
                  (trigger.event.data.data[2] * 2**8) +
                  (trigger.event.data.data[3] * 2**0) }}    
     - conditions:
         - condition: template
           value_template: "{{trigger.event.data.data[4] == 10 }}"
       sequence:
         - service: input_number.set_value
           target:
             entity_id: input_number.energie_chauffage_hp_rouge
           data:
             value: |-
               {{ (trigger.event.data.data[0] * 2**24) +
                  (trigger.event.data.data[1] * 2**16) +
                  (trigger.event.data.data[2] * 2**8) +
                  (trigger.event.data.data[3] * 2**0) }}    
     - conditions:
         - condition: template
           value_template: "{{trigger.event.data.data[4] == 5 }}"
       sequence:
         - service: input_number.set_value
           target:
             entity_id: input_number.energie_chauffage_hc_bleu
           data:
             value: |-
               {{ (trigger.event.data.data[0] * 2**24) +
                  (trigger.event.data.data[1] * 2**16) +
                  (trigger.event.data.data[2] * 2**8) +
                  (trigger.event.data.data[3] * 2**0) }}    
     - conditions:
         - condition: template
           value_template: "{{trigger.event.data.data[4] == 6 }}"
       sequence:
         - service: input_number.set_value
           target:
             entity_id: input_number.energie_chauffage_hc_blanc
           data:
             value: |-
               {{ (trigger.event.data.data[0] * 2**24) +
                  (trigger.event.data.data[1] * 2**16) +
                  (trigger.event.data.data[2] * 2**8) +
                  (trigger.event.data.data[3] * 2**0) }}    
     - conditions:
         - condition: template
           value_template: "{{trigger.event.data.data[4] == 7 }}"
       sequence:
         - service: input_number.set_value
           target:
             entity_id: input_number.energie_chauffage_hc_rouge
           data:
             value: |-
               {{ (trigger.event.data.data[0] * 2**24) +
                  (trigger.event.data.data[1] * 2**16) +
                  (trigger.event.data.data[2] * 2**8) +
                  (trigger.event.data.data[3] * 2**0) }}    
mode: single
Pour completer, j'utilise un template pour tout additionner et mettre en forme
Code :
# Chauffage
    - name: Compteur Energie Chauffage
      unique_id: ec237bc5-f71b-4b0c-a1c6-523fa6313079
      state: "{{ [ states('input_number.energie_chauffage_hc_bleu'),
                   states('input_number.energie_chauffage_hp_bleu'),
                   states('input_number.energie_chauffage_hc_blanc'),
                   states('input_number.energie_chauffage_hp_blanc'),
                   states('input_number.energie_chauffage_hc_rouge'),
                   states('input_number.energie_chauffage_hp_rouge')] | map('float') | sum | multiply(0.001) }}"
      unit_of_measurement: kWh  
      device_class: energy
      state_class: total_increasing



RE: Comptage energie - Ives - 25/03/2024

@Nitro24
C'est très astucieux mais, sauf erreur de ma part, je ne pense pas que cette solution ait été évoquée ici.

Les input_number sont normalement utilisés lorsqu'on souhaite avoir la possibilité de modifier leur valeur via le Dashboard ?


Par ailleurs, j'ai 5 TE331 (ils sont répartis dans 3 tableaux) et une borne de charge de VE. J'ai connecté à la sortie TIC du Linky la borne de charge ainsi que deux des cinq TE331. Si j'en connecte un troisième, la transmission TIC ne fonctionne plus (trop chargée je suppose).

Quelqu'un est-il confronté au même problème et a-t-il trouvé une solution ?


RE: Comptage energie - Nitro24 - 25/03/2024

[quote pid='62807' dateline='1711377470']
Par ailleurs, j'ai 5 TE331 (ils sont répartis dans 3 tableaux) et une borne de charge de VE. J'ai connecté à la sortie TIC du Linky la borne de charge ainsi que deux des cinq TE331. Si j'en connecte un troisième, la transmission TIC ne fonctionne plus (trop chargée je suppose).

Quelqu'un est-il confronté au même problème et a-t-il trouvé une solution ?
[/quote]

Surprenant, j'ai moi-même 4 récepteurs connectés (1 TE331, 2 TXA230 et un recepteur TIC) à la sortie TIC du linky sans problème.
Il faudrait verifier avec un oscillosope lequel des TE331 ou borne de charge fait s'écrouler le signal.


RE: Comptage energie - Ives - 25/03/2024

@Nitro24
C'est ce que je vais faire !

Je viens de faire un copié/collé ton automatisation (et également créé un input_ number. energie_nom_appareil_hp_bleu qui correspond au tarif en cours)  mais elle ne s'exécute pas ; je pointe pourtant la même GA que celle utilisée dans NR avec laquelle je récupère bien les 6 index.

J'ai ajouté ceci dans mon knx.yaml  (l'adresse de la GA du  trigger.event.data.destination)  mais l'automatisation ne s'exécute jamais
Code :
event:
 - address:
   - "9/1/4"



RE: Comptage energie - Nitro24 - 25/03/2024

Oui, j'ai aussi ce type d'entrée, as tu essayé de redémarrer complétement HA ?

Edit: je pense qu'il te manque une indentation sur la dernière ligne de ton event, voici le mien:

Code :
 event:
   - address:
       - "10/5/*"



RE: Comptage energie - Ives - 25/03/2024

Il devait effectivement manquer une indentation car elle s'exécute mais dans la chronologie de l'exécution, j'ai le message suivant (j'ai créé tous les input_number et redémarré HA)

S"topped because a condition failed at 25 mars 2024 à 17:56:55 (runtime: 0.00 seconds)"

Code :
alias: Comptage Pompe Puisard
description: ""
trigger:
  - platform: event
    event_type: knx_event
condition:
  - condition: template
    value_template: "{{ trigger.event.data.destination == '9/2/7' }}"
action:
  - choose:
      - conditions:
          - condition: template
            value_template: "{{trigger.event.data.data[4] == 8 }}"
        sequence:
          - service: input_number.set_value
            target:
              entity_id: input_number.energie_puisard_hp_bleu
            data:
              value: |-
                {{ (trigger.event.data.data[0] * 2**24) +
                   (trigger.event.data.data[1] * 2**16) +
                   (trigger.event.data.data[2] * 2**8) +
                   (trigger.event.data.data[3] * 2**0) }}    
      - conditions:
          - condition: template
            value_template: "{{trigger.event.data.data[4] == 9 }}"
        sequence:
          - service: input_number.set_value
            target:
              entity_id: input_number.energie_puisard_hp_blanc
            data:
              value: |-
                {{ (trigger.event.data.data[0] * 2**24) +
                   (trigger.event.data.data[1] * 2**16) +
                   (trigger.event.data.data[2] * 2**8) +
                   (trigger.event.data.data[3] * 2**0) }}    
      - conditions:
          - condition: template
            value_template: "{{trigger.event.data.data[4] == 10 }}"
        sequence:
          - service: input_number.set_value
            target:
              entity_id: input_number.energie_puisard_hp_rouge
            data:
              value: |-
                {{ (trigger.event.data.data[0] * 2**24) +
                   (trigger.event.data.data[1] * 2**16) +
                   (trigger.event.data.data[2] * 2**8) +
                   (trigger.event.data.data[3] * 2**0) }}    
      - conditions:
          - condition: template
            value_template: "{{trigger.event.data.data[4] == 5 }}"
        sequence:
          - service: input_number.set_value
            target:
              entity_id: input_number.energie_puisard_hc_bleu
            data:
              value: |-
                {{ (trigger.event.data.data[0] * 2**24) +
                   (trigger.event.data.data[1] * 2**16) +
                   (trigger.event.data.data[2] * 2**8) +
                   (trigger.event.data.data[3] * 2**0) }}    
      - conditions:
          - condition: template
            value_template: "{{trigger.event.data.data[4] == 6 }}"
        sequence:
          - service: input_number.set_value
            target:
              entity_id: input_number.energie_puisard_hc_blanc
            data:
              value: |-
                {{ (trigger.event.data.data[0] * 2**24) +
                   (trigger.event.data.data[1] * 2**16) +
                   (trigger.event.data.data[2] * 2**8) +
                   (trigger.event.data.data[3] * 2**0) }}    
      - conditions:
          - condition: template
            value_template: "{{trigger.event.data.data[4] == 7 }}"
        sequence:
          - service: input_number.set_value
            target:
              entity_id: input_number.energie_puisard_hc_rouge
            data:
              value: |-
                {{ (trigger.event.data.data[0] * 2**24) +
                   (trigger.event.data.data[1] * 2**16) +
                   (trigger.event.data.data[2] * 2**8) +
                   (trigger.event.data.data[3] * 2**0) }}    
mode: single



RE: Comptage energie - Nitro24 - 25/03/2024

dans event tu déclare le GA "9/1/4" et dans l'automatisation trigger.event.data.destination == '9/2/7', normal ?


RE: Comptage energie - Ives - 25/03/2024

Oups ! Angry
Comme j'ai déconnecté la TIC de deux TE331 (dont celui qui gère le puisard), pour tester l'automatisation j'ai "piqué" la GA d'un autre appareil et oublié de la changer dans l'event !
Merci car l'automatisation fonctionne...


RE: Comptage energie - aureOhwo - 25/03/2024

Bonsoir,

@nitro24 :

C'est peut être moi qui avait posté la façon de mettre à jour les index par automatisation mais ça partait en vrille chez moi à chaque redémarrage de HA au niveau de mes utility_meters, depuis que j'ai implémenté l'exemple Node Red fourni par Ives je peux redémarrer autant que je veux sans pb (si vous n'utilisez pas d'utility_meters, alors cette solution reste viable par contre).

@Ives :

Chez moi je n'ai branché qu'un seul TE331 sur le teleinfo linky, et j'ai configuré les autres pour se mettre à jour à partir de l'objet Tarif En cours du premier, ca fonctionne bien sans se prendre la tête : 

[attachment=2620]

[attachment=2621]


RE: Comptage energie - Nitro24 - 25/03/2024

Bonsoir,

j'utilise les utility_meters et je n'ai aucun problème, même lors des redémarrages de HA ou du réseau KNX.


RE: Comptage energie - Ives - 27/03/2024

(02/02/2024, 23:13:43)aureOhwo a écrit : [Image: a1v7.jpg]

Pourrais-tu poster le code de la carte "Répartitions" et celui de "Conso jour"  ?


RE: Comptage energie - aureOhwo - 28/03/2024

(27/03/2024, 20:34:53)Ives a écrit :
(02/02/2024, 23:13:43)aureOhwo a écrit : [Image: a1v7.jpg]

Pourrais-tu poster le code de la carte "Répartitions" et celui de "Conso jour"  ?

Je viens d'éditer mon tuto pour ajouter des précisions sur la façon d'obtenir le tarif en cours et le code source de ce dashboard : https://www.knx-fr.com/showthread.php?tid=6731&pid=62710#pid62710


RE: Comptage energie - aureOhwo - 28/03/2024

(25/03/2024, 23:02:51)Nitro24 a écrit : Bonsoir,

j'utilise les utility_meters et je n'ai aucun problème, même lors des redémarrages de HA ou du réseau KNX.

Le code de ton template est légèrement différent de celui que j'utilisais, je testerai quand j'aurais un peu de temps (même si la solution Node Red me donne entièrement satisfaction pour le moment).


RE: Comptage energie - Ives - 29/03/2024

(28/03/2024, 22:57:51)aureOhwo a écrit : Je viens d'éditer mon tuto pour ajouter des précisions sur la façon d'obtenir le tarif en cours et le code source de ce dashboard : https://www.knx-fr.com/showthread.php?

Merci @aureOhwo pour le suivi et les mises à jour successives de ce tuto.

Pour afficher la consommation des appareils dans le Dashboard Energy, j'ai ajouté les entités sensor.electricite_nom_appareil_index_total_kWh mais je n'ai pas trouvé comment changer le nom des appareils dans le Dashboard (sans le changer dans la configuration HA car il est bien explicite). 

[attachment=2625]


RE: Comptage energie - aureOhwo - 30/03/2024

(29/03/2024, 18:41:20)Ives a écrit :
(28/03/2024, 22:57:51)aureOhwo a écrit : Je viens d'éditer mon tuto pour ajouter des précisions sur la façon d'obtenir le tarif en cours et le code source de ce dashboard : https://www.knx-fr.com/showthread.php?

Merci @aureOhwo pour le suivi et les mises à jour successives de ce tuto.

Pour afficher la consommation des appareils dans le Dashboard Energy, j'ai ajouté les entités sensor.electricite_nom_appareil_index_total_kWh mais je n'ai pas trouvé comment changer le nom des appareils dans le Dashboard (sans le changer dans la configuration HA car il est bien explicite). 

Pas de problème @Ives, surtout vu le nombre de fois où tu m'as sorti du pétrin Smile

Pour pouvoir personnaliser "sensor.electricite_nom_appareil_index_total_kWh", vu qu'ils sont déclarés en yaml, il faut leur ajouter un unique_id, par ex : 

Code :
template:
 - sensor:
     # Total KWh Index (source des utility_meter)
     - name: Electricite Energie Lave Linge Index Total Kwh
       unique_id: electricite_energie_lave_linge_index_total_kwh-uid
       state: >
         {{ (states('sensor.nr_energie_lave_linge_index_hc_blanc_kwh')|float(0) +
             states('sensor.nr_energie_lave_linge_index_hc_bleu_kwh')|float(0) +
             states('sensor.nr_energie_lave_linge_index_hc_rouge_kwh')|float(0) +
             states('sensor.nr_energie_lave_linge_index_hp_blanc_kwh')|float(0) +
             states('sensor.nr_energie_lave_linge_index_hp_bleu_kwh')|float(0) +
             states('sensor.nr_energie_lave_linge_index_hp_rouge_kwh')|float(0)) |round(3) }}
       unit_of_measurement: "kWh"
       device_class: energy
       state_class: total_increasing

Ensuite tu redémarres HA, et tu pourras personnaliser le nom (Paramètres > Appareils et services > Entité > Nom de l'appareil) puis cliquer sur la roue cranté et donner un nom :

[attachment=2626]

[attachment=2627]


RE: Comptage energie - Ives - 30/03/2024

Encore merci @aureOhwo, c'est parfait !


RE: Comptage energie - XeNo - 01/04/2024

(25/03/2024, 12:05:59)Ives a écrit :
(24/03/2024, 11:51:13)XeNo a écrit : J'arrive à calculer un tarif tempo en simulant tout (j'ai la saisie des tarifs et je récupère le tarif tempo chez edf)
Et mes conso viennent des TE331 donc elles sont exposées sur HA.
Du coup, je ne comprends pas pourquoi il y a du Node Red ?
Je ne comprends pas comment du récupères les consommations des 6 plages horaires du TE331 sans utiliser NR ?
Pour disposer des 6 index TEMPO, le TE331 doit être configuré en mode 6 octets (énergie et information tarifaire) ; chaque octet étant émis sur le bus à intervalle de 5 secondes, il faut ensuite "trier". 
Le DPT utilisé est le 235.001 dont le format est le suivant :

[Image: nd8l.jpg]


Si tu as trouvé une solution plus simple je suis preneur.

Salut Ives,

Ca y est, j'ai enfin réussi !
Donc perso je rappelle, je suis en tarification classique et j'aimerai projeter du Tempo. Déjà pour voir la différence réélle sur ma conso, et aussi parce que le board Energy ne sait pas gérer le multitarifs (ou du moins je n'ai pas vu à quel endroit encore)

  • Configuration.yaml
Donc en premier lieu, dans le configuration.yaml :

Code :
homeassistant:
 packages: !include_dir_named packages

input_number: !include input_number.yaml
rest: !include rest.yaml


  • Le fichier input_number.yaml pour le calcul des coûts
Code :
####################################
#     Input des tarifs Tempo
####################################
 electricite_general_cout_actuel:
   name: Cout Kwh en cours
   mode: box
   min: 0
   max: 100
   unit_of_measurement: "€/kWh"
   icon: mdi:currency-eur

 electricite_general_cout_kwh_bleu_hp:
   name: Cout Kwh Bleu HP
   mode: box
   min: 0
   max: 100
   unit_of_measurement: "€/kWh"
   icon: mdi:currency-eur

 electricite_general_cout_kwh_bleu_hc:
   name: Cout Kwh Bleu HC
   mode: box
   min: 0
   max: 100
   unit_of_measurement: "€/kWh"
   icon: mdi:currency-eur

 electricite_general_cout_kwh_blanc_hp:
   name: Cout Kwh Blanc HP
   mode: box
   min: 0
   max: 100
   unit_of_measurement: "€/kWh"
   icon: mdi:currency-eur

 electricite_general_cout_kwh_blanc_hc:
   name: Cout Kwh Blanc HC
   mode: box
   min: 0
   max: 100
   unit_of_measurement: "€/kWh"
   icon: mdi:currency-eur

 electricite_general_cout_kwh_rouge_hp:
   name: Cout Kwh Rouge HP
   mode: box
   min: 0
   max: 100
   unit_of_measurement: "€/kWh"
   icon: mdi:currency-eur

 electricite_general_cout_kwh_rouge_hc:
   name: Cout Kwh Rouge HC
   mode: box
   min: 0
   max: 100
   unit_of_measurement: "€/kWh"
   icon: mdi:currency-eur



  • Fichiers yaml dans packages
Alors voici un exemple d'un fichier yaml dans le repertoire package :
ici pour l'ECS :

Code :
################################################
###            Energy_ecs.yaml               ###
### Fichier d'integration des energies Tempo ###
###                                          ###
### Mesure concernée =         ECS           ###
### Consommations et Couts                   ###
###    - Journalier (6 Tarifs)               ###
###    - Hebdomadaire (6 Tarifs)             ###
###    - Mensuel (6 Tarifs)                  ###
###    - Annuel (6 Tarifs)                   ###
###                                          ###
################################################

###############    SENSORS   ###################
sensor:
 - platform: template
   sensors:

###############  Total Energie Jour/Semaine/Mois/Année
######  Total journalier
     energy_total_ecs_daily:
       friendly_name: 'Energie totale journalière ECS consommée Tempo'
       entity_id:
         - sensor.energy_total_ecs_usage_daily_bleu_hp
         - sensor.energy_total_ecs_usage_daily_bleu_hc
         - sensor.energy_total_ecs_usage_daily_blanc_hp
         - sensor.energy_total_ecs_usage_daily_blanc_hc
         - sensor.energy_total_ecs_usage_daily_rouge_hp
         - sensor.energy_total_ecs_usage_daily_rouge_hc
       value_template: "{{ (((states('sensor.energy_total_ecs_usage_daily_bleu_hp')|float) + (states('sensor.energy_total_ecs_usage_daily_bleu_hc')|float) + (states('sensor.energy_total_ecs_usage_daily_blanc_hp')|float) + (states('sensor.energy_total_ecs_usage_daily_blanc_hc')|float) + (states('sensor.energy_total_ecs_usage_daily_rouge_hp')|float) + (states('sensor.energy_total_ecs_usage_daily_rouge_hc')|float))/1000)|round(3) }}"
       unit_of_measurement: "kWh"

     cout_total_ecs_daily:
       friendly_name: 'Cout total journée ECS Tempo'
       entity_id:
         - sensor.energy_total_ecs_usage_daily_bleu_hp
         - sensor.energy_total_ecs_usage_daily_bleu_hc
         - sensor.energy_total_ecs_usage_daily_blanc_hp
         - sensor.energy_total_ecs_usage_daily_blanc_hc
         - sensor.energy_total_ecs_usage_daily_rouge_hp
         - sensor.energy_total_ecs_usage_daily_rouge_hc
       value_template: "{{ (((states('sensor.energy_total_ecs_usage_daily_bleu_hp')|float)*(states('input_number.electricite_general_cout_kwh_bleu_hp')|float) + (states('sensor.energy_total_ecs_usage_daily_bleu_hc')|float)*(states('input_number.electricite_general_cout_kwh_bleu_hc')|float) + (states('sensor.energy_total_ecs_usage_daily_blanc_hp')|float)*(states('input_number.electricite_general_cout_kwh_blanc_hp')|float) + (states('sensor.energy_total_ecs_usage_daily_blanc_hc')|float)*(states('input_number.electricite_general_cout_kwh_blanc_hc')|float) + (states('sensor.energy_total_ecs_usage_daily_rouge_hp')|float)*(states('input_number.electricite_general_cout_kwh_rouge_hp')|float) + (states('sensor.energy_total_ecs_usage_daily_rouge_hc')|float)*(states('input_number.electricite_general_cout_kwh_rouge_hc')|float))/1000)|round(3) }}"
       unit_of_measurement: "€"

######  Total semaine
     energy_total_ecs_weekly:
       friendly_name: 'Energie totale semaine ECS consommée Tempo'
       entity_id:
         - sensor.energy_total_ecs_usage_weekly_bleu_hp
         - sensor.energy_total_ecs_usage_weekly_bleu_hc
         - sensor.energy_total_ecs_usage_weekly_blanc_hp
         - sensor.energy_total_ecs_usage_weekly_blanc_hc
         - sensor.energy_total_ecs_usage_weekly_rouge_hp
         - sensor.energy_total_ecs_usage_weekly_rouge_hc
       value_template: "{{ (((states('sensor.energy_total_ecs_usage_weekly_bleu_hp')|float) + (states('sensor.energy_total_ecs_usage_weekly_bleu_hc')|float) + (states('sensor.energy_total_ecs_usage_weekly_blanc_hp')|float) + (states('sensor.energy_total_ecs_usage_weekly_blanc_hc')|float) + (states('sensor.energy_total_ecs_usage_weekly_rouge_hp')|float) + (states('sensor.energy_total_ecs_usage_weekly_rouge_hc')|float))/1000)|round(3) }}"
       unit_of_measurement: "kWh"

     cout_total_ecs_weekly:
       friendly_name: 'Cout total semaine ECS Tempo'
       entity_id:
         - sensor.energy_total_ecs_usage_weekly_bleu_hp
         - sensor.energy_total_ecs_usage_weekly_bleu_hc
         - sensor.energy_total_ecs_usage_weekly_blanc_hp
         - sensor.energy_total_ecs_usage_weekly_blanc_hc
         - sensor.energy_total_ecs_usage_weekly_rouge_hp
         - sensor.energy_total_ecs_usage_weekly_rouge_hc
       value_template: "{{ (((states('sensor.energy_total_ecs_usage_weekly_bleu_hp')|float)*(states('input_number.electricite_general_cout_kwh_bleu_hp')|float) + (states('sensor.energy_total_ecs_usage_weekly_bleu_hc')|float)*(states('input_number.electricite_general_cout_kwh_bleu_hc')|float) + (states('sensor.energy_total_ecs_usage_weekly_blanc_hp')|float)*(states('input_number.electricite_general_cout_kwh_blanc_hp')|float) + (states('sensor.energy_total_ecs_usage_weekly_blanc_hc')|float)*(states('input_number.electricite_general_cout_kwh_blanc_hc')|float) + (states('sensor.energy_total_ecs_usage_weekly_rouge_hp')|float)*(states('input_number.electricite_general_cout_kwh_rouge_hp')|float) + (states('sensor.energy_total_ecs_usage_weekly_rouge_hc')|float)*(states('input_number.electricite_general_cout_kwh_rouge_hc')|float))/1000)|round(3) }}"
       unit_of_measurement: "€"

######  Total mensuel
     energy_total_ecs_monthly:
       friendly_name: 'Energie totale mensuelle ECS consommée Tempo'
       entity_id:
         - sensor.energy_total_ecs_usage_monthly_bleu_hp
         - sensor.energy_total_ecs_usage_monthly_bleu_hc
         - sensor.energy_total_ecs_usage_monthly_blanc_hp
         - sensor.energy_total_ecs_usage_monthly_blanc_hc
         - sensor.energy_total_ecs_usage_monthly_rouge_hp
         - sensor.energy_total_ecs_usage_monthly_rouge_hc
       value_template: "{{ (((states('sensor.energy_total_ecs_usage_monthly_bleu_hp')|float) + (states('sensor.energy_total_ecs_usage_monthly_bleu_hc')|float) + (states('sensor.energy_total_ecs_usage_monthly_blanc_hp')|float) + (states('sensor.energy_total_ecs_usage_monthly_blanc_hc')|float) + (states('sensor.energy_total_ecs_usage_monthly_rouge_hp')|float) + (states('sensor.energy_total_ecs_usage_monthly_rouge_hc')|float))/1000)|round(3) }}"
       unit_of_measurement: "kWh"

     cout_total_ecs_monthly:
       friendly_name: 'Cout total mensuel ECS Tempo'
       entity_id:
         - sensor.energy_total_ecs_usage_monthly_bleu_hp
         - sensor.energy_total_ecs_usage_monthly_bleu_hc
         - sensor.energy_total_ecs_usage_monthly_blanc_hp
         - sensor.energy_total_ecs_usage_monthly_blanc_hc
         - sensor.energy_total_ecs_usage_monthly_rouge_hp
         - sensor.energy_total_ecs_usage_monthly_rouge_hc
       value_template: "{{ (((states('sensor.energy_total_ecs_usage_monthly_bleu_hp')|float)*(states('input_number.electricite_general_cout_kwh_bleu_hp')|float) + (states('sensor.energy_total_ecs_usage_monthly_bleu_hc')|float)*(states('input_number.electricite_general_cout_kwh_bleu_hc')|float) + (states('sensor.energy_total_ecs_usage_monthly_blanc_hp')|float)*(states('input_number.electricite_general_cout_kwh_blanc_hp')|float) + (states('sensor.energy_total_ecs_usage_monthly_blanc_hc')|float)*(states('input_number.electricite_general_cout_kwh_blanc_hc')|float) + (states('sensor.energy_total_ecs_usage_monthly_rouge_hp')|float)*(states('input_number.electricite_general_cout_kwh_rouge_hp')|float) + (states('sensor.energy_total_ecs_usage_monthly_rouge_hc')|float)*(states('input_number.electricite_general_cout_kwh_rouge_hc')|float))/1000)|round(3) }}"
       unit_of_measurement: "€"

######  Total annuel
     energy_total_ecs_yearly:
       friendly_name: 'Energie totale annuelle ECS consommée Tempo'
       entity_id:
         - sensor.energy_total_ecs_usage_yearly_bleu_hp
         - sensor.energy_total_ecs_usage_yearly_bleu_hc
         - sensor.energy_total_ecs_usage_yearly_blanc_hp
         - sensor.energy_total_ecs_usage_yearly_blanc_hc
         - sensor.energy_total_ecs_usage_yearly_rouge_hp
         - sensor.energy_total_ecs_usage_yearly_rouge_hc
       value_template: "{{ (((states('sensor.energy_total_ecs_usage_yearly_bleu_hp')|float) + (states('sensor.energy_total_ecs_usage_yearly_bleu_hc')|float) + (states('sensor.energy_total_ecs_usage_yearly_blanc_hp')|float) + (states('sensor.energy_total_ecs_usage_yearly_blanc_hc')|float) + (states('sensor.energy_total_ecs_usage_yearly_rouge_hp')|float) + (states('sensor.energy_total_ecs_usage_yearly_rouge_hc')|float))/1000)|round(3) }}"
       unit_of_measurement: "kWh"

     cout_total_ecs_yearly:
       friendly_name: 'Cout total annuel ECS Tempo'
       entity_id:
         - sensor.energy_total_ecs_usage_yearly_bleu_hp
         - sensor.energy_total_ecs_usage_yearly_bleu_hc
         - sensor.energy_total_ecs_usage_yearly_blanc_hp
         - sensor.energy_total_ecs_usage_yearly_blanc_hc
         - sensor.energy_total_ecs_usage_yearly_rouge_hp
         - sensor.energy_total_ecs_usage_yearly_rouge_hc
       value_template: "{{ (((states('sensor.energy_total_ecs_usage_yearly_bleu_hp')|float)*(states('input_number.electricite_general_cout_kwh_bleu_hp')|float) + (states('sensor.energy_total_ecs_usage_yearly_bleu_hc')|float)*(states('input_number.electricite_general_cout_kwh_bleu_hc')|float) + (states('sensor.energy_total_ecs_usage_yearly_blanc_hp')|float)*(states('input_number.electricite_general_cout_kwh_blanc_hp')|float) + (states('sensor.energy_total_ecs_usage_yearly_blanc_hc')|float)*(states('input_number.electricite_general_cout_kwh_blanc_hc')|float) + (states('sensor.energy_total_ecs_usage_yearly_rouge_hp')|float)*(states('input_number.electricite_general_cout_kwh_rouge_hp')|float) + (states('sensor.energy_total_ecs_usage_yearly_rouge_hc')|float)*(states('input_number.electricite_general_cout_kwh_rouge_hc')|float))/1000)|round(3) }}"
       unit_of_measurement: "€"


############### Total Coûts par période Jour/Semaine/Mois/Année et par tarifs
############### TEMPO BLEU
######  Journalier
     cout_total_ecs_daily_bleu_hp:
       friendly_name: 'Coût journalier ECS Bleu HP'
       entity_id:
         - sensor.energy_total_ecs_usage_daily_bleu_hp
       value_template: "{{ ((states('sensor.energy_total_ecs_usage_daily_bleu_hp')|float)*(states('input_number.electricite_general_cout_kwh_bleu_hp')|float)/1000)|round(3) }}"
       unit_of_measurement: "€"

     cout_total_ecs_daily_bleu_hc:
       friendly_name: 'Coût journalier ECS Bleu HC'
       entity_id:
         - sensor.energy_total_ecs_usage_daily_bleu_hc
       value_template: "{{ ((states('sensor.energy_total_ecs_usage_daily_bleu_hc')|float)*(states('input_number.electricite_general_cout_kwh_bleu_hc')|float)/1000)|round(3) }}"
       unit_of_measurement: "€"

######  Hebdomadaire
     cout_total_ecs_weekly_bleu_hp:
       friendly_name: 'Coût hebdomadaire ECS Bleu HP'
       entity_id:
         - sensor.energy_total_ecs_usage_weekly_bleu_hp
       value_template: "{{ ((states('sensor.energy_total_ecs_usage_weekly_bleu_hp')|float)*(states('input_number.electricite_general_cout_kwh_bleu_hp')|float)/1000)|round(3) }}"
       unit_of_measurement: "€"

     cout_total_ecs_weekly_bleu_hc:
       friendly_name: 'Coût hebdomadaire ECS Bleu HC'
       entity_id:
         - sensor.energy_total_ecs_usage_weekly_bleu_hc
       value_template: "{{ ((states('sensor.energy_total_ecs_usage_weekly_bleu_hc')|float)*(states('input_number.electricite_general_cout_kwh_bleu_hc')|float)/1000)|round(3) }}"
       unit_of_measurement: "€"

######  Mensuel
     cout_total_ecs_monthly_bleu_hp:
       friendly_name: 'Coût mensuel ECS Bleu HP'
       entity_id:
         - sensor.energy_total_ecs_usage_monthly_bleu_hp
       value_template: "{{ ((states('sensor.energy_total_ecs_usage_monthly_bleu_hp')|float)*(states('input_number.electricite_general_cout_kwh_bleu_hp')|float)/1000)|round(3) }}"
       unit_of_measurement: "€"

     cout_total_ecs_monthly_bleu_hc:
       friendly_name: 'Coût mensuel ECS Bleu HC'
       entity_id:
         - sensor.energy_total_ecs_usage_monthly_bleu_hc
       value_template: "{{ ((states('sensor.energy_total_ecs_usage_monthly_bleu_hc')|float)*(states('input_number.electricite_general_cout_kwh_bleu_hc')|float)/1000)|round(3) }}"
       unit_of_measurement: "€"

######  Annuel
     cout_total_ecs_yearly_bleu_hp:
       friendly_name: 'Coût annuel ECS Bleu HP'
       entity_id:
         - sensor.energy_total_ecs_usage_yearly_bleu_hp
       value_template: "{{ ((states('sensor.energy_total_ecs_usage_yearly_bleu_hp')|float)*(states('input_number.electricite_general_cout_kwh_bleu_hp')|float)/1000)|round(3) }}"
       unit_of_measurement: "€"

     cout_total_ecs_yearly_bleu_hc:
       friendly_name: 'Coût annuel ECS Bleu HC'
       entity_id:
         - sensor.energy_total_ecs_usage_yearly_bleu_hc
       value_template: "{{ ((states('sensor.energy_total_ecs_usage_yearly_bleu_hc')|float)*(states('input_number.electricite_general_cout_kwh_bleu_hc')|float)/1000)|round(3) }}"
       unit_of_measurement: "€"

############### TEMPO BLANC
######  Journalier
     cout_total_ecs_daily_blanc_hp:
       friendly_name: 'Coût journalier ECS Blanc HP'
       entity_id:
         - sensor.energy_total_ecs_usage_daily_blanc_hp
       value_template: "{{ ((states('sensor.energy_total_ecs_usage_daily_blanc_hp')|float)*(states('input_number.electricite_general_cout_kwh_blanc_hp')|float)/1000)|round(3) }}"
       unit_of_measurement: "€"

     cout_total_ecs_daily_blanc_hc:
       friendly_name: 'Coût journalier ECS Blanc HC'
       entity_id:
         - sensor.energy_total_ecs_usage_daily_blanc_hc
       value_template: "{{ ((states('sensor.energy_total_ecs_usage_daily_blanc_hc')|float)*(states('input_number.electricite_general_cout_kwh_blanc_hc')|float)/1000)|round(3) }}"
       unit_of_measurement: "€"
######  Hebdomadaire
     cout_total_ecs_weekly_blanc_hp:
       friendly_name: 'Coût hebdomadaire ECS Blanc HP'
       entity_id:
         - sensor.energy_total_ecs_usage_weekly_blanc_hp
       value_template: "{{ ((states('sensor.energy_total_ecs_usage_weekly_blanc_hp')|float)*(states('input_number.electricite_general_cout_kwh_blanc_hp')|float)/1000)|round(3) }}"
       unit_of_measurement: "€"

     cout_total_ecs_weekly_blanc_hc:
       friendly_name: 'Coût hebdomadaire ECS Blanc HC'
       entity_id:
         - sensor.energy_total_ecs_usage_weekly_blanc_hc
       value_template: "{{ ((states('sensor.energy_total_ecs_usage_weekly_blanc_hc')|float)*(states('input_number.electricite_general_cout_kwh_blanc_hc')|float)/1000)|round(3) }}"
       unit_of_measurement: "€"
######  Mensuel
     cout_total_ecs_monthly_blanc_hp:
       friendly_name: 'Coût mensuel ECS Blanc HP'
       entity_id:
         - sensor.energy_total_ecs_usage_monthly_blanc_hp
       value_template: "{{ ((states('sensor.energy_total_ecs_usage_monthly_blanc_hp')|float)*(states('input_number.electricite_general_cout_kwh_blanc_hp')|float)/1000)|round(3) }}"
       unit_of_measurement: "€"

     cout_total_ecs_monthly_blanc_hc:
       friendly_name: 'Coût mensuel ECS Blanc HC'
       entity_id:
         - sensor.energy_total_ecs_usage_monthly_blanc_hc
       value_template: "{{ ((states('sensor.energy_total_ecs_usage_monthly_blanc_hc')|float)*(states('input_number.electricite_general_cout_kwh_blanc_hc')|float)/1000)|round(3) }}"
       unit_of_measurement: "€"
######  Annuel
     cout_total_ecs_yearly_blanc_hp:
       friendly_name: 'Coût annuel ECS Blanc HP'
       entity_id:
         - sensor.energy_total_ecs_usage_yearly_blanc_hp
       value_template: "{{ ((states('sensor.energy_total_ecs_usage_yearly_blanc_hp')|float)*(states('input_number.electricite_general_cout_kwh_blanc_hp')|float)/1000)|round(3) }}"
       unit_of_measurement: "€"

     cout_total_ecs_yearly_blanc_hc:
       friendly_name: 'Coût annuel ECS Blanc HC'
       entity_id:
         - sensor.energy_total_ecs_usage_yearly_blanc_hc
       value_template: "{{ ((states('sensor.energy_total_ecs_usage_yearly_blanc_hc')|float)*(states('input_number.electricite_general_cout_kwh_blanc_hc')|float)/1000)|round(3) }}"
       unit_of_measurement: "€"

############### TEMPO ROUGE
######  Journalier
     cout_total_ecs_daily_rouge_hc:
       friendly_name: 'Coût journalier ECS Rouge HC'
       entity_id:
         - sensor.energy_total_ecs_usage_daily_rouge_hc
       value_template: "{{ ((states('sensor.energy_total_ecs_usage_daily_rouge_hc')|float)*(states('input_number.electricite_general_cout_kwh_rouge_hc')|float)/1000)|round(3) }}"
       unit_of_measurement: "€"

     cout_total_ecs_daily_rouge_hp:
       friendly_name: 'Coût journalier ECS Rouge HP'
       entity_id:
         - sensor.energy_total_ecs_usage_daily_rouge_hp
       value_template: "{{ ((states('sensor.energy_total_ecs_usage_daily_rouge_hp')|float)*(states('input_number.electricite_general_cout_kwh_rouge_hp')|float)/1000)|round(3) }}"
       unit_of_measurement: "€"
######  Hebdomadaire
     cout_total_ecs_weekly_rouge_hp:
       friendly_name: 'Coût hebdomadaire ECS Rouge HP'
       entity_id:
         - sensor.energy_total_ecs_usage_weekly_rouge_hp
       value_template: "{{ ((states('sensor.energy_total_ecs_usage_weekly_rouge_hp')|float)*(states('input_number.electricite_general_cout_kwh_rouge_hp')|float)/1000)|round(3) }}"
       unit_of_measurement: "€"

     cout_total_ecs_weekly_rouge_hc:
       friendly_name: 'Coût hebdomadaire ECS Rouge HC'
       entity_id:
         - sensor.energy_total_ecs_usage_weekly_rouge_hc
       value_template: "{{ ((states('sensor.energy_total_ecs_usage_weekly_rouge_hc')|float)*(states('input_number.electricite_general_cout_kwh_rouge_hc')|float)/1000)|round(3) }}"
       unit_of_measurement: "€"
######  Mensuel
     cout_total_ecs_monthly_rouge_hp:
       friendly_name: 'Coût mensuel ECS Rouge HP'
       entity_id:
         - sensor.energy_total_ecs_usage_monthly_rouge_hp
       value_template: "{{ ((states('sensor.energy_total_ecs_usage_monthly_rouge_hp')|float)*(states('input_number.electricite_general_cout_kwh_rouge_hp')|float)/1000)|round(3) }}"
       unit_of_measurement: "€"

     cout_total_ecs_monthly_rouge_hc:
       friendly_name: 'Coût mensuel ECS Rouge HC'
       entity_id:
         - sensor.energy_total_ecs_usage_monthly_rouge_hc
       value_template: "{{ ((states('sensor.energy_total_ecs_usage_monthly_rouge_hc')|float)*(states('input_number.electricite_general_cout_kwh_rouge_hc')|float)/1000)|round(3) }}"
       unit_of_measurement: "€"
######  Annuel
     cout_total_ecs_yearly_rouge_hp:
       friendly_name: 'Coût annuel ECS Rouge HP'
       entity_id:
         - sensor.energy_total_ecs_usage_yearly_rouge_hp
       value_template: "{{ ((states('sensor.energy_total_ecs_usage_yearly_rouge_hp')|float)*(states('input_number.electricite_general_cout_kwh_rouge_hp')|float)/1000)|round(3) }}"
       unit_of_measurement: "€"

     cout_total_ecs_yearly_rouge_hc:
       friendly_name: 'Coût annuel ECS Rouge HC'
       entity_id:
         - sensor.energy_total_ecs_usage_yearly_rouge_hc
       value_template: "{{ ((states('sensor.energy_total_ecs_usage_yearly_rouge_hc')|float)*(states('input_number.electricite_general_cout_kwh_rouge_hc')|float)/1000)|round(3) }}"
       unit_of_measurement: "€"

######  Creation des variables d'energie en kwh
######  Journalier
     energy_total_ecs_usage_daily_bleu_hp_kwh:
       friendly_name: "Energie Jour ECS Bleu HP kWh"
       unit_of_measurement: "kWh"
       device_class: energy
       value_template: '{{ ((states.sensor.energy_total_ecs_usage_daily_bleu_hp.state | float) /1000) | round(2) }}'

     energy_total_ecs_usage_daily_bleu_hc_kwh:
       friendly_name: "Energie Jour ECS Bleu HC kWh"
       unit_of_measurement: "kWh"
       device_class: energy
       value_template: '{{ ((states.sensor.energy_total_ecs_usage_daily_bleu_hc.state | float) /1000) | round(2) }}'

     energy_total_ecs_usage_daily_blanc_hp_kwh:
       friendly_name: "Energie Jour ECS Blanc HP kWh"
       unit_of_measurement: "kWh"
       device_class: energy
       value_template: '{{ ((states.sensor.energy_total_ecs_usage_daily_blanc_hp.state | float) /1000) | round(2) }}'

     energy_total_ecs_usage_daily_blanc_hc_kwh:
       friendly_name: "Energie Jour ECS Blanc HC kWh"
       unit_of_measurement: "kWh"
       device_class: energy
       value_template: '{{ ((states.sensor.energy_total_ecs_usage_daily_blanc_hc.state | float) /1000) | round(2) }}'

     energy_total_ecs_usage_daily_rouge_hp_kwh:
       friendly_name: "Energie Jour ECS Rouge HP kWh"
       unit_of_measurement: "kWh"
       device_class: energy
       value_template: '{{ ((states.sensor.energy_total_ecs_usage_daily_rouge_hp.state | float) /1000) | round(2) }}'

     energy_total_ecs_usage_daily_rouge_hc_kwh:
       friendly_name: "Energie Jour ECS Rouge HC kWh"
       unit_of_measurement: "kWh"
       device_class: energy
       value_template: '{{ ((states.sensor.energy_total_ecs_usage_daily_rouge_hc.state | float) /1000) | round(2) }}'

######  Hebdomadaire
     energy_total_ecs_usage_weekly_bleu_hp_kwh:
       friendly_name: "Energie Semaine ECS Bleu HP kWh"
       unit_of_measurement: "kWh"
       device_class: energy
       value_template: '{{ ((states.sensor.energy_total_ecs_usage_weekly_bleu_hp.state | float) /1000) | round(2) }}'

     energy_total_ecs_usage_weekly_bleu_hc_kwh:
       friendly_name: "Energie Semaine ECS Bleu HC kWh"
       unit_of_measurement: "kWh"
       device_class: energy
       value_template: '{{ ((states.sensor.energy_total_ecs_usage_weekly_bleu_hc.state | float) /1000) | round(2) }}'

     energy_total_ecs_usage_weekly_blanc_hp_kwh:
       friendly_name: "Energie Semaine ECS Blanc HP kWh"
       unit_of_measurement: "kWh"
       device_class: energy
       value_template: '{{ ((states.sensor.energy_total_ecs_usage_weekly_blanc_hp.state | float) /1000) | round(2) }}'

     energy_total_ecs_usage_weekly_blanc_hc_kwh:
       friendly_name: "Energie Semaine ECS Blanc HC kWh"
       unit_of_measurement: "kWh"
       device_class: energy
       value_template: '{{ ((states.sensor.energy_total_ecs_usage_weekly_blanc_hc.state | float) /1000) | round(2) }}'

     energy_total_ecs_usage_weekly_rouge_hp_kwh:
       friendly_name: "Energie Semaine ECS Rouge HP kWh"
       unit_of_measurement: "kWh"
       device_class: energy
       value_template: '{{ ((states.sensor.energy_total_ecs_usage_weekly_rouge_hp.state | float) /1000) | round(2) }}'

     energy_total_ecs_usage_weekly_rouge_hc_kwh:
       friendly_name: "Energie Semaine ECS Rouge HC kWh"
       unit_of_measurement: "kWh"
       device_class: energy
       value_template: '{{ ((states.sensor.energy_total_ecs_usage_weekly_rouge_hc.state | float) /1000) | round(2) }}'

######  Mensuel
     energy_total_ecs_usage_monthly_bleu_hp_kwh:
       friendly_name: "Energie Mois ECS Bleu HP kWh"
       unit_of_measurement: "kWh"
       device_class: energy
       value_template: '{{ ((states.sensor.energy_total_ecs_usage_monthly_bleu_hp.state | float) /1000) | round(2) }}'

     energy_total_ecs_usage_monthly_bleu_hc_kwh:
       friendly_name: "Energie Mois ECS Bleu HC kWh"
       unit_of_measurement: "kWh"
       device_class: energy
       value_template: '{{ ((states.sensor.energy_total_ecs_usage_monthly_bleu_hc.state | float) /1000) | round(2) }}'

     energy_total_ecs_usage_monthly_blanc_hp_kwh:
       friendly_name: "Energie Mois ECS Blanc HP kWh"
       unit_of_measurement: "kWh"
       device_class: energy
       value_template: '{{ ((states.sensor.energy_total_ecs_usage_monthly_blanc_hp.state | float) /1000) | round(2) }}'

     energy_total_ecs_usage_monthly_blanc_hc_kwh:
       friendly_name: "Energie Mois ECS Blanc HC kWh"
       unit_of_measurement: "kWh"
       device_class: energy
       value_template: '{{ ((states.sensor.energy_total_ecs_usage_monthly_blanc_hc.state | float) /1000) | round(2) }}'

     energy_total_ecs_usage_monthly_rouge_hp_kwh:
       friendly_name: "Energie Mois ECS Rouge HP kWh"
       unit_of_measurement: "kWh"
       device_class: energy
       value_template: '{{ ((states.sensor.energy_total_ecs_usage_monthly_rouge_hp.state | float) /1000) | round(2) }}'

     energy_total_ecs_usage_monthly_rouge_hc_kwh:
       friendly_name: "Energie Mois ECS Rouge HC kWh"
       unit_of_measurement: "kWh"
       device_class: energy
       value_template: '{{ ((states.sensor.energy_total_ecs_usage_monthly_rouge_hc.state | float) /1000) | round(2) }}'

######  Annuel
     energy_total_ecs_usage_yearly_bleu_hp_kwh:
       friendly_name: "Energie Annee ECS Bleu HP kWh"
       unit_of_measurement: "kWh"
       device_class: energy
       value_template: '{{ ((states.sensor.energy_total_ecs_usage_yearly_bleu_hp.state | float) /1000) | round(2) }}'

     energy_total_ecs_usage_yearly_bleu_hc_kwh:
       friendly_name: "Energie Annee ECS Bleu HC kWh"
       unit_of_measurement: "kWh"
       device_class: energy
       value_template: '{{ ((states.sensor.energy_total_ecs_usage_yearly_bleu_hc.state | float) /1000) | round(2) }}'

     energy_total_ecs_usage_yearly_blanc_hp_kwh:
       friendly_name: "Energie Annee ECS Blanc HP kWh"
       unit_of_measurement: "kWh"
       device_class: energy
       value_template: '{{ ((states.sensor.energy_total_ecs_usage_yearly_blanc_hp.state | float) /1000) | round(2) }}'

     energy_total_ecs_usage_yearly_blanc_hc_kwh:
       friendly_name: "Energie Annee ECS Blanc HC kWh"
       unit_of_measurement: "kWh"
       device_class: energy
       value_template: '{{ ((states.sensor.energy_total_ecs_usage_yearly_blanc_hc.state | float) /1000) | round(2) }}'

     energy_total_ecs_usage_yearly_rouge_hp_kwh:
       friendly_name: "Energie Annee ECS Rouge HP kWh"
       unit_of_measurement: "kWh"
       device_class: energy
       value_template: '{{ ((states.sensor.energy_total_ecs_usage_yearly_rouge_hp.state | float) /1000) | round(2) }}'

     energy_total_ecs_usage_yearly_rouge_hc_kwh:
       friendly_name: "Energie Annee ECS Rouge HC kWh"
       unit_of_measurement: "kWh"
       device_class: energy
       value_template: '{{ ((states.sensor.energy_total_ecs_usage_yearly_rouge_hc.state | float) /1000) | round(2) }}'


############### UTILITY METERS #################
utility_meter:

######  Total journalier
 energy_total_ecs_usage_daily:
   source: sensor.energie_totale_ecs
   name: "Energie Journaliere Tempo ECS"
   cycle: daily
   tariffs:
    - Bleu HP
    - Bleu HC
    - Blanc HP
    - Blanc HC
    - Rouge HP
    - Rouge HC

######  Total hebdomadaire
 energy_total_ecs_usage_weekly:
   source: sensor.energie_totale_ecs
   name: "Energie hebdomadaire Tempo ECS"
   cycle: weekly
   tariffs:
    - Bleu HP
    - Bleu HC
    - Blanc HP
    - Blanc HC
    - Rouge HP
    - Rouge HC

######  Total mensuel
 energy_total_ecs_usage_monthly:
   source: sensor.energie_totale_ecs
   name: "Energie mensuelle Tempo ECS"
   cycle: monthly
   tariffs:
    - Bleu HP
    - Bleu HC
    - Blanc HP
    - Blanc HC
    - Rouge HP
    - Rouge HC

######  Total annuel
 energy_total_ecs_usage_yearly:
   source: sensor.energie_totale_ecs
   name: "Energie annuelle Tempo ECS"
   cycle: yearly
   tariffs:
    - Bleu HP
    - Bleu HC
    - Blanc HP
    - Blanc HC
    - Rouge HP
    - Rouge HC

Côté explication, c'est simple, cela me crée mes templates de sensor :
D'abord tous les totaux puissances et coûts pour le jour/semaine/mois/annee
  • energy_total_ecs_daily
  • cout_total_ecs_daily
  • energy_total_ecs_weekly
  • cout_total_ecs_weekly
  • energy_total_ecs_monthly
  • cout_total_ecs_monthly
  • energy_total_ecs_yearly
  • cout_total_ecs_yearly
Puis les coûts totaux par périodes BLEU/BLANC/ROUGE (ici juste BLEU pour le principe)
  • cout_total_ecs_daily_bleu_hp
  • cout_total_ecs_daily_bleu_hc
  • cout_total_ecs_weekly_bleu_hp
  • cout_total_ecs_weekly_bleu_hc
  • cout_total_ecs_monthly_bleu_hp
  • cout_total_ecs_monthly_bleu_hc
  • cout_total_ecs_yearly_bleu_hp
  • cout_total_ecs_yearly_bleu_hc

Ensuite je convertis les sensors de consommations de l'utility_meter qui sont en Wh en kWh
ici uniquement le journalier, mais il faut la même chose pour chaque cycle
  • energy_total_ecs_usage_daily_bleu_hp_kwh
  • energy_total_ecs_usage_daily_bleu_hc_kwh
  • energy_total_ecs_usage_daily_blanc_hp_kwh
  • energy_total_ecs_usage_daily_blanc_hc_kwh
  • energy_total_ecs_usage_daily_rouge_hp_kwh
  • energy_total_ecs_usage_daily_rouge_hc_kwh

Et enfin les utility_meter à mesurer :
Ce qui compte ici c'est la source de la mesure, qui vient des mesures knx d'un TE331, sensor.energie_totale_ecs pour moi pour ce fichier là
  • energy_total_ecs_usage_daily
  • energy_total_ecs_usage_weekly
  • energy_total_ecs_usage_monthly
  • energy_total_ecs_usage_yearly

Il faut ensuite multiplier ce fichier par le nombre de mesures, et renommer ECS sur la cible concernées (Prises, Froid, Lumières, etc.)
  • Les Automations
Viens ensuite la partie déclenchement, j'ai buté quelque temps pour essayer de passer une variable mais quelque chose ne va pas donc j'ai fait autrement.
J'ai donc 6 Automations comme celles-ci :
  • Tempo HC Bleu
  • Tempo HP Bleu
  • Tempo HC Blanc
  • Tempo HP Blanc
  • Tempo HC Rouge
  • Tempo HP Rouge

Exemple pour Tempo HC Bleu :
Code :
alias: Tempo HC Bleu
description: ""
trigger:
 - platform: time
   at: "22:00:00"
   variables:
     tariff: Bleu HC
condition:
 - condition: state
   entity_id: sensor.tempo_aujourd_hui
   state: BLEU
action:
 - service: select.select_option
   target:
     entity_id: select.energy_total_usage_daily
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_usage_weekly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_usage_monthly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_usage_yearly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_ecs_usage_daily
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_ecs_usage_weekly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_ecs_usage_monthly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_ecs_usage_yearly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_lt_usage_daily
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_lt_usage_weekly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_lt_usage_monthly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_lt_usage_yearly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_lumieres_usage_daily
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_lumieres_usage_weekly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_lumieres_usage_monthly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_lumieres_usage_yearly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_prises_usage_daily
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_prises_usage_weekly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_prises_usage_monthly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_prises_usage_yearly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_groupesfroid_usage_daily
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_groupesfroid_usage_weekly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_groupesfroid_usage_monthly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_groupesfroid_usage_yearly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_electrocuisine_usage_daily
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_electrocuisine_usage_weekly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_electrocuisine_usage_monthly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_electrocuisine_usage_yearly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_electrobuanderie_usage_daily
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_electrobuanderie_usage_weekly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_electrobuanderie_usage_monthly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_electrobuanderie_usage_yearly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_chauffage_usage_daily
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_chauffage_usage_weekly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_chauffage_usage_monthly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_chauffage_usage_yearly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_chauffagevmc_usage_daily
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_chauffagevmc_usage_weekly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_chauffagevmc_usage_monthly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_chauffagevmc_usage_yearly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_chauffagesdb_usage_daily
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_chauffagesdb_usage_weekly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_chauffagesdb_usage_monthly
   data:
     option: "{{ tariff }}"
 - service: select.select_option
   target:
     entity_id: select.energy_total_chauffagesdb_usage_yearly
   data:
     option: "{{ tariff }}"
mode: single


  • Les récupérations des infos Tempo
Le fichier rest.yaml :
Code :
- resource_template: https://particulier.edf.fr/services/rest/referentiel/searchTempoStore?dateRelevant={{now().strftime("%Y-%m-%d")}}
 scan_interval: 21600
 sensor:
   - name: "Tempo Demain"
     value_template: "{{ value_json['couleurJourJ1']|regex_replace(find='^TEMPO_', replace='') }}"
   - name: "Tempo Aujourd'hui"
     value_template: "{{ value_json['couleurJourJ']|regex_replace(find='^TEMPO_', replace='') }}"
- resource: https://particulier.edf.fr/services/rest/referentiel/getNbTempoDays?TypeAlerte=TEMPO
 scan_interval: 21600
 sensor:
   - name: "Jours Rouge restants"
     value_template: "{{ value_json.PARAM_NB_J_ROUGE }}"
   - name: "Jours Blanc restants"
     value_template: "{{ value_json.PARAM_NB_J_BLANC }}"
   - name: "Jours Bleu restants"
     value_template: "{{ value_json.PARAM_NB_J_BLEU }}"

Et enfin, le dashboard associé à tout cela :

[attachment=2628]


Voilà pour moi, sans usage de nodered du tout du coup. (J'ai toujours pas compris à quoi ça servait  Rolleyes )