You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

159 lines
4.5 KiB

esphome:
name: ${devicename}
friendly_name: ${friendly_name}
esp8266:
board: esp12e
# https://esphome.io/components/esp8266.html
# https://github.com/esphome/issues/issues/3263
# Stops relay from cycling when restarting or flashing
early_pin_init: false
logger:
baud_rate: 0 # (UART logging interferes with cse7766)
logs:
sensor: DEBUG # (Overide any global setting, to VERBOSE will spamming the cse7766 sensors)
uart:
rx_pin: RX
baud_rate: 4800
parity: EVEN
globals:
# Global boolean containing value if confirm is selected.
- id: confirm_restart
type: bool
restore_value: no
initial_value: 'false'
binary_sensor:
- platform: gpio
pin:
number: GPIO0
mode: INPUT_PULLUP
inverted: True
internal: true
id: the_button
on_press:
- switch.toggle: relay
- platform: status
name: Status
sensor:
# Wifi Signal
- <<: !include ../common/sensors/wifi-signal.yaml
# Uptime
- <<: !include ../common/sensors/uptime.yaml
# Energy monitoring
- platform: cse7766
current: # amperes
name: "Current"
accuracy_decimals: 2 # Default
unit_of_measurement: "A" # Default
device_class: "current" # Default
state_class: "measurement" # Default
filters:
- throttle_average: 15s
voltage:
name: "Voltage"
accuracy_decimals: 2 # Default
unit_of_measurement: "V" # Default
device_class: "voltage" # Default
state_class: "measurement" # Default
filters:
- throttle_average: 15s
power: # (active) power value of the sensor in watts
name: "Power"
id: my_power
accuracy_decimals: 2 # Default
unit_of_measurement: "W" # Default
device_class: "power" # Default
state_class: "measurement" # Default
filters:
- throttle_average: 15s
energy: # total (active) energy value of the sensor in Wh
name: "Energy"
accuracy_decimals: 3 # Default
unit_of_measurement: "kWh" # Default
device_class: energy # Default
state_class: total_increasing # Default
filters:
- throttle: 15s
apparent_power: # apparent power value of the sensor in VA - (only available with version 2024.3.0 or greater)
name: "Apparent Power"
accuracy_decimals: 1 # Default
unit_of_measurement: "VA" # Default
device_class: apparent_power # Default
state_class: measurement # Default
filters:
- throttle_average: 15s
power_factor: # efficiency - (only available with version 2024.3.0 or greater)
name: "Power Factor"
accuracy_decimals: 2
unit_of_measurement: "" # Default (unitless)
device_class: power_factor # Default
state_class: measurement # Default
filters:
- throttle_average: 15s
- platform: total_daily_energy # (Optional, not specific to cse7766)
name: "Daily Energy"
power_id: my_power
accuracy_decimals: 2
unit_of_measurement: "Wh" # Default
device_class: energy # Default
state_class: total_increasing # Default
switch:
- platform: gpio
name: "Relay"
pin: GPIO12
id: relay
# AWLAYS_OFF should probably be used if we're not using early_pin_init: false
# restore_mode: ALWAYS_OFF # Powering the relay may cause damage or instability when the programmer is supplying Vcc.
# It is assumed this switch is used for a piece of critical infrastructure.
# As such, we want it to remain ON turing reboots.
# Lastly- the only functionality exposed for interacting with this relay, is to quickly power cycle it.
restore_mode: ALWAYS_ON
# Hide from home assistant / mqtt.
internal: false
# Expose a "confirm restart" switch.
- platform: template
name: Confirm Restart
id: confirm_restart_sw
icon: mdi:alert
lambda: |-
return id(confirm_restart);
turn_on_action:
- lambda: |-
id(confirm_restart) = true;
turn_off_action:
- lambda: |-
id(confirm_restart) = false;
button:
# Restart Button
- <<: !include ../common/buttons/restart.yaml
- platform: template
name: Power Cycle
icon: mdi:restart-alert
on_press:
- if:
condition:
lambda: 'return id(confirm_restart);'
then:
- switch.turn_off: relay
- delay: 0.5s
- switch.turn_on: relay
# Turn off confirm switch after cycling relay
- switch.turn_off: confirm_restart_sw
status_led:
pin:
number: GPIO13
inverted: yes