Avant toute chose merci de (re)prendre connaissance de la charte et de la respecter.
Pour résumer :
- Avant de poser une question, je cherche si la réponse existe
- Je suis poli, courtois et je respecte tout un chacun sur le forum
- Si un post m'agace : je m'en éloigne plutôt que de répondre d'une façon qui pourrait être mal interprétée


Il n'est jamais du luxe que de rappeler des choses simples :
Courtoisie, amabilité, politesse et bonne humeur sont les maîtres mots pour un forum sympathique, bienveillant et accueillant :)

Toute la communauté vous remercie

[LINKY] Récupération de la consommation du site ENEDIS

Réservé à l'utilisation et la programmation de scripts dans JEEDOM
Répondre
Asdepique777
Timide
Messages : 9
Inscription : 15 févr. 2017, 13:28

[LINKY] Récupération de la consommation du site ENEDIS

Message par Asdepique777 » 15 févr. 2017, 14:14

Bonjour à tou(te)s ,

J'ai débarqué dans la domotique et sur Jeedom en particulier il y a quelques semaines, je découvre donc encore ce milieu et commence seulement à appréhender les nombreuses possibilités de cette merveilleuse plateforme !

Je commence pour mon premier post sur ce forum en vous proposant un script Python qui permet de récupérer la consommation des compteurs Linky, via le site Enedis, au format JSON. Cela permet ensuite de pouvoir traçer les graphes de conso sur une vue Design par exemple, via un champ HTML. Je trouvais personnellement dommage de devoir récupérer l'info via la TéléInfo (ce qui sous-entend du hardware supplémentaire, un manque de praticité si le compteur est dans les parties communes d'un immeuble, et de bidouiller au niveau du compteur), surtout que les infos de consommations sont dispos sur le site ENEDIS !

Je suis reparti de l'excellent travail de Baptiste Candellier - aka Outadoc - qui a proposé en premier un script récupérant les conso Linky pour les afficher sur tablette Kindle. Vous pourrez trouver son script original ici : https://github.com/outadoc/linkindle

J'ai donc adapté ce script pour exporter simplement les données en JSON, sous un format facilement consommable par Jeedom. Il y a probablement moyen d'améliorer celui-ci, pourquoi pas en l'intégrant à un plugin pour un affichage sur le dashboard, afin d'avoir quelque chose de plus intégré.

