繁体   English   中英

在Raspberry Pi 3b的启动上运行bluepy扫描脚本

[英]Running a bluepy scan script on boot on a Raspberry Pi 3b

美好的一天。 我正在使用运行Raspbian Stretch的Raspberry Pi 3模型B。 我有一个名为bluepyscanner.py的Python脚本,它基本上是bluepy扫描器示例代码的Python 3变体,并为.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))

当我从终端启动它时,我可以完美地运行该脚本

$ sudo python3 /home/pi/bluepyscanner.py 

但是,我某种程度上无法使该脚本在启动时自动运行。 我已经分别尝试了以下三种方法,但到目前为止没有一种有效:

  1. rc.local(h ttps://www.raspberrypi.org/documentation/linux/usage/rc-local.md ):我在/etc/rc.local后面添加了以下行

    python3 /home/pi/bluepyscanner.py

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

    须藤python3 /home/pi/bluepyscanner.py

  3. systemd( https://www.raspberrypi.org/documentation/linux/usage/systemd.md ):我遵循链接的文档页面上的说明,将main.py替换为我的bluepyscanner.py,并将工作目录替换为/ home / pi

谁能给我指出可能出问题的地方吗? 蓝牙已启用,并根据安装了bluepy。 我认为脚本没有运行,因为与从终端运行时不同,并未创建bluepyscanlog.txt。

预先感谢您的宝贵时间。

请在您的脚本中进行这些更改

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

并在/etc/rc.local中进行适当的更改

sudo python3 /home/pi/bluepyscanner.py

可能是您可以在/上看到bluepyscanlog.txt的先前副本,如果不这样做,则在执行rc.local之后,蓝牙服务可能正在启动。 在您的/etc/rd.localsudo此修改

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

exit 0

确保出口0是文件中的最后一个命令。 如果手动创建了rc.local,请确保它具有执行权限。

sudo chmod +x /etc/rc.local

您将看到您的脚本正在执行。 在我的树莓中,这些是bb.log的内容

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掩盖原始内容)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM