Migrate heating to friendly name and sub devices and rename it to heater

This commit is contained in:
2026-02-11 23:05:21 +01:00
parent d24866b5a2
commit c3a5291927

View File

@@ -1,7 +1,6 @@
substitutions: substitutions:
device: heating device: heater
name: Heating name: Heater
name_1: Heater
area: Basement area: Basement
comment: "${area} | Hot water and Heating control" comment: "${area} | Hot water and Heating control"
@@ -10,17 +9,29 @@ esphome:
friendly_name: ${name} friendly_name: ${name}
area: ${area} area: ${area}
comment: ${comment} comment: ${comment}
areas:
- id: local_area
name: ${area}
devices:
- id: heating
name: Heating
area_id: local_area
- id: hot_water
name: Hot Water
area_id: local_area
esp32: esp32:
board: m5stack-atom variant: esp32
framework: framework:
type: esp-idf type: esp-idf
version: 5.3.2
platform_version: 53.03.11
external_components: external_components:
- source: github://mknjc/esphome@ds248x # - source: github://pr#12717
components: ds248x # components: [ds248x]
# refresh: 1h
- source: github://pr#13534
components: [ds2482, ds2484, ds248x_base]
refresh: 1h
packages: packages:
common: !include common/common.yaml common: !include common/common.yaml
@@ -133,8 +144,9 @@ time:
climate: climate:
- platform: bang_bang - platform: bang_bang
sensor: hot_water_heater sensor: hot_water_heater
name: Hot Water name: ""
id: hot_water_climate id: hot_water_climate
device_id: hot_water
visual: visual:
min_temperature: 40 min_temperature: 40
max_temperature: 65 max_temperature: 65
@@ -160,13 +172,27 @@ i2c:
scl: 21 scl: 21
scan: true #false scan: true #false
ds248x: # one_wire:
# id: one_wire_bus
# # i2c_id: i2c_main
# platform: ds2484
# active_pullup: true
# ds248x:
# id: ds2484_module
# address: 0x18
# active_pullup: true
# one_wire:
# - platform: ds248x
# ds248x_id: ds2484_module
# id: one_wire_bus
one_wire:
id: one_wire_bus
# i2c_id: i2c_main # i2c_id: i2c_main
address: 0x18 # should be the default platform: ds2482
# sleep_pin: 32 # remove if not needed, if set the ds248x sleeps when no transaction is in progress active_pullup: true
active_pullup: true # adds a active pullup which should improve signal integrity
strong_pullup: false # enables a strong pullup used to provide the needed current for temperature reading without vcc connected
bus_sleep: true # power down the bus when no transaction is in progres
modbus: modbus:
uart_id: uart_modbus uart_id: uart_modbus
@@ -185,39 +211,43 @@ pca9554:
switch: switch:
- platform: template - platform: template
name: "Heating Enabled" name: Heating Enabled
id: heating_enabled id: heating_enabled
device_id: heating
optimistic: True optimistic: True
- platform: gpio - platform: gpio
name: "Hot Water Demand" # Hot Water Heating Demand (to Heater) name: Demand # Hot Water Heating Demand (to Heater)
id: hot_water_demand id: hot_water_demand
device_id: hot_water
pin: 22 pin: 22
inverted: true inverted: true
- platform: gpio - platform: gpio
name: "Heating Demand" # Heating Demand (to Heater) name: Demand # Heating Demand (to Heater)
id: heating_demand id: heating_demand
device_id: heating
pin: 19 pin: 19
inverted: true inverted: true
- platform: gpio - platform: gpio
name: "${name_1} Power Level II" name: Power Level II
id: heating_power_level_2 id: heating_power_level_2
pin: pin:
pca9554: pca9554_module pca9554: pca9554_module
number: 4 number: 4
- platform: gpio - platform: gpio
name: "${name_1} Power Level III" name: Power Level III
id: heating_power_level_3 id: heating_power_level_3
pin: pin:
pca9554: pca9554_module pca9554: pca9554_module
number: 5 number: 5
# - platform: uart # - platform: uart
# name: "${name_1} Total Heater Power Reset" # name: Total Heater Power Reset
# uart_id: # uart_id:
# id: reset_total_heater_power # id: reset_total_heater_power
# data: [0x01, 0x42, 0x80, 0x11] # data: [0x01, 0x42, 0x80, 0x11]
sensor: sensor:
- platform: ds248x # - platform: ds248x
- platform: dallas_temp
# [22:06:25][D][dallas.sensor:082]: 0x1701143E35C5AA28 Feed # [22:06:25][D][dallas.sensor:082]: 0x1701143E35C5AA28 Feed
# [22:06:25][D][dallas.sensor:082]: 0x7301143F7F57AA28 Return # [22:06:25][D][dallas.sensor:082]: 0x7301143F7F57AA28 Return
# [22:06:25][D][dallas.sensor:082]: 0xF701143E397FAA28 Heater Tank # [22:06:25][D][dallas.sensor:082]: 0xF701143E397FAA28 Heater Tank
@@ -228,32 +258,40 @@ sensor:
# address: 0x320417500A93FF28 # 1. broken # address: 0x320417500A93FF28 # 1. broken
# address: 0x67041750F44CFF28 # 2. broken # address: 0x67041750F44CFF28 # 2. broken
address: 0x960417517301FF28 # Hot Water Tank - TOP (Heater) address: 0x960417517301FF28 # Hot Water Tank - TOP (Heater)
name: "Hot Water - Heater" name: Heater
id: 'hot_water_heater' id: hot_water_heater
- platform: ds248x device_id: hot_water
# - platform: ds248x
- platform: dallas_temp
address: 0x5A041750B2C8FF28 # Hot Water Tank - Bottom (Solar) address: 0x5A041750B2C8FF28 # Hot Water Tank - Bottom (Solar)
name: "Hot Water - Solar" name: Solar
id: 'hot_water_solar' id: hot_water_solar
- platform: ds248x device_id: hot_water
# - platform: ds248x
- platform: dallas_temp
address: 0xF701143E397FAA28 # Heater Tank address: 0xF701143E397FAA28 # Heater Tank
name: "Heater" name: Temperature
id: 'heater' id: heater
- platform: ds248x # - platform: ds248x
- platform: dallas_temp
address: 0x1701143E35C5AA28 # Heating Water Feed (OUT from Heater, TO System) address: 0x1701143E35C5AA28 # Heating Water Feed (OUT from Heater, TO System)
name: "Heating OUT2" name: OUT2
id: 'heating_out' id: heating_out
- platform: ds248x device_id: heating
# - platform: ds248x
- platform: dallas_temp
address: 0x7301143F7F57AA28 # Heating Water Return (OUT from System, TO Heater) address: 0x7301143F7F57AA28 # Heating Water Return (OUT from System, TO Heater)
name: "Heating IN2" name: IN2
id: 'heating_in' id: heating_in
- platform: template device_id: heating
name: "Heater Total Daily Energy" # - platform: template
id: heater_daily_energy # name: Total Daily Energy
lambda: |- # id: heater_daily_energy
return (id(heater_l1_total_daily_energy).state + id(heater_l3_total_daily_energy).state + id(heater_l3_total_daily_energy).state); # lambda: |-
# return (id(heater_l1_total_daily_energy).state + id(heater_l3_total_daily_energy).state + id(heater_l3_total_daily_energy).state);
update_interval: 60s update_interval: 60s
- platform: template - platform: template
name: 'Heater Daily Energy Price' name: Daily Energy Price
id: heater_energy_price id: heater_energy_price
unit_of_measurement: '€' unit_of_measurement: '€'
lambda: |- lambda: |-
@@ -273,27 +311,27 @@ sensor:
//# prenos spotreba * (0,00398400+0,01146600+0,00327000+0,00629760+0,01590000) = spotreba * 0,0409176 //# prenos spotreba * (0,00398400+0,01146600+0,00327000+0,00629760+0,01590000) = spotreba * 0,0409176
// # 1,1 + (VT * 0,1038) + (NT * 0,069) + (75 * 0,1508) + ((VT+NT) * (0,00398400+0,01146600+0,00327000+0,00629760+0,01590000)) // # 1,1 + (VT * 0,1038) + (NT * 0,069) + (75 * 0,1508) + ((VT+NT) * (0,00398400+0,01146600+0,00327000+0,00629760+0,01590000))
return (id(heater_daily_energy).state * (0.0409176 + 0.069)); return (id(heater_total_daily_energy).state * (0.0409176 + 0.069));
# L1 # L1
- platform: pzemac - platform: pzemac
#address: 161 #address: 161
current: current:
name: "${name_1} L1 Current" name: L1 Current
voltage: voltage:
name: "${name_1} L1 Voltage" name: L1 Voltage
energy: energy:
name: "${name_1} L1 Energy" name: L1 Energy
id: heater_l1_energy id: heater_l1_energy
power: power:
name: "${name_1} L1 Power" name: L1 Power
id: heater_l1_power id: heater_l1_power
frequency: frequency:
name: "${name_1} L1 Frequency" name: L1 Frequency
power_factor: power_factor:
name: "${name_1} L1 Power Factor" name: L1 Power Factor
update_interval: 20s update_interval: 20s
- platform: total_daily_energy - platform: total_daily_energy
name: "${name_1} L1 Total Daily Energy" name: L1 Total Daily Energy
power_id: heater_l1_power power_id: heater_l1_power
id: heater_l1_total_daily_energy id: heater_l1_total_daily_energy
filters: filters:
@@ -301,7 +339,7 @@ sensor:
unit_of_measurement: kWh unit_of_measurement: kWh
icon: mdi:counter icon: mdi:counter
- platform: integration - platform: integration
name: "${name_1} L1 Energy Meter" name: L1 Energy Meter"
sensor: heater_l1_power sensor: heater_l1_power
time_unit: h time_unit: h
filters: filters:
@@ -312,22 +350,22 @@ sensor:
- platform: pzemac - platform: pzemac
address: 162 address: 162
current: current:
name: "${name_1} L2 Current" name: L2 Current
voltage: voltage:
name: "${name_1} L2 Voltage" name: L2 Voltage
energy: energy:
name: "${name_1} L2 Energy" name: L2 Energy
id: heater_l2_energy id: heater_l2_energy
power: power:
name: "${name_1} L2 Power" name: L2 Power
id: heater_l2_power id: heater_l2_power
frequency: frequency:
name: "${name_1} L2 Frequency" name: L2 Frequency
power_factor: power_factor:
name: "${name_1} L2 Power Factor" name: L2 Power Factor
update_interval: 20s update_interval: 20s
- platform: total_daily_energy - platform: total_daily_energy
name: "${name_1} L2 Total Daily Energy" name: L2 Total Daily Energy
id: heater_l2_total_daily_energy id: heater_l2_total_daily_energy
power_id: heater_l2_power power_id: heater_l2_power
filters: filters:
@@ -335,7 +373,7 @@ sensor:
unit_of_measurement: kWh unit_of_measurement: kWh
icon: mdi:counter icon: mdi:counter
- platform: integration - platform: integration
name: "${name_1} L2 Energy Meter" name: L2 Energy Meter
sensor: heater_l2_power sensor: heater_l2_power
time_unit: h time_unit: h
filters: filters:
@@ -346,22 +384,22 @@ sensor:
- platform: pzemac - platform: pzemac
address: 163 address: 163
current: current:
name: "${name_1} L3 Current" name: L3 Current
voltage: voltage:
name: "${name_1} L3 Voltage" name: L3 Voltage
energy: energy:
name: "${name_1} L3 Energy" name: L3 Energy
id: heater_l3_energy id: heater_l3_energy
power: power:
name: "${name_1} L3 Power" name: L3 Power
id: heater_l3_power id: heater_l3_power
frequency: frequency:
name: "${name_1} L3 Frequency" name: L3 Frequency
power_factor: power_factor:
name: "${name_1} L3 Power Factor" name: L3 Power Factor
update_interval: 20s update_interval: 20s
- platform: total_daily_energy - platform: total_daily_energy
name: "${name_1} L3 Total Daily Energy" name: L3 Total Daily Energy
power_id: heater_l3_power power_id: heater_l3_power
id: heater_l3_total_daily_energy id: heater_l3_total_daily_energy
filters: filters:
@@ -369,7 +407,7 @@ sensor:
unit_of_measurement: kWh unit_of_measurement: kWh
icon: mdi:counter icon: mdi:counter
- platform: integration - platform: integration
name: "${name_1} L3 Energy Meter" name: L3 Energy Meter
sensor: heater_l3_power sensor: heater_l3_power
time_unit: h time_unit: h
filters: filters:
@@ -378,8 +416,8 @@ sensor:
icon: mdi:counter icon: mdi:counter
# TOTAL: L1+L2+L3 # TOTAL: L1+L2+L3
- platform: template - platform: template
name: "${name_1} Power" name: Power
id: "total_heater_power" id: total_heater_power
device_class: power device_class: power
state_class: measurement state_class: measurement
unit_of_measurement: W unit_of_measurement: W
@@ -387,8 +425,8 @@ sensor:
lambda: |- lambda: |-
return id(heater_l1_power).state + id(heater_l2_power).state + id(heater_l3_power).state ; return id(heater_l1_power).state + id(heater_l2_power).state + id(heater_l3_power).state ;
- platform: template - platform: template
name: "${name_1} Total Daily Energy" name: Total Daily Energy
id: "heater_total_daily_energy" id: heater_total_daily_energy
icon: mdi:counter icon: mdi:counter
device_class: energy device_class: energy
# state_class: measurement # state_class: measurement
@@ -398,7 +436,7 @@ sensor:
lambda: |- lambda: |-
return id(heater_l1_total_daily_energy).state + id(heater_l2_total_daily_energy).state + id(heater_l3_total_daily_energy).state ; return id(heater_l1_total_daily_energy).state + id(heater_l2_total_daily_energy).state + id(heater_l3_total_daily_energy).state ;
- platform: template - platform: template
name: "${name_1} Energy" name: Energy
icon: mdi:counter icon: mdi:counter
device_class: energy device_class: energy
state_class: total_increasing state_class: total_increasing
@@ -411,7 +449,7 @@ sensor:
binary_sensor: binary_sensor:
- platform: gpio - platform: gpio
name: "${name} Off Peak" # Off Peak (HDO) name: Off Peak # Off Peak (HDO)
id: off_peak_status id: off_peak_status
pin: pin:
pca9554: pca9554_module pca9554: pca9554_module
@@ -420,7 +458,7 @@ binary_sensor:
- delayed_on: 300ms - delayed_on: 300ms
- delayed_off: 300ms - delayed_off: 300ms
- platform: gpio - platform: gpio
name: "${name} ON" # Heater ON name: "ON" # Heater ON
id: heater_on id: heater_on
pin: pin:
pca9554: pca9554_module pca9554: pca9554_module
@@ -429,7 +467,7 @@ binary_sensor:
- delayed_on: 300ms - delayed_on: 300ms
- delayed_off: 300ms - delayed_off: 300ms
- platform: gpio - platform: gpio
name: "${name} Error" name: Error
id: heating_error id: heating_error
pin: pin:
pca9554: pca9554_module pca9554: pca9554_module
@@ -439,7 +477,7 @@ binary_sensor:
- delayed_off: 300ms - delayed_off: 300ms
- platform: template - platform: template
id: heater_alarm id: heater_alarm
name: "Heater Alarm" name: Alarm
lambda: |- lambda: |-
if (id(off_peak_status).state && (id(heating_demand).state || id(heating_power_level_2).state) && !id(heater_on).state) { if (id(off_peak_status).state && (id(heating_demand).state || id(heating_power_level_2).state) && !id(heater_on).state) {
return true; return true;
@@ -449,12 +487,15 @@ binary_sensor:
- platform: homeassistant - platform: homeassistant
id: trv_heating_demand id: trv_heating_demand
entity_id: binary_sensor.trv_heating_demand entity_id: binary_sensor.trv_heating_demand
device_id: heating
- platform: homeassistant - platform: homeassistant
id: heating_fireplace_fire id: heating_fireplace_fire
entity_id: binary_sensor.heating_fireplace_fire entity_id: binary_sensor.heating_fireplace_fire
device_id: heating
- platform: template - platform: template
id: request_heating_demand id: request_heating_demand
name: "Request Heating Demand" name: Request Demand
device_id: heating
lambda: |- lambda: |-
if (id(trv_heating_demand).state && id(heating_enabled).state && !id(heating_fireplace_fire).state) { if (id(trv_heating_demand).state && id(heating_enabled).state && !id(heating_fireplace_fire).state) {
return true; return true;