找回密码
 立即注册

微信扫码登录

搜索
查看: 32883|回复: 19

[修仙教程] 填坑:killadm大神的LOCK2MQTT代码改造、编译、烧录

[复制链接]

104

主题

2846

回帖

1万

积分

超级版主

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

积分
12281
金钱
9266
HASS币
460

教程狂人突出贡献

发表于 2020-6-15 14:53:16 | 显示全部楼层 |阅读模式
本帖最后由 XCray 于 2021-10-21 16:05 编辑

2021年10月21日补充:
这是当初玩蓝牙网关TTL转MQTT的第一步,早就有更好的方案了!
先是可以自动适配各种米系蓝牙设备、支持多个蓝牙网关的通用版,起名 mqttl,arduino ide编译的;后来又在n大帮助下迁移到了 esphome。最后就是我的签名贴所述,抛弃了蓝牙网关、直接用esp32担当蓝牙网关的功能,本地解密蓝牙消息。
需要的朋友自行翻找我发的相关贴子吧。
~~~~~~~~~~~~~~~~~~~~~~~
以下是2020年记录的内容,算是背景和初步思路吧:
0. 前言

用米家智能锁的ha玩家,估计都知道killadm大神的LOCK2MQTT。我也从中学到了很多很关键的知识。可惜大神在其github的repo中留了两个大坑,我当时就是看到这两个坑,勇敢地绕了过去,没有用esp,而是采用树莓派/NanoPi + Python的方式先实践了一番。

python脚本虽然跑的很爽,但大神们提出的用小型模块(比如esp01s)直接安装在蓝牙网关内部的做法,一直对我发挥着难以割舍的吸引力。我的方案需要连两根线出来、接到树莓派——树莓派上还要插上USB的串口转接板~~~

随着对自己用的榉树门锁、花花草草、蓝牙温湿度2的熟悉,也随着脚本的逐渐完善和稳定,决定还是尝试一下esp方案,能用一个5块钱的小玩意儿、塞到蓝牙网关内部就可以解决的事情,就不要老是麻烦200多块钱的树莓派了吧。

平生第一次用arduino ide,平生第一次自己编译esp固件,坑是必然会碰到的。

1. 硬件:

- esp01s模块,小巧,3.3v供电(我用的榉树网关直接就提供了3.3供电),某宝上5.3元一个。

- esp01下载器,其实就是USB转串口,之前用的2303芯片的,不支持win10,早就被鄙视了,这次顺便买个2104芯片的,带esp01底座,烧写非常方便。

2. 环境搭建:


- 安装arduino ide

- 安装esp8266sdk

国域网内,由于存在伟大的墙,直接在arduino ide内下载几乎不可能。好在有大神已经帮我们想好了办法:

  https://www.arduino.cn/thread-76029-1-1.html

按帖子提示,下载、运行(解压),然后启动arduino ide、选择板型。

3. 代码改造:

我用的是榉树门锁,消息格式与米家门锁不太一样,所以不能直接使用大神的代码,必须根据榉树门锁的情况进行改造。

同时,把我已经弄清楚的花花草草、蓝牙温湿度2的消息格式也纳入代码(killadm的代码还没有涉及这些)。

前期我使用python脚本时,根据自己的想法设置了mqtt消息的主题和格式,因涉及与hass配置匹配,所以就没有沿用大神原有的设计,而是继续采用我自己的设计,这样hass里面就不用修改了(懒是写程序的原始驱动力,哈哈)。

所以,如果你和我一样用的是榉树门锁,你可以直接用我的代码(甚至是编译好的bin),否则的话,要么用killadm大神的代码,要么自己改造编译。

这是第一版,花花草草和蓝牙温湿度2的数没出来,忘了加mqtt语句了。。。
mqttlock.zip (294.83 KB, 下载次数: 43) 里面有源码和编译好的bin。新版本在 7 楼~~

4. 编译:

代码修改完、没有语法错误,直接编译就是了,没啥可说的。
“项目”菜单里,选“导出已编译的二进制文件”——这个名字不太贴切,其实就是编译成二进制文件的意思。

刚开始使用的话,可能会缺不少库,有个小技巧:看开头的include语句,后面没有变红加粗的,貌似就是缺少的库,到库管理器中搜索安装即可。

找不到的话,搜索引擎,下载后加载

5. 烧写:


如果已经提前选择好串口号并连接好,可以直接在“项目”菜单中选择“上传”。

也可以“导出已编译的二进制文件”,使用别的工具进行烧写。

推荐使用非常方便的ESPHome-Flasher,非常省心,选串口、选上一步编译好的bin文件、烧写!其他啥都不用管。

推荐到官网下载!

乐鑫官方的烧写工具,一大堆的可选项,看着就头大,真不适合小白。

6. 无法更方便的OTA:

当然,和大部分固件一样,也就是第一次烧写需要串口连接,以后更新采用更加方便的OTA方式,更加省心。

使用浏览器访问http://x.x.x.x/update,输入用户名密码admin,就可以升级了!
选择文件、上传,模块就会自动烧写、重启,简直太方便了有木有?!

OTA.png

7. 成品照片:
connection.png
为了拍照,特意选了3根颜色漂亮的杜邦线。。。

右下角,就是小巧可爱又便宜的esp01s,真的很便宜啊!!!

3根线,分别连vcc(3.3v供电)、gnd(地)、网关的TX-esp01s的RX。

