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

 找回密码
 立即注册
楼主: XCray

[修仙教程] 【ESPHome】ESP32 DIY通用蓝牙网关,接入米家系门锁等各种设备

  [复制链接]

40

主题

2178

帖子

8340

积分

元老级技术达人

积分
8340
金钱
6147
HASS币
110
发表于 2021-7-24 11:34:16 | 显示全部楼层

你这里给出的是
mac_of_lock和beaconkey

1楼的yaml是
mac_address和bindkey

另外我发现我的esp32在启动后没多久就掉线了....
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

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

Rank: 8Rank: 8

积分
12119
金钱
9100
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2021-7-24 11:57:12 | 显示全部楼层
ghostist 发表于 2021-7-24 11:34
你这里给出的是
mac_of_lock和beaconkey

。。。。

你没看到那个$符号?

只是个字符串替换的事儿。

掉线可能有几个原因,最好是看日志判断。可能是api没有连接自动重启?
回复

使用道具 举报

40

主题

2178

帖子

8340

积分

元老级技术达人

积分
8340
金钱
6147
HASS币
110
发表于 2021-7-24 15:38:53 | 显示全部楼层
本帖最后由 ghostist 于 2021-7-24 16:16 编辑
Using 'COM7' as serial port.
Showing logs:
[16:14:55][D][esp32_ble_tracker:180]: Starting scan...
[16:14:55][C][wifi:037]: Setting up WiFi...
[16:14:55][D][wifi:380]: Starting scan...
[16:14:55][D][esp32_ble_tracker:620]: Found device 6E:96:F74:7B:0F RSSI=-91
[16:14:55][D][esp32_ble_tracker:641]:   Address Type: RANDOM
[16:14:55][D][esp32_ble_tracker:620]: Found device 68:8F:B50:73:EC RSSI=-91
[16:14:55][D][esp32_ble_tracker:641]:   Address Type: RANDOM
[16:14:58][D][wifi:395]: Found networks:
[16:14:58][I][wifi:441]: - 'Vaneber_2.4G' (76:7D:24:EB0:16) ▂▄▆█
[16:14:58][D][wifi:442]:     Channel: 8
[16:14:58][D][wifi:443]:     RSSI: -50 dB
[16:14:58][D][wifi:445]: - 'ChinaNet-jJtM' (D4:5F:25:24:74:44) ▂▄▆█
[16:14:58][D][wifi:445]: - 'iTV-jJtM' (D6:5F:25:34:74:44) ▂▄▆█
[16:14:58][D][wifi:445]: - 'mu3346' (8C:AB:8E:B2:0D8) ▂▄▆█
[16:14:58][D][wifi:445]: - 'TP-LINK_803' (F4:83:CD:66:F9:4B) ▂▄▆█
[16:14:58][D][wifi:445]: - 'iTV-9fJM' (DE:9C:9F:5A:AC:17) ▂▄▆█
[16:14:58][D][wifi:445]: - 'ChinaNet-mu3346' (DC:9C:9F:5A:AC:17) ▂▄▆█
[16:14:58][D][wifi:445]: - 'CMCC-N57Q' (A0:8C:F8:E7:B5:C4) ▂▄▆█
[16:14:58][D][wifi:445]: - 'CMCC-4jpg' (58:F9:87:87:27:7C) ▂▄▆█
[16:14:58][D][wifi:445]: - 'TP-mu3346' (08:57:00:42:FD:C6) ▂▄▆█
[16:14:58][D][wifi:445]: - 'lixiang' (C4:2B:44:25:4F:40) ▂▄▆█
[16:14:58][D][wifi:445]: - 'CMCC-s9Ya' (34:78:39:C7:47:10) ▂▄▆█
[16:14:58][D][wifi:445]: - '慕容雪' (74:54:27:51:01:BA) ▂▄▆█
[16:14:58][D][wifi:445]: - 'CMCC-LHkV' (F4:4C:7F:EA:C9:18) ▂▄▆█
[16:14:58][D][wifi:445]: - 'iTV-UTi5' (6A:A6:82:50:C7:70) ▂▄▆█
[16:14:58][D][wifi:445]: - 'CMCC-R4UP' (18:69A:24:B9:A7) ▂▄▆█
[16:14:58][D][wifi:445]: - '15-503' (F0:E4:A2:2F:70:AC) ▂▄▆█
[16:14:58][D][wifi:445]: - 'dlink24' (40:9B:CD:A0:C6:64) ▂▄▆█
[16:14:58][I][wifi:250]: WiFi Connecting to 'Vaneber_2.4G'...
[16:14:59][I][wifi:513]: WiFi Connected!
[16:14:59][C][wifi:359]:   SSID: 'Vaneber_2.4G'
[16:14:59][C][wifi:360]:   IP Address: 192.168.50.38
[16:14:59][C][wifi:362]:   BSSID: 76:7D:24:EB0:16
[16:14:59][C][wifi:363]:   Hostname: 'test'
[16:14:59][C][wifi:367]:   Signal strength: -41 dB ▂▄▆█
[16:14:59][C][wifi:371]:   Channel: 8
[16:14:59][C][wifi:372]:   Subnet: 255.255.255.0
[16:14:59][C][wifi:373]:   Gateway: 192.168.50.1
[16:14:59][C][wifi:374]:   DNS1: 114.114.114.114
[16:14:59][C][wifi:375]:   DNS2: 8.8.8.8
[16:14:59][D][wifi:522]: Disabling AP...
[16:14:59][C][ota:029]: Over-The-Air Updates:
[16:14:59][C][ota:030]:   Address: test.local:3232
[16:14:59][C][ota:032]:   Using Password.
[16:14:59][C][api:022]: Setting up Home Assistant API server...
[16:14:59][I][app:059]: setup() finished successfully!
[16:14:59][I][app:105]: ESPHome version 1.21.0-dev compiled on Jul 24 2021, 07:27:06
[16:14:59][C][wifi:499]: WiFi:
[16:14:59][C][wifi:359]:   SSID: 'Vaneber_2.4G'
[16:14:59][C][wifi:360]:   IP Address: 192.168.50.38
[16:14:59][C][wifi:362]:   BSSID: 76:7D:24:EB0:16
[16:14:59][C][wifi:363]:   Hostname: 'test'
[16:14:59][C][wifi:367]:   Signal strength: -43 dB ▂▄▆█
[16:14:59][C][wifi:371]:   Channel: 8
[16:14:59][C][wifi:372]:   Subnet: 255.255.255.0
[16:14:59][C][wifi:373]:   Gateway: 192.168.50.1
[16:14:59][C][wifi:374]:   DNS1: 114.114.114.114
[16:14:59][C][wifi:375]:   DNS2: 8.8.8.8
[16:14:59][C][logger:189]: Logger:
[16:14:59][C][logger:190]:   Level: DEBUG
[16:14:59][C][logger:191]:   Log Baud Rate: 115200
[16:14:59][C][logger:192]:   Hardware UART: UART0
[16:14:59][C][esp32_ble_tracker:606]: BLE Tracker:
[16:14:59][C][esp32_ble_tracker:607]:   Scan Duration: 300 s
[16:14:59][C][esp32_ble_tracker:608]:   Scan Interval: 320.0 ms
[16:14:59][C][esp32_ble_tracker:609]:   Scan Window: 30.0 ms
[16:14:59][C][esp32_ble_tracker:610]:   Scan Type: ACTIVE
[16:14:59][C][captive_portal:148]: Captive Portal:
[16:14:59][C][ota:029]: Over-The-Air Updates:
[16:14:59][C][ota:030]:   Address: test.local:3232
[16:14:59][C][ota:032]:   Using Password.
[16:14:59][C][api:095]: API Server:
[16:14:59][C][api:096]:   Address: test.local:6053
[16:15:00][D][api.connection:670]: Client 'Home Assistant 2021.4.3 (192.168.50.221)' connected successfully!
[16:15:00][D][esp32_ble_tracker:620]: Found device 68:3E:34:CC:E25 RSSI=-70
[16:15:00][D][esp32_ble_tracker:641]:   Address Type: PUBLIC
[16:15:00][D][esp32_ble_tracker:643]:   Name: '魅族遥控器'
[16:15:01][D][esp32_ble_tracker:620]: Found device 49:FE:73:5A:4F:46 RSSI=-66
[16:15:01][D][esp32_ble_tracker:641]:   Address Type: RANDOM
[16:15:08][D][esp32_ble_tracker:620]: Found device 66F:4C:21D:73 RSSI=-81
[16:15:08][D][esp32_ble_tracker:641]:   Address Type: RANDOM
[16:15:08][D][esp32_ble_tracker:645]:   TX Power: 2
[16:15:10][D][esp32_ble_tracker:620]: Found device 7E:C6:00:A8:A1:C7 RSSI=-32
[16:15:10][D][esp32_ble_tracker:641]:   Address Type: RANDOM
[16:15:10][D][esp32_ble_tracker:645]:   TX Power: 2
[16:15:13][D][ble_adv:031]: New BLE device
[16:15:13][D][ble_adv:032]:   address: E9:4E:6A:D6:FE:7A
[16:15:13][D][ble_adv:033]:   name:
[16:15:13][D][ble_adv:034]:   Advertised service UUIDs:
[16:15:13][D][ble_adv:038]:   Advertised service data:
[16:15:13][D][ble_adv:040]:     - 0xFE95: (length 24)
[16:15:13][D][ble_adv:042]:   Advertised manufacturer data:
[16:15:16][D][ble_adv:031]: New BLE device
[16:15:16][D][ble_adv:032]:   address: E9:4E:6A:D6:FE:7A
[16:15:16][D][ble_adv:033]:   name:
[16:15:16][D][ble_adv:034]:   Advertised service UUIDs:
[16:15:16][D][ble_adv:038]:   Advertised service data:
[16:15:16][D][ble_adv:040]:     - 0xFE95: (length 20)
[16:15:16][D][ble_adv:042]:   Advertised manufacturer data:
[16:15:16][D][ble_adv:031]: New BLE device
[16:15:16][D][ble_adv:032]:   address: E9:4E:6A:D6:FE:7A
[16:15:16][D][ble_adv:033]:   name:
[16:15:16][D][ble_adv:034]:   Advertised service UUIDs:
[16:15:16][D][ble_adv:038]:   Advertised service data:
[16:15:16][D][ble_adv:040]:     - 0xFE95: (length 20)
[16:15:16][D][ble_adv:042]:   Advertised manufacturer data:
[16:15:16][D][esp32_ble_tracker:620]: Found device 69:14:8F:0F:92:C8 RSSI=-93
[16:15:17][D][esp32_ble_tracker:641]:   Address Type: RANDOM
[16:15:19][D][ble_adv:031]: New BLE device
[16:15:19][D][ble_adv:032]:   address: E9:4E:6A:D6:FE:7A
[16:15:19][D][ble_adv:033]:   name:
[16:15:19][D][ble_adv:034]:   Advertised service UUIDs:
[16:15:19][D][ble_adv:038]:   Advertised service data:
[16:15:19][D][ble_adv:040]:     - 0xFE95: (length 20)
[16:15:19][D][ble_adv:042]:   Advertised manufacturer data:
[16:15:20][D][ble_adv:031]: New BLE device
[16:15:20][D][ble_adv:032]:   address: E9:4E:6A:D6:FE:7A
[16:15:20][D][ble_adv:033]:   name:
[16:15:20][D][ble_adv:034]:   Advertised service UUIDs:
[16:15:20][D][ble_adv:038]:   Advertised service data:
[16:15:20][D][ble_adv:040]:     - 0xFE95: (length 20)
[16:15:20][D][ble_adv:042]:   Advertised manufacturer data:
[16:15:21][D][ble_adv:031]: New BLE device
[16:15:21][D][ble_adv:032]:   address: E9:4E:6A:D6:FE:7A
[16:15:21][D][ble_adv:033]:   name:
[16:15:21][D][ble_adv:034]:   Advertised service UUIDs:
[16:15:21][D][ble_adv:038]:   Advertised service data:
[16:15:21][D][ble_adv:040]:     - 0xFE95: (length 20)
[16:15:21][D][ble_adv:042]:   Advertised manufacturer data:
[16:15:21][D][ble_adv:031]: New BLE device
[16:15:21][D][ble_adv:032]:   address: E9:4E:6A:D6:FE:7A
[16:15:21][D][ble_adv:033]:   name:
[16:15:21][D][ble_adv:034]:   Advertised service UUIDs:
[16:15:21][D][ble_adv:038]:   Advertised service data:
[16:15:21][D][ble_adv:040]:     - 0xFE95: (length 20)
[16:15:21][D][ble_adv:042]:   Advertised manufacturer data:
[16:15:23][D][ble_adv:031]: New BLE device
[16:15:23][D][ble_adv:032]:   address: E9:4E:6A:D6:FE:7A
[16:15:23][D][ble_adv:033]:   name:
[16:15:23][D][ble_adv:034]:   Advertised service UUIDs:
[16:15:23][D][ble_adv:038]:   Advertised service data:
[16:15:23][D][ble_adv:040]:     - 0xFE95: (length 24)
[16:15:23][D][ble_adv:042]:   Advertised manufacturer data:
[16:15:23][D][esp32_ble_tracker:620]: Found device 68:3E:34:CC:E0:88 RSSI=-88
[16:15:23][D][esp32_ble_tracker:641]:   Address Type: PUBLIC
[16:15:23][D][esp32_ble_tracker:643]:   Name: '魅族遥控器'
[16:15:23][D][ble_adv:031]: New BLE device
[16:15:23][D][ble_adv:032]:   address: E9:4E:6A:D6:FE:7A
[16:15:23][D][ble_adv:033]:   name:
[16:15:23][D][ble_adv:034]:   Advertised service UUIDs:
[16:15:23][D][ble_adv:038]:   Advertised service data:
[16:15:23][D][ble_adv:040]:     - 0xFE95: (length 24)
[16:15:23][D][ble_adv:042]:   Advertised manufacturer data:
[16:15:23][D][ble_adv:031]: New BLE device
[16:15:23][D][ble_adv:032]:   address: E9:4E:6A:D6:FE:7A
[16:15:23][D][ble_adv:033]:   name:
[16:15:23][D][ble_adv:034]:   Advertised service UUIDs:
[16:15:23][D][ble_adv:038]:   Advertised service data:
[16:15:23][D][ble_adv:040]:     - 0xFE95: (length 24)
[16:15:23][D][ble_adv:042]:   Advertised manufacturer data:
[16:15:24][D][ble_adv:031]: New BLE device
[16:15:24][D][ble_adv:032]:   address: E9:4E:6A:D6:FE:7A
[16:15:24][D][ble_adv:033]:   name:
[16:15:24][D][ble_adv:034]:   Advertised service UUIDs:
[16:15:24][D][ble_adv:038]:   Advertised service data:
[16:15:24][D][ble_adv:040]:     - 0xFE95: (length 24)
[16:15:24][D][ble_adv:042]:   Advertised manufacturer data:
[16:15:24][D][ble_adv:031]: New BLE device
[16:15:24][D][ble_adv:032]:   address: E9:4E:6A:D6:FE:7A
[16:15:24][D][ble_adv:033]:   name:
[16:15:24][D][ble_adv:034]:   Advertised service UUIDs:
[16:15:24][D][ble_adv:038]:   Advertised service data:
[16:15:24][D][ble_adv:040]:     - 0xFE95: (length 24)
[16:15:24][D][ble_adv:042]:   Advertised manufacturer data:
[16:15:31][D][ble_adv:031]: New BLE device
[16:15:31][D][ble_adv:032]:   address: E9:4E:6A:D6:FE:7A
[16:15:31][D][ble_adv:033]:   name:
[16:15:31][D][ble_adv:034]:   Advertised service UUIDs:
[16:15:31][D][ble_adv:038]:   Advertised service data:
[16:15:31][D][ble_adv:040]:     - 0xFE95: (length 11)
[16:15:31][D][ble_adv:042]:   Advertised manufacturer data:
[16:15:33][D][esp32_ble_tracker:620]: Found device 78:DA:07:EA:E9:80 RSSI=-96
[16:15:33][D][esp32_ble_tracker:641]:   Address Type: PUBLIC
刷了你说的固件  从门内开锁 关门上提把手,日志如上  这是收到消息了吗?E9:4E:6A:D6:FE:7A为门锁地址
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

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

