『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 6557|回复: 13

[经验分享] 【ESPHome】云米(米家)互联网燃气灶简易接入方法,没有烟机

[复制链接]

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

发表于 2021-9-9 09:48:41 | 显示全部楼层 |阅读模式
本帖最后由 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去连接获取。

以后有时间再慢慢猜吧~

回复

使用道具 举报

8

主题

690

帖子

4556

积分

论坛元老

Rank: 8Rank: 8

积分
4556
金钱
3861
HASS币
0
QQ
发表于 2021-9-9 13:43:29 | 显示全部楼层
蓝牙属实让你玩明白了
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2021-9-9 14:07:33 来自手机 | 显示全部楼层
QQ617250210 发表于 2021-9-9 13:43
蓝牙属实让你玩明白了

过奖了,还有太多没弄明白的…
回复

使用道具 举报

30

主题

997

帖子

4151

积分

论坛元老

Rank: 8Rank: 8

积分
4151
金钱
3149
HASS币
0

活跃会员

发表于 2021-10-5 14:02:06 | 显示全部楼层
跟楼主一样,单买了燃气灶。用esp32看到的信息比lz多了一些adv data,lz看下是否有用


[12:36:13][VV][esp32_ble_tracker:402]: Parse Result:
[12:36:13][VV][esp32_ble_tracker:419]:   Address: XX:XX:XX:XX:XX:XX (PUBLIC)
[12:36:13][VV][esp32_ble_tracker:421]:   RSSI: -81
[12:36:13][VV][esp32_ble_tracker:422]:   Name: 'yunmi_yz'
[12:36:13][VV][esp32_ble_tracker:430]:   Ad Flag: 6
[12:36:13][VV][esp32_ble_tracker:433]:   Service UUID: 0x180A
[12:36:13][VV][esp32_ble_tracker:433]:   Service UUID: 0xFEF5
[12:36:13][VV][esp32_ble_tracker:447]:   Service data:
[12:36:13][VV][esp32_ble_tracker:448]:     UUID: 0xFE95
[12:36:13][VV][esp32_ble_tracker:449]:     Data: 71.20.85.10.0A.XX:XX:XX:XX:XX:XX.09.05.10.02.55.2C (17)
[12:36:13][VV][esp32_ble_tracker:452]: Adv data: 02.01.06.14.16.95.FE.71.20.85.10.0A.XX:XX:XX:XX:XX:XX.09.05.10.02.55.2C.05.03.0A.18.F5.FE.05.12.14.00.1E.00.09.09.79.75.6E.6D.69.5F.79.7A (46)
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2021-10-5 15:24:12 | 显示全部楼层
wqqs 发表于 2021-10-5 14:02
跟楼主一样,单买了燃气灶。用esp32看到的信息比lz多了一些adv data,lz看下是否有用

我开始还奇怪为啥你的多了一行长长的数据,后来发现其实是一样的。

我设置的日志输出级别是Debug,而你设置了VV,其实最后那46个字节就是前面那些行的合集。
也就是说,46字节是广播数据,前面那几行是具体解析。

你自己已经注意到了MAC地址,其实所有内容都有:71.20.85.10.0A、09.05.10.02.55.2C、FE95(逆序)、180A(逆序)、yunmi_yz(79.75.6E.6D.69.5F.79.7A)。

如果想要详细数据,只用用ble_client连接gatt后获取,但细节目前还不知道。
回复

使用道具 举报

30

主题

997

帖子

4151

积分

论坛元老

Rank: 8Rank: 8

积分
4151
金钱
3149
HASS币
0

活跃会员

发表于 2021-10-10 11:22:45 | 显示全部楼层
XCray 发表于 2021-10-5 15:24
我开始还奇怪为啥你的多了一行长长的数据,后来发现其实是一样的。

我设置的日志输出级别是Debug,而你 ...

原来如此
回复

使用道具 举报

80

主题

388

帖子

1680

积分

金牌会员

Rank: 6Rank: 6

积分
1680
金钱
1292
HASS币
0
发表于 2022-6-4 11:24:13 | 显示全部楼层
所以,接入到ha了吗?
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2022-6-4 15:40:12 | 显示全部楼层
ciasdmxhxjjpd@c 发表于 2022-6-4 11:24
所以,接入到ha了吗?

当然,为啥不接入呢?
回复

使用道具 举报

80

主题

388

帖子

1680

积分

金牌会员

Rank: 6Rank: 6

积分
1680
金钱
1292
HASS币
0
发表于 2022-6-4 15:48:22 | 显示全部楼层
XCray 发表于 2022-6-4 15:40
当然,为啥不接入呢?

https://bbs.hassbian.com/thread-16649-1-1.html
所以,我缺一个智能集成灶!
回复

使用道具 举报

1

主题

40

帖子

467

积分

中级会员

Rank: 3Rank: 3

积分
467
金钱
427
HASS币
0
发表于 2024-8-16 17:12:27 | 显示全部楼层
用树莓派自带蓝牙应该怎么实现?楼主能教教看吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 02:36 , Processed in 0.283617 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表