prefixkit Ask an engineerAsk Support RU

ESPHome devices

Shelly Power Strip 4 Gen4: ESPHome

Shelly Power Strip 4 Gen4 (smart plugs, ESP32): GPIO pinout and a starter ESPHome config with relays, buttons, LED. Local Home Assistant control with no cloud.

Type
Smart plugs
Chip
ESP32
Region standard
EU

Pinout

PinFunction
GPIO1Relay 4 (Outlet 4)
GPIO2Relay 2 (Outlet 2)
GPIO3Relay 3 (Outlet 3)
GPIO4Relay 1 (Outlet 1)
GPIO6ADE7953 #0 IRQ (Outlets 1+2)
GPIO7ADE7953 #1 IRQ (Outlets 3+4)
GPIO10SPI CS1 – ADE7953 #1
GPIO11SPI MOSI
GPIO12SPI MISO
GPIO13SPI SCLK
GPIO15SPI CS0 – ADE7953 #0
GPIO16UART TX (Debug / Flash)
GPIO17UART RX (Debug / Flash)
GPIO18WS2812B Data (12 LEDs, via R36)
GPIO20Button 1 (SW1, low-active)
GPIO21Button 4 (SW4, low-active)
GPIO22Button 2 (SW2, low-active)
GPIO23Button 3 (SW3, low-active)
GPIO9IO0

Find it in shops: AliExpress

Links open a search in the shop; some are affiliate links: buying through them costs you nothing extra and supports this site. We do not sell devices or get them from manufacturers.

Starter ESPHome config

Built from the pinout above. Keys and the Wi-Fi password come from secrets.yaml in ESPHome. Check the pins against your hardware revision before flashing: one model can ship with different boards.

substitutions:
  name: shelly-power-strip-4-gen

esphome:
  name: ${name}
  friendly_name: "Shelly Power Strip 4 Gen4"

esp32:
  board: esp32dev

logger:
api:
  encryption:
    key: !secret api_key
ota:
  - platform: esphome
    password: !secret ota_password
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  ap: {}
captive_portal:

switch:
  - platform: gpio
    pin: GPIO1
    id: relay1
    name: "Relay 1"  # Relay 4 (Outlet 4)
    restore_mode: RESTORE_DEFAULT_OFF
  - platform: gpio
    pin: GPIO2
    id: relay2
    name: "Relay 2"  # Relay 2 (Outlet 2)
    restore_mode: RESTORE_DEFAULT_OFF
  - platform: gpio
    pin: GPIO3
    id: relay3
    name: "Relay 3"  # Relay 3 (Outlet 3)
    restore_mode: RESTORE_DEFAULT_OFF
  - platform: gpio
    pin: GPIO4
    id: relay4
    name: "Relay 4"  # Relay 1 (Outlet 1)
    restore_mode: RESTORE_DEFAULT_OFF
  - platform: gpio
    pin: GPIO6
    id: relay5
    name: "Relay 5"  # ADE7953 #0 IRQ (Outlets 1+2)
    restore_mode: RESTORE_DEFAULT_OFF
  - platform: gpio
    pin: GPIO7
    id: relay6
    name: "Relay 6"  # ADE7953 #1 IRQ (Outlets 3+4)
    restore_mode: RESTORE_DEFAULT_OFF

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO20
      mode: INPUT_PULLUP
      inverted: true
    name: "Button 1"  # Button 1 (SW1, low-active)
    on_press:
      - switch.toggle: relay1
  - platform: gpio
    pin:
      number: GPIO21
      mode: INPUT_PULLUP
      inverted: true
    name: "Button 2"  # Button 4 (SW4, low-active)
    on_press:
      - switch.toggle: relay2
  - platform: gpio
    pin:
      number: GPIO22
      mode: INPUT_PULLUP
      inverted: true
    name: "Button 3"  # Button 2 (SW2, low-active)
    on_press:
      - switch.toggle: relay3
  - platform: gpio
    pin:
      number: GPIO23
      mode: INPUT_PULLUP
      inverted: true
    name: "Button 4"  # Button 3 (SW3, low-active)
    on_press:
      - switch.toggle: relay4

status_led:
  pin:
    number: GPIO18
    inverted: false  # WS2812B Data (12 LEDs, via R36)

# Other pins from the pinout:
#   GPIO10: SPI CS1 – ADE7953 #1
#   GPIO11: SPI MOSI
#   GPIO12: SPI MISO
#   GPIO13: SPI SCLK
#   GPIO15: SPI CS0 – ADE7953 #0
#   GPIO16: UART TX (Debug / Flash)
#   GPIO17: UART RX (Debug / Flash)
#   GPIO9: IO0

How to flash

  • Most devices are flashed over UART: a 3.3 V USB-TTL adapter to RX, TX, GND and 3V3, holding GPIO0 to ground at power-on (ESP8266/ESP32). Mains power disconnected.
  • Beken (BK72xx) and Realtek chips are flashed with ltchiptool, or with cloudcutter without opening the case if the firmware allows it.
  • Details and board photos: the device page in the ESPHome database.

A config from scratch: ESPHome generator. Which pins are safe: pinout.

Similar devices

Idea?