prefixkit Ask an engineerAsk Support RU

ESPHome devices

Shelly EM Gen3: ESPHome

Shelly EM Gen3 (sensors, ESP32): GPIO pinout and a starter ESPHome config with relays, buttons, LED. Local Home Assistant control with no cloud.

Type
Sensors
Chip
ESP32
Region standard
AU, BR, EU, IN, UK, US, GLOBAL

Pinout

PinFunction
GPIO0Relay
GPIO1Button
GPIO3ADC for NTC temperature sensor
GPIO4ADE7953 IRQ pin (active low)
GPIO5ADE7953 RESET pin (active low)
GPIO6I2C SCL
GPIO7I2C SDA
GPIO9Status LED
GPIO18Pin 1 of 7-pin header
GPIO20UART receive (U0RXD)
GPIO21UART transmit (U0TXD)

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-em-gen3

esphome:
  name: ${name}
  friendly_name: "Shelly EM Gen3"

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: GPIO0
    id: relay1
    name: "Relay"  # Relay
    restore_mode: RESTORE_DEFAULT_OFF

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO1
      mode: INPUT_PULLUP
      inverted: true
    name: "Button"  # Button
    on_press:
      - switch.toggle: relay1

status_led:
  pin:
    number: GPIO9
    inverted: true  # Status LED

# Other pins from the pinout:
#   GPIO3: ADC for NTC temperature sensor
#   GPIO4: ADE7953 IRQ pin (active low)
#   GPIO5: ADE7953 RESET pin (active low)
#   GPIO6: I2C SCL
#   GPIO7: I2C SDA
#   GPIO18: Pin 1 of 7-pin header
#   GPIO20: UART receive (U0RXD)
#   GPIO21: UART transmit (U0TXD)

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?