devices.esphome.io

BlitzWolf BW-SHP8 Power Monitoring Wall Outlet

BlitzWolf BW-SHP8 Power Monitoring Wall Outlet

Device Type: plug
Electrical Standard: eu
Board: esp8266

alt text

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
Edit this page on GitHub