Récupérer ses informations de consommation électriques via l'API GRDF
Re: Récupérer ses informations de consommation électriques via l'API GRDF
Bonjour,
j'ai créé un fork sur GitHub avec un fichier 'gaspar.py' modifié (quelques valeurs semblaient avoir été modifiées sur le site de GrDF) :
https://github.com/aspichat/domoticz_ga ... at-patch-1
Depuis, le script d'epierre fonctionne à nouveau pour moi... En attendant une vraie API de la part de GrDF...
j'ai créé un fork sur GitHub avec un fichier 'gaspar.py' modifié (quelques valeurs semblaient avoir été modifiées sur le site de GrDF) :
https://github.com/aspichat/domoticz_ga ... at-patch-1
Depuis, le script d'epierre fonctionne à nouveau pour moi... En attendant une vraie API de la part de GrDF...
Re: Récupérer ses informations de consommation électriques via l'API GRDF
bonjour, j'ai rechargé ton fichier gaspar.py et j'ai cela comme erreur :
je ne comprends pas..
Code : Tout sélectionner
2018-11-12 23:01:12,246 logging in as monmail@free.fr...
Traceback (most recent call last):
File "/home/pi/domoticz/scripts/domoticz_gaspar/gaspar_json.py", line 179, in <module>
main()
File "/home/pi/domoticz/scripts/domoticz_gaspar/gaspar_json.py", line 113, in main
token = gaspar.login(USERNAME, PASSWORD)
File "/home/pi/domoticz/scripts/domoticz_gaspar/gaspar.py", line 96, in login
javaxvs=parse_lxml(req.text)
File "/home/pi/domoticz/scripts/domoticz_gaspar/gaspar.py", line 59, in parse_lxml
root = etree.fromstring(c)
File "src/lxml/lxml.etree.pyx", line 3213, in lxml.etree.fromstring (src/lxml/lxml.etree.c:79003)
File "src/lxml/parser.pxi", line 1848, in lxml.etree._parseMemoryDocument (src/lxml/lxml.etree.c:118334)
File "src/lxml/parser.pxi", line 1729, in lxml.etree._parseDoc (src/lxml/lxml.etree.c:116892)
File "src/lxml/parser.pxi", line 1063, in lxml.etree._BaseParser._parseUnicodeDoc (src/lxml/lxml.etree.c:110879)
File "src/lxml/parser.pxi", line 595, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:105102)
File "src/lxml/parser.pxi", line 706, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:106810)
File "src/lxml/parser.pxi", line 635, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:105664)
File "<string>", line 1
lxml.etree.XMLSyntaxError: Space required after the Public Identifier, line 1, column 50domoticien amateur option bidouille
Re: Récupérer ses informations de consommation électriques via l'API GRDF
J'ai essayé aussi, aucun changement. Même log que ceux en bas de page 1. Je suis sur que c'est a cause de leur données sur 6 mois.
Dates du relevé Index début de période Index fin de période Volume brut consommé (m³) Energie consommée (kWh) Coefficient de conversion Nature du relevé Qualification du relevé
Du 20/03/2018 au 20/09/2018 1896 2378 482.0 5350 11.1 Mesuré Cyclique
Du 30/11/2017 au 20/03/2018 0 1896 1896.0 20951 11.05 Mesuré Cyclique
Domoticz on raspberry PI3:
1 Rflink, 3 ESP8266, 10 PIR 433, 4 stores, 6 PriseElec, 6 SondesTempérature, 6 Caméra, Conso Elec
1 Rflink, 3 ESP8266, 10 PIR 433, 4 stores, 6 PriseElec, 6 SondesTempérature, 6 Caméra, Conso Elec
Re: Récupérer ses informations de consommation électriques via l'API GRDF
Bonne nouvelle, j'ai réinstallé tous les fichiers, fait un chmod 777 et ca fonctionne !
Par contre, mon compteur affiche des m3 au lieu de kwh avec un coef de 0.001.. Je vais regarder cela !
Par contre, mon compteur affiche des m3 au lieu de kwh avec un coef de 0.001.. Je vais regarder cela !
domoticien amateur option bidouille
Re: Récupérer ses informations de consommation électriques via l'API GRDF
Bon ben bonne nouvelle ça ne marche pas pour moi, par contre j'ai réussi à choper le comptage d'impulsion avec un esp8266. L'impédance ne devait pas être bonne dans mes essais précédent. Ne jamais abandonner!!!
Domoticz on raspberry PI3:
1 Rflink, 3 ESP8266, 10 PIR 433, 4 stores, 6 PriseElec, 6 SondesTempérature, 6 Caméra, Conso Elec
1 Rflink, 3 ESP8266, 10 PIR 433, 4 stores, 6 PriseElec, 6 SondesTempérature, 6 Caméra, Conso Elec
Re: Récupérer ses informations de consommation électriques via l'API GRDF
Bonjour, j'ai plusieurs esp8266 pour mes relevés de température vers Domoticz. J'en ai un de libre et je cherche à récupérer les relevés Gazpar. Peux tu m'indiquer comment tu as fait? (En mp si c'est trop hors sujet pour ce thread). Sylvainbeber888 a écrit : 14 nov. 2018, 23:09 (...)j'ai réussi à choper le comptage d'impulsion avec un esp8266. L'impédance ne devait pas être bonne dans mes essais précédent. Ne jamais abandonner!!!
SynoDS415+ - Pi B - Pi 2B - Pi 3B+ - ESP8266 (espeasy mega) & DHT22
Re: Récupérer ses informations de consommation électriques via l'API GRDF
Le montage est celui la mais avec une tension de 3V3 et une resistance de 10K.
La sortie impulsion du Gazpar a été branchée sur 2 fils de breadboard Femelle.

