使用开源固件,让涂鸦wifi智能插座(BK7231N/BK7231T)实现本地mqtt接入homeassistant
涂鸦智能插座(BK7231N/BK7231T)刷固件,实现mqtt本地化接入homeassistant
目录
- 前言
- 0x0、基本流程
- 一、准备工作
- 1.硬件部分
- 2.软件部分
- 二、编译固件
- 1.ubuntu配置编译环境
- 2.固件源代码下载
- 2.固件编译
- 三、上传固件
- 1. 焊接烧录电路
- 2. 线路连接
- 3. 固件编译工具
- 4. 固件上传
- 3. 验证固件是否成功
- END
前言
买了一个涂鸦插座,刚开始通过涂鸦开发者api接入homeassistant 正常使用后就没管它。
但是一个月后。。。。。。涂鸦开发授权到期了。看了下续费价格,果断放弃。
辗转论坛,首先找到了通过localtuya接入的方法,但是,该方法仍然需要涂鸦api获取key,极不方便。
显然,对于diy爱好者来说,简化厂家的一切云端控制是刻入骨子的。让设备实现homeassistant本地控制,在通过homeassistant远程是最优雅的方式。
于是拆开了插座,看到芯片是博通的BK7231N ;
很不幸,不像8266,网上没有这款芯片多少资料,官方sdk更是没有,对于小白来说,打击是沉重的。。
好在,还有广大的开源贡献者和涂鸦官方文档。
OK 进入正题。
0x0、基本流程
第一步:开源固件需要本地编译,才能生成我们需要的bin格式的刷机固件。
第二步:将固件刷入芯片。
第三步:通过固件内嵌的web操作,实现我们需要的功能。
说明:固件是在TuyaOS的基础上开发的,详细文档https://github.com/openshwprojects/OpenBK7231T_App
一、准备工作
1.硬件部分
- 一个涂鸦插座(控制芯片是BK7231N)。其他芯片(T34,XR809,BL602等)也支持,具体可以点击这里查看。
- 一个usb转串口下载模块。
- 若干工具(如焊烙铁,跳线)
2.软件部分
二、编译固件
这里有一份我编译好的固件(适用于BK7231N),嫌麻烦的朋友可先用这个(2022-8-31编译)。
链接: https://pan.baidu.com/s/1em7lSmrdZfwy8YqZtBJBCg 提取码: w56w
1.ubuntu配置编译环境
安装虚拟机ubuntu系统就不讲了,如果不会可以看下其他教程。
- 安装编译需要的相关软件
sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt-get install net-tools build-essential wget git python libc6-i386
如果这里报错,一般是网络问题。可以尝试更换软件源。
2.固件源代码下载
- 新建一个文件夹(位置随便)
- 右键单击 “在终端打开”
- 获取固件sdk
$ git clone --recursive https://github.com/openshwprojects/OpenBK7231N.git
这时打开目录应该是这样
4. 获取固件应用
$ git clone https://github.com/openshwprojects/OpenBK7231T_App.git
- 修改应用名
这一步可做可不做,重命名的目的是一会编译的时候,固件名需和该目录名一致
。
2.固件编译
回到sdk文件目录下,右键打开终端。
输入编译命令
$ sh build_app.sh apps/bk7231n001 bk7231n001 1.0.0
apps/bk7231n001:编译项目路径
bk7231n001:编译项目名称(就是刚我们修改的文件夹名称)
1.0.0:当前编译固件的版本(可自己定义:如1.0.2)
编译成功界面如下
如果没有该界面,说明编译失败。大多数情况为环境构建缺失,比如需要python2 安装的却是python3。这时候需根据提示或者瞎蒙排错,折腾路上是正常的。
固件位置:编译好后再apps/bk7231n001下面,会多出一个output文件夹,里面还有一个版本文件夹。
最终找到带QIO标识的bin文件。这就是我们将要加载到芯片里面的固件。
三、上传固件
1. 焊接烧录电路
2. 线路连接
3. 固件编译工具
这时候就不用在ubuntu虚拟机里面折腾了,因为驱动什么的比win要麻烦一点。
- 首先还是环境,win10系统安装python(2和3都可以,我是3)。
- 下载一个pycharm IDE 社区版就可以。我对python不熟,所以用这个方便一点,熟悉python的可以直接命令行解决。
- 下载编译工具。可以git,也可以zip下载。
- 安装相应的python包
点击File——Settings
打开setup.py ,会提示欠缺相应的包,直接点击install 自动安装。
编译工具就准备好了
4. 固件上传
1.要先将我们在虚拟机里面编译好的bin固件,复制到主机上来 。
2.将usb模块插入电脑。驱动视模块不同有的会自动安装有的要手动安装,可以问店家。驱动正常情况下在电脑的设备管理器下会出现相应的com口端口号,如下,我的是COM5。要看自己的是多少,记下来。
3.通过pycharm IDE 的命令行输入命令上传
上传命令
$ python uartprogram E:\nodePJ\tuya\bin\bk7321n001_QIO_1.0.1.bin --unprotect -d com5
-w --startaddr 0x0
- 把bin文件地址替换为自己对应的地址。
- 把com端口号换成自己的。
- 其他不变
3.点击回车
在这里会停顿,这时候需要将芯片断电一下。将3.3v线断开一下在接上,动作要快一点,太慢了程序会退出。
上电后程序开始写入,写入完成状态如下。
OK 固件已经上传成功了。
3. 验证固件是否成功
固件上传成功后,我们需要重启一下芯片。
这时候我们会发现有一个没有密码的wifi
连接这个wifi 如果没有自动获取到 IP ,则需要手动设置ip地址 192.168.4.x (x可以设置为2-254 的任意数字)
掩码255.255.255.0
网关为空
通过web设置固件
用浏览器进入http://192.168.4.1/index
到这里说明固件刷入成功了。
今天就到这儿,下次有空再完成
1、修复厂家的继电器控制。
2、通过mqtt接入homeassistant
END
总体就是把原厂固件刷成开源固件,然后再实现自己想要的功能。 有点麻烦,是一件折腾的事。