Besoin d’aide pour mon suivi conso EDF TEMPO

Je souhaiterai automatiser le calcul de mes consos via l’integration Energy. Je dispose d’une offre TEMPO et souhaite donc pouvoir calculer

  • le coût journalier par tranche tarifaire (bleu HC, bleu HP, blanc HC …)
  • le coût journalier totale
  • le coût mensuel par tranche tarifaire (bleu HC, bleu HP, blanc HC …)
  • le coût mensuel totale

Après avoir lu la doc et parcouru différents forums, je pense comprendre le principe mais coince un peu sur la réalisation.

Première étape : la création des 4 utility meter

utility_meter:
  conso_edf_jour:
    source: sensor.linky_power
    name: Conso EDF jour
    cycle: daily
    tariffs:
      - bleuHC
      - bleuHP
      - blancHC
      - blancHP
      - rougeHC
      - rougeHP
  conso_edf_jour_totale:
    source: sensor.linky_power
    name: Conso EDF jour totale
    cycle: daily
  conso_edf_mois:
    source: sensor.linky_power
    name: Conso EDF jour
    cycle: monthly
    tariffs:
      - bleuHC
      - bleuHP
      - blancHC
      - blancHP
      - rougeHC
      - rougeHP
  conso_edf_mois_totale:
    source: sensor.linky_power
    name: Conso EDF mois totale
    cycle: daily

Cette partie semble ok puisque je retrouve bien mes 4 sensors dans Developper Tools / States.

Seconde étape : la création d’une (ou deux) automations permettant de déterminer la tranche tarifaire sur laquelle je me trouve à chaque instant de la journée.

Pour cette étape, j’ai souscris à l’API RTE TEMPO pour récupérer entre autre la couleur actuelle et la prochaine couleur. Cette partie fonctionne bien. Juste une précision, la couleur actuelle est mise à jour le matin entre 6h et 6h45 selon les jours.

Mon souhait est donc de créer une première automation qui

  • à 6h bascule la tranche tarifaire en bleu HP / blanc HP / rouge HP selon la couleur active à cette heure
  • à 22h bascule la tranche tarifaire en bleu HC / blanc HC / rouge HC selon la couleur active à cette heure

Je créerai ensuite une seconde automation pour gérer finement le changement de statut du sensor couleur actuelle (issue de l’API RTE) susceptible d’intervenir entre 6h et 7h

A ce stade, je coince sur la première automation. Je dois avoir un pb de syntaxe dans le code JINJA2 que je ne maîtrise pas bien. Voici le code

automation:
  trigger:
    - platform: time
      at: 06:00:00
      variables:
        tariff: |-
          {% if 'Bleu' in states('sensor.rte_tempo_prochaine_couleur') %}
            "bleuHP"
          {% elif 'Blanc' in states('sensor.rte_tempo_prochaine_couleur') %}
            "blancHP"
          {% elif 'Rouge' in states('sensor.rte_tempo_prochaine_couleur') %}
            "rougeHP"
          {% else %}
            "indetermine"
          {% endif %}
    - platform: time
      at: 22:00:00
      variables:
        tariff: |-
          {% if 'Bleu' in states('sensor.rte_tempo_couleur_actuelle') %}
            "bleuHC"
          {% elif 'Blanc' in states('sensor.rte_tempo_couleur_actuelle') %}
            "blancHC"
          {% elif 'Rouge' in states('sensor.rte_tempo_couleur_actuelle') %}
            "rougeHC"
          {% else %}
            "indetermine"
          {% endif %}
  action:
    - service: select.select_option
      target:
        entity_id: select.conso_edf_jour
      data:
        option: "{{ tariff }}"
    - service: select.select_option
      target:
        entity_id: select.conso_edf_jour_total
      data:
        option: "{{ tariff }}"
  mode: single

J’ai checké et le format du YAML est ok. Par contre à l’enregistrement de l’automatisation j’ai le message « Message malformed: extra keys not allowed @ data[‹ automation ›] »

Si quelqu’un peut m’aguiller par je coince :wink:

Bj

essai ceci comme automatisation

alias: "Nom automatisation"
trigger:
  - platform: time
    at: '06:00:30'
  - platform: time
    at: '22:00:30'
variables:
  tariff: >
    {% if 'Bleu' in states('sensor.rte_tempo_prochaine_couleur') %}
      bleuHP
    {% elif 'Blanc' in states('sensor.rte_tempo_prochaine_couleur') %}
      blancHP
    {% elif 'Rouge' in states('sensor.rte_tempo_prochaine_couleur') %}
      rougeHP
    {% else %}
      indetermine
    {% endif %}
