在Raspberry Pi3B上启动时运行bluepy扫描脚本

2024-10-03 11:24:48 发布

您现在位置:Python中文网/ 问答频道 /正文

再见。我用的是树莓皮3模型B运行树莓伸展。我有一个名为bluepyscanner.py它基本上是bluepy scanner sample code的python3变体,只添加了一个.txt日志文件。在

from bluepy.btle import Scanner, DefaultDelegate

class ScanDelegate(DefaultDelegate):
    def __init__(self):
        DefaultDelegate.__init__(self)

    def handleDiscovery(self, dev, isNewDev, isNewData):
        if isNewDev:
            print("Discovered device", dev.addr)
        elif isNewData:
            print("Received new data from", dev.addr)

scanner = Scanner().withDelegate(ScanDelegate())
devices = scanner.scan(10.0)

for dev in devices:
    print("Device {} ({}), RSSI={} dB".format(dev.addr, dev.addrType, dev.rssi))
    for (adtype, desc, value) in dev.getScanData():
        print("  {} = {}".format(desc, value))
        with open('bluepyscanlog.txt', 'a') as the_file:
            the_file.write("{}={}\n".format(desc, value))

当我用

^{pr2}$

但是,不知怎么的,我无法让这个脚本在引导时自动运行。我分别尝试了以下三种方法,但到目前为止没有一种有效:

  1. 在rc.本地(https://www.raspberrypi.org/documentation/linux/usage/rc-local.md):我在/etc后面追加了下面一行/rc.本地在

    Python3/家/pi/bluepyscanner.py

  2. Cron(https://www.raspberrypi.org/documentation/linux/usage/cron.md):我使用crongui并添加了一个要在“重新启动时”启动的重复任务

    苏多Python3/家/pi/bluepyscanner.py

  3. systemd(https://www.raspberrypi.org/documentation/linux/usage/systemd.md):我使用主.py被我的bluepyscanner.py工作目录替换为/home/pi

谁能告诉我可能出了什么问题吗?蓝牙已启用,bluepy按照this安装。我不认为脚本已经运行,因为不像从终端运行时,bluepyscanlog.txt未创建。在

提前感谢您抽出时间。在


Tags: pyhttpsdevselftxtformatvaluedesc
1条回答
网友
1楼 · 发布于 2024-10-03 11:24:48

请在脚本中进行这些更改

...
 with open('/home/pi/bluepyscanlog.txt', 'a+') as the_file:
...

并在您的/etc中进行适当的更改/rc.本地在

^{pr2}$

也许你能看到以前的副本bluepyscanlog.txt在/ 如果这不起作用,蓝牙服务可能会在之后启动rc.本地被执行。在您的/etc/rd.local中作为sudo执行此修改

....
sudo service bluetooth start
sudo python3 /home/pi/bluepyscanner.py > /home/pi/bb.log

exit 0

确保exit 0是文件中的最后一个命令。如果你创造了rc.本地手动确保它获得执行权限。在

sudo chmod +x /etc/rc.local

您将看到脚本正在执行。 在我的覆盆子里这些是bb.日志在

Discovered device d2:xx:XX:XX:XX:XX
Device d2:xx:XX:XX:XX:XX (random), RSSI=-62 dB
  Flags = 06
  0x12 = 08001000
  Incomplete 128b Services = xxxxxxxxxxxxxxxxxxxxxxxxx
  16b Service Data = xxxxxxxxxxxxxx
  Complete Local Name = xxxxxxxxxxx
  Tx Power = 05

(Xs掩码原始内容)

相关问题 更多 >