Pour pourrez trouver mon script ici : https://github.com/Asdepique777/jeedom_linky
Il suffit de placer les 3 fichiers (un script sh, 2 scripts Python) dans un dossier "linky" placé dans "/var/www/html/plugins/script/core/ressources/" (via plugin "Outils de développement" ou WinSCP que j'utilise à titre personnel (explorateur de fichier en remote connection)

Pour configurer le script, rien de sorcier, il suffit de renseigner son identifiant et mot de passe Enedis dans le script "gen_json.sh"

Ensuite, on créé une commande script dans le plugin Script, avec une requête sur ce fichier, qui se chargera de lancer le code Python associé.
Image

Après lancement du script, 4 fichiers JSON sont créés dans le même répertoire ("/var/www/html/plugins/script/core/ressources/linky")
Ce sont ces fichiers que l'on va appeler avec du HTML dans une vue Design. Les graphes sont tracés par le module HighCharts intégré à Jeedom

Voici un exemple de code pour tracer un graphe :

Code : Tout sélectionner

<!DOCTYPE html>
<html lang="fr" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title>Puissance EDF horaire</title>
    
</head>
<body>

    <div id="container_hour" style="min-width: 580px; height: 320px; margin: 0 auto">
    <script type="text/javascript">
        $(function () {
                var processed_json_hour = new Array();
          		var url = '/var/www/html/plugins/script/core/ressources/linky/export_hours_values.json'
                $.getJSON(url, function(data) {
                    // Populate series
                    for (i = 0; i < data.length; i++){
                        processed_json_hour.push([data[i].time, data[i].conso]);
                    }
                 
                    // draw chart
                    $('#container_hour').highcharts({
                    chart: {
                        type: "column"
                    },
                    legend: {
            			enabled: false
        			},
                    plotOptions: {
						series: {
                			borderColor: '#ff7979'
            			}
                    },
                    title: {
                      	text: "Puissance EDF sur 30 min",
                      	style: {
         					color: '#b3b3b3'
                      	}
                    },
                    xAxis: {
                        type: 'category',
                      	allowDecimals: false,
                        title: {
                            text: "Heure"
                        }
                    },
                    yAxis: {
                        title: {
                            text: "Puissance (kW)"
                        }
                    },
                    series: [{
                        name: 'kW',
                      	data: processed_json_hour,
                      	color: '#ff7979',
                    }]
                }); 
            });
        });
    </script>


</body>
</html>


Libre à vous de modifier les options (couleurs, titres, taille de la vue, etc) pour avoir quelque chose qui vous plait :D

Voici le résultat final :
Image


Vous n'avez plus qu'à indiquer un CRON à Jeedom sur votre script (par exemple toutes les 30min, tous les jours, etc) pour une mise à jour automatique de vos graphiques !!


Enjoy, n'hésitez pas à me faire part de vos commentaires/remarques

PS : le site ENEDIS est assez peu robuste, il y a en ce moment des problèmes réguliers pour voir ses données (même en allant directement sur leur site, hors script donc), le code Python d'export des JSON n'écrase les fichiers précédents que si on a bien récupéré des valeurs. Ceci associé à un CRON régulier (30 min) me permets d'avoir des données à jour a minima tous les jours
Dernière édition par Asdepique777 le 15 févr. 2017, 15:54, édité 1 fois.

Avatar de l’utilisateur
Phil56
Actif
Messages : 660
Inscription : 11 août 2015, 11:36

Re: [LINKY] Récupération de la consommation du site ENEDIS

Message par Phil56 » 15 févr. 2017, 14:21

Bonjour,

Et merci pour la diffusion de ton travail, même si j'ai la teleinfo chez moi, je vais tester ça dès que je trouve le temps.

encore merci

Ken@vo
Phil
Box : Jeedom Maitre dans Z83 II, Jeedom Esclave RPI2 avec Zwave, Rfxcom, Blink1, EDISIO et TTS et Maitre de test dans VM Esxi NUC i3
Protocoles : Zwave, X10, DI-O, HUE, EDISIO
Teleinfo (Dauguet rs232 mise en réseau avec une arduino mega)

Avatar de l’utilisateur
cadavor
Actif
Messages : 816
Inscription : 21 juin 2015, 22:00
Localisation : 34

Re: [LINKY] Récupération de la consommation du site ENEDIS

Message par cadavor » 15 févr. 2017, 14:46

Merci pour le travail.

A quand un plugin tout beau tout propre?
Jeedom Stable 3.2.4
Rpi3 + SSD 120Go + Aeotec Z-Stick Gen5
Zwave FGMS-001 + FGDS-002 + FGFS-101 + FGK-101 + FGWPE-101
Orvibo AllOne + Playbulb + Miband2 + Creative Axx20 (TTS)

Asdepique777
Timide
Messages : 9
Inscription : 15 févr. 2017, 13:28

Re: [LINKY] Récupération de la consommation du site ENEDIS

Message par Asdepique777 » 15 févr. 2017, 17:35

Avec plaisir !

Haha j'aurais aimé avoir un plugin de suite, mais je souhaitais offrir une solution (pas si mal) rapidement.
Ce qui m'a freiné pour le plugin, outre mes compétences en code qui se limitent à de la bidouille, c'est que je ne suis pas sur qu'on puisse traçer des graphes (sur le dashboard).
Après il est possible avec les plugins Script et Virtuel de récupérer les infos JSON dans des variables et en faire quelque chose (je n'ai pas poussé jusque là pour le moment). Si quelqu'un se le sent... ;)


Sinon pour le CRON, ça ne marche pas chez moi via Jeedom, malgré un positionnement de droits correct sur le dossier d'installation (testé avec owner www-data et root).
J'avais galéré à faire fonctionne les scripts Python en écriture de fichier, il fallait déclarer les path en absolu pour que le CRON fonctionne (via fichier /etc/crontab que j'ai utilisé pour mes tests).
J'ai testé également via

