premier commit
This commit is contained in:
65
code/telecinfo_func.php
Normal file
65
code/telecinfo_func.php
Normal file
@@ -0,0 +1,65 @@
|
||||
<?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);
|
||||
// }
|
||||
}
|
||||
|
||||
?>
|
||||
50
code/teleinfo.php
Normal file
50
code/teleinfo.php
Normal file
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
/**
|
||||
* teleinfo - traite des trames d'informations de télérelevé
|
||||
*/
|
||||
|
||||
|
||||
// Obtenez le chemin absolu du répertoire courant
|
||||
$basePath = __DIR__;
|
||||
|
||||
// Inclure le fichier de configuration
|
||||
|
||||
function lireTrameConso($handle)
|
||||
{
|
||||
$currentChar = '';
|
||||
$currentTrame = '';
|
||||
$trameData = '';
|
||||
|
||||
while ($currentChar != chr(2)) {
|
||||
$currentChar = fread($handle, 1);
|
||||
if ($currentChar == chr(10)) {
|
||||
$currentTrame .= ',';
|
||||
} elseif ($currentChar != chr(2) && $currentChar != chr(13)) {
|
||||
$currentTrame .= $currentChar;
|
||||
}
|
||||
}
|
||||
$currentTrame .= 'TIMESTAMP ' . time() . "\n";
|
||||
return $currentTrame;
|
||||
}
|
||||
|
||||
$handle = fopen('/dev/ttyAMA0', "r");
|
||||
|
||||
if ($handle) {
|
||||
while (true) {
|
||||
$dateJour = date('Ymd');
|
||||
$trame = lireTrameConso($handle);
|
||||
|
||||
// Utiliser le chemin du fichier CSV à partir de la configuration
|
||||
$fp = fopen($basePath . '/../data/teleinfo_' . $dateJour . '.csv', 'a');
|
||||
if ($fp) {
|
||||
fwrite($fp, $trame);
|
||||
fclose($fp);
|
||||
} else {
|
||||
echo "Erreur : Impossible d'ouvrir le fichier CSV pour écriture.";
|
||||
}
|
||||
}
|
||||
fclose($handle);
|
||||
} else {
|
||||
echo "Erreur : Impossible d'ouvrir le fichier /dev/ttyAMA0.";
|
||||
}
|
||||
?>
|
||||
22
code/trameAnalyse.php
Normal file
22
code/trameAnalyse.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
$trame = ",ADCO 020122037669 =,,OPTARIF HC.. <,,ISOUSC 45 ?,,HCHC 140779009 +,,HCHP 097287521 <,,PTEC HP.. ,,IINST 011 Y,,IMAX 045 H,,PAPP 02470 .,,HHPHC C .,,TIMESTAMP 1575210073";
|
||||
|
||||
|
||||
function explode_edfTrame($trame) {
|
||||
$edf_proprietes = array();
|
||||
|
||||
foreach(explode(",", $trame) as $propriete) {
|
||||
// on ignore les lignes vides
|
||||
if (strlen($propriete)>0) {
|
||||
$prop = explode(" ", $propriete);
|
||||
if (count($prop) > 1) {
|
||||
$edf_proprietes[] = array($prop[0], $prop[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $edf_proprietes;
|
||||
}
|
||||
|
||||
print_r(explode_edfTrame($trame));
|
||||
Reference in New Issue
Block a user