Calcul du prix d'une recharge avec Tempo

Hello la communauté

J’essaye de faire un truc simple mais qui semble plus difficile que prévu :slight_smile:

Je veux afficher une carte avec :
« Prix de la dernière recharge : xx €
Cout des recharges mensuel : xxx € »

J’ai un abonnement tempo et de quoi remonter la consommation de la borne via un shelly EM3 et une entrée qui aggrège les valeurs des 3 phases (img 1), l’info de la couleur du jour (sensor de l’intégration, img 2), l’info de savoir si on est en HC/HP via une entité on/off et une automation (img 3) et les prix du kwh dans des entités (img 4), une pour chaque cas (blanc HP, blanc HC, etc.)

Avec tout ca, je pensais qu’il me serait assez simple de dire à HA « affiche moi le prix payé pour telle charge », mais visiblement, non.

Je n’arrive à rien, j’ai vu passer des propositions de passer par des utility meter mais je n’ai pas envie que cela remonte dans mon tableau énergie et je veux que ca calcule en fonction de 6 tarifs.

Est-ce que quelqu’un a réussi à faire un truc simple, sans besoin de rajouter 22 intégrations et de faire 18000 lignes de codes ?

Idealement, j’aimerai ensuite faire pareil pour mon poele à bois et mes PAC.

Merci de votre aide :slight_smile:

(PS : Problématique supplémentaire : je charge sur 2 jours, entre 22h et 6h du mat, donc ca complique un peu la donne je suppose.)




Bonjour,
si tu utilise utility_meter, c’est toi qui doit ajouter l’entité dans le panneau énergie sinon c’est pas automatique. Donc si tu l’ajoute pas, rien sera dans ton panneau énergie.

C’est pas clair ces utility_meter.
Je peux lui rentrer des tarifs, mais je ne trouve pas comment dire à HA « aujourdhui à 17h, c’est HPBLEU, à 22h HCBLEU, Demain à 6h HPROUGE, etc. »
J’ai bien des sensors « sensor.prix_des_charges_journalieres_hprouge », « sensor.prix_des_charges_journalieres_hpbleu » etc. qui se sont créés, mais comment je dis qui est quoi quand à HA ?

Je m’auto-réponds : ca a aussi créé une entité select.prix_des_charges_journalieres

Donc une automation basé sur l’heure et la couleur du jour et je dois pouvoir faire varier les tarifs applicables.

Est-ce qu’on est d’accord que c’est comme ça qu’on fait ?

alias: Borne > Sélection tarif applicable
description: >-
  Le compteur de service public 'prix_des_charges_journalieres' a 6 tarifs
  (Tempo)


  On utilise l'interrupteur HC/HP géré par une autre automation.

  Quand celui-ci change d'état, on vérifie si on est passé en HC ou en HP. (1er
  "Si")

  En fonction du résultat, on va vérifier l'état de "couleur du jour" fourni par
  Tempo (les 3 "Si" suivant).

  On affecte le bon tarif (HPROUGE, HPBLANC, HPBLEU, HCROUGE, HCBLANC, HCBLEU)
  au select.prix_des_charges_journalieres lié au compteur de service public
  "Prix des charges".
trigger:
  - platform: state
    entity_id:
      - input_boolean.status_hp_hc
condition: []
action:
  - if:
      - condition: state
        entity_id: input_boolean.status_hp_hc
        state: "off"
    then:
      - if:
          - condition: state
            entity_id: sensor.rte_tempo_couleur_actuelle
            state: Bleu
        then:
          - service: select.select_option
            target:
              entity_id: select.prix_des_charges_journalieres
            data:
              option: HPBLEU
      - if:
          - condition: state
            entity_id: sensor.rte_tempo_couleur_actuelle
            state: Blanc
        then:
          - service: select.select_option
            target:
              entity_id: select.prix_des_charges_journalieres
            data:
              option: HPBLANC
      - if:
          - condition: state
            entity_id: sensor.rte_tempo_couleur_actuelle
            state: Rouge
        then:
          - service: select.select_option
            target:
              entity_id: select.prix_des_charges_journalieres
            data:
              option: HPROUGE
    else:
      - if:
          - condition: state
            entity_id: sensor.rte_tempo_couleur_actuelle
            state: Bleu
        then:
          - service: select.select_option
            target:
              entity_id: select.prix_des_charges_journalieres
            data:
              option: HCBLEU
      - if:
          - condition: state
            entity_id: sensor.rte_tempo_couleur_actuelle
            state: Blanc
        then:
          - service: select.select_option
            target:
              entity_id: select.prix_des_charges_journalieres
            data:
              option: HCBLANC
      - if:
          - condition: state
            entity_id: sensor.rte_tempo_couleur_actuelle
            state: Rouge
        then:
          - service: select.select_option
            target:
              entity_id: select.prix_des_charges_journalieres
            data:
              option: HCROUGE
