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: "Wh" # 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