action:
  - service: select.select_option
    target:
      entity_id: select.conso_edf_jour
    data:
      option: "{{ tariff }}"
  - service: select.select_option
    target:
      entity_id: select.conso_edf_jour_total
    data:
      option: "{{ tariff }}"
1 « J'aime »

Merci pour ton aide. Grâce à cela j’ai réussi à créer 3 automations afin de suivre précisément les changements tranches tarifaires.

Pour ceux que cela intéresse, voici l’automatisation qui tourne à 6h

alias: automationMajTrancheTempo6h
description: ""
trigger:
  - platform: time
    at: "06:00:00"
condition: []
action:
  - service: select.select_option
    target:
      entity_id: select.conso_edf_jour
    data:
      option: "{{ tariff }}"
  - service: select.select_option
    target:
      entity_id: select.conso_edf_mois
    data:
      option: "{{ tariff }}"
  - service: notify.telegram_xxxxxxx
    data:
      message: >-
        Bascule sur la tranche tarifaire {{ tariff }}
      title: Changement de tarif Tempo à 6h
mode: single
variables:
  tariff: |
    {% if 'Bleu' in states('sensor.rte_tempo_prochaine_couleur') %}
      bleuHP
    {% elif 'Blanc' in states('sensor.rte_tempo_prochaine_couleur') %}
      blancHP
    {% elif 'Rouge' in states('sensor.rte_tempo_prochaine_couleur') %}
      rougeHP
    {% else %}
      indetermine
    {% endif %}

Celle qui tourne à 22h

alias: automationMajTrancheTempo22h
description: ""
trigger:
  - platform: time
    at: "22:00:00"
condition: []
action:
  - service: select.select_option
    target:
      entity_id: select.conso_edf_jour
    data:
      option: "{{ tariff }}"
  - service: select.select_option
    target:
      entity_id: select.conso_edf_mois
    data:
      option: "{{ tariff }}"
  - service: notify.telegram_xxxxxx
    data:
      message: >-
        Bascule sur la tranche tarifaire {{ tariff }}
      title: Changement de tarif Tempo à 22h
variables:
  tariff: |
    {% if 'Bleu' in states('sensor.rte_tempo_couleur_actuelle') %}
      bleuHC
    {% elif 'Blanc' in states('sensor.rte_tempo_couleur_actuelle') %}
      blancHC
    {% elif 'Rouge' in states('sensor.rte_tempo_couleur_actuelle') %}
      rougeHC
    {% else %}
      indetermine
    {% endif %}

Et celle qui tourne au moment où RTE met à jour son API

alias: automationMajTrancheTempoMajRte
description: ""
trigger:
  - platform: state
    entity_id: sensor.rte_tempo_couleur_actuelle
condition:
  - condition: template
    value_template: "{{ trigger.from_state.state != trigger.to_state.state }}"
action:
  - service: select.select_option
    target:
      entity_id: select.conso_edf_jour
    data:
      option: "{{ tariff }}"
  - service: select.select_option
    target:
      entity_id: select.conso_edf_mois
    data:
      option: "{{ tariff }}"
  - service: notify.telegram_xxxxxx
    data:
      message: >-
        Avant : {{ trigger.from_state.state }} - Après {{trigger.to_state.state }}
      title: Changement de tarif Tempo à la MAJ RTE
variables:
  tariff: |
    {% if 'Bleu' in states('sensor.rte_tempo_couleur_actuelle') %}
      bleuHP
    {% elif 'Blanc' in states('sensor.rte_tempo_couleur_actuelle') %}
      blancHP
    {% elif 'Rouge' in states('sensor.rte_tempo_couleur_actuelle') %}
      rougeHP
    {% else %}
      indetermine
    {% endif %}

Je vais m’attaquer maintenant au calcul de prix par tranche. Merci Nothing !

3 « J'aime »

Excellent merci

Pour le calcul du tarif il suffit de rentrer le prix de la tranche dans les lignes des tranche sur la tableau énergie ? Non

La question que je me pose , est ce que quand tu sera en tranche bleu et que tu passe en blanc cela va arrêter les compteur des tranche bleu et rouge quand tu passera en blanc ?
J’avais commencer à faire le même schéma que toi mais j’arrivais pas à 6h à stopper les compteur des autres tranches.
Merci quand même on avance👍

Pour le calcul des coûts je pars pour l’instant sur des inputs number. J’en défini autant qu’il y a de tranches tarifaires sur l’offre TEMPO. J’ai même ajouté les tarifs de base pour comparer le gain réalisé (enfin j’espère) en étant passé à TEMPO

Voici les inputs numbers que j’utilise

# EDF Tarif Bleu Option Base
tarif_edf_base:
  name: EDF Base
  initial: 0.2276
  min: 0
  max: 1
  step: 0.0001
  mode: slider
  unit_of_measurement: "€ /kWh"
  icon: mdi:cash-lock
