使用开源固件,让涂鸦wifi智能插座(BK7231N/BK7231T)实现本地mqtt接入homeassistant

涂鸦智能插座(BK7231N/BK7231T)刷固件,实现mqtt本地化接入homeassistant

目录


前言

买了一个涂鸦插座,刚开始通过涂鸦开发者api接入homeassistant 正常使用后就没管它。


但是一个月后。。。。。。涂鸦开发授权到期了。看了下续费价格,果断放弃。
辗转论坛,首先找到了通过localtuya接入的方法,但是,该方法仍然需要涂鸦api获取key,极不方便。
显然,对于diy爱好者来说,简化厂家的一切云端控制是刻入骨子的。让设备实现homeassistant本地控制,在通过homeassistant远程是最优雅的方式。

于是拆开了插座,看到芯片是博通的BK7231N ;
很不幸,不像8266,网上没有这款芯片多少资料,官方sdk更是没有,对于小白来说,打击是沉重的。。
好在,还有广大的开源贡献者和涂鸦官方文档。

OK 进入正题。


0x0、基本流程

第一步:开源固件需要本地编译,才能生成我们需要的bin格式的刷机固件。
第二步:将固件刷入芯片。
第三步:通过固件内嵌的web操作,实现我们需要的功能。
说明:固件是在TuyaOS的基础上开发的,详细文档https://github.com/openshwprojects/OpenBK7231T_App

一、准备工作

1.硬件部分

  1. 一个涂鸦插座(控制芯片是BK7231N)。其他芯片(T34,XR809,BL602等)也支持,具体可以点击这里查看。
  2. 一个usb转串口下载模块。
  3. 若干工具(如焊烙铁,跳线)

2.软件部分

  1. 主机需要python环境
  2. 固件编译环境——可以使用Cygwin 或 liunx虚拟机(推荐虚拟机)。我是使用的ubuntu虚拟机,具体虚拟机配置也可以在涂鸦文档查看。
  3. 刷机工具 链接

二、编译固件

这里有一份我编译好的固件(适用于BK7231N),嫌麻烦的朋友可先用这个(2022-8-31编译)。
链接: https://pan.baidu.com/s/1em7lSmrdZfwy8YqZtBJBCg 提取码: w56w

1.ubuntu配置编译环境

安装虚拟机ubuntu系统就不讲了,如果不会可以看下其他教程。

  1. 安装编译需要的相关软件
sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt-get install net-tools build-essential wget git python libc6-i386

如果这里报错,一般是网络问题。可以尝试更换软件源。

2.固件源代码下载

  1. 新建一个文件夹(位置随便)
  2. 右键单击 “在终端打开”

  3. 获取固件sdk
$ git clone --recursive https://github.com/openshwprojects/OpenBK7231N.git


这时打开目录应该是这样
目录结构
4. 获取固件应用

$ git clone https://github.com/openshwprojects/OpenBK7231T_App.git
  1. 修改应用名

这一步可做可不做,重命名的目的是一会编译的时候,固件名需和该目录名一致


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要麻烦一点。

  1. 首先还是环境,win10系统安装python(2和3都可以,我是3)。
  2. 下载一个pycharm IDE 社区版就可以。我对python不熟,所以用这个方便一点,熟悉python的可以直接命令行解决。
  3. 下载编译工具。可以git,也可以zip下载。
  4. 安装相应的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
  1. 把bin文件地址替换为自己对应的地址。
  2. 把com端口号换成自己的。
  3. 其他不变

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

总体就是把原厂固件刷成开源固件,然后再实现自己想要的功能。 有点麻烦,是一件折腾的事。

物联沃分享整理
物联沃-IOTWORD物联网 » 使用开源固件,让涂鸦wifi智能插座(BK7231N/BK7231T)实现本地mqtt接入homeassistant

发表评论