Code : Tout sélectionner

crontab -e
mais c'est capricieux.

Bref je conseille donc de rajouter manuellement un CRON dans le fichier Crontab (/etc/) que vous pouvez éditer avec

Code : Tout sélectionner

sudo nano /etc/crontab
et ajouter avec la commande suivante :

Code : Tout sélectionner

*/30 * * * * root /var/www/html/plugins/script/core/ressources/linky/gen_json.sh

Si quelqu'un de plus expérimenté que moi sur ces sujets à une solution plus propre/robuste je suis preneur !

winhex
Actif
Messages : 2668
Inscription : 23 janv. 2015, 01:41

Re: [LINKY] Récupération de la consommation du site ENEDIS

Message par winhex » 15 févr. 2017, 18:42

merci je me le note pour le jour où !

Avatar de l’utilisateur
mamatdv
Actif
Messages : 1445
Inscription : 10 juil. 2014, 10:03
Localisation : Dijon

Re: [LINKY] Récupération de la consommation du site ENEDIS

Message par mamatdv » 15 févr. 2017, 18:47

Pareil je note merci pour ton partage et boulot


Envoyé de mon iPhone en utilisant Tapatalk
Beta-testeur
Mon matosici
Doc jeedom - Trucs et astuce

Eleckito21
Timide
Messages : 197
Inscription : 06 sept. 2014, 18:24

Re: [LINKY] Récupération de la consommation du site ENEDIS

Message par Eleckito21 » 15 févr. 2017, 23:01

J'ai hâte de le tester !!!

Envoyé de mon SM-N9005 en utilisant Tapatalk

Avatar de l’utilisateur
Sshafi
Actif
Messages : 3891
Inscription : 01 juil. 2014, 16:08
Localisation : Albi

Re: [LINKY] Récupération de la consommation du site ENEDIS

Message par Sshafi » 15 févr. 2017, 23:52

J'attends qu'ils veuillent bien m'ouvrir les services et je teste ça. Merci ;)
??? Menfin ...
VM ESXi # Aeon Lab Gen5 | RFXtrx433E | ...
Trucs & Astuces

Avatar de l’utilisateur
Croixamus
Actif
Messages : 515
Inscription : 28 nov. 2014, 15:43
Localisation : 56

Re: [LINKY] Récupération de la consommation du site ENEDIS

Message par Croixamus » 16 févr. 2017, 11:18

Merci @Asdepique777, je vais tester aussi :D
JEEDOM sur VM Debian avec RFXcom/Téléinfo GCE/raZberry en USB-TTL
Esxi6 avec VM Jeedom / VM ZoneMinder / VM OpenMediaVault / VM OpenVPN-AS

psyk
Timide
Messages : 1
Inscription : 03 juin 2015, 18:19

Re: [LINKY] Récupération de la consommation du site ENEDIS

Message par psyk » 16 févr. 2017, 16:26

:shock: je faisais justement une recherche au cas où un gentil membre l'aurait déjà fait... :)

Merci, je testerai

Asdepique777
Timide
Messages : 9
Inscription : 15 févr. 2017, 13:28

Re: [LINKY] Récupération de la consommation du site ENEDIS

Message par Asdepique777 » 16 févr. 2017, 17:52

Bonjour et merci à tous pour vos messages !

N'hésitez pas à tester en effet, et me remonter un éventuel dysfonctionnement ;)

Avatar de l’utilisateur
Phil56
Actif
Messages : 660
Inscription : 11 août 2015, 11:36

Re: [LINKY] Récupération de la consommation du site ENEDIS

Message par Phil56 » 17 févr. 2017, 10:59

Bonjour,

je viens de tester, quelques remarques

sur mon installe manque quelques module python

Code : Tout sélectionner

sudo apt install python3-pip
sudo apt install python3-dateutil
Dans le design j'ai aussi été obligé de modifier l'url pour téléchager les fichiers json :

Code : Tout sélectionner