# EDF Tarif Bleu Option HP/HC
tarif_edf_base_hc:
  name: EDF Base HC
  initial: 0.1828
  min: 0
  max: 1
  step: 0.0001
  mode: slider
  unit_of_measurement: "€ /kWh"
  icon: mdi:cash-lock
tarif_edf_base_hp:
  name: EDF Base HP
  initial: 0.2460
  min: 0
  max: 1
  step: 0.0001
  mode: slider
  unit_of_measurement: "€ /kWh"
  icon: mdi:cash-lock
# EDF Tarif Bleu Option Tempo
tarif_edf_tempo_bleu_hc:
  name: EDF Tempo Bleu HC
  initial: 0.1056
  min: 0
  max: 1
  step: 0.0001
  mode: slider
  unit_of_measurement: "€ /kWh"
  icon: mdi:cash-lock
tarif_edf_tempo_bleu_hp:
  name: EDF Tempo Bleu HP
  initial: 0.1369
  min: 0
  max: 1
  step: 0.0001
  mode: slider
  unit_of_measurement: "€ /kWh"
  icon: mdi:cash-lock
tarif_edf_tempo_blanc_hc:
  name: EDF Tempo Blanc HC
  initial: 0.1246
  min: 0
  max: 1
  step: 0.0001
  mode: slider
  unit_of_measurement: "€ /kWh"
  icon: mdi:cash-lock
tarif_edf_tempo_blanc_hp:
  name: EDF Tempo Blanc HP
  initial: 0.1654
  min: 0
  max: 1
  step: 0.0001
  mode: box
  unit_of_measurement: "€ /kWh"
  icon: mdi:cash-lock
tarif_edf_tempo_rouge_hc:
  name: EDF Tempo Rouge HC
  initial: 0.1328
  min: 0
  max: 1
  step: 0.0001
  mode: box
  unit_of_measurement: "€ /kWh"
  icon: mdi:cash-lock
tarif_edf_tempo_rouge_hp:
  name: EDF Tempo Rouge HP
  initial: 0.7324
  min: 0
  max: 1
  step: 0.0001
  mode: box
  unit_of_measurement: "€ /kWh"
  icon: mdi:cash-lock

Pour ta dernière remarque sur les changements de tranche tarifaire, je pense que les 3 automations ci-dessus me permettront de toujours disposer des tranches tarifaires à jour. Je vais surveiller cela de prêt dans les prochains jours. Pas de suite car ces jours-ci on reste en bleu … j’en viendrai presque à être impatient de passer en blanc pour vérifier que cela fonctionne bien :wink:

2 « J'aime »

Demain est un jour blanc :blush:

Ton projet m’intéresse :blush:

1 « J'aime »

Le jour blanc est arrivé et a permis de valider le fonctionnement des 3 automations : je dispose toujours de la bonne tranche tarifaire et suis donc en mesure de correctement alimenter les 4 Utility meters. Top !

Sur le board, cela donne cela pour l’instant


C’est sympa de pouvoir simplement comparer le coût de l’offre TEMPO vs l’option de base HC/HP.

Next step, je me suis lance dans l’envoi de notif télégram (cette partie fonctionne bien) et l’export des données au format .csv histoire de garder une trace sur du plus long terme … et là je coince sur un truc trop bizarre

Dans le fichier configuration.yaml quand j’indique ceci

- platform: file
  name: logconsoedf
  filename: logconsoedf.csv
  timestamp: False  

les données s’exportent normalement à partir de /homeassistant

Par contre, impossible d’écrire sous un répertoire dédié. Quand je modifie le fichier configuration.yaml en

- platform: file
  name: logconsoedf
  filename: /config/www/log/logconsoedf.csv
  timestamp: False  

rien ne se passe ! Pas d’erreur dans les traces mais pas d’écriture non plus. Vous me direz que je pourrai laisser le fichier de log dans son emplacement initial (sous /homeassistant) mais le pb c’est qu’à partir de cet endroit, je n’arrive pas à l’uploader en PJ le fichier de log dans un mail via une automatisation.

