Modifier le programme en fonction de votre configuration

Je n'ai pas souhaité créer de package pour le NAS Synology, ni même ajouter un fichier de configuration. Il faut donc modifier le programme pour l'adapter à votre configuration. C'est très simple.

Première modification, repérez cette ligne :

#define SERIALPORT "/dev/ttyUSB0" // Pour une lecture sur le NAS

Changer le numéro du device ttyUSB pour l'adapter à celui de votre NAS. Si vous êtes perdu à ce stade, je vous invite à relire le début du dossier :p

Deuxième modification, repérez ces lignes :

#define MYSQL_HOST "localhost"
#define MYSQL_DB "domotique"
#define MYSQL_TABLE "tb_consommation_edf"
#define MYSQL_LOGIN "SQLLOGIN"
#define MYSQL_PWD "SQLPASSWD"

Ce sont les informations de connexion à votre base de données. Si vous avez suivi tout le dossier et que vous avez utilisé les même noms que moi, il vous reste à modifier SQLLOGIN et SQLPASSWD.

Évidemment, si vous avez modifié le nom de la base de donnée ou le nom de la table qui va contenir les données, il faudra modifier respectivement domotique et tb_consommation_edf.

C'est tout pour les modifications !

Préparer le NAS avant la compilation

Un NAS Synology vous permet de compiler très facilement un programme écrit en C avec la commande gcc.

Pour l'installer, il suffit de taper la commande suivante :

ipkg install gcc

Le programme de téléinformation écrit dans une base de donnée mysql, et par défaut un NAS Synology ne contient pas toutes les dépendances nécessaires à la compilation.

Pour y rémédier, tapez la série de commande suivante :

ipkg install mysql
/opt/etc/init.d/K70mysqld stop
rm /opt/etc/init.d/K70mysqld
rm /opt/etc/init.d/S70mysqld

Le but de ces lignes de commande :

  1. Installer un deuxième serveur mysql via ipkg de façon à récupérer tout ce qui nous manquait pour la compilation,
  2. Arrêter ce serveur qui s'est lancé automatiquement après sont installation,
  3. Supprimer les scripts permettant de lancer automatique ce deuxième serveur au démarrage du NAS.

Après avoir suivi ces étapes, essayer de vous connecter à __phpMyAdmin__ que vous avez installé.

Si phpMyAdmin affiche une erreur, il suffit de désactiver le serveur mysql de votre NAS Synology et de le relancer depuis l'interface d'administration du DSM.

Votre NAS est prêt pour la compilation.

Compiler le programme de relevé de la téléinformation

Déposer le fichier source du programme que vous avez modifié dans le répertoire de votre choix sur votre NAS Synology. Chez moi j'utilise cet emplacement :

/volume1/web/domotique/teleinformation

Rappel :

  • volume1 est le nom de l'emplacement correspondant à vos données sur le NAS (si vous n'avez qu'un espace et que vous ne l'avez pas renommé...).
  • web est le nom du répertoire hébergeant les fichiers que vous voulez rendez disponible sur le serveur web que vous avez activé sur votre NAS Synology (la racine du site internet hébergé par votre NAS).
  • domotique et teleinformation sont 2 répertoires que j'ai créé pour héberger les fichiers relatifs à... la domotique et la téléinformation...

Organisez vos fichiers comme vous voulez. La dernière étape consistera à installer les fichiers permettant de visualiser la consommation électrique dans votre navigateur internet. Tous les fichiers seront déposés dans le répertoire teleinformation.

Pour compiler le programme, c'est très simple :

  1. Connectez vous à votre NAS Synology avec Putty,
  2. Allez dans le répertoire hébergeant le fichier teleinfo.c
  3. Tapez la commande suivante :
gcc -Wall teleinfo.c -I /opt/include/mysql/ -L /opt/lib/mysql/ -lmysqlclient -o teleinfo

Dans le répertoire du fichier teleinfo.c, vous devriez maintenant avoir un programme qui s'appelle teleinfo

Pour le tester, taper la commande :

env LD_LIBRARY_PATH=/opt/lib/mysql ./teleinfo

Si aucun message d'erreur apparait, connectez vous à phpMyAdmin, et vérifiez qu'un nouvel enregistrement apparait dans la table tb_consommation_edf.

Si c'est le cas, félicitation ! Vous venez de compiler votre programme de relevé de la consommation électrique, et il fonctionne !

Lancer le programme de façon automatisé

Le programme teleinfo a pour but de lire et enregistrer une seule fois le message envoyé par le compteur, puis il s'arrête. Il faut donc automatiser l'exécution du programme à un intervalle de temps qui vous conviendra.

J'ai choisi de l'exécuter toutes les 5 minutes. Pour moi c'est largement suffisant, et la base de données ne va pas grossir très vite.

Première étape, on écrit un script shell permettant de lancer le programme facilement.

Créez un fichier texte dans le même répertoire que le fichier teleinfo et nommez le log_teleinfo_recurrent.sh, et ajouter lui les lignes suivantes :

#!/bin/bash
cd /volume1/web/domotique/teleinformation
env LD_LIBRARY_PATH=/opt/lib/mysql ./teleinfo

Deuxième étape, on modifie le fichier crontab permettant de lancer automatiquement des scripts sur votre NAS. Allez dans le répertoire etc :

cd /etc

Cette étape est sensible, et pour ne pas faire d'erreur, je vous conseille de faire une copie de ce fichier avant de le modifier.

Pour lancer automatique notre script de relevé de la consommation électrique, il suffit d'ajouter la ligne suivante :

0,5,10,15,20,25,30,35,40,45,50,55        *        *        *        *        root        sh /volume1/web/domotique/teleinformation/log_teleinfo_recurrent.sh > /dev/null

Attention, tous les espaces sont importants dans cette ligne !

Pour contrôler que tout fonctionne bien, il suffit de vous connecter à phpMyAdmin avec votre navigateur, puis de contrôler qu'une nouvelle mesure est enregistrée toutes les 5 minutes dans la table tb_consommation_edf.

C'est fini !

La prochaine et dernière étape : tracer des graphiques de votre consommation électrique dans votre navigateur.