mickeys Posté(e) le 1 juillet 2012 Partager Posté(e) le 1 juillet 2012 (modifié) bonjour je souhaiterais mettre en place le Teleinfo sur un nas synology (ds212j) j ai récupéré le fichier usbserial.ko et ftdi_sio.ko correspondants a mon processeur. j ai exécuter le code knod /dev/ttyUSB0 c 188 0 stty -F /dev/ttyUSB0 1200 sane evenp parenb cs7 -crtscts wget http://votreserveur/usbserial.ko wget http://votreserveur/ftdi_sio.ko insmod usbserial.ko insmod ftdi_sio.ko Voir les infos usb cat /dev/ttyUSB0 j ai bien la trame donc le signal est ok sur le port usb il faut donc maintenant récupérer le programme en c qui intègre les données en base mysql - Installation de phpmyadmin via le dsm 4 du nas - Création de la bdd j ai récupéré le fichier en .c pour intégrer en base Mais voici mon probleme !!!!! Quand j exécute la commande en SSH /volume1/scripts/teleinfoserial_mysql.c j ai l erreur suivante: /volume1/scripts/teleinfoserial_mysql.c: line 1: /bin: Permission denied /volume1/scripts/teleinfoserial_mysql.c: line 2: /bin: Permission denied /volume1/scripts/teleinfoserial_mysql.c: line 3: /bin: Permission denied /volume1/scripts/teleinfoserial_mysql.c: line 4: syntax error: unexpected "(" Que dois je faire ? je ne comprend pas Je me connecte en root Je pense faire prochainement un petit tuto sur la mise en place complète. cordialement Modifié le 1 juillet 2012 par mickeys 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sp@r0 Posté(e) le 1 juillet 2012 Partager Posté(e) le 1 juillet 2012 T'aurais pas l 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
mickeys Posté(e) le 2 juillet 2012 Auteur Partager Posté(e) le 2 juillet 2012 (modifié) bonjour merci je dois obligatoirement compiler le programme en .c ? sur mon ancien serveur ( dlink ) je n'ai pas eu besoin de le compiler c est juste un programme en c que le nas doit exécuter. je n ai aucun moyen de compiler quoi que ce soit j ai récupérer les ko grâce a un membre du forum peut être peut il me le compiler , il a le même nas que moi Modifié le 2 juillet 2012 par mickeys 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
PatrickH Posté(e) le 2 juillet 2012 Partager Posté(e) le 2 juillet 2012 Les fichier ".c" sont des sources le "C" n'est pas un langage interprété comme le perl ou le python il faut donc le compiler pour avoir un exécutable sur la plateforme cible quand aux ".ko" ce sont bien des exécutable "objets" du kernel (ca c'est bon !) Est tu sur que ton fichier ".c" est bien du "C", tu peux nous mettre quelques lignes (le début par exemple) Patrick 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 2 juillet 2012 Partager Posté(e) le 2 juillet 2012 (modifié) je souhaiterais mettre en place le Teleinfo sur un nas synology (ds212j) (Petit HS) Histoire de ne pas mourir idiot... c'est quoi le "Teleinfo" ??? Modifié le 2 juillet 2012 par CoolRaoul 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
mickeys Posté(e) le 2 juillet 2012 Auteur Partager Posté(e) le 2 juillet 2012 Les fichier ".c" sont des sources le "C" n'est pas un langage interprété comme le perl ou le python il faut donc le compiler pour avoir un exécutable sur la plateforme cible quand aux ".ko" ce sont bien des exécutable "objets" du kernel (ca c'est bon !) Est tu sur que ton fichier ".c" est bien du "C", tu peux nous mettre quelques lignes (le début par exemple) Patrick /* teleinfoserial_mysql.c */ /* Version pour PC et wrt54gl */ /* Lecture données Téléinfo et enregistre données sur base mysql vesta si ok sinon dans fichier csv. */ /* Connexion par le port série du Wrt54gl (Console désactivée dans inittab.) */ /* Vérification checksum données téléinfo et boucle de 3 essais si erreurs. */ /* Par domos78 at free point fr */ /* Paramètres à adapter: - Port série à modifier en conséquence avec SERIALPORT. - Nombre de valeurs à relever: NB_VALEURS + tableaux "etiquettes" et "poschecksum" à modifier selon abonnement (ici triphasé heures creuses). - Paramètres Mysql (Serveur, Base, table et login/password) - Autorisé le serveur MySql à accepter les connexions distantes pour le Wrt54gl. Compilation PC: - gcc -Wall teleinfoserial_mysql.c -o teleinfoserial_mysql -lmysqlclient Compilation wrt54gl: - avec le SDK (OpenWrt-SDK-Linux). Résultat pour les données importantes dans la base MySql du serveur distant: dan@vesta:~$ bin/listdatateleinfo.sh timestamp date heure hchp hchc ptec inst1 inst2 inst3 papp 1222265525 24/09/2008 16:12:05 8209506 8026019 HP 1 0 1 460 1222265464 24/09/2008 16:11:04 8209499 8026019 HP 1 0 1 460 1222265405 24/09/2008 16:10:05 8209493 8026019 HP 1 0 1 390 1222265344 24/09/2008 16:09:04 8209487 8026019 HP 1 0 1 390 1222265284 24/09/2008 16:08:04 8209481 8026019 HP 1 0 1 390 1222265225 24/09/2008 16:07:05 8209476 8026019 HP 1 0 1 390 1222265164 24/09/2008 16:06:04 8209470 8026019 HP 1 0 1 390 1222265105 24/09/2008 16:05:05 8209464 8026019 HP 1 0 1 390 Résultat en mode DEBUG: root@wrt54gl:~# ./teleinfoserial_mysql ----- 2008-10-12 15:59:52 ----- ADCO='70060936xxxx' OPTARIF='HC..' ISOUSC='20' HCHP='008444126' HCHC='008228815' PTEC='HP' IINST1='002' IINST2='000' IINST3='001' IMAX1='011' IMAX2='020' IMAX3='019' PMAX='07470' PAPP='00610' HHPHC='E' MOTDETAT='000000' PPOT='00' ADIR1='' ADIR2='' ADIR3='' */ //----------------------------------------------------------------------------- #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <string.h> #include <time.h> #include <syslog.h> #include <termios.h> #include <sys/fcntl.h> #include <sys/types.h> #include <mysql/mysql.h> // Define port serie #define BAUDRATE B1200 //#define SERIALPORT "/dev/tts/0" #define SERIALPORT "/dev/ttyUSB0" // Define mysql //#define MYSQL_HOST "SQLSERVEUR" //#define MYSQL_DB "BASE" //#define MYSQL_TABLE "TABLE" //#define MYSQL_LOGIN "SQLLOGIN" //#define MYSQL_PWD "SQLPASSWD" #define MYSQL_HOST "localhost" #define MYSQL_DB "******" #define MYSQL_TABLE "******" #define MYSQL_LOGIN "******" #define MYSQL_PWD "******" // Fichier local au Wrt4gl/PC + fichier trame pour debug. #define DATACSV "/tmp/teleinfosql.csv" #define TRAMELOG "/tmp/teleinfotrame." // Active mode debug. //#define DEBUG //----------------------------------------------------------------------------- // Déclaration pour le port série. int fdserial ; struct termios termiosteleinfo ; // Déclaration pour les données. char ch[2] ; char car_prec ; char message[512] ; char* match; int id ; char datateleinfo[512] ; /// Constantes/Variables à changées suivant abonnement, Nombre de valeurs, voir tableau "etiquettes", 20 pour abonnement tri heures creuse. #define NB_VALEURS 20 //char etiquettes[NB_VALEURS][16] = {"ADCO", "OPTARIF", "ISOUSC", "HCHP", "HCHC", "PTEC", "IINST1", "IINST2", "IINST3", "IMAX1", "IMAX2", "IMAX3", "PMAX", "PAPP", "HHPHC", "MOTDETAT", "PPOT", "ADIR1", "ADIR2" ,"ADIR3"} ; char etiquettes[NB_VALEURS][16] = {"ADCO", "OPTARIF", "ISOUSC", "HCHP", "HCHC", "PTEC", "IINST", "IINST2", "IINST3", "IMAX", "IMAX2", "IMAX3", "PMAX", "PAPP", "HHPHC", "MOTDETAT", "PPOT", "ADIR", "ADIR2" ,"ADIR3"} ; // Fin Constantes/variables à changées suivant abonnement. char valeurs[NB_VALEURS][18] ; char checksum[255] ; int res ; int no_essais = 1 ; int nb_essais = 3 ; int erreur_checksum = 0 ; // Déclaration pour la date. time_t td; struct tm *dc; char sdate[12]; char sheure[10]; char timestamp[11]; /*-------------------- (Petit HS) Histoire de ne pas mourir idiot... c'est quoi le "Teleinfo" ??? http://penhard.anthony.free.fr/?p=207 Les fichier ".c" sont des sources le "C" n'est pas un langage interprété comme le perl ou le python il faut donc le compiler pour avoir un exécutable sur la plateforme cible quand aux ".ko" ce sont bien des exécutable "objets" du kernel (ca c'est bon !) Est tu sur que ton fichier ".c" est bien du "C", tu peux nous mettre quelques lignes (le début par exemple) Patrick ce qui veut dire que si je trouve le script en python cela devrait fonctionner ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
mickeys Posté(e) le 2 juillet 2012 Auteur Partager Posté(e) le 2 juillet 2012 /*------------------------------------------------------------------------------*/ /* Ecrit les données teleinfo dans base mysql */ /*------------------------------------------------------------------------------*/ int writemysqlteleinfo(char data[]) { MYSQL mysql ; char query[255] ; /* INIT MYSQL AND CONNECT ----------------------------------------------------*/ if(!mysql_init(&mysql)) { syslog(LOG_ERR, "Erreur: Initialisation MySQL impossible !") ; return 0 ; } if(!mysql_real_connect(&mysql, MYSQL_HOST, MYSQL_LOGIN, MYSQL_PWD, MYSQL_DB, 0, NULL, 0)) { syslog(LOG_ERR, "Erreur connection %d: %s \n", mysql_errno(&mysql), mysql_error(&mysql)); return 0 ; } sprintf(query, "INSERT INTO %s VALUES (%s)", MYSQL_TABLE, data); if(mysql_query(&mysql, query)) { syslog(LOG_ERR, "Erreur INSERT %d: \%s \n", mysql_errno(&mysql), mysql_error(&mysql)); mysql_close(&mysql); return 0 ; } #ifdef DEBUG else syslog(LOG_INFO, "Requete MySql ok.") ; #endif mysql_close(&mysql); return 1 ; } 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
PatrickH Posté(e) le 2 juillet 2012 Partager Posté(e) le 2 juillet 2012 Eh oui c'est bien du source "C" et il faut bien le compiler (c'est d'ailleurs mentionné en début de ton fichier fichier !!!) Patrick 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
mickeys Posté(e) le 2 juillet 2012 Auteur Partager Posté(e) le 2 juillet 2012 ok merci mais la je suis bloqué car je ne peut pas compiler 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 2 juillet 2012 Partager Posté(e) le 2 juillet 2012 ce qui veut dire que si je trouve le script en python cela devrait fonctionner ? si tu trouve un script python qui fasse exactement la meme chose que le programme C que tu nous à montré si tu as installé sur ton Synology une version de Python compatible avec le script si ce python qui dispose de toutes les librairies pythons requises Ca fait pas mal de "si"" ... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
mickeys Posté(e) le 2 juillet 2012 Auteur Partager Posté(e) le 2 juillet 2012 pas facile de trouver le script python encore du php ,mais la en python ... il faut bien un pc linux pour compiler ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 2 juillet 2012 Partager Posté(e) le 2 juillet 2012 pas facile de trouver le script python Euh .. c'est toi-même qui as proposé l'option Python 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
mickeys Posté(e) le 2 juillet 2012 Auteur Partager Posté(e) le 2 juillet 2012 oui effectivement car je ne peut pas compiler sinon en perl !!! 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 2 juillet 2012 Partager Posté(e) le 2 juillet 2012 oui effectivement car je ne peut pas compiler sinon en perl !!! Ca peut marcher en effet: tu as une version perl de ton application? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
mickeys Posté(e) le 2 juillet 2012 Auteur Partager Posté(e) le 2 juillet 2012 je vais demander a la personne qui ma donné les fichier ko si il peut me compiler mon programme aucune Ca peut marcher en effet: tu as une version perl de ton application? pas d autre version , c est une version c trouvé sur le net qui fonctionne tres bien sur mon ancien nas dlink 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 2 juillet 2012 Partager Posté(e) le 2 juillet 2012 je vais demander a la personne qui ma donné les fichier ko si il peut me compiler mon programme attention : il est quand même assez mal foutu ce programme, toute la config de connexion mysql est en dur dans le source! A chaque modif (user, password, nom de la base) va falloir recompiler! 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
mickeys Posté(e) le 2 juillet 2012 Auteur Partager Posté(e) le 2 juillet 2012 effectivement un fichier de config serait mieux mais bon c est déjà bien d avoir un fichier , même si on peut pas l exécuter 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 2 juillet 2012 Partager Posté(e) le 2 juillet 2012 effectivement un fichier de config serait mieux mais bon c est déjà bien d avoir un fichier , même si on peut pas l exécuter C'est pire que ce que je pensais: la config du type d'abonnement est *aussi* dans le code!!! /// Constantes/Variables à changées suivant abonnement, Nombre de valeurs, voir tableau "etiquettes", 20 pour abonnement tri heures creuse. #define NB_VALEURS 20 //char etiquettes[NB_VALEURS][16] = {"ADCO", "OPTARIF", "ISOUSC", "HCHP", "HCHC", "PTEC", "IINST1", "IINST2", "IINST3", "IMAX1", "IMAX2", "IMAX3", "PMAX", "PAPP", "HHPHC", "MOTDETAT", "PPOT", "ADIR1", "ADIR2" ,"ADIR3"} ; char etiquettes[NB_VALEURS][16] = {"ADCO", "OPTARIF", "ISOUSC", "HCHP", "HCHC", "PTEC", "IINST", "IINST2", "IINST3", "IMAX", "IMAX2", "IMAX3", "PMAX", "PAPP", "HHPHC", "MOTDETAT", "PPOT", "ADIR", "ADIR2" ,"ADIR3"} ; Si tu veux mon avis c'est pas gagné... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 2 juillet 2012 Partager Posté(e) le 2 juillet 2012 (modifié) Bon par contre le code n'a pas l'air très compliqué, Suffit de trouver quelqu'un ayant acces à ce type d'appareil interfacé avec un serveur linux (pour pouvoir debugger), maitrisant un langage de script type perl ou python, pour te le réécrire sans trop de difficultés. Modifié le 2 juillet 2012 par CoolRaoul 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
mickeys Posté(e) le 2 juillet 2012 Auteur Partager Posté(e) le 2 juillet 2012 (modifié) Après une grosse recherche sur le net je ne trouve pas de script perl ni python. il me faudrais le fichier c compiler ou un script perl ou python cdlt Modifié le 2 juillet 2012 par mickeys 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sp@r0 Posté(e) le 2 juillet 2012 Partager Posté(e) le 2 juillet 2012 Je viens de tester le script compile normalement avec le gcc d'ipkg (donc compilation direct sur le nas)... le seul soucis c la librairie mysql mais la gestion de fichier csv devrait marche suffit de taper gcc -Wall teleinfoserial_mysql.c -o teleinfoserial_mysql Pour le fun je regardes pour voir ce que cela donne en téléchargant l'api mysql mais cela devrait marcher sans trop de soucis 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
mickeys Posté(e) le 3 juillet 2012 Auteur Partager Posté(e) le 3 juillet 2012 super nouvelle ça merci Sp@ro je vais tester ce soir Pourquoi dit tu qu'il y a un problème avec la librairie MySQL ? car le but de ce script est d enregistrer en base mysql . Bon il est vrais que je peux faire ensuite un script php pour lire les données du csv et les enregistrer en base cdlt 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
PatrickH Posté(e) le 3 juillet 2012 Partager Posté(e) le 3 juillet 2012 Je pense qu'il a un problème car il n'a pas les sources "C" de la librairie MySQL pour la compilation Patrick 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sp@r0 Posté(e) le 3 juillet 2012 Partager Posté(e) le 3 juillet 2012 effectivement il n'y a pas les sources de mysql sur le syno .... J'ai essayé en téléchargent les sources de MYSQL mais cela marche moyennement car je ne sais pas comment configurer le fichier myqsl_version.h.in il faudrait que le je lance le Makefile sur le syno .... Je vais regarder si il n'y a pas moyen de récupérer ce qu'il faut dans les sources de synology Sinon je suis entrain de regarder du coté de domogik que je veux installer sur ma raspberrypi (la je galère avec le support de l'IPSEC et du PPTP) et il ce trouve qu'il gère le téléinfo client et vue que domogik c'est fait en python ... je suppose que l'on pourrait extraire cette partie du code de domogik mais je n'ai pas encore regarder .... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
mickeys Posté(e) le 3 juillet 2012 Auteur Partager Posté(e) le 3 juillet 2012 oula ça me parait bien compliqué cette histoire de teleinfo sur le synology effectivement j ai vu que domogik gère le teleinfo . il ne serait pas plus facile de réécrire le code en python que de le compiler pour le nas Connaissez vous une pro du python ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.