Wi-Fi розетка за 250 руб

Автоматизация дома в большинстве случаев начинается с умных розеток. Не мой случай, но спустя время и я приобрел чудо розетку в 21 году примерно за 600 руб. Но оказалось, что подключить её к Home Assistance или OpenHub задачка нетривиальная, поэтому купил релюшки с ESP8266 по 170 руб и 5 В блоки питания по 50 руб.

Конфиг для ESP-01s следующего вида, базу взял здесь:

esphome:
  name: socket1

esp8266:
  board: esp01_1m

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:
  password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  
  manual_ip:
    static_ip: 192.168.137.143
    gateway: 192.168.137.1
    subnet: 255.255.255.0

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Socket1 Fallback Hotspot"
    password: "xxxxxxxxxxxxx"

captive_portal:
    
switch:
  - platform: gpio
    pin: GPIO0
    name: socket1 Pump switch
    inverted: true

  # The following can be omitted
  - platform: restart
    name: socket1 restart

sensor:
  - platform: wifi_signal
    name: socket1 wifi signal
    update_interval: 600s

  # human readable uptime sensor output to the text sensor above
  - platform: uptime
    name: socket1 Uptime in Days
    id: uptime_sensor_days
    update_interval: 60s
    on_raw_value:
      then:
        - text_sensor.template.publish:
            id: uptime_human
            state: !lambda |-
              int seconds = round(id(uptime_sensor_days).raw_state);
              int days = seconds / (24 * 3600);
              seconds = seconds % (24 * 3600);
              int hours = seconds / 3600;
              seconds = seconds % 3600;
              int minutes = seconds /  60;
              seconds = seconds % 60;
              return (
                (days ? String(days) + "d " : "") +
                (hours ? String(hours) + "h " : "") +
                (minutes ? String(minutes) + "m " : "") +
                (String(seconds) + "s")
              ).c_str();

time:
  - platform: homeassistant
    id: homeassistant_time

# Text sensors with general information.
text_sensor:
  # Expose ESPHome version as sensor.
  - platform: version
    name: socket1 Version
  # Expose WiFi information as sensors.
  - platform: wifi_info
    ip_address:
      name: socket1 IP
    bssid:
      name: socket1 BSSID

  # human readable update text sensor from sensor:uptime
  - platform: template
    name: socket1 Uptime Human Readable
    id: uptime_human
    icon: mdi:clock-start

Прошивал обычным USB-TTL конвертором. Со стороны конвертора:

  • черный GND
  • фиолетовый VCC (джампер на 3.3В)
  • коричневый TX
  • белый RX

Нужно не забыть IO0 (синий) подключить к GND чтобы перевести устройство в режим загрузки.

Единственная проблема возникла с моим роутером. ESP отваливался на этапе договора ARP об имени устройства. Переделал на статический адрес по мануалу — проблема ушла.

Спроектировал корпус

Конкретно этот экземпляр делал для управления помпой рециркуляции горячей воды. Просто так по расписанию гонять её не хочется. Лучше делать это непосредственно перед принятием душа. Например, по факту включения света или срабатыванию датчика движения в ванной или просто по нажатию беспроводной кнопки.

А вообще этот вариант подходит для повышения IQ существующих бытовых устройств. Первую партию покупал для встраивания в маломощные электрические обогреватели. В случае успеха можно на обычную ESP поставить блок реле, хотя если поискать есть готовые решения.

Последнее обновление 07.08.2022 в 22:09