涂鸦智能插座(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

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

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