美好的一天。我正在使用运行Raspbian Stretch的Raspberry Pi 3模型B.我有一个名为bluepyscanner.py的Python脚本,它基本上是bluepy scanner sample code的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并添加了一个定期启动的任务"在重启时#34;
sudo python3 /home/pi/bluepyscanner.py
systemd(https://www.raspberrypi.org/documentation/linux/usage/systemd.md):我按照链接文档页面上的说明操作,将main.py替换为我的bluepyscanner.py,工作目录替换为/ home / pi
任何人都可以给我指出可能出错的地方吗?启用蓝牙并根据this安装bluepy。我不认为脚本已经运行,因为与从终端运行时不一样,没有创建bluepyscanlog.txt。
提前感谢您的时间。
答案 0 :(得分:0)
请将这些更改添加到您的脚本中
...
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
确保exit 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掩盖原始内容)