【智能家居】 智能开关逆向并刷入Tasmota固件

[复制链接]
查看950 | 回复4 | 2023-12-8 09:17:49 | 显示全部楼层 |阅读模式
本帖最后由 lazy 于 2023-12-8 09:42 编辑

缘起
目前市面上的智能插座产品也已经很丰富了,不过往往和厂商的APP绑定,而且一般都需要强制联网才可以正常使用,无法达到个人的定制DIY需求,例如我个人的一些需求:

1 不想联网、或者没有WiFi路由器的情况下使用智能插座
2 不想安装厂商提供的APP,需要任意手机可直接使用浏览器控制
3 希望可以从命令行配置查询,这样可以配合树莓派脚本完成联动,和树莓派上的传感器配合可实现各种场景控制。
4 智能开关自身可接入其他传感器,实现更丰富的应用
5 可随意根据自己需求DIY固件,增加新功能

求索
      自己用PCB制作虽然也可以,不过往往缺少外壳、220V插座具有一定安全风险、做出来成品也会比较粗糙。所以当前最好的方式应该是采购市面上现有的成熟产品,并逆向出相关IO口,然后刷入开源的系统进行DIY。由于基于ESP8266/ESP32的资料最为丰富,可玩性更强,经过反复的搜索,最终在某鱼上大概以13元左右价格买了一批基于ESP8266的智能插座。从开关的标签说明上看,是属于华清智芯科技有限公司(http://www.smartchip.com.cn/)出的一款智能插座产品,不过在其官网上已无法搜索到相关的信息,推测应该是属于老旧的淘汰产品线,其成色做工尚可。
企业微信截图_20231208091239.png

企业微信截图_20231208091255.png

企业微信截图_20231208091307.png

逆向GPIO
经过一番测试倒腾, 逆向出来了GPIO,各个功能说明如下:
  1. 继电器:GPIO4 拉高吸合,拉低断开
  2. 红灯:和继电器连在一起的,继电器开启的时候红灯亮
  3. 绿灯:GPIO16 拉高点亮,拉低熄灭
  4. 按键开关:GPIO5 按下和GND连接
  5. 按键开关左边的2个焊盘:上面的焊盘为GPIO0,下面的焊盘为GND,短接上电即可进入bootloader
  6. 下载口:位于左下方,且已经有丝印标记5V, G, TX, RX
复制代码
烧录固件
拆开背后的一颗螺丝,外壳为卡扣结构,用撬棍从两侧慢慢撬开,即可露出内部的PCB进行烧录固件。这里烧录的是目前较为流行的智能家居Tasmota固件,支持WEBUI配置、OTA升级、定时器规则,以及MQTT接入,另外也支持多种传感器的接入,更详细的信息可参考源码仓库 https://github.com/arendst/Tasmota
固件烧录需要先短接GPIO0和GND(按键开关左边的2个焊盘), 然后连接左侧的4个插针5V, GND, TX, RX,ESP8266上电后会进入bootloader模式,输入以下命令烧录固件
  1. $esptool.py --port /dev/ttyUSB0 --baud 115200 write_flash -fs 4MB -ff 80m 0x00000 tasmota-CN.bin
  2. esptool.py v3.3-dev
  3. Serial port /dev/ttyACM0
  4. Connecting....
  5. Detecting chip type... Unsupported detection protocol, switching and trying again...
  6. Connecting...
  7. Detecting chip type... ESP8266
  8. Chip is ESP8266EX
  9. Features: WiFi
  10. Crystal is 26MHz
  11. MAC: 5c:cf:7f:06:76:40
  12. Uploading stub...
  13. Running stub...
  14. Stub running...
  15. Configuring flash size...
  16. Flash will be erased from 0x00000000 to 0x0009bfff...
  17. Flash params set to 0x034f
  18. Compressed 637296 bytes to 455065...
  19. Wrote 637296 bytes (455065 compressed) at 0x00000000 in 124.2 seconds (effective 41.0 kbit/s)...
  20. Hash of data verified.

  21. Leaving...
  22. Hard resetting via RTS pin...
复制代码
配置
烧录成功后即可重新组装开关,并将开关插入220V电源插座中,正常会出现一个 tasmota-xxxx-xxxx 的wifi热点,此热点无需输入密码,可直接连接。然后浏览器打开192.168.4.1,即可登录到后台。第一次登陆会提示连接到路由器,可在后台设置连接到自己的路由器,连接好之后会弹出路由器分配的IP地址,后续操作会更方便一些。例如连接到我的路由器后,分配的IP地址为192.168.123.233,即可输入新的IP地址进入后台进行操作
企业微信截图_20231208091554.png
进入后台后,先重新设置模块类型,设置 -> 模块设置 -> 选择模块类型为 Generic (18),然后点击保存,系统会作为新模块重启。稍等片刻重新进入,即可进行新模块的配置,根据之前逆向出来的资料,按照如图所示的配置即可
企业微信截图_20231208091616.png
配置完系统会重启,重启后即可开始正常使用,可点击网页界面上的开关控制,也可通过按压开关上的按键进行控制。

企业微信截图_20231208091629.png

也可通过命令行控制,如下所示

  1. #打开开关
  2. $curl http://192.168.123.233/cm?cmnd=POWER+ON

  3. #闭合开关
  4. $curl http://192.168.123.233/cm?cmnd=POWER+OFF

  5. #开关切换(当前开关状态为打开则关闭,为关闭则打开)
  6. $curl http://192.168.123.233/cm?cmnd=POWER+TOGGLE
复制代码
参考资料
固件仓库,内有烧录脚本可直接烧录
https://github.com/wuxx/smart_sw ... ter/image/smartchip

Tasmota 仓库
https://github.com/arendst/Tasmota

作者:主音-x https://www.bilibili.com/read/cv ... id_from=333.337.0.0 出处:bilibili


回复

使用道具 举报

干簧管 | 2023-12-8 09:19:09 | 显示全部楼层
厉害
回复

使用道具 举报

jkernet | 2023-12-8 10:30:02 | 显示全部楼层
220V确实危险,还有外壳也是不好办
回复 支持 反对

使用道具 举报

WT_0213 | 2023-12-8 10:38:09 | 显示全部楼层
可以参考
回复

使用道具 举报

1055173307 | 2024-4-9 10:50:07 | 显示全部楼层
学习
回复

使用道具 举报

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

本版积分规则