devices.esphome.io
BlitzWolf BW-SHP3 Power Monitoring Plug
BlitzWolf BW-SHP3 Power Monitoring Plug
Device Type: plugElectrical Standard: usBoard: esp8266
Model reference: BW-SHP3
Manufacturer: BlitzWolf
Configuration
GPIO Pinout
| Pin | Function | 
|---|---|
| GPIO00 | Right Power LED (Inverted: true) | 
| GPIO02 | Blue Status LED (Inverted: true) | 
| GPIO13 | Left Button | 
| GPIO04 | Left Relay | 
| GPIO16 | Right Button | 
| GPIO15 | Right Relay | 
| GPIO12 | HLWBL SEL Pin | 
| GPIO05 | HLW8012 CF Pin | 
| GPIO14 | HLWBL CF1 Pin | 
Flashing
Unfortunately, unless you have a much older model, or already flashed one with Tasmota or similar, you will have to destroy the case to get at the pins inside as Tuya-convert does not work with newer firmwares. My single SHP3 was old enough that I had originally flashed it with Tasmota via tuya-convert, and just recently replaced it with ESPHome.
YAML
I love the flexibility that ESPHome gives me. In Tasmota, the right power indicator LED and the blue status LED were not easily controlled. With this setup, the red power indicators work properly (the left one requires no setup——it just works), and the blue status LED will indicate WiFi issues, etc.
I have omitted the basic WiFi and other default settings here for brevity, and only included what is actually required by the switch.
substitutions:  comment: "(Blitzwolf SHP3) -- Device host: bw-shp3-01.local"  platform: ESP8266  board: esp01_1m  devicename: your_device_name  propername: "Your Friendly Name"  current_res: "0.00221" # Random value. Requires power monitoring calibration  voltage_div: "955" # Random value. Requires power monitoring calibration
# Include your connection, API, etc. settings here
sensor:  # Reports the Current, Voltage, and Power used by the plugged-in device  - platform: hlw8012    sel_pin:      number: GPIO12      inverted: true    cf_pin: GPIO5    cf1_pin: GPIO14    change_mode_every: 8    update_interval: 10s    current:      name: ${propername} Amperage      icon: mdi:current-ac      unit_of_measurement: A    voltage:      name: ${propername} Voltage      icon: mdi:flash-circle      unit_of_measurement: V    power:      id: wattage      name: ${propername} Wattage      icon: mdi:flash-outline      unit_of_measurement: W    current_resistor: ${current_res}    voltage_divider: ${voltage_div}
  # Reports the total Power so-far each day, resets at midnight, see https://esphome.io/components/sensor/total_daily_energy.html  - platform: total_daily_energy    name: ${propername} Total Daily Energy    icon: mdi:circle-slice-3    power_id: wattage    filters:      # Multiplication factor from W to kW is 0.001      - multiply: 0.001    unit_of_measurement: kWh
binary_sensor:  - platform: gpio    device_class: power    internal: true    pin:      number: GPIO16      mode: INPUT_PULLUP    name: ${propername} Right Button    on_press:      - switch.toggle: relay1  - platform: gpio    device_class: power    internal: true    pin:      number: GPIO13      mode: INPUT_PULLUP    name: ${propername} Left Button    on_press:      - switch.toggle: relay2
switch:  - platform: gpio    name: "${propername} Right Outlet"    pin: GPIO15    id: relay1    restore_mode: RESTORE_DEFAULT_OFF    on_turn_on:      then:        - output.turn_on: right_power_indicator    on_turn_off:      then:        - output.turn_off: right_power_indicator  - platform: gpio    name: "${propername} Left Outlet"    pin: GPIO4    id: relay2    restore_mode: RESTORE_DEFAULT_OFF
output:- platform: gpio  id: right_power_indicator  pin:    number: GPIO00    inverted: True
status_led:  pin:    number: GPIO02    inverted: True