前言
前几天在某淘宝优惠中看到一个 WiFi 智能插座卖 29 块包邮,心想要是里面是 ESP8266 模块说不定可以刷上固件玩玩,就买了俩回来,记下折腾过程。
拆解
WiFi 智能插座的淘宝介绍页
开拆,果然是 ESP8266 模块,具体型号是 ESP-WROOM-02,看起来整个控制包括按键、驱动继电器,LED 等都是由 ESP8266 完成
测出引脚,左右两颗 LED 是蓝灯和红灯
再量出其他用到的引脚
按钮 → GPIO4(D2)
继电器 → GPIO5(D1)
蓝灯 → GPIO0(D3)
红灯 → GPIO14(D5)
刷 ESPEasy 固件和配置
在官网下载 release 固件,用串口连接到此板,用镊子将上图中的 GPIO0 短接到地之后上电,由于是 ESP-WROOM-02 模块,所以在 bin 目录复制 ESP_Easy_mega-20191208_normal_WROOM02_2M256.bin 到 FlashESP8266.exe 同一级目录,然后打开 FlashESP8266.exe,选择固件烧写
烧写成功后重新上电,连接到 ESP_Easy_0 的 WiFi,密码为 configesp,连接成功后浏览器会自动跳转到配置页面,或者手动在浏览器打开 192.168.4.1,在配置页面中重新配置连接到路由器,记下显示的 IP
打开记下的 IP,看到下图
Bingo!接下来是配置一下基础设置,Config 中设置 Unit Name 和 Unit Number,比如设置为 Switch 和 1,然后 Submit
Tools → Advanced 中勾选 Rules,勾选 MQTT usage unit name as ClientId,勾选 Use NTP,NTP Hostname 填 ntp1.aliyun.com,然后下方的 Timezone Offset 填 480,即 60 分钟 * 8,才能对上北京时间
然后让插座连接到树莓派上的MQTT 服务器,Controllers 修改第一项,配置完成后 Submit
接着让插座原本的功能恢复正常,包括 LED 显示和按键控制继电器
根据上面量出来的 GPIO,在 Hardware 中配置 GPIO 功能
然后在 Devices 中添加按钮触发,Switch Button Type 选 Push Button Active Low,按钮按下时变为低电平才触发,IDX 不能重复,这个是 Domoticz 中区分设备的序号
在 Rules 中添加规则,大概意思是 button 按下时,会修改 Devices 中 Values 的值,0 和 1 为关闭/开启 LED 和继电器
On button#Switch=0 do
gpio,5,0
gpio,14,1
endon
On button#Switch=1 do
gpio,5,1
gpio,14,0
endon
按动按钮,已经可以控制继电器了,而且开关状态也会同步到 Domoticz
在 Domoticz 控制台,设置 → 硬件中添加 Dummy,名称为“开关”
在“开关”项中点击“创建虚拟传感器”,名称“开关01”,类型“开关”
设置 → 设备中可以看到多了一个设备,Idx 要与 ESPEasy 中配置的相同
回到开关页面,可以看到已经有了此设备,不出问题的话,此时点击灯泡图标就可以控制插座的开关了,而且按动插座的按钮也可以同步状态