Moin,
ich bin derzeit mit iBeacons beschäftigt. Ich habe auf einem RaspPi Bluez installiert und ein Script, welches die Beacons (in meinem Fall Schlüsselanhänger) scannt und sofern erreichbar mit die UUID ausgibt (in der Console). Nun will ich ein zweites Script haben, welches den Consolen Output Zeile für Zeile scannt und bei bestimmten Ergebnissen eine Aktion ausführt.
In meinem Fall > Wenn UUID vom Script 1 erkannt und ausgegeben wurde, dann setze setze IPS Wert auf 1, ansonsten setze es auf 0
Mein Script sieht derzeit wie folgt aus
#!/bin/bash
is_beacon_in_range () {
local count=0
while read line && [ "$line" != "" ]
count=$[count + 1]
do
if [[ `echo $line | grep "XXXXXXXXXXXXXXXXXXXXXXXXXX"` ]]; then
echo 1
exit
fi
if [[ $count -eq 1 ]]; then
exit
fi
done
echo 0
}
result=$(is_beacon_in_range)
echo $result
if [ $result -eq 1 ];then
echo "ist 1"
sudo wget -O - -q http://192.168.11.210:3777/hook/ibeacon?Status=1 1>/dev/null &
else
echo "ist nicht 1"
sudo wget -O - -q http://192.168.11.210:3777/hook/ibeacon?Status=0 1>/dev/null &
fi
Wie man sieht suche ich über eine Funktion meine UUID und lasse mir dann Wert 1 oder Wert 0 zurückgeben. Leider funktioniert das Script nicht, wenn keine Ausgabe auf der Console stattfindet. Ich will das Script dann beenden und Wert 0 zurückgeben lassen ergo die UUID wird nicht gefunden.
Wie man sieht, habe ich es über einen Counter, als auch über
while read line && [ "$line" != "" ]
versucht. Doch beides führt nicht zum beenden der while Schleife.
Kann mir einer von euch helfen?
Ps.: Wird die UUID gefunden, beendet sich die Schleife wunderbar durch das „exit“ hier
if [[ `echo $line | grep "XXXXXXXXXXXXXXXXXXXXXXXXXX"` ]]; then
echo 1
exit