Export donnee Teleinfo sur base FAI.php
De MicElectroLinGenMet.
Sommaire |
Export. des données Téléinfo.
Exemple d'export dans une base MySql chez le FAI free.fr
Cette export est fait à partir des relevées Téléinfo faites sur un Wrt54gl.
Voir page : Interface téléinfo. piloté par un WRT54GL
Description
- Créer une table teleinfo (voir structure ci-dessous) sur le site http://phpmyadmin.free.fr/phpMyAdmin/ de free.
- Copie du script PHP ci-dessous sur son site web du FAI (aprés avoir renseigner les login/password/base)
- Les données Téléinfo. seront sous forme de fichier CSV avec séparateur comme le fichier obtenu avec Teleinfoserial-wrt54gl.c.
- Le fichier CSV est transféré à partir du Wrt54gl vers le site web perso du FAI avec la commande wput.
- Le script PHP d'import. des données dans la base du FAI se lance à partir du Wrt54gl avec la comande wget.
- Le tout se fait à partir du Wrt54gl avec le script shell ci-dessous si le Wrt54gl est bien configuré pour accéder à Internet (IP/Passerelle/DNS).
Le fichier CSV et le script PHP sont dans cet exemple dans la racine du site du FAI.
Script PHP sur site FAI
<?php /* SCRIPT importcsvteleinfobasefai.php Exemple "brut de fonderie" à adapter, sécuriser ... */ $importfile="teleinfo.csv" ; $serveur="sql.free.fr"; $login="LOGIN_FAI"; $base="BASE_FAI"; $pass="PASSWORD_FAI" ; $table="teleinfo"; mysql_connect($serveur, $login, $pass) or die("Erreur de connexion au serveur"); mysql_select_db($base) or die("Erreur de connexion a la base de donnees !\n"); $query="LOAD DATA LOCAL INFILE '$importfile' REPLACE INTO TABLE `$table` FIELDS TERMINATED BY ',' ENCLOSED BY '\'' LINES TERMINATED BY '\n'" ; mysql_query($query) or die ("Erreur dans la requète " . mysql_error() . " !\n"); echo "OK\n" ; mysql_close(); ?>
Structure de la table Teleinfo
A adapter en fonction de ses besoins.
# Exemple de structure de la table teleinfo à créer chez son FAI: 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, `inst1` tinyint(3) NOT NULL default '0', `inst2` tinyint(3) NOT NULL default '0', `inst3` tinyint(3) NOT NULL default '0', `imax1` tinyint(3) NOT NULL default '0', `imax2` tinyint(3) NOT NULL default '0', `imax3` tinyint(3) NOT NULL default '0', `pmax` int(5) NOT NULL default '0', `papp` int(5) NOT NULL default '0', `hhphc` varchar(1) character set latin1 collate latin1_general_ci NOT NULL, `motdetat` varchar(6) character set latin1 collate latin1_general_ci NOT NULL, `ppot` varchar(2) character set latin1 collate latin1_general_ci NOT NULL, `adir1` tinyint(3) NOT NULL default '0', `adir2` tinyint(3) NOT NULL default '0', `adir3` tinyint(3) NOT NULL default '0', UNIQUE KEY `timestamp` (`timestamp`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Exemple de fichier CSV
Obtenu avec le programme Teleinfoserial-wrt54gl.c
'1223717885','2008-10-11','11:38:05','70060936XXXX','HC..','20','8430133','8216484','HP','1','0','1','11','20','19','7470','420','E','000000','00','0','0','0' '1223717944','2008-10-11','11:39:04','70060936XXXX','HC..','20','8430140','8216484','HP','1','0','1','11','20','19','7470','410','E','000000','00','0','0','0' '1223718005','2008-10-11','11:40:05','70060936XXXX','HC..','20','8430147','8216484','HP','1','0','1','11','20','19','7470','420','E','000000','00','0','0','0' '1223718065','2008-10-11','11:41:05','70060936XXXX','HC..','20','8430154','8216484','HP','1','0','1','11','20','19','7470','410','E','000000','00','0','0','0' '1223718124','2008-10-11','11:42:04','70060936XXXX','HC..','20','8430160','8216484','HP','1','0','1','11','20','19','7470','450','E','000000','00','0','0','0' '1223718185','2008-10-11','11:43:05','70060936XXXX','HC..','20','8430167','8216484','HP','1','0','1','11','20','19','7470','430','E','000000','00','0','0','0' '1223718244','2008-10-11','11:44:04','70060936XXXX','HC..','20','8430174','8216484','HP','1','0','1','11','20','19','7470','410','E','000000','00','0','0','0' '1223718305','2008-10-11','11:45:05','70060936XXXX','HC..','20','8430180','8216484','HP','1','0','1','11','20','19','7470','410','E','000000','00','0','0','0' '1223718365','2008-10-11','11:46:05','70060936XXXX','HC..','20','8430187','8216484','HP','1','0','1','11','20','19','7470','440','E','000000','00','0','0','0' '1223718424','2008-10-11','11:47:04','70060936XXXX','HC..','20','8430194','8216484','HP','1','0','1','11','20','19','7470','410','E','000000','00','0','0','0' '1223718485','2008-10-11','11:48:05','70060936XXXX','HC..','20','8430200','8216484','HP','1','0','1','11','20','19','7470','410','E','000000','00','0','0','0' '1223718544','2008-10-11','11:49:04','70060936XXXX','HC..','20','8430207','8216484','HP','1','0','1','11','20','19','7470','400','E','000000','00','0','0','0'
Ou généré à partir d'une table 'teleinfo' déjà existante:
SELECT * INTO OUTFILE '/tmp/teleinfo.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '\'' LINES TERMINATED BY '\n' FROM `teleinfo`
Import d'un fichier csv dans la table 'teleinfo'
Requête Sql utilisée dans le script PHP pour importer dans la base du FAI.
LOAD DATA LOCAL INFILE 'teleinfo.csv' REPLACE INTO TABLE `teleinfo` FIELDS TERMINATED BY ',' ENCLOSED BY '\'' LINES TERMINATED BY '\n'
Script SHELL sur le WRT54GL
Exemple de script lancé sur le Wrt54gl toutes les heures pour mise à jour base FAI
Lancer en crontab du Wrt54gl:
0 * * * * /jffs/bin/exportcsvsqlfree.sh > /tmp//exportcsvsqlfree.log 2>&1
#!/bin/sh # Le fichier /tmp/teleinfo.csv est rempli par teleinfoserial lancé en crontab toutes les mn. # # Installation package wput sur Wrt54gl avec OpenWrt: => ipkg install wput # Attention wput renvoie toujours un code '0' même si erreur. # # A vérifier sur le site http://phpmyadmin.free.fr/phpMyAdmin/ de free pour voir si la base est à jour. # if /usr/bin/wput -u -t 3 /tmp/teleinfo.csv ftp://site.perso:xxxxxxxx@ftpperso.free.fr/teleinfo.csv | grep -q "0K" then RESULT=$(/usr/bin/wget -O - http://site.perso.free.fr/importcsvteleinfobasefai.php) if [ "$RESULT" = "OK" ] then > /tmp/teleinfo.csv else echo "Erreur import base FAI !" echo "Nouvel essai la fois suivante." exit 1 fi else echo "Erreur transfert fichier CSV !" echo "Nouvel essai la fois suivante." exit 1 fi exit 0