var url = '/var/www/html/plugins/script/core/ressources/linky/export_hours_values.json'
remplacé par

Code : Tout sélectionner

var url = '/plugins/script/core/ressources/linky/export_hours_values.json'
Dernière remarque, Attention aux modifications de code javascript, dans un de mes designs j'ai fait une petite erreur du coup mon design plante.
Impossible de le modifier, autant pour les widgets j'ai trouvé les sources pour les corriger, mais là j'ai pas trouvé ls sources des design. Si quelqu'un peut nous dire où les trouver pour au minimum supprimer les mauvais.

Sinon encore merci pour ce partage.

ken@vo
Phil
Box : Jeedom Maitre dans Z83 II, Jeedom Esclave RPI2 avec Zwave, Rfxcom, Blink1, EDISIO et TTS et Maitre de test dans VM Esxi NUC i3
Protocoles : Zwave, X10, DI-O, HUE, EDISIO
Teleinfo (Dauguet rs232 mise en réseau avec une arduino mega)

Avatar de l’utilisateur
Phil56
Actif
Messages : 660
Inscription : 11 août 2015, 11:36

Re: [LINKY] Récupération de la consommation du site ENEDIS

Message par Phil56 » 17 févr. 2017, 11:12

mes premiers résultats
Capture.JPG
Capture.JPG (64.34 Kio) Consulté 9161 fois
Box : Jeedom Maitre dans Z83 II, Jeedom Esclave RPI2 avec Zwave, Rfxcom, Blink1, EDISIO et TTS et Maitre de test dans VM Esxi NUC i3
Protocoles : Zwave, X10, DI-O, HUE, EDISIO
Teleinfo (Dauguet rs232 mise en réseau avec une arduino mega)

Asdepique777
Timide
Messages : 9
Inscription : 15 févr. 2017, 13:28

Re: [LINKY] Récupération de la consommation du site ENEDIS

Message par Asdepique777 » 17 févr. 2017, 11:22

Merci @Phil56 pour ton retour !

En effet ces modules Python doivent être ajoutés à ceux de base pour que tout fonctionne.

Je suis surpris que tu ai du changé l'URL, je testerais de mon côté pour voir si ça fonctionne en chemin relatif. Par contre en URL absolue ça ne marche qu'en local, pas de l'extérieur si on passe par un nom de domaine. Peut-être que ton astuce permet d'avoir les graphes en local et depuis un réseau extérieur :)

Et pour le code JS, effectivement le mode Design est très sensible aux erreurs, je conseille donc de faire un test dans une page vide pour mettre au point le code. Je ne crois qu'il soit possible d'accéder au code source des pages pour les modifier en dur, il faut donc supprimer la page entière en cas de blocage. ça m'est aussi arrivé de ne plus pouvoir supprimer la page non plus, j'ai du passer par la BD MySQL (voir astuce ici viewtopic.php?f=24&t=19074&p=343078#p343078) pour la supprimer.

EDIT : effectivement pour l'URL il faut indiquer

Code : Tout sélectionner

var url = '/plugins/script/core/ressources/linky/export_hours_values.json'
ça fonctionne en local et depuis l'extérieur !

Asdepique777
Timide
Messages : 9
Inscription : 15 févr. 2017, 13:28

Re: [LINKY] Récupération de la consommation du site ENEDIS

Message par Asdepique777 » 17 févr. 2017, 11:31

Phil56 a écrit :mes premiers résultats
Capture.JPG
8-) 8-) nice !
Par contre juste un détail, les infos par jour/mois/an sont en kWh (énergie consommé sur la période), et les infos horaires sont en kW (puissance utilisée par tranche de 30 min)
je t'autorise à changer la couleur si le rose te plait pas hein :lol:

Dernière chose, il faut bien penser à changer les nom de variables dans les autres éléments html, sinon ça plante car il y a interférence entre chaque sinon.
Si besoin je peux refaire un tuto complet et propre avec le code pour les 4 graphes...

Avatar de l’utilisateur
Phil56
Actif
Messages : 660
Inscription : 11 août 2015, 11:36

