Sonoff S31: Flashing ESPHome
Одним вечерним вечером мне понадобились умные розетки для всякой мелочевки. Ну знаете, зашедулить включение фумигатора от комариков и все в таком духе. Имеющийся SMATRUL WiFi Socket из поста про стиралочку мне не понравился, поэтому я занырнул в поиск Lazada/AliExpress и вынырнул с Sonoff S31. Собсно, начало коротенькой зарисовочки о ее перепрошивке вы сейчас и читаете ;)
О Sonoff S31
Для начала, как и положено, пара слов о выборе:
- Стоит как средний бургер с колой, т.е. около $5
- Type B socket (вариация US) - довольно популярная тема в Таиланде
- Умеет измерять потребление энергии. Кстати, есть и Sonoff S31 Lite без
- До 15A нагрузки
- ESP8266 вместо сердца
- Красивенькая, но разбирается отверткой
Будь вместо Type B что-то универсальное, вообще цены бы не было. Но и так не дурно. Особенно учитывая, что ESP8266 + разборка отверткой = привет ESPHome.
Разбираем
Нам понадобится отвертка и что-то для защелок (я использую пластиковую штуку для разборки телефонов). Прямые руки, кстати, совсем не обязательны - я проверял ;)
-
Начинаем с того, что снимаем серенькую крышку:
-
Добираемся до шурупов и откручиваем их:
-
Вуаля, вот они нужные пины:
Прошиваем
Для прошивки все еще не нужны прямые руки, но нужен паяльник и USB to Serial converter (у меня какой-то дефолтный на базе FT232 с алика).
-
Припаиваемся к пинам VCC, RX, TX и GND. К счастью, аккуратность тут не важна:
- Подключаемся к serial converter:
| USB2Serial | S31 | |-------------|---------| | VCC (3.3V) | VCC | | GND | GND | | RX | TX | | TX | RX |
- Зажимаем кнопку на платке (подключена к
GPIO0
) для перевода ESP8266 в режим бутлоадера и втыкаем USB to Serial в комп - Заводим новое устройство в ESPHome:
- Дожидаемся окончания процесса и ребутаем S31
- Хоба, готово! Можем подключиться по воздуху и почитать лог:
На этом с прошивкой ESPHome закончили, мы молодцы :) Все дальнейшие манипуляции можно сделать по воздуху, поэтому собираем нашу розетку обратно.
Последние шаги
ESPHome и OTA это, конечно, хорошо, но у нас тут вообще-то розетка! Что ж, шьем ей конфиг (взят из документации Sonoff S31 для ESPHome):
esphome:
name: dinners31plug
friendly_name: DinnerS31Plug
esp8266:
board: esp01_1m
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "DEADBEEF"
ota:
password: "DEADBEEF"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
manual_ip:
static_ip: 10.11.5.1
gateway: 10.11.0.1
subnet: 255.255.0.0
dns1: 10.11.1.2
time:
- platform: homeassistant
id: homeassistant_time
uart:
rx_pin: RX
baud_rate: 4800
binary_sensor:
- platform: gpio
pin:
number: GPIO0
mode: INPUT_PULLUP
inverted: True
name: "Sonoff S31 Button"
on_press:
- switch.toggle: relay
- platform: status
name: "Sonoff S31 Status"
sensor:
- platform: wifi_signal
name: "Sonoff S31 WiFi Signal"
update_interval: 60s
- platform: cse7766
current:
name: "Sonoff S31 Current"
accuracy_decimals: 1
voltage:
name: "Sonoff S31 Voltage"
accuracy_decimals: 1
power:
name: "Sonoff S31 Power"
accuracy_decimals: 1
id: my_power
- platform: total_daily_energy
name: "Sonoff S31 Daily Energy"
power_id: my_power
switch:
- platform: gpio
name: "Sonoff S31 Relay"
pin: GPIO12
id: relay
restore_mode: ALWAYS_ON
status_led:
pin:
number: GPIO13
inverted: True
Добавляем нашу DinnerS31Plug
в Home Assistant (воткнул в нее что-то, дабы проверить power monitoring):
Собсно, чего мы и добивались! Дальше можно мутить нужные нам автоматизации, но об этом как-то в другой раз при хорошем случае. А пока всем кота (づ˶•༝•˶)づ♡