devices.esphome.io

Shelly Plug S Gen3

Shelly Plug S Gen3

Device Type: plug
Electrical Standard: eu
Board: esp32c3
Difficulty: Soldering required, 4/5

Generation 3 of Shelly Plug-S

At this moment there is NO way to Flash it OTA. You need to open the Plug and use UART!

As always, first take a dump! esptool -b 115200 --port COM11 read_flash 0x00000 0x800000 shelly_plug_s_gen3.bin

UART Pinout

PinColour
ResetBrown
3v3Red
RXBlue
TXYellow
BootSELPurple
GNDBlack

Shelly Plug S Gen3

GPIO Pinout

PinFunction
GPIO3Internal Temperature
GPIO4LED WS2812
GPIO5Relay
GPIO6BL0942 TX
GPIO7BL0942 RX
GPIO18Button
substitutions:
device_name: shelly-plug-s-gen3
friendly_name: "Shelly Plug S Gen3"
ip_addr: 10.0.x.x
update_bl0942: 5s
esphome:
name: ${device_name}
friendly_name: ${friendly_name}
comment: "Free Shelly!"
platformio_options:
board_build.flash_mode: dio
esp32:
board: esp32-c3-devkitm-1
flash_size: 8MB
framework:
type: esp-idf
version: recommended
sdkconfig_options:
COMPILER_OPTIMIZATION_SIZE: y
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "FreeShelly Hotspot"
password: !secret wifi_password
logger:
api:
encryption:
key: !secret api_encryption_key
ota:
- platform: esphome
password: !secret ota_password
captive_portal:
binary_sensor:
- platform: gpio
id: "push_button"
name: "Button"
internal: true
pin:
number: GPIO18
inverted: yes
mode:
input: true
pullup: true
filters:
- delayed_on_off: 5ms
switch:
- platform: gpio
pin: GPIO4
name: "Relay"
light:
- platform: esp32_rmt_led_strip
rgb_order: GRB
rmt_channel: 0
chipset:
pin: GPIO4
num_leds: 4
id: rgb_light1
internal: false
default_transition_length: 700ms
restore_mode: ALWAYS_OFF
uart:
id: uart_0
tx_pin: GPIO7
rx_pin: GPIO6
baud_rate: 9600
stop_bits: 1
data_bits: 8
parity: NONE
sensor:
- platform: ntc
sensor: temp_resistance_reading
name: "Temperature"
unit_of_measurement: "°C"
accuracy_decimals: 1
icon: "mdi:thermometer"
calibration:
b_constant: 3350
reference_resistance: 10kOhm
reference_temperature: 298.15K
- platform: resistance
id: temp_resistance_reading
sensor: temp_analog_reading
configuration: DOWNSTREAM
resistor: 10kOhm
- platform: adc
id: temp_analog_reading
pin: GPIO3
attenuation: 12db
- platform: bl0942
uart_id: uart_0
address: 0
voltage:
name: 'Voltage'
id: bvoltage
icon: mdi:alpha-v-circle-outline
device_class: voltage
current:
name: 'Current'
id: bcurrent
icon: mdi:alpha-a-circle-outline
device_class: current
power:
name: 'Power'
id: bpower
icon: mdi:transmission-tower
device_class: power
energy:
name: 'Energy'
id: benergy
icon: mdi:lightning-bolt
device_class: energy
frequency:
name: "Frequency"
id: bfreq
accuracy_decimals: 2
icon: mdi:cosine-wave
device_class: frequency
update_interval: ${update_bl0942}

Open the device

Seal This little seal need to drill open, best you use a prick punch with an M3.5-M4 Drill. Drill

When the seal is cracked open, you need a M2 drill, and drill in center, just a little. Drill

Now take a tapered punch and press the seal out. The whole grounding receptacle will come out.

We need some hot-air (~300°C) and 5 of the iFixit triangle-plastic, there are 3 spots with glue. Heat them up, and try placeing the plastic around. Open it up

You will get a little gap, take anohter plastic and g et betweet the withe and transparent plastic, and make a circle. Open it up

After 2 rounds you can easly take it out.

Edit this page on GitHub