Re: [LINKY] Récupération de la consommation du site ENEDIS

Message par Phil56 » 17 févr. 2017, 15:13

Effectivement il faut changer le nom des variables et des containers, c'est d’ailleurs comme cela que j'ai planté un de mes design ;-)
Pour le reste dès que j'ai un peu de temps j’améliore...
Box : Jeedom Maitre dans Z83 II, Jeedom Esclave RPI2 avec Zwave, Rfxcom, Blink1, EDISIO et TTS et Maitre de test dans VM Esxi NUC i3
Protocoles : Zwave, X10, DI-O, HUE, EDISIO
Teleinfo (Dauguet rs232 mise en réseau avec une arduino mega)

Avatar de l’utilisateur
Phil56
Actif
Messages : 660
Inscription : 11 août 2015, 11:36

Re: [LINKY] Récupération de la consommation du site ENEDIS

Message par Phil56 » 17 févr. 2017, 15:21

Merci pour le lien j'ai réussi à supprimer le design qui plantait
Box : Jeedom Maitre dans Z83 II, Jeedom Esclave RPI2 avec Zwave, Rfxcom, Blink1, EDISIO et TTS et Maitre de test dans VM Esxi NUC i3
Protocoles : Zwave, X10, DI-O, HUE, EDISIO
Teleinfo (Dauguet rs232 mise en réseau avec une arduino mega)

Eleckito21
Timide
Messages : 197
Inscription : 06 sept. 2014, 18:24

Re: [LINKY] Récupération de la consommation du site ENEDIS

Message par Eleckito21 » 20 févr. 2017, 22:41

Cool j'ai réussi à appliquer chez moi ! Merci

Envoyé de mon SM-N9005 en utilisant Tapatalk

Eleckito21
Timide
Messages : 197
Inscription : 06 sept. 2014, 18:24

Re: [LINKY] Récupération de la consommation du site ENEDIS

Message par Eleckito21 » 21 févr. 2017, 21:01

J'arrive pas à faire deux graphiques différents sur le même design. Je créé un second texte/html ça modifie le premier ?
Si vous avez une idée je suis preneur ?

Pour récupérer la conso d'hier dans un virtuel je fais ceci :
Image

Le lien est du type : http://192.168.1.13/plugins/script/core ... alues.json

Asdepique777
Timide
Messages : 9
Inscription : 15 févr. 2017, 13:28

Re: [LINKY] Récupération de la consommation du site ENEDIS

Message par Asdepique777 » 22 févr. 2017, 08:39

Bonjour Eleckito21,

En effet il faut changer le nom des variables entre les graphes, car sinon le code s’emmêle les pinceaux entre les blocs.
Je met en rouge dans le code ci-dessous ce qu'il faut absolument adapter entre chaque graphe, et en bleu ce qu'il faut changer mais ce n'est pas bloquant (titres, légendes, etc) :


<!DOCTYPE html>
<html lang="fr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>Puissance EDF horaire</title>

</head>
<body>

<div id="container_hour" style="min-width: 580px; height: 320px; margin: 0 auto">
<script type="text/javascript">
$(function () {
var processed_json_hour = new Array();
var url = '/var/www/html/plugins/script/core/ressources/linky/export_hours_values.json'
$.getJSON(url, function(data) {
// Populate series
for (i = 0; i < data.length; i++){
processed_json_hour.push([data.time, data.conso]);
}

// draw chart
$('#container_hour').highcharts({
chart: {
type: "column"
},
legend: {
enabled: false
},
plotOptions: {
series: {
borderColor: '#ff7979'
}
},
title: {
text: "Puissance EDF sur 30 min",
style: {
color: '#b3b3b3'
}
},
xAxis: {
type: 'category',
allowDecimals: false,
title: {
text: "Heure"
}
},
yAxis: {
title: {
text: "Puissance (kW)"
}
},
series: [{
name: 'kW',
data: processed_json_hour,
color: '#ff7979',
}]
});
});
});
</script>


</body>
</html>

Répondre

Revenir vers « [Plugin officiel] Scripts »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 0 invité