mode: single

Bon, une fois que j’ai fait tout ca, je fais quoi ?
Parce que j’ai toujours pas l’info que je voulais.

Salut,
ça c’est une automatisation, donc elle donne quoi comme historique d’exécution ?

L’automation fonctionne, le tarif dans sensor.prix_des_charges_journalieres change bien.

Mais j’en fais quoi ? Moi, je veux une card avec « Prix dernière recharge : XX€ »

Là tu mets juste un texte.
Tu as la même chose qui te génère un tarif €/W ?
Et tu as l’entité avec le total en W de ta charge ?

J’ai les entités « borne de recharge - puissance » qui une entité qui additionne les watts de mes 3 phases utilisées par la borne.
Et j’ai les entités tarif tempo HC/HP^Bleu/Blanc/Rouge.

Le lien entre tout ces trucs pour arriver à mon besoin est assez vague…

Oui pour moi aussi c’est flou
Un appareil contient des entités. Les entités à base de templates peuvent faire des calculs. C’est bien ça ?
Dans ton cas, il faut être capable de splitter ta charge en fonction de tes 6 tarifs (puisque tu ne veux pas des utility meters). Si tu as le total, ça donnera pas une valeur correcte

Je veux bien un utility meter, je l’ai même créé. Mais ca me sert à rien, ou alors je ne sais pas comment m’en servir.

Dans ce cas :

Installe l’intégration

et ajoute ce sensor

sensor:
  - platform: schedule_state
    name: prix du kw
    refresh: "00:01:00"
    events:
      - state: "{{ states('input_numer.tarif_tempo_bleu_hc') }}"
        conditions:
          - condition: state
            entity_id: sensor.rte_tempo_couleur_actuelle
            state: "bleu"
          - condition: state
            entity_id: input_boolean.status_hp_hc
            state: "on"
      - state: "{{ states('input_numer.tarif_tempo_bleu_hp') }}"
        conditions:
          - condition: state
            entity_id: sensor.rte_tempo_couleur_actuelle
            state: "bleu"
          - condition: state
            entity_id: input_boolean.status_hp_hc
            state: "off"
      - state: "{{ states('input_numer.tarif_tempo_rouge_hc') }}"
        conditions:
          - condition: state
            entity_id: sensor.rte_tempo_couleur_actuelle
            state: "rouge"
          - condition: state
            entity_id: input_boolean.status_hp_hc
            state: "on"
      - state: "{{ states('input_numer.tarif_tempo_rouge_hp') }}"
        conditions:
          - condition: state
            entity_id: sensor.rte_tempo_couleur_actuelle
            state: "rouge"
          - condition: state
            entity_id: input_boolean.status_hp_hc
            state: "off"
      - state: "{{ states('input_numer.tarif_tempo_blanc_hc') }}"
        conditions:
          - condition: state
            entity_id: sensor.rte_tempo_couleur_actuelle
            state: "blanc"
          - condition: state
            entity_id: input_boolean.status_hp_hc
            state: "on"
      - state: "{{ states('input_numer.tarif_tempo_blanc_hp') }}"
        conditions:
          - condition: state
            entity_id: sensor.rte_tempo_couleur_actuelle
            state: "blanc"
          - condition: state
            entity_id: input_boolean.status_hp_hc
            state: "off"

ça doit te créer une entité dont le tarif corresponds en fonction de ton abonnement.
Et tu utilise cette entité pour faire faire le calcul à ton utility meter

On avance. Je n’avais pas vu ton message mais j’ai fait une automation qui va mettre à jour une entité en fonction du tarif applicable actuellement.
Je suppose que ca fait la même chose que ton intégration.

alias: Borne > Sélection tarif applicable
description: >-
  Le compteur de service public 'prix_des_charges_journalieres' a 6 tarifs
  (Tempo)


  On utilise l'interrupteur HC/HP géré par une autre automation.

  Quand celui-ci change d'état, on vérifie si on est passé en HC ou en HP. (1er
  "Si")

  En fonction du résultat, on va vérifier l'état de "couleur du jour" fourni par
  Tempo (les 3 "Si" suivants).

  On affecte à l'input tarif actuel la valeur correspondant aux inputs Tarifs
  Tempo.
