BlitzWolf BW-SHP8 Power Monitoring Wall Outlet

esp8266 eu Comes with ESPHome plug
BlitzWolf BW-SHP8 Power Monitoring Wall Outlet - BlitzWolf-BW-SHP8-Power-Monitoring-Wall-Outlet.jpg

Overview

Model reference: BW-SHP8 Manufacturer: BlitzWolf

GPIO Pinout

PinFunction
GPIO03Push Button (inverted, input_pullup)
GPIO13Blue LED (inverted)
GPIO01Red LED (inverted)
GPIO14Relay
GPIO12HLWBL SEL Pin
GPIO04HLW8012 CF Pin
GPIO05HLWBL CF1 Pin

Config

Parcial Config

substitutions:
  hostname: "BW-SHP8"
  # Higher value gives lower watt readout
  current_resistor: "0.001"
  # Lower value gives lower voltage readout
  voltage_divider: "1727"
  
  restore_mode: "ALWAYS_ON"
esphome:
  platform: ESP8266
  board: esp8285
binary_sensor:
  - platform: gpio
    id: button
    pin:
      number: GPIO03
      inverted: true
      mode: INPUT_PULLUP
    on_press:
      then:
        - switch.toggle: relay
switch:
  - platform: gpio
    name: "$hostname power"
    id: relay
    pin: GPIO14
    restore_mode: $restore_mode
    icon: "mdi:power-socket-de"
    on_turn_on:
      - light.turn_on: led
    on_turn_off:
      - light.turn_off: led
output:
  - platform: esp8266_pwm
    id: state_led
    pin:
      number: GPIO01
      inverted: true
light:
  - platform: monochromatic
    output: state_led
    id: led
sensor:
  - platform: hlw8012
    model: BL0937
    current_resistor: $current_resistor
    voltage_divider: $voltage_divider
    change_mode_every: 2
    update_interval: 2s
    sel_pin:
      number: GPIO12
      inverted: True
    cf_pin: GPIO04
    cf1_pin: GPIO05
    current:
      name: "$hostname current"
      unit_of_measurement: A
      id: current
      accuracy_decimals: 3
    voltage:
      name: "$hostname voltage"
      unit_of_measurement: V
      id: voltage
      accuracy_decimals: 3
    power:
      name: "$hostname power"
      unit_of_measurement: W
      id: power
      accuracy_decimals: 3
  - platform: template
    name: "$hostname apparent power"
    id: apparent
    unit_of_measurement: VA
    accuracy_decimals: 3
    lambda: |-
      return id(voltage).state * id(current).state;
  - platform: template
    name: "$hostname reactive power"
    id: reactive_power
    unit_of_measurement: VAr
    accuracy_decimals: 3
    lambda: |-
      if ( id(apparent).state > id(power).state ) {
        return sqrt( id(apparent).state * id(apparent).state - id(power).state * id(power).state );
      } else {
        return 0;
      }
  - platform: template
    name: "$hostname power factor"
    accuracy_decimals: 1
    lambda: |-
      if ( id(power).state > id(apparent).state ) {
        return 1;
      } else if ( id(apparent).state == 0 ){
        return 0;
      } else {
        return id(power).state / (id(apparent).state);
      }
status_led:
  pin:
    number: GPIO13
    inverted: true