青歯のドングルを使用して電話を RaspberryPi に接続しようとしています (地球を破壊するようなことは何もしようとせず、電話がその地域にいつあるかを判断するだけです)。電話のブルートゥースをオンにして次のコマンドを発行すると、次の出力が得られます (これがセキュリティの侵害であると誰かが私に説教し始める前に、それが私の実際の電話の Bluetooth IDではないことを思い出させてください)。
指図:
sudo rfcomm connect 0 AA:BB:CC:DD:EE:FF 10
echo $?
出力:
Connected /dev/rfcomm0 to AA:BB:CC:DD:EE:FF on channel 10
Press CTRL-C for hangup
0
ここで、携帯電話の bluetoothをオフにして同じコマンドを発行すると、次の出力が得られます (ここでも、罪のない人を保護するためにすべての ID が変更されています)。
指図:
sudo rfcomm connect 0 AA:BB:CC:DD:EE:FF 10
echo $?
出力:
Can't connect RFCOMM socket: Host is down
0
電話が部屋にあるときと部屋から出たときを判断しようとしているので、ドングルが電話に接続できるときと接続できないときを検出する何らかの方法 (他の方法) が必要です。これを達成するにはどうすればよいですか?(注:電話を建物から取り外して、完全にオフにしてみました)
編集:メッセージをキャッチして、そのstderr
ようにテストすることを検討しました
error=$`sudo rfcomm connect 0 AA:BB:CC:DD:EE:FF 10 >/dev/null` &
if [ $error=="Can't connect RFCOMM socket: Host is down" ]
then
...
fi;
しかし問題は、rfcomm がバックグラウンドで実行されなければならないことです。