本帖最后由 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/)出的一款智能插座产品,不过在其官网上已无法搜索到相关的信息,推测应该是属于老旧的淘汰产品线,其成色做工尚可。
逆向GPIO
经过一番测试倒腾, 逆向出来了GPIO,各个功能说明如下:
- 继电器:GPIO4 拉高吸合,拉低断开
- 红灯:和继电器连在一起的,继电器开启的时候红灯亮
- 绿灯:GPIO16 拉高点亮,拉低熄灭
- 按键开关:GPIO5 按下和GND连接
- 按键开关左边的2个焊盘:上面的焊盘为GPIO0,下面的焊盘为GND,短接上电即可进入bootloader
- 下载口:位于左下方,且已经有丝印标记5V, G, TX, RX
复制代码 烧录固件
拆开背后的一颗螺丝,外壳为卡扣结构,用撬棍从两侧慢慢撬开,即可露出内部的PCB进行烧录固件。这里烧录的是目前较为流行的智能家居Tasmota固件,支持WEBUI配置、OTA升级、定时器规则,以及MQTT接入,另外也支持多种传感器的接入,更详细的信息可参考源码仓库 https://github.com/arendst/Tasmota
固件烧录需要先短接GPIO0和GND(按键开关左边的2个焊盘), 然后连接左侧的4个插针5V, GND, TX, RX,ESP8266上电后会进入bootloader模式,输入以下命令烧录固件
- $esptool.py --port /dev/ttyUSB0 --baud 115200 write_flash -fs 4MB -ff 80m 0x00000 tasmota-CN.bin
- esptool.py v3.3-dev
- Serial port /dev/ttyACM0
- Connecting....
- Detecting chip type... Unsupported detection protocol, switching and trying again...
- Connecting...
- Detecting chip type... ESP8266
- Chip is ESP8266EX
- Features: WiFi
- Crystal is 26MHz
- MAC: 5c:cf:7f:06:76:40
- Uploading stub...
- Running stub...
- Stub running...
- Configuring flash size...
- Flash will be erased from 0x00000000 to 0x0009bfff...
- Flash params set to 0x034f
- Compressed 637296 bytes to 455065...
- Wrote 637296 bytes (455065 compressed) at 0x00000000 in 124.2 seconds (effective 41.0 kbit/s)...
- Hash of data verified.
- Leaving...
- Hard resetting via RTS pin...
复制代码 配置
烧录成功后即可重新组装开关,并将开关插入220V电源插座中,正常会出现一个 tasmota-xxxx-xxxx 的wifi热点,此热点无需输入密码,可直接连接。然后浏览器打开192.168.4.1,即可登录到后台。第一次登陆会提示连接到路由器,可在后台设置连接到自己的路由器,连接好之后会弹出路由器分配的IP地址,后续操作会更方便一些。例如连接到我的路由器后,分配的IP地址为192.168.123.233,即可输入新的IP地址进入后台进行操作
进入后台后,先重新设置模块类型,设置 -> 模块设置 -> 选择模块类型为 Generic (18),然后点击保存,系统会作为新模块重启。稍等片刻重新进入,即可进行新模块的配置,根据之前逆向出来的资料,按照如图所示的配置即可
配置完系统会重启,重启后即可开始正常使用,可点击网页界面上的开关控制,也可通过按压开关上的按键进行控制。
也可通过命令行控制,如下所示
- #打开开关
- $curl http://192.168.123.233/cm?cmnd=POWER+ON
- #闭合开关
- $curl http://192.168.123.233/cm?cmnd=POWER+OFF
- #开关切换(当前开关状态为打开则关闭,为关闭则打开)
- $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
|