Rank: 8Rank: 8

积分
12119
金钱
9100
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2021-7-24 16:37:32 | 显示全部楼层
本帖最后由 XCray 于 2021-7-25 21:25 编辑
ghostist 发表于 2021-7-24 15:38
刷了你说的固件  从门内开锁 关门上提把手,日志如上  这是收到消息了吗?E9:4E:6A6:FE:7A为门锁地址 ...

是的,很显然收到了门锁的广播消息,长度有20字节、24字节、11字节。

你是不是没有修改我发的代码?

必须根据自己的门锁修改,我发的代码只匹配我用的榉树门锁。

需要修改 xiaomi_ble.cpp 和 xiaomi_zelkova.cpp 等几个文件,主要是门锁的pdid、各类消息对应的eid和消息长度(以及对应字段的起始位置)、最终生成的传感器。

可以把广播消息的内容打印出来,对照着修改(也可以参考以前 mqttl 固件的输出修改)。
~~~~~~~~~~~~~~~~~~~~~
从你发的日志可以看出,你这款锁和我用的榉树锁在消息格式方面有明显的区别:
1. 我的锁有用消息都是在scan response中的“Manufacturer Specific Data”当中,而你的锁都是在advertising中“Service Data”里。也就是说,你只需要被动接收即可,无需主动扫描,更省电
2. 我的锁广播消息长度有12、16、25三种,而你的是11、20、24三种。我猜测11的那个没啥用,20的那个应该是锁属性/状态报告(后来根据你抓的包解密判断是门事件)、24的那个是锁事件报告。

