
Zitat von
wuppi83
... sehe im hcitool lescan auch den GTag ...
wenn ich aber das Script ausführe mit "./ibeacon_scan.sh passiert nixt , bzw. er tut was im Hintergrund und dann kommt wieder die Terminaleingabe. Hast du ne Idee was das sein kann ?! Ich muss sagen ich hab wheezy installiert und nicht jessi light. Kann doch aber eigentlich nicht das Problem sein.
Ich hab seit längerere Zeit sehr zuverlässig in einer (fast) Endlosschleife laufen:
PHP-Code:
// Dirs in Linux
$SkriptDir = IPS_GetKernelDir () . 'scripts/';
$DatenDir = '/tmp/';
...
$handle = HciConfig ('hci0', 'reset'); // Reset HCI device
$handle = HciConfig ('hci0', 'up'); // Interface öffnen
...
exec ('sh ' . $SkriptDir . 'BLEscan.sh'); // sudo hcitool lescan > /tmp/Lescan.txt & sleep 3;pkill --signal SIGINT hcitool;sleep 1;
$handle = fopen ($DatenDir . 'Lescan.txt', "r");
if ($handle) {
// Test auf Ausfall-Erkennung von 'BLEscan.sh'
$buffer = fgets ($handle, 4096); // schöpfe Header ab
if (strlen ($buffer) > 0)
exec ('touch /tmp/BLEscan.tic'); // für WatchDog.sh um Total-Ausfall zu prüfen
if (trim ($buffer) != 'LE Scan ...') {
...
} else {
...
while (($buffer = fgets($handle, 4096)) !== false) {
$buffer = trim($buffer);
$Teil = explode(' ', $buffer);
$MAC = ($Teil[0]); // MAC
...
}
if ( ! feof ($handle)) {
echo "\nFehler: unerwarteter fgets() Fehlschlag\n";
}
fclose ($handle);
....
//----------------------------
//---- Funktionen
function HciConfig ($Dev, $Cmd = '', $Par = '', $SubPar = '') { // hciconfig [-a] hciX [command [command parameters]]
global $SkriptDir, $DatenDir;
exec ('sh ' . $SkriptDir . 'HCIconfig.sh' . " $Dev" . " $Cmd" . " $Par" . " $SubPar " . '> ' . $DatenDir . $Dev . '.txt');
// echo ("\nsh " . $SkriptDir . 'HCIconfig.sh -> sudo hciconfig' . " $Dev" . " $Cmd" . " $Par" . " $SubPar " . '> ' . $DatenDir . $Dev . '.txt');
// echo ("\n/*\n" );
// echo (file_get_contents (($DatenDir . $Dev . '.txt')));
// echo ("\n*/\n" );
$handle = @fopen ($DatenDir . $Dev . '.txt', "r");
return $handle;
}
An den Stellen mit '...' im Source-Listing hab ich was gelöscht, weil mein privates System betrifft.
Dazu braucht man noch BLEscan.sh
Code:
#!/bin/bash
# BLEscan.sh
sudo hcitool lescan > /tmp/Lescan.txt & sleep 3;
pkill --signal SIGINT hcitool;
sleep 1;
HCIconfig.sh
Code:
#!/bin/bash
# HCIconfig.sh 1=$Dev, 2=$Cmd, 3=$Par, 4=$SubPar, 5=Dateiausgabe
sudo hciconfig $1 $2 $3 $4 $5;
Die Batchfiles habe ich in IPS auf einem WIN-PC erstellt und dann auf die Raspis mit dieser Methode übertragen.
Weil WIN versus Linux im Spiel ist unbedingt den Abschnitt "Achtung Falle !!" am Ende des Beitrags lesen!
Viele Grüsse
Harald