Я пытаюсь подключить свой телефон к моей RaspberryPi с помощью голубого зубчатого ключа (не пытаясь сделать что-либо разрушающее землю, просто определите, когда мой телефон находится в этом районе). Если я закрою синий зуб телефона на и выдаст следующую команду, я получу следующий результат (прежде чем кто-нибудь начнет проповедовать мне о том, как это является нарушением безопасности, напомню, что это не мой фактический телефон Bluetooth ID):Проверьте успешное соединение с помощью rfcomm
команда:
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 телефона с и выдаст ту же команду, я получаю следующий вывод (опять же, все идентификаторы были изменены для защиты невинных).
Команда:
sudo rfcomm connect 0 AA:BB:CC:DD:EE:FF 10
echo $?
выход:
Can't connect RFCOMM socket: Host is down
0
Поскольку я пытаюсь определить, когда телефон находится в комнате, и когда она уходит, мне нужно каким-то образом (некоторые другим способом) обнаружения, когда ключ может и не может подключиться к нему. Как я могу добиться этого? (Примечание: Я попытался удалить телефон из здания и даже отключить его полностью)
EDIT: Я рассмотрел поймать 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 должен работать в фоновом режиме.