为了验证mpy的ble有多大本事,挑战点有难度的,别老整最简单那个uuid,试试别人的。
晚上直接去米家专卖店拿了两个,回家就开干,个把小时的活儿,成功拿到数据。
顺便又复习了一下ble,说实话,一段时间不搞还真有点忘了。。。
成功了,上图。
有些无伤大雅的小问题,懒得改了,懂原理是关键,原理懂了做啥都不怕。
代码老规矩,送了,没规范,你们自己研究

import bluetooth,random,struct,time,_thread
from ubluetooth import BLE
from micropython import const_IRQ_CENTRAL_CONNECT = const(1)
_IRQ_CENTRAL_DISCONNECT = const(2)
_IRQ_GATTS_WRITE = const(3)
_IRQ_GATTS_READ_REQUEST = const(4)
_IRQ_SCAN_RESULT = const(5)
_IRQ_SCAN_DONE = const(6)
_IRQ_PERIPHERAL_CONNECT = const(7)
_IRQ_PERIPHERAL_DISCONNECT = const(8)
_IRQ_GATTC_SERVICE_RESULT = const(9)
_IRQ_GATTC_SERVICE_DONE = const(10)
_IRQ_GATTC_CHARACTERISTIC_RESULT = const(11)
_IRQ_GATTC_CHARACTERISTIC_DONE = const(12)
_IRQ_GATTC_DESCRIPTOR_RESULT = const(13)
_IRQ_GATTC_DESCRIPTOR_DONE = const(14)
_IRQ_GATTC_READ_RESULT = const(15)
_IRQ_GATTC_READ_DONE = const(16)
_IRQ_GATTC_WRITE_DONE = const(17)
_IRQ_GATTC_NOTIFY = const(18)
_IRQ_GATTC_INDICATE = const(19)
_IRQ_GATTS_INDICATE_DONE = const(20)
_IRQ_MTU_EXCHANGED = const(21)
_IRQ_L2CAP_ACCEPT = const(22)
_IRQ_L2CAP_CONNECT = const(23)
_IRQ_L2CAP_DISCONNECT = const(24)
_IRQ_L2CAP_RECV = const(25)
_IRQ_L2CAP_SEND_READY = const(26)
_IRQ_CONNECTION_UPDATE = const(27)
_IRQ_ENCRYPTION_UPDATE = const(28)
_IRQ_GET_SECRET = const(29)
_IRQ_SET_SECRET = const(30)_FLAG_BROADCAST = const(0x0001)
_FLAG_READ = const(0x0002)
_FLAG_WRITE_NO_RESPONSE = const(0x0004)
_FLAG_WRITE = const(0x0008)
_FLAG_NOTIFY = const(0x0010)
_FLAG_INDICATE = const(0x0020)
_FLAG_AUTHENTICATED_SIGNED_WRITE = const(0x0040)_FLAG_AUX_WRITE = const(0x0100)
_FLAG_READ_ENCRYPTED = const(0x0200)
_FLAG_READ_AUTHENTICATED = const(0x0400)
_FLAG_READ_AUTHORIZED = const(0x0800)
_FLAG_WRITE_ENCRYPTED = const(0x1000)
_FLAG_WRITE_AUTHENTICATED = const(0x2000)
_FLAG_WRITE_AUTHORIZED = const(0x4000)mi_addr=b''
conn_handle=0_UART_UUID = bluetooth.UUID("ebe0ccb0-7a0a-4b0c-8a1a-6ff2997da3a6")
_UART_TX = (bluetooth.UUID("ebe0ccc1-7a0a-4b0c-8a1a-6ff2997da3a6"),_FLAG_READ | _FLAG_NOTIFY,
)_UART_SERVICE = (_UART_UUID,(_UART_TX),
)def transdata(pData):temp = (pData[0] | (pData[1] << 8)) * 0.01humi = pData[2]voltage = (pData[3] | (pData[4] << 8)) * 0.001return temp,humi,voltagedef btirq(event, data):global mi_addr,conn_handleif event == _IRQ_CENTRAL_CONNECT:conn_handle, _, _ = dataprint("New connection", conn_handle)elif event == _IRQ_PERIPHERAL_CONNECT:conn_handle, addr_type, addr = dataprint(conn_handle)print('connected!')#bt.gattc_discover_services(0,_UART_UUID)#bt.gattc_discover_characteristics(0, 33, 78)  #value_handle 64elif event == _IRQ_GATTS_WRITE:conn_handle, value_handle = dataelif event == _IRQ_GATTC_SERVICE_RESULT:conn_handle, start_handle, end_handle, uuid = dataprint(conn_handle, start_handle, end_handle,uuid)elif event == _IRQ_GATTC_READ_RESULT:#---------------read here-----------------print('mi data')conn_handle, value_handle, char_data = databytedata=bytes(char_data)print(transdata(bytedata))elif event == _IRQ_PERIPHERAL_DISCONNECT:print('disconected')elif event == _IRQ_SCAN_RESULT:addr_type, addr, adv_type, rssi, adv_data = dataif bytes(adv_data)[0:6]==b'\x02\x01\x06\x11\x16\x95':print('found you!!!')mi_addr=bytes(addr)elif event == _IRQ_SCAN_DONE:print('scan finished!')print(mi_addr)elif event == _IRQ_GATTC_SERVICE_DONE:print("_IRQ_GATTC_SERVICE_DONE")elif event == _IRQ_GATTC_CHARACTERISTIC_RESULT:conn_handle, end_handle, value_handle, properties, uuid = dataprint(value_handle,uuid,properties)elif event == _IRQ_GATTC_CHARACTERISTIC_DONE:conn_handle, status = dataelif event == _IRQ_GATTC_NOTIFY:# A server has sent a notify request.conn_handle, value_handle, notify_data = dataelif event == _IRQ_GATTC_INDICATE:# A server has sent an indicate request.conn_handle, value_handle, notify_data = dataelif event == _IRQ_GATTS_INDICATE_DONE:conn_handle, value_handle, status = databt=BLE()
bt.active(True)
bt.irq(btirq)
print('BLE ON! SEARCHING FOR MI DEVICES...')
bt.gap_scan(5000,10000,10000)
time.sleep(6)
#mi_addr=b'\xa4\xc18$\x10\x9d'
bt.gap_connect(0,mi_addr,10000)
time.sleep(5)
# bt.gattc_discover_services(0)
while 1:bt.gattc_read(conn_handle,54)#bt.gatts_notify(conn_handle, 64)print('try to read')time.sleep(1)

