Remonter les coûts électricité abonnement inclu dans dashboard énergies

Hello,

J’ai mis en place, pour le tarif base, ce qu’on fait @ToOoS et @papoo dans le sujet API coût du gaz et de l'électricité.

Si je sais bien comment faire pour remonter le coût de ma consommation en prenant la part variable, j’aimerais plutôt avoir le coût réel donc avec en plus la part fixe.

Pour le faire avec des template sensors pas de souci, mais j’aimerais que ça soit le cas dans le tableau de bord énergies.

Quelqu’un l’a-t-il fait ou aurait des pistes ?

Bonjour,
@Nardol, peux-tu partager ton code pour mixer Part Fixe & Part Variable stp ?
Tu ramènes ça à la journée ?

Bonux: as tu trouver un moyen de rentrée ce coût all inclusive dans le tableau Energies ?

slt…
Il faudrait ajouter un sensor bidon avec la référence prix de l’abonnement!

C’est justement toute la problémathique, si on fait un sensor tarif avec le prix de l’abonnement on aura l’abonnement multiplié par le nombre de KWh non ?

Je ne sais plus si on peut mettre un sensor avec le prix actuel, il faudrait que je recherche encore.

Slt…
Le Hic c’est que le prix changeant, il faut référence suivant la date de changement de prix !

Et surtout le calcul doit se faire mensuel, sinon il faut sensor autre pour journalier ou faire un mixage pour calcul, donc bien compliqué à intégré dans ce lovelace Energie !

Non, pas encore trouvé pour le tableau de bord énergies.

Pour le reste, j’ai des utility meters pour la journée et le mois en cours, et des template sensors qui calculent le prix TTC directement.

Ma config est (un peu) en bazar mais voilà ce que j’ai .

Tout d’abord, j’ai modifié le script parce que j’aime me compliquer la vie et aussi parce que je préférais le code comme ça :

import json
import csv
import requests

from datetime import datetime

url = "https://www.data.gouv.fr/fr/datasets/r/c13d05e5-9e55-4d03-bf7e-042a2ade7e49" # BASE
P_SOUSCRITE = "9" # à modifier pour ajuster

with requests.get(url, stream = True) as r:
    prices = csv.reader(r.content.decode('utf-8').splitlines(), delimiter=';')
    prices = list(prices)

    for price in prices: 
        if price[1] == '' and price[2] == P_SOUSCRITE:
            last_update = datetime.strptime(price[0], '%d/%m/%Y').strftime("%Y-%m-%d")
            info = dict()
            info["last_update"] = last_update
            info["part_fixe_ttc"] = float(price[4].replace(",", "."))
            info["part_variable_base_ttc"] = float(price[6].replace(",", "."))
            print(json.dumps(info))
            break

Mon fichier tarif_reglemente.yaml :

