Skip to main content
Device Type:plug
Electrical Standard:us
Board:esp32

Wyze Outdoor Plug

Initial Install

Hardware Flashing

This device requires a triangle screw driver bit to remove the cover and use the serial header for the first upload.

Software Flashing

Some of these devices may be able to be flashed OTA with ESPHome using this guide. The firmware is first downgraded to 1.2.0.73 with the Wyze Updater Tool, and then flashing ESPHome OTA for the first upload.

GPIO Pinout

PinFunction
GPIO5Status LED
GPIO18Button 1
GPIO17Button 2
GPIO15Relay 1
GPIO32Relay 2
GPIO19Relay 1 LED
GPIO16Relay 2 LED
GPIO34LUX Sensor
GPIO25SEL
GPIO27CF
GPIO26CF1

Notes

  • The Lux sensor is a binary sensor and can be used like a daylight sensor. (e.g. turn on lights when it gets dark)
  • This device can be used as a Bluetooh proxy in Home Assistant see the docs on how to enable

Basic Configuration

# Basic Config
substitutions:
display_name: WyzeOutdoor
# Higher value gives lower watt readout
current_res: "0.001"
# Lower value gives lower voltage readout
voltage_div: "770"

esphome:
name: wyzeoutdoor

esp32:
variant: esp32
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
logger:
api:
ota:

# Device Specific Config
switch:
- platform: gpio
name: ${display_name} Relay1
pin:
number: GPIO15
inverted: false
id: relay1
on_turn_on:
- light.turn_on: relay1_led
on_turn_off:
- light.turn_off: relay1_led
- platform: gpio
name: ${display_name} Relay2
pin:
number: GPIO32
inverted: false
id: relay2
on_turn_on:
- light.turn_on: relay2_led
on_turn_off:
- light.turn_off: relay2_led
- platform: restart
name: ${display_name} Restart

output:
- platform: gpio
pin: GPIO19
inverted: True
id: relay1_led_gpio
- platform: gpio
pin: GPIO16
inverted: True
id: relay2_led_gpio

light:
- platform: binary
name: "Relay1 LED"
id: relay1_led
internal: true
output: relay1_led_gpio
- platform: binary
name: "Relay2 LED"
id: relay2_led
internal: true
output: relay2_led_gpio

sensor:
- platform: adc
pin: GPIO34
name: "${display_name} LUX"
id: lux_sensor
device_class: illuminance
unit_of_measurement: lx
attenuation: 12db
- platform: hlw8012
sel_pin:
number: GPIO25
inverted: true
cf_pin: GPIO27
cf1_pin: GPIO26
current_resistor: ${current_res}
voltage_divider: ${voltage_div}
change_mode_every: 3
update_interval: 3s
current:
name: "${display_name} Amps"
unit_of_measurement: A
accuracy_decimals: 2
voltage:
name: "${display_name} Volts"
unit_of_measurement: V
accuracy_decimals: 1
energy:
name: "${display_name} Energy"
power:
name: "${display_name} Watts"
unit_of_measurement: W
accuracy_decimals: 0
filters:
- calibrate_linear:
- 0.0 -> 0.0
- 134 -> 58

binary_sensor:
- platform: gpio
internal: true
pin:
number: GPIO18
mode: INPUT_PULLDOWN
inverted: False
name: ${display_name} Button1
on_press:
- switch.toggle: relay1
- platform: gpio
internal: true
pin:
number: GPIO17
mode: INPUT_PULLDOWN
inverted: False
name: ${display_name} Button2
on_press:
- switch.toggle: relay2
- platform: template
name: ${display_name} daylight
device_class: light
lambda: |-
// the senor reads 3.1 volts if there is light and 0.5 if there is not light not much inbetween
if (id(lux_sensor).state > 2) {
// there is daylight outside.
return true;
} else {
// there is no daylight outside (e.g. it is dark).
return false;
}

status_led:
pin:
number: GPIO5
inverted: true