Skip to main content

SONOFF S31

One of the top favorite smart plugs. Easy to disassemble with a screw driver, exposed pin headers to the ESP8266, button on GPIO 0, and excellent power monitoring! You can even flash it without soldering utilizing a USB TTL adapter and dupont test clips known as clippy bois - see the pics section below.

Purchase on Amazon Amazon
Purchase on iTead iTead
Purchase on Aliexpress Aliexpress
Purchase on CloudFree CloudFree

Video Setup​

Tasmota Template​

None needed as it is built into TASMOTA. Click Configuration -> Configure Module -> Pick SONOFF S31 and hit Save.

alt text

TASMOTA Settings​

The power calibration for the S31 is usually pretty close on default but it can be fine tuned via Tasmota Calibration Procedure

GPIO Layout​

GPIOComponentDescription
GPIO00Button 1
GPIO01CSE7766 TxPower monitoring chip
GPIO03CSE7766 RxPower monitoring chip
GPIO12Relay1Relay for Load
GPIO13Led_i_1Onboard LED

ESPHome YAML​

esphome:
name: plug-s31-a
friendly_name: plug-s31-a

esp8266:
board: esp01_1m
early_pin_init: false # Prevent the physical relay flipping on reboot.

logger:
baud_rate: 0 # (UART logging disabled due to cse7766 power mon chip)
api:
ota:
platform: esphome
captive_portal:

wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# domain: !secret wifi_mydomain
ap:
password: !secret ap_password

web_server:

uart:
rx_pin: RX
baud_rate: 4800

binary_sensor:
- platform: gpio
pin:
number: GPIO0
mode: INPUT_PULLUP
inverted: True
name: Button
on_press:
- switch.toggle: relay

sensor:
- platform: cse7766
current:
name: Amps
unit_of_measurement: A
accuracy_decimals: 2
filters:
- throttle_average: 10s
voltage:
name: Voltage
unit_of_measurement: V
accuracy_decimals: 1
filters:
- throttle_average: 10s
power:
name: Watts
accuracy_decimals: 0
id: plug_power
filters:
- throttle_average: 10s
- platform: total_daily_energy
name: Daily Energy
power_id: plug_power
filters:
- multiply: 0.001 ## convert Wh to kWh
unit_of_measurement: kWh

switch:
- platform: gpio
name: Relay
pin: GPIO12
id: relay
restore_mode: ALWAYS_ON

time:
- platform: homeassistant
id: homeassistant_time

status_led:
pin:
number: GPIO13
inverted: True

Pics​

alt text alt text alt text alt text alt text alt text alt text

alt text