Files
esphome-configs/mcu-mains-power.yaml

209 lines
5.1 KiB
YAML

substitutions:
device: mains-power
name: Mains Power
name_1: Mains
comment: "Room: Mains Power Monitoring"
esphome:
name: mcu-${device}
comment: ${comment}
esp32:
board: m5stack-atom
framework:
type: esp-idf
# version: 5.1.2
# platform_version: 6.6.0
packages:
common: !include common/common.yaml
# PINOUTS: M5ATOM
# IR G12
# NEO G27
# BUTTON G39
# I2C0 SDA G26
# I2C0 SCL G32
# I2C1 SDA G25
# I2C1 SCL G21
# UART0 RX G3
# UART0 TX G1
# UART1 RX G23
# UART1 TX G33
# 1-WIRE G22
# NC G19
modbus:
uart_id: uart_modbus
uart:
- id: uart_modbus
rx_pin: 26
tx_pin: 32
baud_rate: 9600
stop_bits: 2
# debug:
sensor:
# - platform: template
# name: "${name_1} Total Daily Energy"
# id: mains_daily_energy
# lambda: |-
# return (id(mains_l1_total_daily_energy).state + id(mains_l3_total_daily_energy).state + id(mains_l3_total_daily_energy).state);
# update_interval: 60s
# L1
- platform: pzemac
address: 10
id: pzemac_l1
current:
name: "${name_1} L1 Current"
voltage:
name: "${name_1} L1 Voltage"
energy:
name: "${name_1} L1 Energy"
id: mains_l1_energy
power:
name: "${name_1} L1 Power"
id: mains_l1_power
frequency:
name: "${name_1} L1 Frequency"
power_factor:
name: "${name_1} L1 Power Factor"
update_interval: 20s
# - platform: total_daily_energy
# name: "${name_1} L1 Total Daily Energy"
# power_id: mains_l1_power
# id: mains_l1_total_daily_energy
# filters:
# - multiply: 0.001
# unit_of_measurement: kWh
# icon: mdi:counter
# - platform: integration
# name: "${name_1} L1 Energy Meter"
# sensor: mains_l1_power
# time_unit: h
# filters:
# - lambda: return x * (0.001) + 2282;
# unit_of_measurement: kWh
# icon: mdi:counter
# L2
- platform: pzemac
address: 11
id: pzemac_l2
current:
name: "${name_1} L2 Current"
voltage:
name: "${name_1} L2 Voltage"
energy:
name: "${name_1} L2 Energy"
id: mains_l2_energy
power:
name: "${name_1} L2 Power"
id: mains_l2_power
frequency:
name: "${name_1} L2 Frequency"
power_factor:
name: "${name_1} L2 Power Factor"
update_interval: 20s
# - platform: total_daily_energy
# name: "${name_1} L2 Total Daily Energy"
# id: mains_l2_total_daily_energy
# power_id: mains_l2_power
# filters:
# - multiply: 0.001
# unit_of_measurement: kWh
# icon: mdi:counter
# - platform: integration
# name: "${name_1} L2 Energy Meter"
# sensor: mains_l2_power
# time_unit: h
# filters:
# - lambda: return x * (0.001) + 2282;
# unit_of_measurement: kWh
# icon: mdi:counter
# L3
- platform: pzemac
address: 12
id: pzemac_l3
current:
name: "${name_1} L3 Current"
voltage:
name: "${name_1} L3 Voltage"
energy:
name: "${name_1} L3 Energy"
id: mains_l3_energy
power:
name: "${name_1} L3 Power"
id: mains_l3_power
frequency:
name: "${name_1} L3 Frequency"
power_factor:
name: "${name_1} L3 Power Factor"
update_interval: 20s
# - platform: total_daily_energy
# name: "${name_1} L3 Total Daily Energy"
# power_id: mains_l3_power
# id: mains_l3_total_daily_energy
# filters:
# - multiply: 0.001
# unit_of_measurement: kWh
# icon: mdi:counter
# - platform: integration
# name: "${name_1} L3 Energy Meter"
# sensor: mains_l3_power
# time_unit: h
# filters:
# - lambda: return x * (0.001) + 2282;
# unit_of_measurement: kWh
# icon: mdi:counter
# TOTAL: L1+L2+L3
- platform: template
name: "${name_1} Power"
id: "total_mains_power"
device_class: power
state_class: measurement
unit_of_measurement: W
accuracy_decimals: 1
lambda: |-
return id(mains_l1_power).state + id(mains_l2_power).state + id(mains_l3_power).state ;
# - platform: template
# name: "${name_1} Total Daily Energy"
# id: "mains_total_daily_energy"
# icon: mdi:counter
# device_class: energy
# # state_class: measurement
# state_class: total_increasing
# unit_of_measurement: kWh
# accuracy_decimals: 1
# lambda: |-
# return id(mains_l1_total_daily_energy).state + id(mains_l2_total_daily_energy).state + id(mains_l3_total_daily_energy).state ;
- platform: template
name: "${name_1} Energy"
icon: mdi:counter
device_class: energy
state_class: total_increasing
unit_of_measurement: kWh
accuracy_decimals: 1
filters:
- multiply: 0.001
lambda: |-
return id(mains_l1_energy).state + id(mains_l2_energy).state + id(mains_l3_energy).state;
button:
- platform: template
name: "${name_1} Energy Zero"
on_press:
- pzemac.reset_energy: pzemac_l1
- pzemac.reset_energy: pzemac_l2
- pzemac.reset_energy: pzemac_l3
time:
- platform: homeassistant
id: ha_time
timezone: Europe/Bratislava
on_time:
- cron: '0 0 0 * * *'
then:
- pzemac.reset_energy: pzemac_l1
- pzemac.reset_energy: pzemac_l2
- pzemac.reset_energy: pzemac_l3