micropython ble 连接小米温湿度计2 获取数据相关推荐

  1. android设备连接蓝牙扫描枪获取数据

    第一步,开启连接 首先要开启蓝牙并且找到蓝牙扫描枪连接,在自己的应用中添加权限 <uses-permission android:name="android.permission.BL ...

  2. Android ble连接过程,Android BLE的一些基础知识及相关操作流程 - 全文

    前言: 本文主要描述Android BLE的一些基础知识及相关操作流程,不牵扯具体的业务实现,其中提供了针对广播包及响应包的解析思路,希望对正在或即将面临Android BLE开发的伙伴们有所引导. ...

  3. 【RW007系列综合实战2】使用RW007模块连接小米蓝牙温湿度计2代

    本期文章将分为5篇连载,前2篇将围绕模块功能详解展开,其后3篇将为大家讲解基于RW007相关DEMO的实现,文章目录如下,目前是第4篇: 通过前面的几篇分享文章,基本上知道RW007高速WIFI模块可 ...

  4. 小米小爱同学触屏版蓝牙MESH功能连接小米蓝牙设备-以小米米家蓝牙温湿度计2为例

    最近刚入手小爱同学,想尝试一下小米的其他蓝牙设备是否可以连接到小爱同学,用小爱同学查询或者控制小米设备. 1.用到的设备有: 小爱触屏印象,米家蓝牙温湿度计2.设备图片如下.       2.连接步骤 ...

  5. 物联网开发笔记(94)- 使用Micropython开发ESP32开发板之获取天气数据并用ILI9341屏幕显示

    一.目的 这一节我们学习如何使用乐鑫的ESP32开发板通过心知天气API控获取实时天气的数据,并使用串口SPI控制ILI9341 液晶屏,显示出来. 二.环境 ESP32(固件:esp32-20220 ...

  6. windox连接电子秤通过COM口获取数据(java)

    文档说明:该文档局限性太大(后端java连接COM端口获取数据),前端连接COM端口获取数据能连接获取不到,如果有大佬会前端获取的可以评论一下. 1.所需物品:java项目(JDK1.8),可以连接串 ...

  7. 树莓派3b连接GPS+BD模块并用python获取数据(串口版)

    目的:树莓派用串口连接GPS+BD模块获取位置信息 材料:树莓派3b(Ubuntu MATE系统),GPS+BD模块,GPS有源天线,杜邦线 步骤: 1. 连接各模块 2. 修改串口设置,由于树莓派3 ...

  8. Android中连接MySql数据库获取数据的简单实现

    文章目录 背景 demo布局 导入jar包 demo代码实现 权限设置 应用运行的结果 背景 一般情况下,Android与数据库中的数据进行交互都是通过调用api接口来实现的.但是今天我们就来尝试实现 ...

  9. 使用蓝牙调试助手来来获取小米温湿度计2的信息

    使用蓝牙调试助手来来获取小米温湿度计2的信息

最新文章

  1. Java File类基本操作
  2. linux挂载分区至目录
  3. oracle学习笔记三
  4. linux中的网络体系结构
  5. 【maven】 在 MyEcplise上使用maven搭建Web项目
  6. marathon传参一
  7. php添加ico,PHP生成ICO图标的代码
  8. 基于LASSO的波士顿房价分析
  9. 链路(link)与数据链路(data link)
  10. 3.3. debug ip igrp
  11. mysql hacing_manjaro 折腾日记
  12. cos47度怎么用计算机算,cos47度等于多少
  13. SQL中对 datetime 类型操作
  14. C语言 strcpy 和 strcpy_s 函数区别 - C语言零基础入门教程
  15. 傅里叶级数展开及系数项求解
  16. 关于Android项目中的Toast那些动画实现方式
  17. CS5265方案应用|TYPEC投屏方案| Type-C转HDMI4K60HZ转换方案
  18. 大数据架构详解电子书全
  19. 超分辨率图像重建-拉普拉斯金字塔(laplacian pyramid)
  20. 通过路由器搭建内网穿透隧道

热门文章

  1. 观“一个垃圾回收器的实现”有感
  2. pikachu平台SQL注入
  3. 触控科技陈昊芝:捕鱼达人装机量1亿 月活跃用户3246万
  4. TextView的走马灯效果
  5. Android O Treble框架笔记(基于高通845平台)
  6. Intel Visual Fortran Compiler 11调用lapack库实现并行多处理计算
  7. matlab 数理统计 pdf下载,十二五江苏省重点教材·数理统计学及其应用:使用MATLAB pdf 宗序平...
  8. Encrypt 加密 (图解)
  9. 2c01xyztop1html,面试题2
  10. Windows下在后台一直运行Python程序