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

 找回密码
 立即注册
查看: 16468|回复: 19

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

[复制链接]

98

主题

2866

帖子

1万

积分

超级版主

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

Rank: 8Rank: 8

积分
11445
金钱
8514
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!

查看全部评分

回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

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

Rank: 8Rank: 8

积分
11445
金钱
8514
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2020-6-15 14:56:39 | 显示全部楼层
本帖最后由 XCray 于 2020-6-15 15:37 编辑

烧写和OTA两段分别还有一张截图,我自己发的我都看不到。。。管理员出手?~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
编辑时拷贝粘贴,貌似可以把图片放进来,实际上无效
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


提醒:


连接之前,一定要确认供电是否符合模块的要求。这个esp01-s模块要求的3.3v(据说可以适应3.0~3.6),如果是 5v 供电的话基本上是必烧。


榉树网关直接使用220v供电,操作时千万小心,别触电!
:curse::curse::curse::curse::curse::curse::curse::curse::curse::curse:
回复

使用道具 举报

13

主题

238

帖子

3284

积分

论坛元老

Rank: 8Rank: 8

积分
3284
金钱
3046
HASS币
0
发表于 2020-6-15 15:06:30 | 显示全部楼层
因为根本就没图,我以为论坛加载又挂了
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

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

Rank: 8Rank: 8

积分
11445
金钱
8514
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2020-6-15 15:13:31 | 显示全部楼层
本帖最后由 XCray 于 2020-7-17 19:40 编辑
lff520520 发表于 2020-6-15 15:06
因为根本就没图,我以为论坛加载又挂了

我用拷贝粘贴加的图,编辑的时候能看到,看帖的时候就看不到。。。

只好重新上传~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
备忘:更好的ESP8266 SDK for Arduino IDE安装方法:
主贴里提到的方法有两点不好:版本更新不及时、可能存在安全隐患。
更好的安装方法(升级方法):
1、获取最新版本,https://github.com/esp8266/Arduino/releases/
2、下载。上面页面里找到链接,搜一个github下载加速站点,几秒钟即可完成下载。
3、进入目录%LOCALAPPDATA%\Arduino15\packages\esp8266\hardware\esp8266
4、确保退出Arduino IDE。
删除原来的以版本号命名的子目录,比如2.7.1;然后将下载的zip文件解压至此目录,修改子目录名只保留版本号
回复

使用道具 举报

39

主题

2048

帖子

7699

积分

元老级技术达人

积分
7699
金钱
5636
HASS币
110
发表于 2020-6-15 15:44:44 | 显示全部楼层
具体哪个型号呢?门锁
之前入了V1 迟迟不给接入米家  然后我给退了
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

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

Rank: 8Rank: 8

积分
11445
金钱
8514
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2020-6-15 16:10:37 | 显示全部楼层
ghostist 发表于 2020-6-15 15:44
具体哪个型号呢?门锁
之前入了V1 迟迟不给接入米家  然后我给退了

最老的那一款,K1
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

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

Rank: 8Rank: 8

积分
11445
金钱
8514
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2020-6-15 17:00:53 | 显示全部楼层
本帖最后由 XCray 于 2020-7-17 19:43 编辑

感谢囧大鼓励!~~~~~~~~~~~~~~~~~~~~~
新版代码,终于正确地处理了花花草草和蓝牙温湿度2的各项数据

如果你用的是榉树智能锁、花花草草、蓝牙温湿度2当中的一种或几种,可以直接用编译好的固件。如果有其他要求,自己改代码吧。。。我暂时也没能力和条件做更多的适配。
mqttlock.zip (295.48 KB, 下载次数: 12)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20200624补充:
上面压缩包里的固件可以直接用。

后来我修改了代码,去掉了WiFi配网的功能模块,直接连接我的wifi,所以别人就无法直接使用我编译好的代码了。。。

当然,自己改代码重新编译也很容易。
新版代码如下:
LOCK2MQTT.zip (4.86 KB, 下载次数: 17)
这个代码比前面那个,除了去掉了配网模块,还有一些小优化
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20200716补充:
         https://bbs.hassbian.com/thread-10434-1-1.html
        【全新改版】蓝牙网关-TTL-MQTT-HA,适应米家所有蓝牙设备

可以适用于所有米家蓝牙设备的版本(只要可以连蓝牙网关,就直接可以用)。
回复

使用道具 举报

18

主题

267

帖子

2644

积分

论坛技术达人

积分
2644
金钱
2337
HASS币
190
发表于 2020-6-15 22:52:53 | 显示全部楼层
本帖最后由 magic900321 于 2020-6-15 22:54 编辑

撸代码的速度真快,想必写这个代码用么多库不写他一周出不来啊
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

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

Rank: 8Rank: 8

积分
11445
金钱
8514
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2020-6-15 23:12:34 | 显示全部楼层
magic900321 发表于 2020-6-15 22:52
撸代码的速度真快,想必写这个代码用么多库不写他一周出不来啊

在大神的基础上,只是少量的修改而已,所以显得快
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

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

Rank: 8Rank: 8

积分
11445
金钱
8514
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2020-6-16 08:57:05 | 显示全部楼层
原代码可能是为了方便,在正常连接状态下依然提供AP接入点信号,即esp8266工作在STA+AP模式下。

但是,这样不太安全,一个不加密的网络,免不了有无聊的人看到后就会连一下看看,默认的OTA用户名和密码又很容易猜出来。。。

尝试删掉了WiFiManager相关的代码,使用 “WiFi.mode(WIFI_STA);”强制设置为STA模式,使用 WiFI.begian直接连接家里的路由器、代码里同时设置好mqtt服务器和端口,这样,编译后的文件大小可以减少约1/4,现在只有300多K啦
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-26 05:37 , Processed in 0.058851 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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