```command_line:
- sensor:
    name: "Tarif réglementé base"
    unique_id: "tarif_reglemente_base_api"
    scan_interval: 86400
    value_template: "{{ value_json.last_update }}"
    #device_class: "date"
    json_attributes:
    - part_fixe_ttc
    - part_variable_base_ttc
    command: "/chemin/vers/trv_electricite_base.py"

template:
- sensor:
    - name: "Tarif réglementé base part fixe ttc"
      unit_of_measurement: "EUR/kWh"
      device_class: "monetary"
      state: "{{ state_attr('sensor.tarif_reglemente_base', 'part_fixe_ttc') }}"
      unique_id: "tarif_reglemente_base_part_fixe"
    - name: "Tarif réglementé part variable base ttc"
      unit_of_measurement: 'EUR/kWh'
      device_class: "monetary"
      state: "{{ state_attr('sensor.tarif_reglemente_base', 'part_variable_base_ttc') }}"
      unique_id: "tarif_reglemente_base_part_variable"

Je crois que le device_class: "date" peut être décommenté et que c’est un oubli, à cause d’un bug qu’il y avait dans Home Assistant. à tester… La faute à mon addiction à la procrastination.

Mon fichier conso_electrique.yaml :

utility_meter:
  energie_quotidienne:
    source: sensor.index_base
    cycle: daily
  energie_mensuelle:
    source: sensor.index_base
    cycle: monthly

template:
-  sensor:
      - name: "Coût consommation aujourd'hui"
        unit_of_measurement: "Euro"
        device_class: monetary
        state: >
          {% from 'easy_time.jinja' import days_in_month %}
          {{ (states('sensor.energie_quotidienne')|float(0)*states('sensor.tarif_reglemente_part_variable_base_ttc')|float(0)+(states("sensor.tarif_reglemente_part_fixe_ttc")|float(0)/12/days_in_month()|int(1)))|round(2) }}
      - name: "Coût consommation mensuelle"
        unit_of_measurement: "Euro"
        device_class: monetary
        state: >
          {{ (states('sensor.energie_mensuelle')|float(0)*states('sensor.tarif_reglemente_part_variable_base_ttc')|float(0)+(states("sensor.tarif_reglemente_part_fixe_ttc")|float(0)/12))|round(2) }}
      - name: Coût consommation d'hier
        state: "{{ states('input_number.cout_consommation_hier') }}"
        unit_of_measurement: Euro
        device_class: monetary
      - name: Consommé hier
        state: "{{ states('input_number.consomme_hier') }}"
        unit_of_measurement: kWh
        device_class: energy

automation:
- id: consommation_veille
  alias: Consommation veille
  description: Calcul la consommation de la journée pour afficher son coût le lendemain
  trigger:
  - platform: time
    at: "23:59:59"
  action:
  - service: input_number.set_value
    entity_id: input_number.consomme_hier
    data:
      value: "{{ states('sensor.energie_quotidienne')|float(0) }}"
  - service: input_number.set_value
    entity_id: input_number.cout_consommation_hier
    data:
      value: "{{(states('sensor.cout_consommation_aujourd_hui')|float(0))|round(2) }}"

L’automatisation est là en bonus on va dire mais pour l’utiliser il ne faut pas oublier de créer les input numbers.

Day in month fait parti de ce dépôt : GitHub - Petro31/easy-time-jinja: Easy Time calculations for Home Assistant templates

Je reconnais que ça n’est pas ce qu’on peut trouver de plus simple et que peut-être que ça mérite d’être améliorer. Mais ça fonctionne :wink:

Bon courage (ou bonne chance lol), pas de copier/coller sans comprendre vu comme j’ai fait ma config pour ça, prends bien le temps si tu veux l’appliquer et quoi qu’il arrive je ferais ce que je peux pour les points que tu ne comprendrais pas.

1 « J'aime »

C’est pas mal ce truc , plus facile que de calculer le nbr jour du mois, celui de l’année pour voir le prix total mois par rapport au tarif abonnement Annuel ! Mais doit revenir au même ?

{{ Prix_abonnement / nbjour_annuel }} * nbjour_du_mois

Merci pour les exemples, évidement j’avais pas forcé coté réflexion…
J’ai voulu partir dans l’intégration ‹ easy_time-jinja › qui me complique la vie plus qu’autre chose.
La formule est bien plus simple, pour ma part je ne regarde que la dépense du jour
Part fixe €/jr = Forfait annuel / 365

## Coût énergie /jour
      - name: Coût consommation aujourd'hui
        unit_of_measurement: "Euro"
        device_class: monetary
        state: >
          {{ (states('sensor.envoy_conso_energie_jour')|float() * states('sensor.tarif_elec_part_variable')|float() + (states('sensor.tarif_elec_part_fixe')|float() /365 |float()))| round(2) }}
        unique_id: cout_conso_jour

Par contre @Nardol ça m’amène une question qui s’écarte du sujet.
Ton histoire de fichier conso_electrique.yaml m’intrigue. As tu un post sur le sujet
Comment tu l’intègres dans la configuration.yaml, ça remplace la répartition dans différents 'sensor.yaml' / template.yaml / utility_meter.yaml ? Merci

Ce qui me pose problème avec les 365 jours, c’est qu’en cas d’année bissextile, il va en manquer un…
Ce qui devrait normalement aussi répondre à ce que tu disais @Doubledom
C’est pour ça que je suis parti sur easy_time-jinja, qui pour information n’est pas une intégration mais un ensemble de templates réutilisables.

Il suffit de rajouter le fichier easy_time.jinja du dépôt dans config/custom_templates et apparemment, on peut même passer par HACS pour rajouter le dépôt, pas tester parce que j’ai mis la langue sur Français pour que les messages que je n’utilise pas soient en français :laughing: du coup en cas de mise à jour il faudrait que je réédite le fichier pour modifier la ligne.

En ce qui concerne l’organisation des fichiers de configuration et tout ce qu’il est possible de faire, je te conseille de lire ce topic et le tuto qui y est conseillé :

1 « J'aime »

Salut Pat…
Moi pour le calcul du Mois en cours je me sers de

now().day -1 

Ci-dessous le calcul du vrai coût pour le mois en cours !

  • j’ai fais directement dans la création entrée avec un Template type « Modéliser un capteur » qui permet de vérifier directement les bonnes syntaxes et class ! cela m’évite les « yaml du template »
Résumé

{{((((states('sensor.hc_mois_novembre_2023')|float(default=0)))*states('sensor.prix_hc_kwh')|float(default=0)) +(((states('sensor.hp_mois_novembre_2023')|float(default=0)))*states('sensor.prix_hp_kwh')|float(default=0)) + (states('sensor.prix_jour_abonnement_9_kva_8_2023')|float(default=0)*now().day -1 |float(default=0)))|round(3)  }}

image

Question @Nardol sais-tu à quoi sert ce truc dans Energy ?

        "cost_adjustment_day": 

En petit bonus, on peut calculer le nombre de jours dans le mois en cours comme ça :

{{ (now().replace(month=now().month % 12 + 1, day=1) - timedelta(days=1)).day }}