В связи с нововведениями в интеграции
Utility Meter, на основе которых была создана моя предыдущая
Автоматизация работы бойлера в Home Assistant, из-за неработающей utility_meter.select_tariff моя автоматизация
перестала переключать тарифы день-ночь. В итоге пришлось переписать всю
автоматизацию в файле boiler.yaml, чтобы она соответствовала всем нововведениям в интеграции
Utility Meter. Теперь она выглядит вот так:
############################################################################################# # Входные датчики: # ** Текущая потребляема мощность от SonOff POW в W (Вт) # sensor.sonoff_pow_power # Выходные датчики: # ** Количество потребленной энергии входного датчика в kWh (кВт·ч) # energy_sonoff_pow_001 # ** Потребление по дневному, ночному тарифу, общее за месяц в kWh (кВт·ч) # sensor.sonoff_pow_monthly_energy_001_day # sensor.sonoff_pow_monthly_energy_001_night # sensor.energy_total_month_sonoff_pow_001 # ** Потребление по дневному, ночному тарифу, общее за неделю в kWh (кВт·ч) # sensor.sonoff_pow_weekly_energy_001_day # sensor.sonoff_pow_weekly_energy_001_night # sensor.energy_total_weekly_sonoff_pow_001 # ** Потребление по дневному, ночному тарифу, общее за сутки в kWh (кВт·ч) # sensor.sonoff_pow_daily_energy_001_day # sensor.sonoff_pow_daily_energy_001_night # sensor.energy_total_day_sonoff_pow_001 # ** Стоимость потребленной энергии за день, месяц, год согласно тарифов # sensor.energy_payment_day_sonoff_pow_001 # sensor.energy_payment_week_sonoff_pow_001 # sensor.energy_payment_month_sonoff_pow_001 ############################################################################################## # Блог автора https://mynobook.blogspot.com ############################################################################################## sensor: # Расчет потребляемой мощности - на входе Вт (W) на выходе кВт/ч (kWh) - platform: integration source: sensor.sonoff_pow_power name: energy_sonoff_pow_001 unit_prefix: k round: 3 input_boolean: # Создание виртуального выключателя включения ночного режима boiler_001_night: name: Automation only night tariff initial: on icon: mdi:calendar-check # Создание виртуального выключателя автоотключения бойлер boiler_001_auto_off: name: Boiler autopower Off initial: on icon: mdi:flash-auto template: - sensor: ############################################################################################################ # # Расчет общего (дневного и ночного) потребления электроэнергии # Перед сложением дневного и ночного потребления идет проверка при помощи is_number(), что значения являются # числом. Если возвращается false - сложение не производится. # ############################################################################################################ # Расчет общего (дневного и ночного) ежедневного потребления электроэнергии - name: energy_total_day_sonoff_pow_001 device_class: energy unit_of_measurement: kWh state: > {% if is_number(states('sensor.sonoff_pow_daily_energy_001_day')) and is_number(states('sensor.sonoff_pow_daily_energy_001_night')) %} {{ states('sensor.sonoff_pow_daily_energy_001_day') | float + states('sensor.sonoff_pow_daily_energy_001_night') | float }} {% else %} None {% endif %} # Расчет общего (дневного и ночного) еженедельного потребления электроэнергии - name: energy_total_weekly_sonoff_pow_001 device_class: energy unit_of_measurement: kWh state: > {% if is_number(states('sensor.sonoff_pow_weekly_energy_001_day')) and is_number(states('sensor.sonoff_pow_weekly_energy_001_night')) %} {{ states('sensor.sonoff_pow_weekly_energy_001_day') | float + states('sensor.sonoff_pow_weekly_energy_001_night') | float }} {% else %} None {% endif %} # Расчет общего (дневного и ночного) ежемесячного потребления электроэнергии - name: energy_total_month_sonoff_pow_001 device_class: energy unit_of_measurement: kWh state: > {% if is_number(states('sensor.sonoff_pow_monthly_energy_001_day')) and is_number(states('sensor.sonoff_pow_monthly_energy_001_night')) %} {{ states('sensor.sonoff_pow_monthly_energy_001_day') | float + states('sensor.sonoff_pow_monthly_energy_001_night') | float }} {% else %} None {% endif %} ############################################################################################################ # # Расчет суммы к оплате за потребленную электроэнергию # ############################################################################################################ # Расчет суммы за потребленную энергию (по дневному и ночному тарифу) за день - name: energy_payment_day_sonoff_pow_001 device_class: monetary unit_of_measurement: ₴ state: > {{(states('sensor.sonoff_pow_daily_energy_001_day')|float*states('input_number.energy_tariff_day')|float+states('sensor.sonoff_pow_daily_energy_001_night')|float*states('input_number.energy_tariff_night')|float)|round(2)}} # Расчет суммы за потребленную энергию (по дневному и ночному тарифу) за неделю - name: energy_payment_week_sonoff_pow_001 device_class: monetary unit_of_measurement: ₴ state: > {{(states('sensor.sonoff_pow_weekly_energy_001_day')|float*states('input_number.energy_tariff_day')|float+states('sensor.sonoff_pow_weekly_energy_001_night')|float*states('input_number.energy_tariff_night')|float)|round(2)}} # Расчет суммы за потребленную энергию (по дневному и ночному тарифу) за месяц - name: energy_payment_month_sonoff_pow_001 device_class: monetary unit_of_measurement: ₴ state: > {{(states('sensor.sonoff_pow_monthly_energy_001_day')|float*states('input_number.energy_tariff_day')|float+states('sensor.sonoff_pow_monthly_energy_001_night')|float*states('input_number.energy_tariff_night')|float)|round(2)}} utility_meter: sonoff_pow_daily_energy_001: source: sensor.energy_sonoff_pow_001 cycle: daily tariffs: - day - night sonoff_pow_weekly_energy_001: source: sensor.energy_sonoff_pow_001 cycle: weekly tariffs: - day - night sonoff_pow_monthly_energy_001: source: sensor.energy_sonoff_pow_001 cycle: monthly tariffs: - day - night automation: # Переключение тарифов день-ночь - id: switch_energy_tariffs_001 alias: switch energy tariffs_001 initial_state: true trigger: - platform: time at: "07:00:00" variables: tariff: "day" - platform: time at: "23:00:00" variables: tariff: "night" action: - service: select.select_option target: entity_id: select.sonoff_pow_daily_energy_001 data: option: "{{ tariff }}" - service: select.select_option target: entity_id: select.sonoff_pow_monthly_energy_001 data: option: "{{ tariff }}" - service: select.select_option target: entity_id: select.sonoff_pow_weekly_energy_001 data: option: "{{ tariff }}" # Автоотключение бойлера # Если потребление бойлера менее 10Вт в течение 1 минуты по дневному тарифу, то отключить бойлер - id: auto_boiler_off_001 alias: "Boiler Auto Power OFF" initial_state: true # hide_entity: true trigger: - platform: numeric_state entity_id: sensor.sonoff_pow_power below: 10 for: minutes: 1 condition: - condition: state entity_id: input_boolean.boiler_001_auto_off state: 'on' - condition: state entity_id: switch.sonoff_pow_relay state: 'on' - condition: time after: '07:00:00' before: '23:00:00' action: - service: switch.turn_off data: entity_id: switch.sonoff_pow_relay # Ночной режим - автоматическое включение бойлера в 23:05 (если выключен) - id: boiler_on_23_001 alias: "Boiler Power ON" initial_state: true # hide_entity: true trigger: - platform: time at: "23:05:00" condition: - condition: state entity_id: input_boolean.boiler_001_night state: 'on' - condition: state entity_id: switch.sonoff_pow_relay state: 'off' action: - service: switch.turn_on data: entity_id: switch.sonoff_pow_relay # Ночной режим - автоматическое выключение бойлера в 06:55 (если включен) - id: boiler_off_7_001 alias: "Boiler Power ON" initial_state: true # hide_entity: true trigger: - platform: time at: "06:55:00" condition: - condition: state entity_id: input_boolean.boiler_001_night state: 'on' - condition: state entity_id: switch.sonoff_pow_relay state: 'on' action: - service: switch.turn_off data: entity_id: switch.sonoff_pow_relay
Данным кодом можно заменить
содержимое файла boiler.yaml
из предыдущей статьи, заменив название сенсора sensor.sonoff_pow_power на
то, которое у вашего измерителя потребляемой электроэнергии и
switch.sonoff_pow_relay на то как это реле называется у Вас. При желании в
configuration.yaml и ui-lovelace.yaml ничего менять не надо,
все остается так, как мы прописали в
предыдущей статье.
У
себя я сделал добавил в учет электропотребления еще и стиралку и создал
отдельный блок для ввода тарифов.
Для этого я в configuration.yaml добавил еще одно расположение файла packages с именем washer.yaml, ввод тарифов за электроэнергию оставил без изменений:
homeassistant: packages: pack_1: !include washer.yaml pack_2: !include boiler.yaml input_number: # Стоимость тарифов для бойлера energy_tariff_day: name: Дневной тариф (Т1) min: 0.1 max: 3 step: 0.01 mode: box energy_tariff_night: name: Ночной тариф (Т2) min: 0.1 max: 3 step: 0.01 mode: box
Далее я
создал файл washer.yaml с содержимым, аналогичным файлу boiler.yaml, за исключением
того что сенсор sensor.sonoff_pow_power я заменил
на sensor.blitzwolf_bw_shp6_pro_wattage (стиралку
я включаю через
BlitzWolf BW-SHP6 Pro на ESPHome) и все «001» заменил на
«002» (через Ctrl+F).
В итоге файл washer.yaml выглядеть так (т.к. автовключение – автовыключение для стиралки не используется – я switch.sonoff_pow_relay на switch.blitzwolf_bw_shp6_pro_relay не менял. В идеале стоило бы удалить все что ниже строки # Автоотключение бойлера, т.к. оно все равно не используется, но я этого делать не стал):
############################################################################################# # Входные датчики: # ** Текущая потребляема мощность от SonOff POW в W (Вт) # sensor.sonoff_pow_power # Выходные датчики: # ** Количество потребленной энергии входного датчика в kWh (кВт·ч) # energy_sonoff_pow_002 # ** Потребление по дневному, ночному тарифу, общее за месяц в kWh (кВт·ч) # sensor.sonoff_pow_monthly_energy_002_day # sensor.sonoff_pow_monthly_energy_002_night # sensor.energy_total_month_sonoff_pow_002 # ** Потребление по дневному, ночному тарифу, общее за неделю в kWh (кВт·ч) # sensor.sonoff_pow_weekly_energy_002_day # sensor.sonoff_pow_weekly_energy_002_night # sensor.energy_total_weekly_sonoff_pow_002 # ** Потребление по дневному, ночному тарифу, общее за сутки в kWh (кВт·ч) # sensor.sonoff_pow_daily_energy_002_day # sensor.sonoff_pow_daily_energy_002_night # sensor.energy_total_day_sonoff_pow_002 # ** Стоимость потребленной энергии за день, месяц, год согласно тарифов # sensor.energy_payment_day_sonoff_pow_002 # sensor.energy_payment_week_sonoff_pow_002 # sensor.energy_payment_month_sonoff_pow_002 ############################################################################################## # Блог автора https://mynobook.blogspot.com ############################################################################################## sensor: # Расчет потребляемой мощности - на входе Вт (W) на выходе кВт/ч (kWh) - platform: integration source: sensor.blitzwolf_bw_shp6_pro_wattage name: energy_sonoff_pow_002 unit_prefix: k round: 3 input_boolean: # Создание виртуального выключателя включения ночного режима boiler_002_night: name: Automation only night tariff initial: on icon: mdi:calendar-check # Создание виртуального выключателя автоотключения бойлер boiler_002_auto_off: name: Boiler autopower Off initial: on icon: mdi:flash-auto template: - sensor: ############################################################################################################ # # Расчет общего (дневного и ночного) потребления электроэнергии # Перед сложением дневного и ночного потребления идет проверка при помощи is_number(), что значения являются # числом. Если возвращается false - сложение не производится. # ############################################################################################################ # Расчет общего (дневного и ночного) ежедневного потребления электроэнергии - name: energy_total_day_sonoff_pow_002 device_class: energy unit_of_measurement: kWh state: > {% if is_number(states('sensor.sonoff_pow_daily_energy_002_day')) and is_number(states('sensor.sonoff_pow_daily_energy_002_night')) %} {{ states('sensor.sonoff_pow_daily_energy_002_day') | float + states('sensor.sonoff_pow_daily_energy_002_night') | float }} {% else %} None {% endif %} # Расчет общего (дневного и ночного) еженедельного потребления электроэнергии - name: energy_total_weekly_sonoff_pow_002 device_class: energy unit_of_measurement: kWh state: > {% if is_number(states('sensor.sonoff_pow_weekly_energy_002_day')) and is_number(states('sensor.sonoff_pow_weekly_energy_002_night')) %} {{ states('sensor.sonoff_pow_weekly_energy_002_day') | float + states('sensor.sonoff_pow_weekly_energy_002_night') | float }} {% else %} None {% endif %} # Расчет общего (дневного и ночного) ежемесячного потребления электроэнергии - name: energy_total_month_sonoff_pow_002 device_class: energy unit_of_measurement: kWh state: > {% if is_number(states('sensor.sonoff_pow_monthly_energy_002_day')) and is_number(states('sensor.sonoff_pow_monthly_energy_002_night')) %} {{ states('sensor.sonoff_pow_monthly_energy_002_day') | float + states('sensor.sonoff_pow_monthly_energy_002_night') | float }} {% else %} None {% endif %} ############################################################################################################ # # Расчет суммы к оплате за потребленную электроэнергию # ############################################################################################################ # Расчет суммы за потребленную энергию (по дневному и ночному тарифу) за день - name: energy_payment_day_sonoff_pow_002 device_class: monetary unit_of_measurement: ₴ state: > {{(states('sensor.sonoff_pow_daily_energy_002_day')|float*states('input_number.energy_tariff_day')|float+states('sensor.sonoff_pow_daily_energy_002_night')|float*states('input_number.energy_tariff_night')|float)|round(2)}} # Расчет суммы за потребленную энергию (по дневному и ночному тарифу) за неделю - name: energy_payment_week_sonoff_pow_002 device_class: monetary unit_of_measurement: ₴ state: > {{(states('sensor.sonoff_pow_weekly_energy_002_day')|float*states('input_number.energy_tariff_day')|float+states('sensor.sonoff_pow_weekly_energy_002_night')|float*states('input_number.energy_tariff_night')|float)|round(2)}} # Расчет суммы за потребленную энергию (по дневному и ночному тарифу) за месяц - name: energy_payment_month_sonoff_pow_002 device_class: monetary unit_of_measurement: ₴ state: > {{(states('sensor.sonoff_pow_monthly_energy_002_day')|float*states('input_number.energy_tariff_day')|float+states('sensor.sonoff_pow_monthly_energy_002_night')|float*states('input_number.energy_tariff_night')|float)|round(2)}} utility_meter: sonoff_pow_daily_energy_002: source: sensor.energy_sonoff_pow_002 cycle: daily tariffs: - day - night sonoff_pow_weekly_energy_002: source: sensor.energy_sonoff_pow_002 cycle: weekly tariffs: - day - night sonoff_pow_monthly_energy_002: source: sensor.energy_sonoff_pow_002 cycle: monthly tariffs: - day - night automation: # Переключение тарифов день-ночь - id: switch_energy_tariffs_002 alias: switch energy tariffs_002 initial_state: true trigger: - platform: time at: "07:00:00" variables: tariff: "day" - platform: time at: "23:00:00" variables: tariff: "night" action: - service: select.select_option target: entity_id: select.sonoff_pow_daily_energy_002 data: option: "{{ tariff }}" - service: select.select_option target: entity_id: select.sonoff_pow_monthly_energy_002 data: option: "{{ tariff }}" - service: select.select_option target: entity_id: select.sonoff_pow_weekly_energy_002 data: option: "{{ tariff }}" # Автоотключение бойлера # Если потребление бойлера менее 10Вт в течение 1 минуты по дневному тарифу, то отключить бойлер - id: auto_boiler_off_002 alias: "Boiler Auto Power OFF" initial_state: true # hide_entity: true trigger: - platform: numeric_state entity_id: sensor.sonoff_pow_power below: 10 for: minutes: 1 condition: - condition: state entity_id: input_boolean.boiler_002_auto_off state: 'on' - condition: state entity_id: switch.sonoff_pow_relay state: 'on' - condition: time after: '07:00:00' before: '23:00:00' action: - service: switch.turn_off data: entity_id: switch.sonoff_pow_relay # Ночной режим - автоматическое включение бойлера в 23:05 (если выключен) - id: boiler_on_23_002 alias: "Boiler Power ON" initial_state: true # hide_entity: true trigger: - platform: time at: "23:05:00" condition: - condition: state entity_id: input_boolean.boiler_002_night state: 'on' - condition: state entity_id: switch.sonoff_pow_relay state: 'off' action: - service: switch.turn_on data: entity_id: switch.sonoff_pow_relay # Ночной режим - автоматическое выключение бойлера в 06:55 (если включен) - id: boiler_off_7_002 alias: "Boiler Power ON" initial_state: true # hide_entity: true trigger: - platform: time at: "06:55:00" condition: - condition: state entity_id: input_boolean.boiler_002_night state: 'on' - condition: state entity_id: switch.sonoff_pow_relay state: 'on' action: - service: switch.turn_off data: entity_id: switch.sonoff_pow_relay
Также изменил немного карточку для бойлера:
type: custom:vertical-stack-in-card title: Автоматизация бойлера cards: - type: entities entities: - entity: switch.sonoff_pow_relay name: Питание бойлера secondary_info: last-changed icon: mdi:power-standby - entity: input_boolean.boiler_001_night name: Ночной режим icon: mdi:weather-night - entity: input_boolean.boiler_001_auto_off name: Автоотключение бойлера - entity: sensor.sonoff_pow_power name: Потребление сейчас icon: mdi:gauge - type: divider - type: glance title: Потребление за день columns: 3 entities: - entity: sensor.energy_total_day_sonoff_pow_001 name: Всего icon: mdi:counter - entity: sensor.sonoff_pow_daily_energy_001_day name: Тариф "День" icon: mdi:counter - entity: sensor.sonoff_pow_daily_energy_001_night name: Тариф "Ночь" icon: mdi:counter - type: divider - type: glance title: Потребление за неделю columns: 3 entities: - entity: sensor.energy_total_weekly_sonoff_pow_001 name: Всего icon: mdi:counter - entity: sensor.sonoff_pow_weekly_energy_001_day name: Тариф "День" icon: mdi:counter - entity: sensor.sonoff_pow_weekly_energy_001_night name: Тариф "Ночь" icon: mdi:counter - type: divider - type: glance title: Потребление за месяц columns: 3 entities: - entity: sensor.energy_total_month_sonoff_pow_001 name: Всего icon: mdi:counter - entity: sensor.sonoff_pow_monthly_energy_001_day name: Тариф "День" icon: mdi:counter - entity: sensor.sonoff_pow_monthly_energy_001_night name: Тариф "Ночь" icon: mdi:counter - type: divider - type: glance title: К оплате за бойлер column_width: calc(100% / 3) entities: - entity: sensor.energy_payment_day_sonoff_pow_001 name: За день - entity: sensor.energy_payment_week_sonoff_pow_001 name: За неделю - entity: sensor.energy_payment_month_sonoff_pow_001 name: За месяц
И создал карточку для стиралки:
type: custom:vertical-stack-in-card title: Автоматизация стиралки cards: - type: entities entities: - entity: switch.blitzwolf_bw_shp6_pro_relay name: Питание стиралки secondary_info: last-changed icon: mdi:power-standby - entity: sensor.blitzwolf_bw_shp6_pro_wattage name: Потребление сейчас icon: mdi:gauge - type: divider - type: glance title: Потребление за день columns: 3 entities: - entity: sensor.energy_total_day_sonoff_pow_002 name: Всего icon: mdi:counter - entity: sensor.sonoff_pow_daily_energy_002_day name: Тариф "День" icon: mdi:counter - entity: sensor.sonoff_pow_daily_energy_002_night name: Тариф "Ночь" icon: mdi:counter - type: divider - type: glance title: Потребление за неделю columns: 3 entities: - entity: sensor.energy_total_weekly_sonoff_pow_002 name: Всего icon: mdi:counter - entity: sensor.sonoff_pow_weekly_energy_002_day name: Тариф "День" icon: mdi:counter - entity: sensor.sonoff_pow_weekly_energy_002_night name: Тариф "Ночь" icon: mdi:counter - type: divider - type: glance title: Потребление за месяц columns: 3 entities: - entity: sensor.energy_total_month_sonoff_pow_002 name: Всего icon: mdi:counter - entity: sensor.sonoff_pow_monthly_energy_002_day name: Тариф "День" icon: mdi:counter - entity: sensor.sonoff_pow_monthly_energy_002_night name: Тариф "Ночь" icon: mdi:counter - type: divider - type: glance title: К оплате за стиралку column_width: calc(100% / 3) entities: - entity: sensor.energy_payment_day_sonoff_pow_002 name: За день - entity: sensor.energy_payment_week_sonoff_pow_002 name: За неделю - entity: sensor.energy_payment_month_sonoff_pow_002 name: За месяц
В Home Assistant это выглядит так:
Также я создал отдельную карточку типа glance, для просмотра – изменения тарифов за электроэнергию:
show_name: true show_icon: true show_state: true type: glance title: Стоимость электроэнергии entities: - entity: input_number.energy_tariff_day name: Дневной тариф - entity: input_number.energy_tariff_night name: Ночной тариф
Данная карточка выглядит так:
На этом все. Свои файлы boiler.yaml и washer.yaml выложил в первом комментарии в телеграмм канале.
Привет.
ОтветитьУдалитьДобавил твою автоматизацию себе в HA,
Розетку использую BlitzWolf BW-SHP2 (ESPHome), заменил название сенсора в конфигах, как указано в статье, но пробела в том, что показания kWh в карточке "Бойлер" завышены.
У розетки есть объект BlitzWolf BW-SHP2 Plug 1 Total Daily Energy, он показывает 1,103 kWh, а в то же время показания sensor.energy_total_day_sonoff_pow_001 равны 1,471 kWh.
Подскажи как быть?
Спасибо!
добавлю скриншот графика объектов energy_total_day_sonoff_pow_001 и BlitzWolf BW-SHP2 Plug 1 Total Daily Energy, для наглядности.
Удалитьhttps://kept.com.ua/9ksI/Снимок_экрана_2024-04-17_в_21.06.50.png