Я не могу перечислить устройства BLE в районе моего Raspberry Pi (python, btmgmt) - PullRequest
2 голосов
/ 29 марта 2020

Я хочу сканировать все устройства в среде моего Raspberry, используя скрипт python, вызываемый из скрипта cron. Но когда я делаю это в cron (я имею в виду, что я добавил в sudo crontab -e), я всегда получаю пустой список.

, когда я вошел в систему как пользователь pi - btmgmt работает (только) с su permissions:

pi@Pluto:~ $ btmgmt find
Unable to start discovery. status 0x14 (Permission Denied)

pi@Pluto:~ $ sudo btmgmt find
Discovery started
hci0 type 7 discovering on
hci0 dev_found: 77:F8:D7:8A:1E:E5 type LE Random rssi -83 flags 0x0000 
...

поэтому в моем скрипте python я написал:

flog.write("P01:\r\n")
out = subprocess.Popen(['sudo', '/usr/bin/btmgmt', 'find'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
stdout, stderr = out.communicate()
flog.write("stderr: " + str(stderr) + "\r\n")
cDvc = stdout.split('\n')
flog.write("Amount of lines = " + str(len(cDvc)) + "\r\n")
for line in cDvc:
    line = line + '\r\n'
    if debugflag:
        print(line)
        flog.write(line)
..

Запуск этого скрипта из командной строки работает нормально .. в лог-файле (flog) Я получаю: ...

P01:
stderr: None
Amount of lines = 40
Discovery started
hci0 type 7 discovering on
hci0 dev_found: 70:D0:FD:74:34:AC type LE Random rssi -59 flags 0x0000 
AD flags 0x1a 
..

Запуск этого же сценария в виде строки crontab -e: устройства не отображаются, и я не могу найти причину:

...
P01:
stderr: None
Amount of lines = 1
P02:
...

Может кто-нибудь мне помочь здесь

...