Créer des graphiques de conso électrique sans librairie GD

Suite à la question de acd ici http://forum.gce-electronics.com/t/mon-install-question-ipx800-v3-serveur-multi-synology/547/10 j’ouvre un nouveau topic pour présenter la chose ci-dessous.


Je vais essayer de décrire dans l’ordre tout ce qu’il faut pour en arriver là, en commençant par une IPX800V3. :smiley:

  1. Avoir une entrée digitale « compteur » libre sur l’IPX
  2. Utiliser un petit compteur comme celui de GCE http://www.gce-electronics.com/fr/nos-produits/107-compteur-energie-contax-32a.html
  3. Avoir un petit serveur ou NAS soho tournant 24h/24, ou tout autre PC/Mac (mais la conso ne sera pas la même) permettant d’héberger un serveur PHP (ou autre, comme ASP) et une base de données mySQL (ou autre)
  4. Ecrire un script (PHP dans mon cas) pour aller lire le compteur dans le status XML généré par l’IPX et l’enregistrer dans une base de données (mySQL dans mon cas)
    A cette étape, j’enregistre également la couleur Tempo EDF en cours, voir ici http://forum.gce-electronics.com/t/tempo-donner-la-couleur-du-jour-a-lipx/482 et également toute info d’horodatage donnée soit par le serveur lui-même soit par l’IPX (qui sont censés être synchro puisque mis à l’heure par NTP)
    Je lance également des automatismes gérés par l’IPX en M2M, voir ici http://forum.gce-electronics.com/t/faire-du-m2m-en-php/502 en fonction de la couleur du jour et des heures pleines ou creuses.
  5. Créer une tâche planifiée (cron) sur le NAS (Synology DS211J dans mon cas) pour exécuter le script ci-dessus à intervalle régulier (toutes les heures dans mon cas).
  6. Créer un autre script PHP permettant d’aller lire la base de données et en déduire une multitude d’informations sous forme HTML

Voici le détail de ce dernier point 6, important :

  • comme je n’ai pas souhaité m’embêter avec une RAZ du compteur de l’IPX à chaque relevé, j’enregistre les valeurs cumulées et fait tout simplement le différentiel entre 2 relevés pour avoir la valeur de la conso sur une heure
  • pour ne pas installer ou activer des librairies GD (ou tout autre lourde classe PHP graphique) les graphiques sont générées à l’aide d’un simple pixel affiché en HTML aux dimensions de la conso relevée, exemple on affiche une barre de 10 pixels de haut si la conso est 10KWh, 50 pixels de haut si 50KWh, etc…
  • en survolant avec la souris chaque barre (vous ne pouvez pas le voir sur la capture d’écran ci-dessus, forcément) on a l’heure qui s’affiche et la valeur horaire de la conso associée
  • en donnant au script php les valeurs en euros de chaque KWh selon les 6 tarifs de l’abonnement Tempo EDF, on en déduit facilement les coûts.
  • on peut également facilement faire des totaux quotidiens, hebdo ou mensuels, voire annuels pour les comparer entre eux ou générer d’autres graphiques.

Bon boulot. Si l’IPX-800 fait un push avec l’information requise, script et base peuvent se trouver sur un serveur externe, je suppose (pour ceux comme moi qui ne sont pas encore équipés avec un NAS).

oui sauf que la notification par push ne fonctionne pas pour les entrées digitales.

Pas besoin de push puisque les valeurs de compteurs sont accessibles dans le status XML généré en permanence par l’IPX. Il suffit que le script PHP qui va enregistrer ces valeurs en base SQL puisse accéder à ce statut XML : il faudra donc connaître votre adresse IP sur internet (si elle est fixe) ou sinon créer un host dyndns qui pointera en permanence vers votre box internet, et paramétrer cette dernière au niveau NAT pour que ce soit bien la carte IPX qui soit « vue » depuis internet (plusieurs topics de ce forum parlent déjà de ce principe).
Par contre, vous n’aurez certainement pas accès aux « cron » de votre serveur externe, surtout s’il est mutualisé comme toutes les offres d’entrée de gamme. Il faudra donc passer par un autre site de service, comme http://cron.hiwit.org qui exécutera lui-même votre script à intervalle régulier. Défaut : pour les offres gratuites, l’heure d’exécution du script n’est pas garantie, et donc l’intervalle encore moins, ce qui peut faire des relevés un peu bizarres même si les cumuls seront ok.

Pour le push je répondais à gg77.
Pour la planification externe, perso j’utilise http://www.cronoo.com/ qui permet de plannifier gratuitement toutes les minutes …

@lionelf

merci pour tes infos.

Pour ma part, j’alimente déjà one db mysql chez OVH avec les valeurs du fichiers xml.
Mes graphiques sont générés avec Fusioncharts en version free.

Comment fais-tu pour gérérer les tiens ?

merci,

@acd
La question n’est pas pour moi, mais en version gratuit + php il y a jpgraph, très simple d’utilisation.
Exemple dispo dans : Serveur Multicartes IPX800 / Source / [r61] /trunk/graph.php

A+
Thomas

Ben justement j’ai tout expliqué ci-dessus. :slight_smile:)
Je ne veux pas utiliser de librairie GD ni classe PHP graphique ni Fusioncharts ni quoique ce soit d’autre. Je vais donc lire ma valeur de compteur (par exemple 7000Wh) et j’affiche tout simplement en HTML un « image » de 70 pixels de haut et 10 de large. C’est un simple avec le 70 qui est en fait ma variable PHP. Et s’il y a 13000Wh à afficher, ça fera un height=130 et ainsi de suite.
Pour bien comprendre, je vous propose d’aller voir carrément la page HTML (et donc son code source) générée par le script PHP, ici : http://www.naturencadre.com/apercus/fevrier.htm

Moi je trouve tout simplement cela fabuleux ! Exactement ce que je recherche, d’autant que j’ai aussi le tempo.
Ensuite, je compte aussi l’adapté à ma relève de gaz et ma conso d’eau.

Par contre, est-il possible de disposer des scripts php que tu utilises Lionel ?

Jay64 > Je ne peux pas vous donner mes scripts car ce n’est pas une « application » complète comme le serveur web multi-cartes développé par Thomas (guenneguez_t sur ce forum). Du coup toutes mes données personnelles sont dans mes scripts : adresses IP privées, adresse dyndns, login et mot de passe de l’IPX, login et mot de passe de ma base de données, etc… De plus, il vous faudra éplucher les requêtes mySQL des scripts pour en déduire la base de données à créer sur votre serveur. Bref, ce serait trop compliqué, il faudrait que je décrive précisemment ma base de données, ses tables, ses champs, les types de champs, certaines variables bien précises que j’utilise pour asservir mon ECS, etc, etc…
Sans vouloir me « défausser », je vous conseille d’utiliser le serveur web de guenneguez-t, c’est fait pour ça, et il peut également enregistrer des compteurs ou des valeurs de capteurs en base de données et ainsi les relire sous forme de graphiques.