Python bluepy.btle.btlemanagement错误:未能执行管理命令';乐安';(代码:20,错误:权限被拒绝)
我使用并修改了如下所示的代码: 我遇到的问题是,设备似乎阻止我访问它的值,尽管我对此不确定 这是我的密码:Python bluepy.btle.btlemanagement错误:未能执行管理命令';乐安';(代码:20,错误:权限被拒绝),python,bluetooth,raspberry-pi,Python,Bluetooth,Raspberry Pi,我使用并修改了如下所示的代码: 我遇到的问题是,设备似乎阻止我访问它的值,尽管我对此不确定 这是我的密码: from bluepy.btle import Scanner, DefaultDelegate import time import struct SENSOR_ADDRESS = [""ec:fe:4e:12:b8:72""] class DecodeErrorException(Exception): def __init__(
from bluepy.btle import Scanner, DefaultDelegate
import time
import struct
SENSOR_ADDRESS = [""ec:fe:4e:12:b8:72""]
class DecodeErrorException(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return repr(self.value)
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())
ManuDataHex = []
ReadLoop = True
try:
while (ReadLoop):
devices = scanner.scan(2.0)
ManuData = ""
for dev in devices:
entry = 0
TempData = 0
for saddr in SENSOR_ADDRESS:
entry += 1
if (dev.addr == saddr):
CurrentDevAddr = saddr
for (adtype, desc, value) in dev.getScanData():
if (desc == "Manufacturer"):
ManuData = value
if (ManuData == ""):
print("No data received, end decoding")
continue
print(ManuData)
for i, j in zip(ManuData[::2], ManuData[1::2]):
ManuDataHex.append(int(i+j, 16))
if ((ManuDataHex[0] == 0x85) and (ManuDataHex[1] == 0x00)):
print("Header byte 0x0085 found")
else:
print("Header byte 0x0085 not found, decoding stop")
continue
idx = 7
print("TotalLen: " + str(len(ManuDataHex)))
while idx < len(ManuDataHex):
if (ManuDataHex[idx] == 0x43):
idx += 1
TempData = ManuDataHex[idx]
TempData += ManuDataHex[idx+1] * 0x100
TempData = TempData * 0.0625
idx += 2
else:
idx += 1
print("Device Address: " + CurrentDevAddr)
print("Temp Data: " + str(TempData))
ReadLoop = False
except DecodeErrorException:
pass
从bluepy.btle导入扫描程序,DefaultDelegate
导入时间
导入结构
传感器地址=[“ec:fe:4e:12:b8:72”“]
类DecodeErrorException(异常):
定义初始值(自身,值):
自我价值=价值
定义(自我):
返回报告(自身值)
类ScanDelegate(DefaultDelegate):
定义初始化(自):
DefaultDelegate.\uuuuuu初始化\uuuuuuuuuuuuu(自)
def handleDiscovery(self、dev、isNewDev、isNewData):
如果isNewDev:
打印(“发现的设备”,dev.addr)
elif isNewData:
打印(“从”,dev.addr收到新数据)
scanner=scanner()。带委托(scannelegate())
ManuDataHex=[]
ReadLoop=True
尝试:
while(ReadLoop):
设备=扫描仪。扫描(2.0)
ManuData=“”
对于设备中的开发人员:
条目=0
TempData=0
对于传感器地址中的SADD:
条目+=1
如果(dev.addr==saddr):
currentdavddr=saddr
对于dev.getScanda()中的(adtype、desc、value):
如果(描述=“制造商”):
ManuData=值
如果(ManuData==“”):
打印(“未收到数据,结束解码”)
持续
打印(手动数据)
对于zip中的i,j(ManuData[::2],ManuData[1::2]):
ManuDataHex.append(int(i+j,16))
如果((ManuDataHex[0]==0x85)和(ManuDataHex[1]==0x00)):
打印(“找到页眉字节0x0085”)
其他:
打印(“未找到头字节0x0085,解码停止”)
持续
idx=7
打印(“总计:+str(len(ManuDataHex)))
当idx
例外情况如下:
回溯(最近一次呼叫最后一次):
文件“/home/pi/Desktop/lameteo/print.py”,第31行,在
设备=扫描仪。扫描(2.0)
文件“/usr/local/lib/python3.7/dist-packages/bluepy/btle.py”,扫描中的第852行
自启动(被动=被动)
文件“/usr/local/lib/python3.7/dist-packages/bluepy/btle.py”,第790行,开始
自我管理指令(“乐开”)
文件“/usr/local/lib/python3.7/dist-packages/bluepy/btle.py”,第312行,在_-mgmtCmd中
raise BTLEManagementError(“未能执行管理命令'%s'”(cmd),rsp)
bluepy.btle.btlemanagement错误:无法执行管理命令“le on”(代码:20,错误:>权限被拒绝)
如果你在这方面有任何专长,我将非常感谢你的帮助