N'ayant rien trouvé d'existant, j’écris un script PHP permettant j'afficher et d'enregistrer les codes RFSniffer. Le but étant de permettre l'enregistrement des codes de nouvelles prises par n'importe quel utilisateur. C'est une ébauche, mais il est fonctionnel.
La page fonctionne en 3 temps :
- Vérification et lancement de RFSniffer,
- Entrée dans la boucle pour récupération des codes,
- Affichage et sauvegarde des codes
Problème : Dès qu'il entre dans la boucle, la page fige jusqu'à en sortir (de la boucle). Est-il possible de la faire tourner en fond de tache permettant ainsi d'afficher au fil de l'eau les codes reçus ?
Par la suite, les codes récupérés seront envoyer vers une base de données pour être utilisés sur d'autres pages de config ou directement par des scripts (python par exemple) et RFSniffer sera fermé.
Code : Tout sélectionner
<?php
$pid = shell_exec ('ps -e | grep RFSniffer');
$pid = (preg_split("/[\s,]+/", $pid));
if ($pid[1] == 0)
{
$rfsnif = shell_exec ('sudo /home/pi/433Utils/RPi_utils/./RFSniffer > /dev/null &');
}
// Effacer le ficher recu.txt
$fp = fopen('/home/pi/recu.txt',"w");
fputs($fp,"");
fclose($fp);
// Création des tableaux de réceptions de codes
$commandes = array();
$tableau = array();
$tableau2 = array();
while ($i < 6) //Boucle pour 6 codes
{
$fp = fopen('/home/pi/recu.txt',"r");
$commandes = fgets ($fp);
fclose($fp);
if ($commandes != "")
{
if (in_array($commandes, $tableau)) //Vérifie les doublons
{
array_push($tableau2, $commandes);
}
else
{
array_push($tableau, $commandes);
$i = $i+1; //Valide la reception du code
}
}
}
//Affiche
echo 'Prise 1 on : '.$tableau[0].'-- Prise 1 off : '.$tableau[1].'<br />';
echo 'Prise 2 on : '.$tableau[2].'-- Prise 2 off : '.$tableau[3].'<br />';
echo 'Prise 3 on : '.$tableau[4].'-- Prise 3 off : '.$tableau[5].'<br />';
//Souvegarde
$fp = fopen('config/recu.txt',"w");
fputs($fp,$tableau[0]."\n");
fputs($fp,$tableau[1]."\n");
fputs($fp,$tableau[2]."\n");
fputs($fp,$tableau[3]."\n");
fputs($fp,$tableau[4]."\n");
fputs($fp,$tableau[5]."\n");
fclose($fp);
?>