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 !


  • Staff

    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.


  • Staff

    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 un kill -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


  • Staff

    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


  • Staff

    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.


  • Staff

    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 colonne OPTARIF sont à 1 au lieu de BASE et les informations de la colonne PTEC sont à 1 au lieu de TH...
    Comment puis-je corriger cela ?
    Merci.


  • Staff

    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


Log in to reply
 

Looks like your connection to hallard.me's community was lost, please wait while we try to reconnect.