开篇废话
上个月参加了
TLUG Technical Meeting然后有位演讲者介绍了他的 Home Assistant 然后我也捡起来继续用了。 上一篇文章还是在 2020 年,拖更了快6年了草。
本文如标题所示,是给灯泡刷机,当然这个灯泡是 PDD 7元凑包邮购买的,自称支持 RGBCW ,当然最后测试的话缺少暖色调(看上去大概由彩色灯珠模拟?)
拆开来一看是 ESP8266EX ,不知道哪里来的外贸尾货就是了,叫做 EDSUN ,默认接了涂鸦平台。
我们改成 ESPHOME 平台凑合用用(
老中这种倾销式生产还是太恐怖了,带 ESP8266 的玩具居然10元以内就能买到了
正文
接 TTL
一开始我想用夹子的,但是看上去不让读,或者我的 CH341 光荣牺牲了 = =
最后焊了1H左右:

(后面才意识到很难吃锡的是线的原因
然后主板看上去就是完全的公版方案,我们一眼就知道该连什么:

我推荐 GND 使用左上角 ROM 芯片的 pin ,这样好焊点,然后 IO0 (右下角紫色的那个)需要下拉电位,也就是接地,所以更推荐从 ROM 芯片左上角来接地,这样接两根线没啥问题,当然我觉得你需要万用表确认下(
然后 RX TX 3v3 就不说了。
备份固件
查了下这破玩意 ROM 为 25q80csig
是1M 的:
esptool --port /dev/tty.usbserial-140 read-flash 0x00000 0x100000 backup.img
2M 的话把 0x100000 -> 0x200000 以此类推。
ESPHOME
稍微改了下,反正能用就是了:
esphome:
name: edsun_bulb
esp8266:
board: esp01_1m
wifi:
ssid: "IOT"
password: "xxxxx"
ap:
ssid: "blub"
password: "111111111"
captive_portal:
logger:
baud_rate: 0
api:
encryption:
# 连接 hass 的话这里自己生成个 key
key: <111>
ota:
platform: esphome
safe_mode:
web_server:
port: 80
output:
- platform: esp8266_pwm
id: white
pin: GPIO4
frequency: 400 Hz
- platform: esp8266_pwm
id: green
pin: GPIO12
frequency: 400 Hz
- platform: esp8266_pwm
id: blue
pin: GPIO13
frequency: 400 Hz
- platform: esp8266_pwm
id: red
pin: GPIO14
frequency: 400 Hz
light:
- platform: rgbw
name: EDSUN Bulb
red: red
green: green
blue: blue
white: white
id: thelight
color_interlock: true
gamma_correct: 1.0
restore_mode: RESTORE_DEFAULT_OFF
effects:
- random:
- strobe:
- flicker:
alpha: 50% #The percentage that the last color value should affect the light. More or less the “forget-factor” of an exponential moving average. Defaults to 95%.
intensity: 50% #The intensity of the flickering, basically the maximum amplitude of the random offsets. Defaults to 1.5%.
- lambda:
name: Tiny Smooth Rainbow
update_interval: 1s
lambda: |-
static const uint8_t colors[12][3] = {
{255,105,180},
{255,0,0},
{255,127,0},
{255,255,0},
{127,255,0},
{0,255,0},
{0,255,127},
{0,255,255},
{0,127,255},
{0,0,255},
{127,0,255},
{255,0,255}
};
static int state = 0;
auto call = id(thelight).turn_on();
call.set_transition_length(500);
call.set_rgb(colors[state][0]/255.0, colors[state][1]/255.0, colors[state][2]/255.0);
call.perform();
state++;
if (state == 12) state = 0;
esphome compile bulb.yaml
ls .esphome/build/edsun_bulb/.pioenvs/edsun_bulb
firmware.bin lib0d3 libda8
firmware.elf lib4d9 libefd
firmware.factory.bin lib6f5 libFrameworkArduino.a
firmware.ota.bin lib760 libFrameworkArduinoVariant.a
FrameworkArduino lib82f src
ld lib96d
我们要刷的是 firmware.factory.bin 接下来 OTA 的话刷 firmware.ota.bin
确认颜色通道
output:
- platform: esp8266_pwm
id: test_gpio0
pin: GPIO0
frequency: 400 Hz
- platform: esp8266_pwm
id: test_gpio2
pin: GPIO2
frequency: 400 Hz
- platform: esp8266_pwm
id: test_gpio4
pin: GPIO4
frequency: 400 Hz
- platform: esp8266_pwm
id: test_gpio5
pin: GPIO5
frequency: 400 Hz
- platform: esp8266_pwm
id: test_gpio12
pin: GPIO12
frequency: 400 Hz
- platform: esp8266_pwm
id: test_gpio13
pin: GPIO13
frequency: 400 Hz
- platform: esp8266_pwm
id: test_gpio14
pin: GPIO14
frequency: 400 Hz
- platform: esp8266_pwm
id: test_gpio15
pin: GPIO15
frequency: 400 Hz
- platform: esp8266_pwm
id: test_gpio16
pin: GPIO16
frequency: 400 Hz
light:
- platform: monochromatic
name: "TEST GPIO0"
output: test_gpio0
- platform: monochromatic
name: "TEST GPIO2"
output: test_gpio2
- platform: monochromatic
name: "TEST GPIO4"
output: test_gpio4
- platform: monochromatic
name: "TEST GPIO5"
output: test_gpio5
- platform: monochromatic
name: "TEST GPIO12"
output: test_gpio12
- platform: monochromatic
name: "TEST GPIO13"
output: test_gpio13
- platform: monochromatic
name: "TEST GPIO14"
output: test_gpio14
- platform: monochromatic
name: "TEST GPIO15"
output: test_gpio15
- platform: monochromatic
name: "TEST GPIO16"
output: test_gpio16
然后到网页里面自己按一下吧 = = 这里不教了,也没截图。
然后实际测了下 GPIO 然后看了下灯珠,理论上就是没有暖色的灯珠的 = = 所以其实就是 RGBW (RED+GREEN+BLUE+WHITE),不过凑合能用就是了。
总结
好久没搞智能家居了,毕竟搞这玩意之前得先有自己的家,很遗憾并没有(
当然刷这玩意的话,其实对于时间成本来说是完全亏本的,但是人还是要找点东西折腾下,对吧?
完