回复

使用道具 举报

40

主题

2178

帖子

8340

积分

元老级技术达人

积分
8340
金钱
6147
HASS币
110
发表于 2021-7-24 19:48:42 | 显示全部楼层
XCray 发表于 2021-7-24 16:37
是的,很显然收到了门锁的广播消息,长度有20字节、24字节、11字节。

你是不是没有修改我发的代码?

我就说嘛  感觉就是少了什么
这次帖子1楼比之前mqttl 简洁了许多
我再研究研究看~
回复

使用道具 举报

40

主题

2178

帖子

8340

积分

元老级技术达人

积分
8340
金钱
6147
HASS币
110
发表于 2021-7-24 21:41:33 | 显示全部楼层
XCray 发表于 2021-7-24 16:37
是的,很显然收到了门锁的广播消息,长度有20字节、24字节、11字节。

你是不是没有修改我发的代码?

搞不定了....对比了你之前mqttl方式的yaml和xiaomi_ble.cpp,value_length对不上,猜了半天也不知道这个怎么得来的
另外我对门事件、锁事件,对比之前mqttl方式榉树和米家指纹锁的yaml也没有一一对应上....现在完全懵了
pdid也没有找到在哪里改...
这次的上手难度还是比较高的哈
回复

使用道具 举报

40

