涂鸦智能插座(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.硬件部分

  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

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

涂鸦wifi智能插座(BK7231N/BK7231T)刷开源固件,实现mqttt本地化接入homeassistant相关推荐

  1. 普通路由器刷开源固件DD-WRT的简单过程

    DD-WRT是基于Linux的无线路由软件,功能强大,它提供了许多一般路由器的软体所没有的功能,将路由器固件升级到DD-WRT可以提升内建于预设固件的限制,并将其转换成强大且具有进阶功能的商业级路由器 ...

  2. STM32对接涂鸦wifi模块项目记录(智能插座完善版本)

    应项目需求,客户需要对接涂鸦平台,从了解平台到样品实际落地,还是挺方便的, 做过的一个项目,人体感应智能插座项目,对接涂鸦云 : 硬件平台:STM32F103 WIFI模块: 涂鸦WiFi(型号见文章 ...

  3. ALIENTEK 的 ESP8266 WiFi Module 刷入固件后出现don’t use rtc mem data错误或者ESP8266开启串口不停出现乱码的解决方案

    ESP8266 WiFi Module 刷入固件后出现don't use rtc mem data 出现问题: 刷新新的固件后,出现错误提示:don't use rtc mem data 或各种读写地 ...

  4. 你家路由器还在闲置吗?快拿过来刷不同固件系统,做wifi放大器不香么?让家里处处有网。

    一.家里有一个闲置3.4年的斐讯FIR303B路由器,号称300Mb,已经吃灰许久,由于卧室wifi信号没有那么好,就决定弄个桥接,放大wifi 二.没有想到的是 家里的斐讯FIR303B由于太过久远 ...

  5. NodeNCU(ESP8266)刷MicroPython固件、连接WiFi并传输文件

    NodeMCU(ESP8266)烧录 MicroPython固件.连接WiFi并传输文件 烧录MicroPython固件 下载MicroPython固件包 准备烧录 开始烧录 NodeMCU连接WiF ...

  6. fw150rm刷openwrt固件_今晚把本版几乎所有固件刷了个遍。发现Padavan固件速度吊打OpenWrt,有人知道原因吗?...

    本帖最后由 27hh 于 2020-6-20 15:39 编辑 本来只想试试OPENWRT和C大的PADAVAN,结果发现5G体验差距悬殊!于是花了几个小时,今晚把本版几乎所有固件刷了个遍! 首先是今 ...

  7. 基于STM32与ESP8266的太空人WiFi天气时钟(代码开源)

    前言:本文为手把手教学ESP8266著名开源项目--太空人WiFi天气时钟,不同的是本次项目采用的是STM32作为MCU.两者开发过程中有因为各自芯片的特点(时钟频率,内存大小等),导致开发程序大不相 ...

  8. 天猫智能插座《转换器》爆改WIFI插座接入Homeassistant

    天猫智能插座<转换器>爆改WIFI插座接入Homeassistant 前言 教程开始 拆解插座 拆解蓝牙模块 焊接插座引脚 焊接ESP8266 焊接插座插脚 把ESP8266安置好 配置H ...

  9. 网件r4500刷第三方固件_网件R6800刷PandoraBox固件,激发潜在的160MHz频宽

    MT7615N真是神奇的芯片,在硬件上是支持160MHz的,但在绝大多数产品中,唉,直接用数字吧,有99.99%的此类方案产品没有支持160MHz,我很是郁闷,还有采用QCA9984的WDR8500和 ...

最新文章

  1. 微软苹果服务器宕机,苹果服务器宕机,iPhone用户别做这两项操作,微软特斯拉也中招...
  2. iframe vue 前进 后退_前端面试准备笔记系列之vue(01)
  3. 关于server 2008 r2中文版安装多国语言用户界面包(英文)
  4. mac改终端前面的计算机名
  5. MySQL两表联查,根据不同条件获得不同数据
  6. 如何创建SAP C4C Product list并用OData服务消费
  7. mac服务器证书失效,Mac OS X Server:软件更新证书过期
  8. Android 系统(41)---Android7.0 PowerManagerService亮灭屏分析(二)
  9. 【渝粤教育】电大中专公共基础课程 (2)作业 题库
  10. go fyne 跨平台开发框架 gui 编程 抖音下载 去水印编程 学习交流
  11. java商品销售管理系统_基于SSM框架下的JAVA商场销售管理系统
  12. python自动输入饥荒控制台代码
  13. JAVA SE 实战篇 C7 基于CSFramework的聊天室 (下) 客户端APP
  14. C语言第一个程序——一个简单的Hello world!程序
  15. vi中方向键和删除键
  16. 【JSD-Day01】语言基础第一天
  17. html设置文本域的,HTML-文本域属性设置
  18. 寻址 far near
  19. 解决rdm连接虚拟机redis失败,idea无法连接
  20. 思维【敏捷开发ACP】总目录

热门文章

  1. ThreeJs 基础入门
  2. NLP实战:使用机器/深度学习做文本分类
  3. gtasa服务器文件,GTASA详细解析文件
  4. [HCTF 2018]admin
  5. win10应用商店edge等无法联网 错误代码为 0x8000FFFF
  6. freemarker基本指令用法
  7. 嵌入式人工智能技术(EAI)在蓝牙耳机开发中的应用
  8. h5 可以滚动并隐藏滚动条
  9. php 支付宝 扫码 源码,PHP微信扫码+PHP支付宝源码
  10. 计算机组成原理之总线设计