使用bluepy& Sensirion Smartgadget通知

时间:2018-02-16 17:51:46

标签: python notifications bluetooth-lowenergy

我正在尝试使用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...")

1 个答案:

答案 0 :(得分:0)

重新开始研究该问题,并找到了我当时没有看到的蛮力解决方案...

遍历getCharacteristics的所有结果并将0x01写入其中。原来,我需要将第三个特征写入打开通知的值。

我在GitHub上为Sensirion启动了一个API,可以在here上找到。