主题

2178

帖子

8340

积分

元老级技术达人

积分
8340
金钱
6147
HASS币
110
发表于 2021-7-24 21:43:19 | 显示全部楼层
ruan_yhang的作业貌似可以直接抄,不过这位好像近期心思不在此?
不知道这个方式的接入目前还有谁做到了  有没有分享一下的...
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

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

Rank: 8Rank: 8

积分
12119
金钱
9100
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2021-7-24 22:15:44 来自手机 | 显示全部楼层
ghostist 发表于 2021-7-24 21:43
ruan_yhang的作业貌似可以直接抄,不过这位好像近期心思不在此?
不知道这个方式的接入目前还有谁做到了   ...

他的作业一直没交……

你把几种消息打印出来,我和你一起看怎么改代码
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

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

Rank: 8Rank: 8

积分
12119
金钱
9100
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2021-7-25 07:58:41 | 显示全部楼层
ghostist 发表于 2021-7-24 21:41
搞不定了....对比了你之前mqttl方式的yaml和xiaomi_ble.cpp,value_length对不上,猜了半天也不知道这个 ...

pdid是在 xiaomi_ble.cpp 的第 122 行,我的锁是0197,你的肯定是另外的数值,必须修改。

然后是 16~37行,我已经加了注释,需要修改eid。如果对应的数据长度和我的不一样,也需要修改。

稍微麻烦一些的是你的锁比起我用的榉树有着更多的可用数据,也就是说可以生成更多的传感器,这就需要针对每种消息进行具体设计了。必须把消息打印出来才能对照着写程序代码。
回复

使用道具 举报

40

主题

2178

帖子

8340

积分

元老级技术达人

积分
8340
金钱
6147
HASS币
110
发表于 2021-7-25 09:53:49 | 显示全部楼层
XCray 发表于 2021-7-25 07:58
pdid是在 xiaomi_ble.cpp 的第 122 行,我的锁是0197,你的肯定是另外的数值,必须修改。

然后是 16~37 ...

pdid我在TTL LOG里看到了 但不清楚是10进制还是16进制的,是794
eid之前mqttl方案里已经做过,也不是问题(不过我电量一直没上报过,可能当时参考的协议有问题?再说)
蓝牙抓到的这些包怎么打印出来呢?
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-28 16:19 , Processed in 0.110387 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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