[英]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
但是,我某种程度上无法使该脚本在启动时自动运行。 我已经分别尝试了以下三种方法,但到目前为止没有一种有效:
rc.local(h ttps://www.raspberrypi.org/documentation/linux/usage/rc-local.md ):我在/etc/rc.local后面添加了以下行
python3 /home/pi/bluepyscanner.py
Cron( https://www.raspberrypi.org/documentation/linux/usage/cron.md ):我使用了Cron GUI并添加了一个重复任务,该任务要在“重启时”启动
须藤python3 /home/pi/bluepyscanner.py
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.local
以sudo
此修改
....
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.