API coût du gaz et de l'électricité

Le site du gouvernement OpenData (data.gouv) fournit un historique des prix de l’électricité, y compris la période courante.
Ne pouvant pas mettre de lien, pour y accéder, il faut chercher « api tarif edf » sur Google et prendre le premier lien vers data.gouv.

Hello

@ToOoS

tu parle de celui-ci ?

Oui c’est bien ce lien, merci. Si quelqu’un sait comment récupérer ces données dans HA…

?? MAJ en 2019…qui vuex avoir ça ??

Je ne sais pas ce que c’est cette date, mais en tout cas dans le document il y a bien les tarifs actuels HC et HP, avec un début de période au 01/08/2022.

Bon, j’ai fait un petit script pour aller lire ces données :

fichier « tarif_reglemente.py » (déposé dans config/scrypts_perso/)]

import requests
import csv

url = "https://www.data.gouv.fr/fr/datasets/r/f7303b3a-93c7-4242-813d-84919034c416"
P_SOUSCRITE = "12"

r = requests.get(url, stream = True)
cr = csv.reader(r.content.decode('utf-8').splitlines(), delimiter=';')
my_list = list(cr)
for row in my_list:
    if row[1] == '' and row[2] == P_SOUSCRITE:
       print('{"PART_FIXE_TTC": '+row[4].replace(",", "." )+',"PART_VARIABLE_HC_TTC": '+row[6].replace(",", "." )+',"PART_VARIABLE_HP_TTC": '+row[8].replace(",", "." )+'}')
r.close

La valeur de « P_SOUSCRITE » est à modifier en fonction de votre puissance souscrite.

Ensuite, on crée un sensor pour récupérer tout cela :

- platform: command_line
  name: TarifReglemente
  scan_interval: 86400
  json_attributes:
    - PART_FIXE_TTC
    - PART_VARIABLE_HC_TTC
    - PART_VARIABLE_HP_TTC
  command: 'python3 /config/scrypts_perso/tarif_reglemente.py'

Et voilà ! :wink:

image

Il ne reste plus qu’à créer des sensor sous forme de Template pour pouvoir exploiter ces nouveaux attributs :

- sensor:
    - name: tarif_reglemente_part_fixe_ttc
      unique_id: tarif_reglemente_part_fixe_ttc
      unit_of_measurement: 'EUR/kWh'
      state: "{{ state_attr('sensor.tarifreglemente', 'PART_FIXE_TTC') }}"
- sensor:
    - name: tarif_reglemente_part_variable_hc_ttc
      unique_id: tarif_reglemente_part_variable_hc_ttc
      unit_of_measurement: 'EUR/kWh'
      state: "{{ state_attr('sensor.tarifreglemente', 'PART_VARIABLE_HC_TTC') }}"      
- sensor:
    - name: tarif_reglemente_part_variable_hp_ttc
      unique_id: tarif_reglemente_part_variable_hp_ttc
      unit_of_measurement: 'EUR/kWh'
      state: "{{ state_attr('sensor.tarifreglemente', 'PART_VARIABLE_HP_TTC') }}"
2 « J'aime »

Super!
le problème, c’est que le script sera à modifier tous les 2-3-6 mois à chaque fois que les tarifs bougeront avec la modification du csv

Les tarifs réglementés disparraissent au 30 juin 2023 - le développement n’est donc utile que pour les 6 mois à venir.

Pour rentrer dans ses frais il faut déjà pas mal d’adeptes du service. Avec 1000 adeptes, et une requête par jour pour chaque abonnement le cout est de 700 EUR HT par mois, donc quasi 1€TTC par utilisateur ou 12 EUR TTC par an juste pour l’accès à cet API.

Bonjour,

Non, le script parcourt le fichier CSV et dès qu’il trouve une ligne où il n’y a pas de date de fin de période (deuxième colonne vide), il recherche la ligne avec la puissance souscrite passée en variable.
Le script est donc autonome même si de nouvelles lignes sont ajoutées dans le fichier CSV.

1 « J'aime »

Je parlais surtout du nom de fichier csv qui doit changer dans le temps.

L’URL du fichier est indiquée comme étant stable :

1 « J'aime »

merci ToOos cela fonctionne très bien .
J’ai un peu modifié ton script pour lire les données du tarif base. ça fonctionne bien aussi.
par contre j’essai de lire les données du tarif gaz mais je n’arrive à rien, c’est un fichier excel avec deux onglets
une idée de comment procéder?

Salut Papoo, ca serait cool

le gaz ou le tarif elec base?

les deux si possible

j’ai pas réussi pour le gaz, mais pour le tarif base élec voici :
tarif_reglemente.py

import requests
import csv

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

r = requests.get(url, stream = True)
cr = csv.reader(r.content.decode('utf-8').splitlines(), delimiter=';')
my_list = list(cr)

for row in my_list: 
    if row[1] == '' and row[2] == P_SOUSCRITE:
       print('{"PART_FIXE_TTC": '+row[4].replace(",", "." )+',"PART_VARIABLE_BASE_TTC": '+row[6].replace(",", "." )+'}')

r.close

tarif_reglemente.yaml

sensor:
##################################################################################
  - platform: command_line
    name: TarifReglemente
    scan_interval: 86400
    json_attributes:
      - PART_FIXE_TTC
      - PART_VARIABLE_BASE_TTC
    command: 'python3 /config/scripts/tarif_reglemente.py'
  - platform: template
    sensors:
      tarif_reglemente_part_fixe_ttc:
        friendly_name: tarif reglementé part fixe ttc
        unit_of_measurement: 'EUR/kWh'
        value_template: "{{ state_attr('sensor.tarifreglemente', 'PART_FIXE_TTC') }}"

      tarif_reglemente_part_variable_base_ttc:
        friendly_name: tarif reglementé part variable base ttc
        unit_of_measurement: 'EUR/kWh'
        value_template: "{{ state_attr('sensor.tarifreglemente', 'PART_VARIABLE_BASE_TTC') }}"  
1 « J'aime »

bonjour comment transformé ce resultat en chiffre pour le mettre dans le tableau energe de ha?

Ce que j’avais indiqué ici permet de créer des « sensor » utilisable dans le tableau Energie en tant que source de tarif :

Je viens de vérifier, le tarif collecté via le script dans Home Assistant s’est bien mis à jour aujourd’hui suite à l’augmentation tarifaire.

1 « J'aime »

Bonjour,
je trouve cela étonnant, la source ne liste que les tarifs Base et HC/HP. Dans les TRV, il y a aussi le tarif Tempo. Quelqu’un a-t-il réussi à les récupérer automatiquement ?