как проверить ping для устройства Bluetooth в python

#python-3.x #ubuntu #bluetooth #root #pybluez

#python-3.x #ubuntu #bluetooth #root #pybluez

Вопрос:

я подключил контроллер Bluetooth для управления ровером. я могу пинговать контроллер, используя sudo l2ping 84:30:95:06:C6:6C терминал. по сути, я хочу выполнить определенный код, когда ping недоступен. т. Е. Когда контроллер отключен. я попробовал это:

 import bluetooth

while True:
    if bluetooth.lookup_name('84:30:95:06:C6:6C'):
        print("do nothing")

    else:
        print("do something")
 

но это немного задерживается, мне требуется около 2-3 секунд, чтобы выдать вывод при отключении контроллера.
есть ли какой-либо другой способ сделать это в python?

Ответ №1:

таким образом, мы можем использовать hcitool, чтобы узнать состояние устройства Bluetooth. вот небольшой фрагмент, который сработал для меня. для получения выходных данных нет задержки, и это работает абсолютно нормально.

 import subprocess as sp

dev_addr = '84:30:95:06:C6:6C'
stdoutdata = sp.getoutput("hcitool con")

while True:
    if dev_addr in stdoutdata.split():
        print("do nothing")

    if dev_addr not in stdoutdata.split():
        print("do something")
 

Комментарии:

1. hcitool это один из восьми инструментов, который устарел еще в 2017 году, поэтому в какой-то момент исчезнет.