esp01s还有一个好处,就是其他引脚都已经做好了拉高拉低,不用自己配任何元件,直接使用即可,刷固件也不需要短接任何引脚或按什么按键

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ESPHome也可以实现这个应用,只是我的C++编程能力太菜,时间戳转换成可读格式这个简单的问题就把我难住了:
https://bbs.hassbian.com/thread-10250-1-1.html
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
除了囧大,刚又看到killadm大神也来给加分了,倍感荣幸啊~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20200719补充:
经过多位朋友参与,最终改造为可以适应所有米家蓝牙设备、支持任意数量蓝牙网关(每个蓝牙网关搭配一个esp模块)的通用版本,详见:
https://bbs.hassbian.com/thread-10434-1-1.html

评分

参与人数 2金钱 +30 HASS币 +20 收起 理由
killadm + 10 感谢,有时间我把花花草草和温湿度的代码合.
+ 20 + 20 大神666!

查看全部评分

回复

使用道具 举报

2

主题

17

回帖

438

积分

中级会员

积分
438
金钱
419
HASS币
0
发表于 2021-10-25 18:21:58 | 显示全部楼层
XCray 发表于 2021-10-21 16:06
你要哪个库?arduino ide里直接下载不就好了?

arduino,代码里面包含的几个库,fs这个我直接搜不到
回复

使用道具 举报

104

主题

2846

回帖

1万

积分

超级版主

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

积分
12281
金钱
9266
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2021-10-21 16:06:29 | 显示全部楼层
1124620045 发表于 2021-10-21 10:46
大佬库文件可否分享一下,我要读取的不是关于蓝牙的串口数据所以要重新编译一下,这是我的邮箱 ...

你要哪个库?arduino ide里直接下载不就好了?
回复

使用道具 举报

2

主题

17

回帖

438

积分

中级会员

积分
438
金钱
419
HASS币
0
发表于 2021-10-21 10:46:34 | 显示全部楼层
大佬库文件可否分享一下,我要读取的不是关于蓝牙的串口数据所以要重新编译一下,[email protected]这是我的邮箱
回复

使用道具 举报

104

主题

2846

回帖

1万

积分

超级版主

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

积分
12281
金钱
9266
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2020-7-14 07:27:04 | 显示全部楼层
chenquanhao 发表于 2020-7-13 22:20
不知鹿客2X的门锁,跟米家锁的代码是否通用

没用过,也没见机油发过相关的帖子,所以只能猜测应该基本通用,但有可能pdid不一样,只能试试了。

很可能需要修改代码,可以先利用debug把不认识的消息打印出来,然后根据具体消息去修改代码就可以了。
回复

使用道具 举报

25

主题

897

回帖

5310

积分

论坛元老

积分
5310
金钱
4383
HASS币
20
发表于 2020-7-13 22:20:50 来自手机 | 显示全部楼层
不知鹿客2X的门锁,跟米家锁的代码是否通用
回复

使用道具 举报

18

主题

249

回帖

2688

积分

论坛技术达人

积分
2688
金钱
2381
HASS币
190
发表于 2020-6-29 16:26:59 | 显示全部楼层
本帖最后由 magic900321 于 2020-6-29 16:52 编辑
XCray 发表于 2020-6-29 16:08
killadm的代码就是针对米家门锁的,应该可以直接用吧?

对的,代码蛮好的,就PDID不同,我改了一下我的是1433,他的代码里面是407
还有一个坑,我的Arduinojson.h和他的应该不同,里面解析Json那一段过不了,改了好一会才改过来

原来是信号太差,导致好多笔数据没有收到,还以为不同,日哦


回复

使用道具 举报

104

主题

2846

回帖

1万

积分

超级版主

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

积分
12281
金钱
9266
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2020-6-29 16:08:26 | 显示全部楼层
magic900321 发表于 2020-6-29 15:25
尝试着把自定义红外码录码,MQTT转发,MQTT lock 集成到一个ESP,所有的都顺利。但我用的米家门锁貌似和大 ...

killadm的代码就是针对米家门锁的,应该可以直接用吧?
回复

使用道具 举报

18

主题

249

回帖

2688

积分

论坛技术达人

积分
2688
金钱
2381
HASS币
190
发表于 2020-6-29 15:25:37 | 显示全部楼层
尝试着把自定义红外码录码,MQTT转发,MQTT lock 集成到一个ESP,所有的都顺利。但我用的米家门锁貌似和大佬的一门锁状态 信息不同,还得一个个解码了。
回复

使用道具 举报

104

主题

2846

回帖

1万

积分

超级版主

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

积分
12281
金钱
9266
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2020-6-16 21:09:32 | 显示全部楼层
本帖最后由 XCray 于 2020-6-19 20:13 编辑

今天尝试了一下烧ESP32开发板,有个现象值得记录下来,但并没有整太明白:

esphome里编译好固件后,第一次刷机,必须用USB口,参照刷esp01s的经验,先下载bin文件、然后:

- 先用esphome的工具,不认。按en、boot也都不认。以为要短接某个针脚,搜索未果。

- 改用官方工具,显示下载成功,但重新加电(按en、boot)仍然是待刷机模式,反复多次。还以为刷坏了呢

- 既然加电就进入下载模式,那么再用回esphome工具,应该可以吧?果然,直接自动识别,自动删除、自动刷、自动硬复位,成功。
ESP真的太方便、太便宜、太好玩了,感谢乐鑫!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20200619补充:
今天,尝试在ESP Home里实现了TTL到传感器的转换,摆脱了对mqtt的依赖,个人感觉比mqtt更完美、更简洁。可惜编程能力还不够,期待高手参与完善代码:
https://bbs.hassbian.com/thread-10250-1-1.html
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-8-2 15:46 , Processed in 0.462403 second(s), 14 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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