Les infos que je récupère via putty sont :
Code : Tout sélectionner
ADCO 0207XXXXXXX
OPTARIF HC.. <
ISOUSC 30 9
HCHC 006868722 -
HCHP 020247319 /
PTEC HP..
IINST 002 Y
IMAX 036 H
PAPP 00450 *
HHPHC A ,
Du coup j’ai créé la BDD avec le code ci-dessous
Code : Tout sélectionner
CREATE TABLE IF NOT EXISTS `teleinfo` (
`timestamp` bigint(10) NOT NULL default '0',
`rec_date` date NOT NULL default '0000-00-00',
`rec_time` time NOT NULL default '00:00:00',
`adco` varchar(12) character set latin1 collate latin1_general_ci NOT NULL,
`optarif` varchar(4) character set latin1 collate latin1_general_ci NOT NULL,
`isousc` tinyint(2) NOT NULL default '0',
`hchp` bigint(9) NOT NULL default '0',
`hchc` bigint(9) NOT NULL default '0',
`ptec` varchar(2) character set latin1 collate latin1_general_ci NOT NULL,
`iinst` tinyint(3) NOT NULL default '0',
`imax` tinyint(3) NOT NULL default '0',
`papp` int(5) NOT NULL default '0',
`hhphc` varchar(1) character set latin1 collate latin1_general_ci NOT NULL,
UNIQUE KEY `timestamp` (`timestamp`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Je coince pour la declaration des variables dans le code C de
teleinfoserial_mysql.c
Dans le code initial ci-dessous, j’ai juste changé les étiquettes et remplacé #define NB_VALEURS 20 par #define NB_VALEURS 10
Les autres valeurs, je ne vois pas à quoi elles correspondent donc je ne sais pas comment les modifier.
Code : Tout sélectionner
// 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"} ;
// 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];
Ensuite, ce qu’il va peut etre falloir modifier est le « checksum » et la partie « Test si dépassement intensité ». Dans cette dernière c’est écrit de remplacer par ADPS pour du monophasé mais je n’ai même pas cette étiquette.
Merci pour votre aide