Récupérer ses informations de consommation électriques via l'API ENEDIS

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
epierre
Messages : 648
Inscription : 27 mai 2015, 09:32
Contact :

Re: Récupérer ses informations de consommation électriques via l'API ENEDIS

Message par epierre »

tekkharibo a écrit :Merci de ta réponse.

C'est bete sachant qu'ils recup l'information toutes les 30 minutes.
oui sur le compteur lui-même mais ne les envoie qu'une fois par jour, et après redressement est disponible.
Imperihome & Domoticz: MyDomoAtHome !
eedomus+ - Domoticz - MySensors
zigbee zwave nrf24l rfx
tekkharibo
Messages : 282
Inscription : 28 déc. 2017, 09:51
Localisation : Albi

Re: Récupérer ses informations de consommation électriques via l'API ENEDIS

Message par tekkharibo »

D'accord merci
Projet de domotique low-cost : Mon installation MAJ 01/05/2020
Dans le doute reboot !
Si vous êtes pas loin d'Albi on peut se rencontrer pour partager
epierre
Messages : 648
Inscription : 27 mai 2015, 09:32
Contact :

Re: Récupérer ses informations de consommation électriques via l'API ENEDIS

Message par epierre »

tekkharibo a écrit : Par contre, je viens de m’apercevoir qu'il y a un décalage entre les heures du scripts et les heures de domoticz.

Il y a une heure de diff entre les 2
[/img][/url]
comment est réglé ta timezone sur ton pi ? gmt+1 DST ?
Imperihome & Domoticz: MyDomoAtHome !
eedomus+ - Domoticz - MySensors
zigbee zwave nrf24l rfx
tekkharibo
Messages : 282
Inscription : 28 déc. 2017, 09:51
Localisation : Albi

Re: Récupérer ses informations de consommation électriques via l'API ENEDIS

Message par tekkharibo »

Très bonne question, je le vois comment ? Je sais que j'ai la même heure sur mon pi et mon tel

Envoyé de mon SM-G935F en utilisant Tapatalk
Projet de domotique low-cost : Mon installation MAJ 01/05/2020
Dans le doute reboot !
Si vous êtes pas loin d'Albi on peut se rencontrer pour partager
timhor
Messages : 3
Inscription : 18 avr. 2018, 16:45

Re: Récupérer ses informations de consommation électriques via l'API ENEDIS

Message par timhor »

tekkharibo a écrit :Très bonne question, je le vois comment ? Je sais que j'ai la même heure sur mon pi et mon tel

Envoyé de mon SM-G935F en utilisant Tapatalk

Code : Tout sélectionner

pi@domoticz:~ $ cat /etc/timezone
Europe/Paris

pi@domoticz:~ $ date
Fri  4 May 23:12:30 CEST 2018
tekkharibo
Messages : 282
Inscription : 28 déc. 2017, 09:51
Localisation : Albi

Re: Récupérer ses informations de consommation électriques via l'API ENEDIS

Message par tekkharibo »

Je suis bien en timezone Paris

Envoyé de mon SM-G935F en utilisant Tapatalk
Projet de domotique low-cost : Mon installation MAJ 01/05/2020
Dans le doute reboot !
Si vous êtes pas loin d'Albi on peut se rencontrer pour partager
pascal_69
Messages : 55
Inscription : 30 janv. 2018, 21:52

Re: Récupérer ses informations de consommation électriques via l'API ENEDIS

Message par pascal_69 »

Bonsoir,

Après mise en place du script et récupération avec succès des données Enedis jusqu'au début de cette année, je suis resté un peu frustré de ne pas pouvoir récupérer celles des années précédentes.

La récupération des données est pourtant correcte, mais les fichier JSON ne précisent pas l'année.

Exemple à M - 5 (export_days_values.json) :

Code : Tout sélectionner