Et le code:
J'utilisait du modbus Ip dans mon Wemos D1, je continue à l'intégrer bien que depuis que j'ai Domoticz, je ne l'utilise plus.
L'envoie a Domoticz ne se fait pas à chaque impulsion (0.01M3) mais à chaque 0.1 M3.
La sortie impulsion du Gazpar a été branchée sur 2 fils de breadboard Femelle.

Et le code:
Code : Tout sélectionner
//------------------------DECLARATION------------------------------
#include <ESP8266WiFi.h>
#include <Modbus.h>
#include <ModbusIP_ESP8266.h>
// Mot de passe Wifi
const char* ssid = "xxxxxxxxxxxxxxxxx";
const char* password = "xxxxxxxxxxxxxxx";
//Declaration des Entrées
int PulseCompteurGaz = 5; //D1
// Declaration serveur web
WiFiServer server2(80);
//ModbusIP object
ModbusIP mb;
//Config IP
IPAddress ip(192, 168, 0, xxx); // where xx is the desired IP Address
IPAddress gateway(192, 168, 0, xxx); // set gateway to match your network
IPAddress subnet(255, 255, 255, 0); // set subnet mask to match your
//Variables
byte SigneDeVie = 0;
unsigned long Jour = 0;
unsigned long Heure = 0;
unsigned long Minute = 0;
unsigned long MemMillis = 0;
int NombreBoucleMillis = 0;
float CompteurGaz = 0; // 1 impulsion = 10dm3 = 0.01 m3
float CompteurGazOld = 0;
bool Impulsion = false;
unsigned long TimeImpulsion = 0;
//------------------Domoticz-------------//
#include <ESP8266HTTPClient.h>
//#include <PubSubClient.h>
// Paramètres HTTP Domoticz - HTTP Domoticz settings
const char* host = "192.168.0.xxxx";
const int port = 800;
HTTPClient http;
#define IDX_CompteurGaz 169
//-------------------------------SETUP---------------------------
void setup() {
Serial.begin(115200);
delay(100);
attachInterrupt(PulseCompteurGaz, IntChange, FALLING);
// Connexion wifi
WiFi.config(ip, gateway, subnet);
mb.config(ssid, password);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
// Declaration des registres Modbus
mb.addCoil(100);
mb.addHreg(100, 0);
mb.addHreg(101, 0);
// connection en cours ...
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
// Wifi connecte
Serial.println("WiFi connecte");
// Démmarrage du serveur Web
server2.begin();
Serial.println("Serveur Web demarre !");
// Affichage de l'adresse IP
Serial.print("Utiliser cette adresse URL pour la connexion :");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
// --------------------------FONCTIONS--------------------------
void IntChange() {
if (Impulsion == false)
{
Serial.println("Variation detectee");
CompteurGaz+=0.01;
Impulsion = true;
TimeImpulsion = millis();
}
}
void VariationCompteurGaz(){
CompteurGazOld = CompteurGaz;
// Envoie a Domoticz
String url = "/json.htm?type=command¶m=udevice&idx=";
url += String(IDX_CompteurGaz);
url += "&nvalue=0&svalue=";
url += String(CompteurGaz,3);
sendToDomoticz(url);
}
void sendToDomoticz(String url){
Serial.print("Connecting to ");
Serial.println(host);
Serial.print("Requesting URL: ");
Serial.println(url);
http.begin(host,port,url);
int httpCode = http.GET();
if (httpCode) {
if (httpCode == 200) {
String payload = http.getString();
Serial.println("Domoticz response ");
Serial.println(payload);
}
}
Serial.println("closing connection");
http.end();
}
void loop() {
// Calcul temps de fonctionnement
if (millis() > MemMillis)
{
Jour = (millis()/86400000) + (49 * NombreBoucleMillis);
Heure = (millis()-(Jour*86400000))/3600000;
Minute = (millis()-(Jour*86400000)-(Heure*3600000))/60000;
}
else
{
NombreBoucleMillis = NombreBoucleMillis + 1;
}
MemMillis = millis();
SigneDeVie++;
mb.Hreg(100, SigneDeVie);
// Fonction Modbus
mb.task();
// Reset memoire impulsion au bout de 1 seconde
if ((Impulsion == true) and (millis() > (TimeImpulsion + 1000)))
{
Impulsion = false;
}
// Variation compteur : mise a jour de domoticz
if (CompteurGaz > (CompteurGazOld + 0.1))
{
VariationCompteurGaz();
}
// Gestion du serveur Web
WiFiClient client;
// Vérification si le client est connecter.
client = server2.available();
if (!client)
{
delay(50);
return; // Si pas de client, fin du loop
}
// Attendre si le client envoie des données ...
Serial.println("Nouveau client");
if(!client.available()){
delay(100);
}
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
if (request.indexOf("/RST") != -1)
{
CompteurGaz = 0;
VariationCompteurGaz();
}
if (request.indexOf("CPT%3D=") != -1)
{
int Loc1; // , locations
int Loc2; // , locations
String NouvelleValeur;
Loc1 = request.indexOf('CPT%3D='); //Cherche l'emplacement de "CPT%3D=" après Début
//Serial.println(Loc1);
Loc2 = request.indexOf(' HTTP', Loc1 ); //Cherche l'emplacement de " HTTP" après Loc1
//Serial.println(Loc2);
NouvelleValeur = request.substring(Loc1+1, Loc2-2); //Extrait la chaine entre les deux emplacements
Serial.println("Donnee recues :");
Serial.println(NouvelleValeur);
CompteurGaz = NouvelleValeur.toFloat();
VariationCompteurGaz();
}
// Réponse
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<body style=background-color:#82e0aa;>");
client.println("<head><style type=""text/css"">a:link{text-decoration:none}</style></head>");
client.println("<body><h1>ESP8266 - Module Cave</h1>");
client.println("<h2>-------------------------------------------------------------</h2>");
client.println("<h2>Informations systeme : </h2>");
client.println("<h3><blockquote> - Temps de marche : ");
client.println(Jour);
client.println(" Jours ");
client.println(Heure);
client.println(" Heures ");
client.println(Minute);
client.println(" Minutes</blockquote></h3>");
client.println("");
client.println("<h2>-------------------------------------------------------------</h2>");
client.println("<h2>Commandes : </h2>");
client.println("<h3><blockquote> - Reset Compteur Gaz : ");
client.println("</h3>");
client.println("<blockquote><a href=\"/RST\"\"><input type='button' value='Reset' style='width: 150px; height: 50px' ></a>");
client.println("<h3> - Preset Compteur Gaz : ");
client.println("</h3>");
client.println("<form>");
client.println("<div>");
client.println("<label for='valeur'>Nouvelle valeur :</label>");
client.println("<input id='valeur' type='text' name='CPT=' style='width: 150px; height: 50px' >");
client.println("<input type='submit' value='Mise a jour' style='width: 150px; height: 50px' >");
client.println("</form>");
client.println("");
client.println("</blockquote><h2>-------------------------------------------------------------</h2>");
client.println("<h2>Analogique : </h2>");
client.println("<h3><blockquote> - Compteur Gaz : ");
client.println(CompteurGaz, 3);
client.println(" M3");
client.println("</h3><br>");
client.println("</body>");
client.println("</html>");
delay(10);
Serial.println("Client deconnecte");
Serial.println("");
}J'utilisait du modbus Ip dans mon Wemos D1, je continue à l'intégrer bien que depuis que j'ai Domoticz, je ne l'utilise plus.
L'envoie a Domoticz ne se fait pas à chaque impulsion (0.01M3) mais à chaque 0.1 M3.
Domoticz on raspberry PI3:
1 Rflink, 3 ESP8266, 10 PIR 433, 4 stores, 6 PriseElec, 6 SondesTempérature, 6 Caméra, Conso Elec
1 Rflink, 3 ESP8266, 10 PIR 433, 4 stores, 6 PriseElec, 6 SondesTempérature, 6 Caméra, Conso Elec
Re: Récupérer ses informations de consommation électriques via l'API GRDF
Salut à tous,ganq a écrit : 13 nov. 2018, 21:26 Bonne nouvelle, j'ai réinstallé tous les fichiers, fait un chmod 777 et ca fonctionne !
Par contre, mon compteur affiche des m3 au lieu de kwh avec un coef de 0.001.. Je vais regarder cela !
Comme vous après Linky, maintenant Gaspar est arrivé et même EAUPar...
De plus, je n'exploitais pas les données Gaz et et Eau en temps réel, donc des données du net feront l'affaire.
Pour le Linky j'ai un ESP8266 qui me permet de faire du temps réel avec mon installation solaire en autoconso.
Je vais donc enlever mes compteurs d'impulsion Gaz et Eau qui ne me servent plus à grand chose et souhaiterai passer via les sites internet.
Les fichiers du GitHub sont ils à jour car j'ai la même erreur que Beber88.
et une erreur aussi avec les fichiers de aspichat en haut de cette page2.
Domoticz on RPi : Prises, Volets, Temp, Conso (via Shelly), Contacts et mouvements Meian
Contrôles : Volets , Lumières (Script IP, capteurs MVT), Alarmes (heures, mobiles...), Poêle ETNA (via ESP), Clim (via plugin Tuya)
Contrôles : Volets , Lumières (Script IP, capteurs MVT), Alarmes (heures, mobiles...), Poêle ETNA (via ESP), Clim (via plugin Tuya)
Re: Récupérer ses informations de consommation électriques via l'API GRDF
Après avoir pris contact avec GRDF, il est normal que je ne dispose pas de la conso journalière pour l'instant.
En effet, la fonctionnalité n'est pas disponible pour l'instant sur mon compte.
En conséquence, dans mon espace GRDF je n'ai que les relevés sur 3 mois.
Il n'y a plus qu'a attendre car je serai prévenu via l'espace des nouvelles fonctions.
En effet, la fonctionnalité n'est pas disponible pour l'instant sur mon compte.
En conséquence, dans mon espace GRDF je n'ai que les relevés sur 3 mois.
Il n'y a plus qu'a attendre car je serai prévenu via l'espace des nouvelles fonctions.
Domoticz on RPi : Prises, Volets, Temp, Conso (via Shelly), Contacts et mouvements Meian
Contrôles : Volets , Lumières (Script IP, capteurs MVT), Alarmes (heures, mobiles...), Poêle ETNA (via ESP), Clim (via plugin Tuya)
Contrôles : Volets , Lumières (Script IP, capteurs MVT), Alarmes (heures, mobiles...), Poêle ETNA (via ESP), Clim (via plugin Tuya)
-
Lanfeust_dsn
- Messages : 1
- Inscription : 05 janv. 2019, 18:04
Re: Récupérer ses informations de consommation électriques via l'API GRDF
Bonjour à tous,
Merci pour ce script super utile (enfin si j'arrive à le faire marcher...)
lorsque je teste voici le log que j'ai:
2019-01-05 17:59:47,326 logging in as xxx@hotmail.com...
2019-01-05 17:59:47,383 Starting new HTTPS connection (1): monespace.grdf.fr
2019-01-05 17:59:51,910 logged in successfully!
2019-01-05 17:59:51,911 retrieving data...
Traceback (most recent call last):
File "/home/pi/domoticz_gaspar/gaspar_json.py", line 179, in <module>
main()
File "/home/pi/domoticz_gaspar/gaspar_json.py", line 124, in main
dtostr(today))
File "/home/pi/domoticz_gaspar/gaspar.py", line 143, in get_data_per_month
return _get_data(session, 'Mois', start_date, end_date)
File "/home/pi/domoticz_gaspar/gaspar.py", line 283, in _get_data
d = md.group(1)
AttributeError: 'NoneType' object has no attribute 'group'
nodejs et npm sont en version 11.6, winston en 3.1.0
mon compte grdf affiche bien les données par mois, semaine et jour
je ne sais pas d'ou viens le problème.
merci pour votre aide
Merci pour ce script super utile (enfin si j'arrive à le faire marcher...)
lorsque je teste voici le log que j'ai:
2019-01-05 17:59:47,326 logging in as xxx@hotmail.com...
2019-01-05 17:59:47,383 Starting new HTTPS connection (1): monespace.grdf.fr
2019-01-05 17:59:51,910 logged in successfully!
2019-01-05 17:59:51,911 retrieving data...
Traceback (most recent call last):
File "/home/pi/domoticz_gaspar/gaspar_json.py", line 179, in <module>
main()
File "/home/pi/domoticz_gaspar/gaspar_json.py", line 124, in main
dtostr(today))
File "/home/pi/domoticz_gaspar/gaspar.py", line 143, in get_data_per_month
return _get_data(session, 'Mois', start_date, end_date)
File "/home/pi/domoticz_gaspar/gaspar.py", line 283, in _get_data
d = md.group(1)
AttributeError: 'NoneType' object has no attribute 'group'
nodejs et npm sont en version 11.6, winston en 3.1.0
mon compte grdf affiche bien les données par mois, semaine et jour
je ne sais pas d'ou viens le problème.
merci pour votre aide