我正在尝试使用Sensirion Smartgadget上的温度更新通知。到目前为止一切正常:连接,通过轮询读取数据。
我不知道如何在Sensirion Smartgadget上启用通知。我有什么要发送到哪个特征?
我找到的唯一文档是第10页的this。
从现在起我尝试了以下无效的方法:
from bluepy import btle
from bluepy.btle import Peripheral
class MyDelegate(btle.DefaultDelegate):
def __init__(self):
btle.DefaultDelegate.__init__(self)
def handleNotification(self, cHandle, data):
print('notification arrived')
p = Peripheral(myAddress, "random")
p.setDelegate( MyDelegate() )
svc = p.getServiceByUUID( "00002234-b38d-4985-720e-0f993a68ee41" )
ch = svc.getCharacteristics( "00002235-b38d-4985-720e-0f993a68ee41" )[0]
ch.write((1).to_bytes(1, byteorder='little'))
ch.write((1).to_bytes(2, byteorder='big'))
ch.write((1).to_bytes(2, byteorder='little'))
ch.write((2).to_bytes(1, byteorder='big'))
ch.write((2).to_bytes(1, byteorder='little'))
ch.write((2).to_bytes(2, byteorder='big'))
ch.write((2).to_bytes(2, byteorder='little'))
while True:
if p.waitForNotifications(1.0):
continue
print("Waiting...")
答案 0 :(得分:0)
重新开始研究该问题,并找到了我当时没有看到的蛮力解决方案...
遍历getCharacteristics
的所有结果并将0x01
写入其中。原来,我需要将第三个特征写入打开通知的值。
我在GitHub上为Sensirion启动了一个API,可以在here上找到。