service: notify.email_notification
data:
  title: Donnees EDF
  message: conso et cout en PJ
  data:
    images:
      - logconsoedf.csv```

Je me prends cette erreur : Cannot send email with attachment « logconsoedf.csv » from directory « . » which is not secure to load data from. Only folders added to allowlist_external_dirs are accessible.

Par contre, l’automatisation fonctionne quand mon fichier de log ce situe sous /homeassistant/www/log/logconsoedf.csv

Celle-ci fonctionne : elle envoi le mail avec le fichier de log en PJ

service: notify.email_notification
data:
  title: Donnees EDF
  message: conso et cout en PJ
  data:
    images:
      - /config/www/log/logconsoedf.csv

Trop bizarre ce souci. Je tourne en rond sur cette bêtise depuis hier au soir. Si vous avez une idée

Je précise que dans le configuration.yaml, j’ai bien ajouté les lignes suivantes

homeassistant:
  allowlist_external_dirs:
  - "/config/www/log"
1 « J'aime »

Bonjour,
Bon tout marchait nickel jusqu’à aujourd’hui avec les heures bleu
Hier nous étions en tempo bleu et donc la bascule Hp / hc c’est bien réalisé hier soir soir à 22h.
Ce matin à cette instant je voit que la bascule c’est pas faite et que l’automatisation rte ne sait pas exécuter
Je ne sais pas pourquoi et voit pas ce qui bloque avez vous une idée ?
Est-ce parce que la couleur du jour est identique ?
Merci

Bonjour
Bizarre quand même quand on est en couleur bleu la bascule ne se fait pas entre hp et hc a 6h

Quelqu’un a une idée du pourquoi ?

Bonjour, as tu regardé la trace de l’automation qui est censé tourner à 6h ? Il y a sûrement un critère qui n’était pas rempli

Je remarque dans le journal car l’automatisation en faite ne ce lance pas. MAJ rte tempo
C’est là que je pige pas, on voit que je l’est lancer à 6h20 en manuel mais sinon elle ce lance pas.
Faut il faire quelque chose pour quel ce lance ?

Je pense qu’il y a une incompréhension

  • l’automation de 6h a pour but de bascule la tranche tarifaire en bleu HP / blanc HP / rouge HP selon la couleur active à cette heure (en clair on passe sur la tranche HP de la bonne couleur)

  • l’automation de 22h a pour but de bascule la tranche tarifaire en bleu HC / blanc HC / rouge HC selon la couleur active à cette heure (en clair on passe sur la tranche HC de la bonne couleur)

  • la troisième a pour but de gérer l’éventuel changement de valeur du sensor couleur actuelle (issue de l’API RTE). Cette modification est susceptible d’intervenir entre 6h et 7h. Si deux jours se suivent sans changement de couleur, cette automation n’aboutira puisque la couleur reste identique

Ok je te met mes 2 automatisations de 6h 22h
Est ce que tu voit quelque chose qui cloche ?


qu’est ce tu as dans ‹ Historique des executions › de l’automatisation qui n’a pas l’air de se lancer ?

Rien justement aucun message en rouge tout est ok.
J’ai refait l’automatisation je vais te redire demain à 6h.
Mais si je clique là sur exécuter aucun message erreur donc je suppose que à 6h cela sera pareil mais non justement

Le pb s’est produit juste ce matin ?

Non tout marchait bien depuis que tu avait mis les automatisation sur le forum et à ce moment là on était en blanc, et quand on est passé en jour rouge je me suis aperçu du truc et contrôler les codes et rien trouver. Et pareil depuis que l’on est en bleu. Y’a un truc que je voit pas qui change pas le HP le matin. A 22h j’ai aucun soucis

J’ai installer ce truc sur un nouveau ha également vierge je vais voir si j’ai également le même soucis j’ai que ça d’installer dessus donc si 2 ha différents produise le même soucis y’a un truc qui m’echappe

Je pencherait sur un soucis de déclenchement de la couleur dans la macro de 6h car elle prend la prochaine couleur est ce celle du lendemain car à 6h ces la couleur actuel du jour ?
Un truc comme ça si ça peut aiguilller

Est ce que tu as implémenté la 3eme automation ? (Celle qui se déclenche à la maj de l’API RTE). pour moi le souci se situe sur celle la. Celle de 6h est très basique. Mais encore une fois la réponse à tes questions se trouve dans les traces. Analyse tous les step présent dedans. Chez moi cela fonctionne donc pas de raison que tu n’y arrives pas

La 3 émet toute simple chez moi y’a que la condition que je comprend pas le reste basic


alias: MAJ Conso Rte
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.rte_tempo_couleur_actuelle
condition:
  - condition: template
    value_template: "{{ trigger.from_state.state != trigger.to_state.state }}"
action:
  - service: select.select_option
    target:
      entity_id: select.conso_edf_jour
    data:
      option: "{{ tariff }}"
  - service: notify.whatsapp
    data:
      message: Changement RTE
variables:
  tariff: |
    {% if 'Bleu' in states('sensor.rte_tempo_couleur_actuelle') %}
      BLEUHP
    {% elif 'Blanc' in states('sensor.rte_tempo_couleur_actuelle') %}
      BLANCHP
    {% elif 'Rouge' in states('sensor.rte_tempo_couleur_actuelle') %}
      ROUGEHP
    {% else %}
      indetermine
    {% endif %}