66 lines
1.5 KiB
PHP
66 lines
1.5 KiB
PHP
|
<?php
|
||
|
|
||
|
$sqlite = 'teleinfo.sqlite';
|
||
|
|
||
|
//
|
||
|
// renvoie une trame teleinfo complete sous forme d'array
|
||
|
//
|
||
|
function lireTrameConso () {
|
||
|
|
||
|
$handle = fopen ('/dev/ttyAMA0', "r"); // ouverture du flux
|
||
|
|
||
|
while (fread($handle, 1) != chr(2)); // on attend la fin d'une trame pour commencer avec la trame suivante
|
||
|
|
||
|
$char = '';
|
||
|
$trame = '';
|
||
|
$datas = '';
|
||
|
|
||
|
while ($char != chr(2)) { // on lit tous les caracteres jusqu'a la fin de la trame
|
||
|
$char = fread($handle, 1);
|
||
|
if ($char != chr(2)){
|
||
|
$trame .= $char;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
fclose ($handle); // on ferme le flux
|
||
|
|
||
|
$trame .= 'TIMESTAMP ' . time() . ' ';
|
||
|
|
||
|
/*
|
||
|
$trame = chop(substr($trame,1,-1)); // on supprime les caracteres de debut et fin de trame
|
||
|
|
||
|
$messages = explode(chr(10), $trame); // on separe les messages de la trame
|
||
|
|
||
|
foreach ($messages as $key => $message) {
|
||
|
$message = explode (' ', $message, 3); // on separe l'etiquette, la valeur et la somme de controle de chaque message
|
||
|
if(!empty($message[0]) && !empty($message[1])) {
|
||
|
$etiquette = $message[0];
|
||
|
$valeur = $message[1];
|
||
|
$datas[$etiquette] = $valeur; // on stock les etiquettes et les valeurs de l'array datas
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$datas["timestamp"] = time();
|
||
|
|
||
|
return $datas;
|
||
|
*/
|
||
|
return $trame;
|
||
|
}
|
||
|
|
||
|
|
||
|
while(true) {
|
||
|
$dateJour = date('Ymd');
|
||
|
|
||
|
$trame = lireTrameConso(); // recupere une trame teleinfo
|
||
|
|
||
|
print $trame;
|
||
|
|
||
|
// if (count($trame) == 11 ) {
|
||
|
// $fp = fopen('teleinfo_'.$dateJour.'.csv', 'a');
|
||
|
// fputcsv($fp, $trame);
|
||
|
// fclose($fp);
|
||
|
// }
|
||
|
}
|
||
|
|
||
|
?>
|