configuration MySQL
-
j’essaye de faire fonctionner la téléinformation EDF, avec quelques difficultés (mais des progrès, sachant que je pars de 0 en électronique et en informatique). Mon but étant d’envoyer les données vers emoncms et également vers une bdd sql.
Au niveau hardware, j’ai un Raspberry Pi récupérant sur le GPIO/ttyAMA0 les données de téléinformation, via un montage avec optocoupleur (cf magdiblog.fr)J’ai fait un cron pour envoyer les données toutes les 5 minutes vers emoncms (après avoir mis daemon à 0)
Je souhaite maintenant envoyer les données vers une bdd sur mon Pi, et voici mes paramètres de
teleinfo.conf
:mysql = 1 server = localhost (je reste bien sur mon Pi) user = root (login du phpmyadmin de mon Pi) password = XXXX (mot de passe de phpmyadmin de mon Pi) database = bdd_teleinfo (bdd créée sur phpmyadmin de mon Pi) table = DbiTeleinfo (non créée) mysql_port = 3306
apparemment ça ne fonctionne pas : lorsque je lance teleinfo, j’obtiens un chiffre égal pour “MySQL init OK” et “MySQL connect errors”
Faut il que je crée la table DbiTeleinfo avec les champs correspondant ?
Merci beaucoup pour votre aide, mes questions doivent sembler évidentes mais je débute.
Bonne journée et bonne année !
-
Bruno,
Oui tout à fait, il faut que la table DbiTeleinfo existe, le script de creation est dispo en fin d’article suivant
Sinon, ta config est bonne, il faut bien sur mettre le daemon = 0 si tu lances le programme toutes les 5 minutes
-
Merci beaucoup, la base de donnée est bien alimentée !
Dernier hic : malgré le daemon à 0, la commande teleinfo envoie des trames en continu vers emoncms et ma base de donnée, qui va exploser. Il faut que je fasse ctrl + C pour arrêter l’envoi…Et ceci avec le cron désactivé.
De la même maniere, avec le cron :
*/1 * * * * /home/Rpi/teleinfo/teleinfo
, l’envoi des trames est continu ce qui est logique compte tenu de ce qui précède.Comment donc n’envoyer qu’une seule trame à chaque execution du script ?
Encore merci pour ton aide.
-
Bruno,
Exact, je pensais que çà fonctionnait mais il n’en est rien, je fais la même chose que toi d’une autre manière, çà fonctionne. Je m’explique, il faut lancer le daemon qui va tourner en permanence puis après toutes les 5 minutes tu lances le client.
Voici la procédure : tu remplis bien ton fichier de conf avec tes paramètres (MySQL emoncms, api, .) mais tu mets bien les lignes suivantes (les paramètres seront donnés en ligne de commande) :
mode = send daemon = 0 mysql = 0 emoncms = 0
ensuite tu lances le daemon avec la commande suivante, il va tourner en permanence :
teleinfo -m s -d
Ensuite il te suffit de lancer le client quand tu le souhaites, c’est celle-ci pour loguer dans myqsl (pour emoncms remplacer -q par -e et pour faire les 2 d’un coup tu mets les 2 : -q -e . çà peut durer entre 1 et 5 seconde, c’est normal.
./teleinfo -m r -q``
Voila le résultat chez moi
(nand)root@sheeva01:/homes/root/teleinfo# ./teleinfo -m s -d (nand)root@sheeva01:/homes/root/teleinfo# ./teleinfo -m r -q -e teleinfo 1.0.8 Statistics ========================== Frames Sent : 0 Frames checked : 1 Frames OK : 1 Checksum errors : 0 Frame format Errors : 0 Frame size Errors : 0 MySQL init OK : 1 MySQL init errors : 0 MySQL connect OK : 1 MySQL connect errors: 0 MySQL queries OK : 1 MySQL queries errors: 0 EmonCMS total post : 1 EmonCMS post OK : 1 EmonCMS post errors : 0 EmonCMS timeout : 0 -------------------------- (nand)root@sheeva01:/homes/root/teleinfo#
Je te l’accorde c’est un peu tiré par les cheveux, il faut que je prévois l’option “une seule fois” dans la prochaine version.
En revanche tu peux lancer le client sur n’importe quelle autre machine réseau et pas uniquement sur celle ou tourne le daemon
-
Merci pour ta réactivité.
J’ai mis à jour le .conf et tapé les commandes que tu indiques, mais le résultat n’est pas concluant : toutes les stats de ./teleinfo -m r -q -e sont à 0.
J’ai investigué par unkill -s SIGUSR1 pidof teleinfo
-> Il y a bien des trames envoyées en permanence, mais elles ne sont pas reçues…Faut il que j’achète un autre Pi ? Ma config de réception est elle mauvaise ?
Autre question : comment tuer le daemon autrement qu’en rebootant le Pi ?(pour info, malgré la case “Notify me of follow-up…” cochée, je ne reçois pas de mail (ce qui n’est pas bien grave, je viens souvent)
Bonne soirée
-
Bruno,
Peut être que cela provient de ta configuration réseau, peux-tu me donner le résultat d’un
ìfconfig
sur ton PI ? Tu n’es peut être pas en 192.168.1.x auquel cas il faut mettre à jour dans le fichier de configuration.Pour tuer le daemon il suffit de faire la commande
killall teleinfo
Merci pour les notifications, c’est ennuyeux,je viens de modifier la config pour le forum, tu pourrais m’indiquer si çà fonctionne mieux ?
Merci à toi.
-
Effectivement, mon adresse était erronée (broadcast = 192.168.0.255). Tout fonctionne parfaitement maintenant, je te remercie chaudement.
Je résume mes manips, au cas où ça pourrait servir à des débutants comme moi :
- Hardware issu du montage très simple de http://www.magdiblog.fr/gpio/teleinfo-edf-suivi-conso-de-votre-compteur-electrique/
- Programme issu du post : http://hallard.me/teleinfo-emoncms/
- Création d’une base de donnée MySQL sur le Pi avec phpmyadmin, et création de la table DbiTeleinfo à l’aide du lien précédent
- Code pour que ttyS0 pointe sur le port série ttyAMA0, à refaire à chaque démarrage du Pi:
sudo ln -s /dev/ttyAMA0 /dev/ttyS0
- Paramétrage de teleinfo.conf avec mode = send, daemon = 0, mysql = 0, emoncms = 0
- Commande pour envoyer des données en permanence sur le réseau:
teleinfo -m s -d
- Paramétrage de Crontab (Crontab -e) pour recevoir les données chaque minute sur emoncms et sur la base de donnée MySQL de mon Pi :
*/1 * * * * /home/Rpi/teleinfo/teleinfo -m r -q -e
Et sinon je n’ai pas reçu de notification malgré la case cochée.
Très bonne journée
-
Bruno,
Nickel si çà marche, pour les notifications je regarde car moi même je ne les reçois plus
-
Bonjour,
Tout d’abord merci pour tout ce travail !
J’ai suivi vos tutos sur la téléinfo et l’envoi vers une BdD MySQL.
Voici mon problème : je dispose d’une Raspberry et je souhaite envoyer les données de téléinfo vers la base MySQL de mon disque réseau Synology.
J’ai suivi vos conseils ci-dessus et voici ce que j’obtiens :pi@domoticzpi /etc $ teleinfo -m s -d pi@domoticzpi /etc $ teleinfo -m r -q teleinfo 1.0.8 Statistics ========================== Frames Sent : 0 Frames checked : 1 Frames OK : 1 Checksum errors : 0 Frame format Errors : 0 Frame size Errors : 0 MySQL init OK : 1 MySQL init errors : 0 MySQL connect OK : 0 MySQL connect errors: 1 MySQL queries OK : 0 MySQL queries errors: 0 EmonCMS total post : 0 EmonCMS post OK : 0 EmonCMS post errors : 0 EmonCMS timeout : 0 --------------------------
A priori toues mes adresses, mots de passe, nom de table,… sont corrects.
Pour information, le logiciel Domoticz tourne en parallèle et interroge également le port/dev/ttyAMA0
: pas de conflits possible ?
Est-ce un problème du côté du Synology ?Autre question : lorsque cela fonctionnera, comment faire pour envoyer les données dans la BdD toutes les 1 à 2 minutes ?
Merci d’avance.
-
Bonjour,
Pour la connexion à la base de données mySQL quand je rencontre ce type de problème de connexion, j’utilise soit l’outil en ligne de commande mysql comme par exemple pour ouvrir la base open2300 avec le user root
root@pi02:~# mysql -h diskstation.local -u root -p open2300 Enter password: mysql>Bye root@pi02:~#
Avez vous regardé dans le syslog le message d’erreur ?
cat /var/log/syslog | grep teleinfo
Sinon pour l’ouverture du port oui 2 applications ne peuvent pas ouvrir le port simultanement, je ne sais pas comment fonctionne domoticZ.
Pour envoyer les données toutes les 2 min par exemple il faut lancer le daemon en mode send
- Paramétrage de teleinfo.conf avec mode = send, daemon = 0, mysql = 0, emoncms = 0
- Commande pour envoyer des données en permanence sur le réseau (idéalement à lancer une seule fois au démmarage du Pi)
teleinfo -m s -d
- Paramétrage de Crontab (Crontab -e) pour recevoir les données toutes les 2 minutes sur emoncms et sur la base de donnée MySQL de mon Pi :
*/2 * * * * /home/Rpi/teleinfo/teleinfo -m r -q -e
Attention à changer les chemins si ils sont différents
-
Bonjour,
Merci pour votre réponse : j’avais un problème de droit sur ma base de donnée.
Tout fonctionne à présent correctement avec envoi vers la BdD toutes les deux minutes.
Par contre, le programme teleinfo prend la main sur le port/dev/ttyAMA0
via à vis de Domoticz.
Je ne sais pas s’il est possible de rediriger /dev/ttyAMA0 vers, par exemple, un terminal virtuel type/dev/tty1
de façon à déclarer ce dernier dans Domoticz et pouvoir lire les data de téléinformation simultanément par votre programme et par Domoticz ? -
Bonjour,
Depuis ma dernière question, ma base de donnée se remplie correctement.
Par contre, j’ai une petite question : les informations de la colonneOPTARIF
sont à1
au lieu deBASE
et les informations de la colonnePTEC
sont à1
au lieu deTH..
.
Comment puis-je corriger cela ?
Merci. -
Bonjour,
Ce traitement spécifique est réalisé dans la fonction tlf_treat_label() qui gère une table de correspondance
Il “suffit” de commenter les lignes correspondantes et de recompiler mais je déconseille fortement cette option. En effet certains sites (emoncms par exemple) ne savent pas traiter l’envoi de données de type chaine et il est alors impossible de publier les données pour faire un éventuel traitement.
Charles
-
@bruno merci du résumé des manips à faire. Je souhaite faire la même chose de mon côté et je bute sur la création de la table DBiTeleinfo. Je suis totalement noob dans le domaine mysql et j'aimerais bien avoir les commandes à exécuter ! J'utilise une installation emoncms sur un raspberry donc mysql est déjà installé. merci
-
Bonjour,
pour la création de la base de donnée il suffit copier/coller la commande suivante dans un client mysql. Peut être même depuis phpmyadmin.CREATE TABLE IF NOT EXISTS `DbiTeleinfo` ( `id` int(11) NOT NULL AUTO_INCREMENT, `DATE` datetime DEFAULT NULL, `ADCO` varchar(12) DEFAULT NULL, `OPTARIF` varchar(4) DEFAULT NULL, `ISOUSC` decimal(2,0) DEFAULT NULL, `BASE` decimal(9,0) DEFAULT NULL, `HCHC` decimal(9,0) DEFAULT NULL, `HCHP` decimal(9,0) DEFAULT NULL, `BBRHCJB` decimal(9,0) DEFAULT NULL, `BBRHPJB` decimal(9,0) DEFAULT NULL, `BBRHCJW` decimal(9,0) DEFAULT NULL, `BBRHPJW` decimal(9,0) DEFAULT NULL, `BBRHCJR` decimal(9,0) DEFAULT NULL, `BBRHPJR` decimal(9,0) DEFAULT NULL, `DEMAIN` varchar(4) DEFAULT NULL, `EJPHN` decimal(9,0) DEFAULT NULL, `EJPHPM` decimal(9,0) DEFAULT NULL, `PEJP` varchar(2) DEFAULT NULL, `PTEC` varchar(4) DEFAULT NULL, `IINST1` decimal(3,0) DEFAULT NULL, `IINST2` decimal(3,0) DEFAULT NULL, `IINST3` decimal(3,0) DEFAULT NULL, `IMAX1` decimal(3,0) DEFAULT NULL, `IMAX2` decimal(3,0) DEFAULT NULL, `IMAX3` decimal(3,0) DEFAULT NULL, `HHPHC` varchar(1) DEFAULT NULL, `PMAX` decimal(5,0) DEFAULT NULL, `PAPP` decimal(5,0) DEFAULT NULL, `ADPS` decimal(3,0) DEFAULT NULL, `MOTDETAT` varchar(6) DEFAULT NULL, `TENSION` decimal(3,0) DEFAULT NULL, PRIMARY KEY (`id`), KEY `SEARCH_INDEX` (`ADCO`,`DATE`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
@charles merci! Je me suis servi de cette aide sur mysql pour avoir des commandes en lignes. Ca marche! https://doc.ubuntu-fr.org/mysql