trigger:
  - platform: state
    entity_id:
      - input_boolean.status_hp_hc
condition: []
action:
  - if:
      - condition: state
        entity_id: input_boolean.status_hp_hc
        state: "off"
    then:
      - if:
          - condition: state
            entity_id: sensor.rte_tempo_couleur_actuelle
            state: Bleu
        then:
          - service: input_number.set_value
            data_template:
              entity_id: input_number.tarif_electricite_actuel
              value: "{{ states('input_number.tarif_tempo_bleu_hp') }}"
      - if:
          - condition: state
            entity_id: sensor.rte_tempo_couleur_actuelle
            state: Blanc
        then:
          - service: input_number.set_value
            data_template:
              entity_id: input_number.tarif_electricite_actuel
              value: "{{ states('input_number.tarif_tempo_blanc_hp') }}"
      - if:
          - condition: state
            entity_id: sensor.rte_tempo_couleur_actuelle
            state: Rouge
        then:
          - service: input_number.set_value
            data_template:
              entity_id: input_number.tarif_electricite_actuel
              value: "{{ states('input_number.tarif_tempo_rouge_hp') }}"
    else:
      - if:
          - condition: state
            entity_id: sensor.rte_tempo_couleur_actuelle
            state: Bleu
        then:
          - service: input_number.set_value
            data_template:
              entity_id: input_number.tarif_electricite_actuel
              value: "{{ states('input_number.tarif_tempo_bleu_hc') }}"
      - if:
          - condition: state
            entity_id: sensor.rte_tempo_couleur_actuelle
            state: Blanc
        then:
          - service: input_number.set_value
            data_template:
              entity_id: input_number.tarif_electricite_actuel
              value: "{{ states('input_number.tarif_tempo_blanc_hc') }}"
      - if:
          - condition: state
            entity_id: sensor.rte_tempo_couleur_actuelle
            state: Rouge
        then:
          - service: input_number.set_value
            data_template:
              entity_id: input_number.tarif_electricite_actuel
              value: "{{ states('input_number.tarif_tempo_rouge_hc') }}"
mode: single

J’ai utilisé cette entité comme prix à utiliser dans un utility meter que j’ai ajouté à « consommation de gaz ».
Ca va effectivement me donner un tarif pour les charges du jour ou du mois, mais pas pour la dernière charge ou celle faite par mon beauf le 7 novembre entre 11h et 13h.

je ne sais pas trop comment gérer ca…

Oui c’est le même principe.
Ta nouvelle version de l’automatisation va bien mieux, elle donne une valeur numérique et non un bout de texte.

Pourquoi dans gaz ? Pour séparer du reste ?

A chaque nouvelle charge, il te faut reset l’utility

service: utility_meter.calibrate
data:
  value: '0'
target:
  entity_id: sensor.xxxx_meter

Et la fin de la charge tu auras ton cout (qui tiendra compte des variations de tarifs sur la période)

Tu vois ça dans l’historique du dashboard

Oui, j’ai un suivi des couts de mon electricité assez fin via une teleinfo et je ne veux pas tout saloper avec les couts par device qui sont déjà inclus dans la partie electricité.

Mais c’est génial, ca !!
Ca va effectivement me donner une conso / cout par charge !!

Autre chose : il manquerai pas un truc dans ton automatisation : les 3? triggers pour le changement de couleur ?
A moins que ça coïncide toujours avec la bascule HP/HC ?

J’ai pas compris.
Je check la valeur de HC/HP.
si on est en HC, je récupère la valeur de entité « couleur du jour » (bleu, blanc, rouge)
Selon les cas, j’attribue HCBLEU, HCBLANC ou HCROUGE.
Pareil quand on est en HP.

A priori, ca devrait fonctionner.

La bascule des jours a lieu à quelle heure ?

Par exemple HP entre 7H30 et 22H30, sinon HC.
Donc ton entité est calculée à 7H30 et à 22H30

Mais si la couleur change à 1h du mat, ton entité ne sera ‹ corrigée › que à 7h30

Tu vois ce que je veux dire ?

Les HC / HP changent à 6h et à 22h.
Mais là ou tu as raison, c’est que le sensor.rte_tempo_couleur_actuelle change lui aussi à 6h.
Mais plutôt à 6h00 et 16 secondes.
Donc non, ca ne va pas fonctionner :slight_smile:
Il faut que j’ajoute un délai de 30 secondes avant de faire mes tests.
Ou que je mette le changement de couleur comme trigger aussi, ce qui est encore mieux.