[{"time": "10 Nov", "conso": 5.673}, {"time": "11 Nov", "conso": 3.12}, {"time": "12 Nov", "conso": 5.83}, {"time": "13 Nov", "conso": 9.755}, {"time": "14 Nov", "conso": 8.061}, {"time": "15 Nov", "conso": 10.253}, {"time": "16 Nov", "conso": 11.108}, {"time": "17 Nov", "conso": 9.122}, {"time": "18 Nov", "conso": 6.095}, {"time": "19 Nov", "conso": 6.061}, {"time": "20 Nov", "conso": 18.833}, {"time": "21 Nov", "conso": 8.77}, etc ...
Une fois le script d'injection sql généré (req.sql) l'année fournie est incorrecte :

Code : Tout sélectionner

BEGIN TRANSACTION;
DELETE FROM 'Meter_Calendar' WHERE devicerowid=73 and date = '2018-11-10'; INSERT INTO 'Meter_Calendar' (DeviceRowID,Value,Counter,Date) VALUES (73, '5673', '549.838', '2018-11-10');
DELETE FROM 'Meter_Calendar' WHERE devicerowid=73 and date = '2018-11-11'; INSERT INTO 'Meter_Calendar' (DeviceRowID,Value,Counter,Date) VALUES (73, '3120', '555.511', '2018-11-11');
DELETE FROM 'Meter_Calendar' WHERE devicerowid=73 and date = '2018-11-12'; INSERT INTO 'Meter_Calendar' (DeviceRowID,Value,Counter,Date) VALUES (73, '5830', '558.631', '2018-11-12');
etc ..
J'ai jeté un oeil dans le code source du projet.
Le souci vient a priori du JavaScript domoticz_linky.js car on initialise systématique l'année de travail à partir de la date du jour :

Code : Tout sélectionner

var dateObj = new Date();
var q_year=dateObj.getUTCFullYear();
Et c'est cette année qui est utilisée par la suite pour écrire dans le fichier .sql :
Calcul de var_req_date dans function generateMonthDays() :

Code : Tout sélectionner

for (var i = 0; i < Object.keys(obj).length; ++i) {
                        var req_date=''+q_year+'-'+pad((mth.indexOf(obj[i]["time"].substr(3, 3))+1),2)+'-'+pad(obj[i]["time"].substr(0, 2),2);
J'essaye de trouver une manière d'adapter ce calcul si l'on est sur l'année précédente ou pas.
Si vous avez des idées ...
pascal_69
Messages : 55
Inscription : 30 janv. 2018, 21:52

Re: Récupérer ses informations de consommation électriques via l'API ENEDIS

Message par pascal_69 »

Bonsoir,

Je me suis remis sur la problématique de la récupération des données à N-1
J'ai trouvé une solution que je vous propose ici
L'idée est de générer des fichiers JSON qui contiennent l'année correspondantes aux données quotidiennes puis de réutiliser cette année lors de la création de la requête d'insertion dans la base Domoticz.

Soit 3 fichiers à modifier :

- linky_json.py et linky_month.py : modifier la procédure export_days_values(res) pour générer l'axe X avec l'année

Code : Tout sélectionner

days_x_values = generate_x_axis(res,
                                'days', "%d %b", 1)
devient

Code : Tout sélectionner

days_x_values = generate_x_axis(res,
                                    'days', "%d %b %Y", 1) 
- domoticz_linky.js : modifier la fonction generateMonthDays afin de récupérer l'année exportée précédemment

Code : Tout sélectionner

var req_date=''+q_year+'-'+pad((mth.indexOf(obj[i]["time"].substr(3, 3))+1),2)+'-'+pad(obj[i]["time"].substr(0, 2),2);
devient

Code : Tout sélectionner

var req_date=''+obj[i]["time"].substr(7, 4)+'-'+pad((mth.indexOf(obj[i]["time"].substr(3, 3))+1),2)+'-'+pad(obj[i]["time"].substr(0, 2),2);
et j'en profite pour faire l'insertion en base directement par un INSERT OR REPLACE afin d'éviter une DELETE inutile :

Code : Tout sélectionner

console.log('INSERT OR REPLACE INTO \'Meter_Calendar\' (DeviceRowID,Value,Counter,Date) VALUES ('+devicerowid+', \''+lastVal+'\', \''+Math.round(cumul*1000)/1000+'\', \''+req_date+'\');');  


Voilà, j'ai testé avec mes données depuis septembre de l'an dernier après avoir purgé ma table Meter_Calendar des anciennes données de mon Device.
Pas moyen de remonter plus loin, avant je n'avais pas de Linky ;)

Je ne suis pas encore familiarisé avec Git donc je ne sais pas trop comment pousser cette modif dans le dépôt :oops:
epierre
Messages : 648
Inscription : 27 mai 2015, 09:32
Contact :

Re: Récupérer ses informations de consommation électriques via l'API ENEDIS

Message par epierre »

pascal_69 a écrit :Bonsoir,

Je me suis remis sur la problématique de la récupération des données à N-1
J'ai trouvé une solution que je vous propose ici
...
Je ne suis pas encore familiarisé avec Git donc je ne sais pas trop comment pousser cette modif dans le dépôt :oops:
Hop' je l'ai fait pour toi, mais on est bien d'accordo n n'a besoin que de ton dernier post ?
Imperihome & Domoticz: MyDomoAtHome !
eedomus+ - Domoticz - MySensors
zigbee zwave nrf24l rfx
pascal_69
Messages : 55
Inscription : 30 janv. 2018, 21:52

Re: Récupérer ses informations de consommation électriques via l'API ENEDIS

Message par pascal_69 »

on est d'accord !
merci à toi ;)
Répondre