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

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

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

  [复制链接]

7

主题

269

帖子

1513

积分

金牌会员

Rank: 6Rank: 6

积分
1513
金钱
1244
HASS币
0
发表于 2024-6-14 11:27:28 | 显示全部楼层
XCray 发表于 2024-6-14 09:43
你咋总能碰到奇怪现象呢

时间戳前面都没问题,到了sensor:094这一行莫名其妙少了整整60秒,肯定 ...

sensor:094不是一个固定的间隔,一会60,一会8,一会5,不固定
回复

使用道具 举报

7

主题

269

帖子

1513

积分

金牌会员

Rank: 6Rank: 6

积分
1513
金钱
1244
HASS币
0
发表于 2024-6-14 16:14:17 | 显示全部楼层
XCray 发表于 2024-6-14 09:43
你咋总能碰到奇怪现象呢

时间戳前面都没问题,到了sensor:094这一行莫名其妙少了整整60秒,肯定 ...

X大 这是我改的就差keyid的文件,您有空能不能帮我看看,我是实在搞不定,现在就差keyid和所有的时间戳不对

mine.zip

11.57 KB, 下载次数: 3

回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

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

Rank: 8Rank: 8

积分
12119
金钱
9100
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2024-6-14 17:07:04 | 显示全部楼层
silang521 发表于 2024-6-14 16:14
X大 这是我改的就差keyid的文件,您有空能不能帮我看看,我是实在搞不定,现在就差keyid和所有的时间戳不 ...

实在看不出有什么问题,你试试换块esp32、换个esphome版本吧。

另外,esphome的传感器数值默认是浮点数,我没研究是多少位的。也就是说,向ha传递的过程中必然还会有一次数值转换,也许问题就出在这儿。

因为你的keyid开头是80,也就是第一个bit是1,被误识别为符号位也容易理解。所以我的建议是把这4个字节分成两部分。

时间戳没啥要紧的,因为门锁自己的时钟误差比较大。但是为啥你那儿会出现差几秒几十秒的现象,我实在无法理解。
回复

使用道具 举报

7

主题

269

帖子

1513

积分

金牌会员

Rank: 6Rank: 6

积分
1513
金钱
1244
HASS币
0
发表于 2024-6-15 10:20:09 | 显示全部楼层
XCray 发表于 2024-6-14 17:07
实在看不出有什么问题,你试试换块esp32、换个esphome版本吧。

另外,esphome的传感器数值默认是浮点数 ...

还是浮点数的问题 -2147483648 到 2147483647   
X大 我想直接传递80010005这种hex,需要怎么修改keyid,我想传递过去让nodered判断,不传递10进制,这样应该就不会有问题啦
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

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

Rank: 8Rank: 8

积分
12119
金钱
9100
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2024-6-15 10:41:25 | 显示全部楼层
silang521 发表于 2024-6-15 10:20
还是浮点数的问题 -2147483648 到 2147483647   
X大 我想直接传递80010005这种hex,需要怎么修改keyid, ...

改用文本传感器。具体怎么弄以我的水平就搞不懂了,看文档吧。
分成两部分是我能想到的比较简便的方法,建议,采纳与否自己看吧。
回复

使用道具 举报

7

主题

269

帖子

1513

积分

金牌会员

Rank: 6Rank: 6

积分
1513
金钱
1244
HASS币
0
发表于 2024-6-15 10:52:07 | 显示全部楼层
XCray 发表于 2024-6-15 10:41
改用文本传感器。具体怎么弄以我的水平就搞不懂了,看文档吧。
分成两部分是我能想到的比较简便的方法, ...

