Skip to content

Instantly share code, notes, and snippets.

@jungervin
Last active October 10, 2021 07:40
Show Gist options
  • Save jungervin/8cf196d58637fdfd16d317b794123744 to your computer and use it in GitHub Desktop.
Save jungervin/8cf196d58637fdfd16d317b794123744 to your computer and use it in GitHub Desktop.
######################################################################
# OLDER BW VERSION
# https://blog.quindorian.org/2019/02/home-assistant-10-wifi-energy-meter-with-esphome.html
######################################################################
esphomeyaml:
name: bw2
platform: ESP8266
board: esp8285
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable logging
logger:
# Enable Web server
web_server:
port: 80
# Enable Home Assistant API
api:
password: !secret hass_api
ota:
password: !secret hass_api
time:
- platform: homeassistant
id: homeassistant_time
binary_sensor:
- platform: gpio
pin:
number: GPIO3
inverted: True
name: "bw2_button"
switch:
- platform: gpio
name: "bw2_Relay"
pin: GPIO14
restore_mode: ALWAYS_ON
- platform: gpio
name: "bw2_LED_Blue"
pin: GPIO1
inverted: True
restore_mode: ALWAYS_OFF
- platform: gpio
name: "bw2_LED_Red"
pin: GPIO13
inverted: True
restore_mode: ALWAYS_OFF
sensor:
- platform: hlw8012
sel_pin:
number: GPIO12
inverted: True
cf_pin: GPIO04
cf1_pin: GPIO05
# Higher value gives lower watt readout
current_resistor: 0.00221
# Lower value gives lower voltage readout
voltage_divider: 895
current:
name: "bw2_Amperage"
unit_of_measurement: A
voltage:
name: "bw2_Voltage"
unit_of_measurement: V
power:
name: "bw2_Wattage"
unit_of_measurement: W
id: "bw2_Wattage"
change_mode_every: 8
update_interval: 10s
- platform: total_daily_energy
name: "bw2_Total Daily Energy"
power_id: "bw2_Wattage"
filters:
# Multiplication factor from W to kW is 0.001
- multiply: 0.001
unit_of_measurement: kWh
# Extra sensor to keep track of plug uptime
- platform: uptime
name: bw2_Uptime Sensor
######################################################################
# NEWER BW VERSION
######################################################################
esphomeyaml:
name: bw3
platform: ESP8266
board: esp8285
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable logging
logger:
# Enable Web server
web_server:
port: 80
# Enable Home Assistant API
api:
password: !secret hass_api
ota:
password: !secret hass_api
time:
- platform: homeassistant
id: homeassistant_time
binary_sensor:
- platform: gpio
pin:
number: GPIO13
inverted: True
name: "bw3_button"
switch:
- platform: gpio
name: "bw3_Relay"
pin: GPIO15
restore_mode: ALWAYS_ON
- platform: gpio
name: "bw3_LED_Blue"
pin: GPIO2
inverted: True
restore_mode: ALWAYS_OFF
- platform: gpio
name: "bw3_LED_Red"
pin: GPIO0
inverted: True
restore_mode: ALWAYS_OFF
sensor:
- platform: hlw8012
sel_pin:
number: GPIO12
inverted: True
cf_pin: GPIO5
cf1_pin: GPIO14
# Higher value gives lower watt readout
#current_resistor: 0.00221
#current_resistor: 0.00089
current_resistor: 0.00091
# Lower value gives lower voltage readout
#voltage_divider: 904
#voltage_divider: 914
voltage_divider: 924
current:
name: "bw3_Amperage"
unit_of_measurement: A
voltage:
name: "bw3_Voltage"
unit_of_measurement: V
power:
name: "bw3_Wattage"
unit_of_measurement: W
id: "bw3_Wattage"
change_mode_every: 8
update_interval: 10s
- platform: total_daily_energy
name: "bw3_Total Daily Energy"
power_id: "bw3_Wattage"
filters:
# Multiplication factor from W to kW is 0.001
- multiply: 0.001
unit_of_measurement: kWh
# Extra sensor to keep track of plug uptime
- platform: uptime
name: bw3_Uptime Sensor
######################################################################
## BETTER VERSION FOR NEW BW
## https://github.com/mjoshd/esphome_teckin-sp20
######################################################################
substitutions:
# https://esphome.io/guides/configuration-types.html#substitutions
device_name: bw3
friendly_name: bw3
#ip_address: !secret teckin_sp20_ip
esphome:
# https://esphome.io/components/esphome
name: $device_name
platform: ESP8266
board: esp8285
wifi:
# https://esphome.io/components/wifi
ssid: !secret wifi_ssid
password: !secret wifi_password
# manual_ip:
# static_ip: $ip_address
# gateway: !secret wifi_gateway
# subnet: !secret wifi_subnet
# dns1: !secret wifi_dns1
web_server:
port: 80
# https://esphome.io/components/web_server.html
logger:
# https://esphome.io/components/logger
api:
password: !secret hass_api
# https://esphome.io/components/api
ota:
password: !secret hass_api
# https://esphome.io/components/ota
sensor:
- platform: hlw8012
# https://esphome.io/components/sensor/hlw8012.html
# current, power, voltage can all use sensor options https://esphome.io/components/sensor/#config-sensor
sel_pin:
number: GPIO12
inverted: True
cf_pin: GPIO5
cf1_pin: GPIO14
current:
name: $friendly_name Current
power:
name: $friendly_name Power
id: power_monitor_value
filters:
- lambda: return (x / 2.2);
voltage:
name: $friendly_name Voltage
current_resistor: 0.001 # default 0.001
voltage_divider: 924 # default 2351
change_mode_every: 3 # default 8
update_interval: 3s # default 60s
- platform: total_daily_energy
# https://esphome.io/components/sensor/total_daily_energy.html
name: $friendly_name Total Daily Energy
power_id: power_monitor_value
filters:
- multiply: 0.001 # convert Wh to kWh
unit_of_measurement: kWh
status_led:
# https://esphome.io/components/status_led
pin:
number: GPIO0
inverted: True
output:
# https://esphome.io/components/output/esp8266_pwm.html
- platform: esp8266_pwm
id: blue_led_output
pin:
number: GPIO2
inverted: True
light:
# https://esphome.io/components/light/monochromatic.html
- platform: monochromatic
name: $friendly_name Blue LED
output: blue_led_output
id: blue_led
default_transition_length: 1ms # default 1s
internal: True
binary_sensor:
- platform: gpio
# https://esphome.io/components/binary_sensor/gpio.html
pin:
number: GPIO13
id: button
name: $friendly_name Button
on_press:
- switch.toggle: relay_template
internal: True
switch:
- platform: gpio
# https://esphome.io/components/switch/gpio
pin: GPIO15
id: relay
# tie the led & relay operation together and report status based on relay state
- platform: template
# https://esphome.io/components/switch/template.html
name: $friendly_name Relay
id: relay_template
lambda: |-
if (id(relay).state) {
return true;
} else {
return false;
}
turn_on_action:
- light.turn_on: blue_led
- switch.turn_on: relay
turn_off_action:
- light.turn_off: blue_led
- switch.turn_off: relay
# optimistic: true # this will change the toggle switch to individual on/off buttons
# Enable time component to reset energy at midnight
time:
- platform: sntp
id: my_time
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment