本帖最后由 XCray 于 2022-10-16 21:51 编辑
了解的朋友都知道,米家logo的燃气灶烟机其实和云米logo的是一样的,只是品牌logo不一样。并且燃气灶通过蓝牙与烟机配对,达到与烟机联动以及接入wifi的目的。
可是,我只有燃气灶,原来的烟机一直没什么问题也就没有换。
那么,只使用云米(米家)燃气灶能否接入HA呢?答案是可以,并且非常简单!
以下是尝试过程:
1. 仅使用esp32_ble_tracker,灶台点火,发现设备:
[09:23:07][D][esp32_ble_tracker:620]: Found device xx:xx:xx:xx:xx:xx RSSI=-86
[09:23:07][D][esp32_ble_tracker:641]: Address Type: PUBLIC
[09:23:07][D][esp32_ble_tracker:643]: Name: 'yunmi_yz'
2. 增加on_ble_advertise自动化,灶台点火:
[09:33:28][D][ble_adv:034]: New BLE device
[09:33:28][D][ble_adv:035]: address: xx:xx:xx:xx:xx:xx
[09:33:28][D][ble_adv:036]: name: yunmi_yz
[09:33:28][D][ble_adv:037]: Advertised service UUIDs:
[09:33:28][D][ble_adv:039]: - 0x180A
[09:33:28][D][ble_adv:039]: - 0xFEF5
[09:33:28][D][ble_adv:041]: Advertised service data:
[09:33:28][D][ble_adv:043]: - 0xFE95: (length 17)
0xFE95,标准的Mi Service(UUID:0xFE95)
3. 打印出这个广播消息:
- 0xFE95: 71.20.85.10.0A.xx.xx.xx.xx.xx.xx.09.05.10.02.55.2C (17)
4. 对照小米文档解读:
71.20:
71,二进制0111 0001:0不含mesh、1含object、1 含capability、1 含MAC、0 未加密、001保留;
20,二进制0010 0000:0010 版本2、00 旧版本认证、0 无操作、0 设备未绑定
85.10:产品ID,逆序1085,十进制4229
0A:序号
xx.xx.xx.xx.xx.xx:MAC地址,逆序
09:设备能力0000 1001:00保留、0 不含IO capability字段、0 无绑定;01 前绑定、001 暂未使用
05.10.02.55.2C:object,触发事件或广播属性:
05.10:逆序1005,十进制4101,事件ID,小米文档通用属性未定义这个ID
02:长度
55.2C:不知如何解读——多次左右单双侧点火此字段均没有变化;
点火多次,其中一次持续4:51秒,20条消息,内容不变间隔最大34秒:
5. 结论及求助
看商品描述和网上的app截图,应该可以区分左右侧灶眼以及火力大小,甚至电池电量。但实测 BLE Object 固定不变,不知道是否和没有与烟机配对有关系,哪位在使用云米或米家烟灶套餐的同学帮忙测试验证一下?或者提供更详细的app内信息?
基于 BLE Object 固定不变的情况,接入HA只能实现一个二进制传感器,表征燃气灶是否在使用中,即如果收到这个消息则为 on、超时1分钟未收到则置 off。
其实这东西接入ha的意义很有限,可能也就 燃气使用时长统计、老人忘关火自动提醒 这些了。
6. 应用方法
很简单,都不用撸代码。
ESPHome自带的ble_presence就很好用。由于消息间隔最大接近35秒,稳妥起见,设置一个50秒的过滤:
binary_sensor:
- platform: ble_presence
mac_address: XXXXXXXXX
name: "ymyz"
device_class: smoke
filters:
- delayed_off: 50s
这个做法虽然简单,但很实用。以至于我都没有进一步改进的欲望了。
7. 进一步分析
点火后,用nRFconnet扫描,发现是可以连接的,连接后可以发现数个服务,除了标准的电池和设备信息外,还有FEF5和01344736——显然,更多更关键的信息,需要通过ble_client去连接获取。
以后有时间再慢慢猜吧~
|