好的 X大
我更换了一个esp-wroom-32还是一样
[10:43:27][D][xiaomi_blez:124]: 接收到的所有数据 Data: 50.44.99.05.4C.41.C8.DB.13.AE.FB.0B.00.09.20.05.00.01.80.C6.FF.6C.66 (23)
[10:43:27][D][xiaomi_blez:126]: sx2 Packet : 50.44.99.05.4C.41.C8.DB.13.AE.FB.0B.00.09.20.05.00.01.80.C6.FF.6C.66 (23)
[10:43:27][D][xiaomi_blez:078]:  payload 11
[10:43:27][D][xiaomi_blez:095]: value_length:9;payload_length:12
[10:43:27][D][xiaomi_blez:021]: key16hex 80010005
[10:43:27][D][xiaomi_blez:251]: Got Xiaomi MijiaLock (FB:AE:13B:C8:41):
[10:43:27][D][xiaomi_blez:254]:   OpMethod:32
[10:43:27][D][xiaomi_blez:266]:   OpTS:1718419398
[10:43:27][D][xiaomi_blez:269]:   KeyID:-2147418107
[10:43:27][D][sensor:094]: 'OpMethod': Sending state 32.00000  with 0 decimals of accuracy
[10:43:27][D][sensor:094]: 'KeyID': Sending state 2147549184.00000  with 0 decimals of accuracy
[10:43:27][D][sensor:094]: 'OpTS': Sending state 1718419456.00000  with 0 decimals of accuracy
[10:43:27][D][sensor:094]: 'BattLvl': Sending state 63.00000 % with 0 decimals of accuracy
[10:43:27][D][sensor:094]: 'BattLvlTS': Sending state 1073534912.00000  with 0 decimals of accuracy
[10:43:27][D][xiaomi_zelkova:067]: battlvlts 47 1073465564
[10:43:28][W][component:237]: Component esp32_ble_tracker took a long time for an operation (100 ms).
[10:43:28][W][component:238]: Components should block for at most 30 ms.
[10:43:28][D][xiaomi_blez:124]: 接收到的所有数据 Data: 50.44.99.05.4D.41.C8.DB.13.AE.FB.07.00.05.00.C6.FF.6C.66 (19)
[10:43:28][D][xiaomi_blez:126]: sx2 Packet : 50.44.99.05.4D.41.C8.DB.13.AE.FB.07.00.05.00.C6.FF.6C.66 (19)
说明是esphome或者代码的问题 和esp32问题不大,


主要是分成两个是不是要添加一个keyid1,这个需要怎么添加,我是不明白
回复

使用道具 举报

7

主题

269

帖子

1513

积分

金牌会员

Rank: 6Rank: 6

积分
1513
金钱
1244
HASS币
0
发表于 2024-6-17 12:49:04 | 显示全部楼层
XCray 发表于 2024-6-15 10:41
改用文本传感器。具体怎么弄以我的水平就搞不懂了,看文档吧。
分成两部分是我能想到的比较简便的方法, ...

X大 貌似我已经解决啦
[12:20:38][D][xiaomi_blez:260]:   BattLevel: 50
[12:20:38][D][xiaomi_blez:272]:   BattLevelTS: 1718598025
[12:20:38][D][xiaomi_zelkova:080]: battlvlts62
[12:20:38][D][sensor:094]: 'BattLvl': Sending state 50.00000 % with 0 decimals of accuracy
[12:20:38][D][xiaomi_zelkova:084]: battlvlts 47 1718598025
[12:20:38][D][sensor:094]: 'BattLvlTS': Sending state 1718598025.00000  with 0 decimals of accuracy
[12:20:38][D][xiaomi_zelkova:086]: battlvlts 47 1718598025

我直接修改的esphome系统文件 是float和double的问题 单精度浮点数值和双精度浮点数值  float不能上传超过7位数的数值,超过精度会有误差
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

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

Rank: 8Rank: 8

积分
12119
金钱
9100
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2024-6-18 10:43:29 | 显示全部楼层
silang521 发表于 2024-6-17 12:49
X大 貌似我已经解决啦
[12:20:38][D][xiaomi_blez:260]:   BattLevel: 50
[12:20:38][D][xiaomi_blez:272 ...

也是一个办法。

溢出的问题,我等新手常见的错误
回复

使用道具 举报

7

主题

269

帖子

1513

积分

金牌会员

Rank: 6Rank: 6

积分
1513
金钱
1244
HASS币
0
发表于 2024-6-18 13:02:06 | 显示全部楼层
XCray 发表于 2024-6-18 10:43
也是一个办法。

溢出的问题,我等新手常见的错误

X大  调试日志里面是正常啦,但是ha里面并不正常还是原来的,说明还是esphome的问题  float都要改成double,这个工作量太大,搞不了啦,暂时只能这样啦
回复

使用道具 举报

7

主题

269

帖子

1513

积分

金牌会员

Rank: 6Rank: 6

积分
1513
金钱
1244
HASS币
0
发表于 2024-7-7 21:37:55 | 显示全部楼层
@XCray X大我过来交作业啦,一直在忙早都做好啦,一直没来得及进论坛,利用的mqtt编码正常啦
external_components:
  - source: mine
mqtt:
  broker: #换成自己的
  username: #换成自己的
  password: #换成自己的
sensor:
  - platform: xiaomi_zelkova
    mac_address: 'XXXXXXXXXX'
    bindkey: 'XXXXXXXXXXXXXXXXXXXXXXX'

mqtt监控以下
xiaomi_blez/OpMethod
xiaomi_blez/LockAttr
xiaomi_blez/BattLevel
xiaomi_blez/doorevt
xiaomi_blez/opts
xiaomi_blez/keyid
xiaomi_blez/battlvlts
xiaomi_blez/doorevtts


具体的查看或修改xiaomi_blez.cpp文件就行

mine.zip

11.68 KB, 下载次数: 2

回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-28 01:04 , Processed in 1.093038 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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