Wyze Outdoor Plug
Device Type:
Electrical Standard:
Board:
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
| Pin | Function |
|---|---|
| GPIO5 | Status LED |
| GPIO18 | Button 1 |
| GPIO17 | Button 2 |
| GPIO15 | Relay 1 |
| GPIO32 | Relay 2 |
| GPIO19 | Relay 1 LED |
| GPIO16 | Relay 2 LED |
| GPIO34 | LUX Sensor |
| GPIO25 | SEL |
| GPIO27 | CF |
| GPIO26 | CF1 |
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 Configsubstitutions: 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: esp32wifi: ssid: !secret wifi_ssid password: !secret wifi_passwordlogger:api:ota:
# Device Specific Configswitch: - 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