80. Измерение потребления электроэнергии с плавающим тарифом в Home Assistant.
В последнее время многие страны проводят реформы в сфере электроснабжения, предоставляя потребителям возможность выбора поставщика электроэнергии и различных тарифов. В данной статье рассмотрим, как можно настроить Home Assistant для корректного расчета альтернативного тарифа.Как уже принято здесь, начнём с теории.
Для подсчёта потраченной электроэнергии и отображении её в денежном эквиваленте необходимы следующие компоненты:
- Устройство для измерения этого самого электричества. Им могут быть умные розетки или выключатели, или же просто счётчик установленный на фазу заходящую в помещение.
- Понимание как именно компонент энергомониторинга в самом ХА обрабатывает данные.
- Цена. Система должна не только "знать" текущую стоимость киловатт-часа, но и уметь корректировать это значение при изменении тарифов и налогов (итоговая цена кВт/ч состоит из базовой цены + НДС).
- Логика расчёта тарифа., Система должна правильно применять условия выбранного тарифного плана альтернативного поставщика.
Так что пойдём по порядку.
1. Установка неинвазивного счётчика в панель электрощита дело не хитрое, однако стоит его доверить человеку с подтверждёнными знаниями и умениями в работе с электричеством, для любителя это может быть опасно.
2. Компонент Energy в Home Assistant работает, на самом деле, достаточно просто. Ему нужно указать один или несколько источников потребления энергии и цену за кВт/ч. Последняя может быть указана как просто вручную, так и с помощью сущности с ценой.
3. Сущность с ценой это самый надёжный и правильный вариант. А сущность, которая автоматически получает цену назначенную государством, вообще избавляет пользователя от лишней проблемы следить за обновлениями и редактировании значений. Такую сущность можно создать вручную, и в качестве источника данных указать самое авторитетное место в данном вопросе - электрическую компанию.
4. Самый трудоёмкий пункт. В зависимости от выбранного тарифа у альтернативного поставщика, нужно будет создать ещё пару дополнительных сущностей и одну автоматизацию.
пример неинвазивного зигби счётчика
Перейдём к практике.
В качестве примера, в этой статье будет рассмотрен тарифный план "Хайтек" от поставщика Электра. Этот тарифный план даёт скидку в 8% от общего счёта в первый год использования, 9% во второй год, и 10% начиная с третьего года и далее. Скидка применяется все дни недели с 23:00 текущего дня, до 17:00 следующего дня. Ну или говоря проще, обычная цена за кВт/ч действует каждый день с 17:00 до 23:00, в остальное время действует скидка в зависимости от года обслуживания.
В этом материале не будем останавливаться на выборе и установке счётчика или других устройств энергомониторинга. Исходим из того, что они уже приобретены, установлены, подключены и отображаются в системе.
Поэтому начнём с третьего пункта теории.
необходимо создать новый сенсор на платформе Rest. Его можно прописать как в основном файле configuration.yaml в виде:
sensor:
- platform: rest
name: Israel Electricity Total Rate
icon: mdi:network-pos
resource: https://iecapi.iec.co.il/api/content/en-US/calculators/gadget
method: GET
headers:
Content-Type: application/json
value_template: >
{% set home_rate = value_json.gadget_Calculator_Rates.homeRate | float %}
{% set vat = value_json.gadget_Calculator_Rates.vat | float %}
{{ (home_rate * (1 + vat / 100)) | round(4) }}
unit_of_measurement: "ILS/kWh"
device_class: energy
scan_interval: 10800
Так и в отдельном файле, если используется раздельная конфигурация. Например внутри /homeassistant/includes/sensors/
Код тогда будет выглядеть так:
- platform: rest
name: Hashmal Rate
icon: mdi:network-pos
resource: https://iecapi.iec.co.il/api/content/en-US/calculators/gadget
method: GET
headers:
Content-Type: application/json
value_template: >
{% set home_rate = value_json.gadget_Calculator_Rates.homeRate | float %}
{% set vat = value_json.gadget_Calculator_Rates.vat | float %}
{{ (home_rate * (1 + vat / 100)) | round(4) }}
unit_of_measurement: "ILS/kWh"
device_class: energy
scan_interval: 10800
Этот сенсор каждые 3 часа подключается к API электрической компании и получает оттуда 2 параметра: цена за кВт/ч без НДС и значение самого НДС. Далее он просто получает сумму этих значений (цена + процент от этой же цены).
результат работы такого сенсора
Перейдём к пункту 4 теории и сделаем сказку былью.
Создадим два хелпера:
1. Цифровой (number) - сюда будет записываться текущая цена за кВт/ч и эта же сущность будет использоваться в компоненте мониторинга ХА.
2. Дата. В этой сущности укажем дату начала обслуживания альтернативным поставщиком.
Осталось создать автоматизацию которая соберёт вместе все созданные объекты и будет работать с ними в правильном порядке. А именно:
Будет срабатывать каждый день в 17:00 и в 23:00.
При срабатывании в 17:00: будет брать значение цены за электричество из эталонного сенсора и вписывать его в цифровой хелпер.
При срабатывании в 23:00: будет сравнивать дату из сенсора даты с текущей датой, чтобы знать какую скидку применить. После чего будет брать значение цены за электричество из эталонного сенсора и применять к нему полученную скидку. Итоговое значение будет записано в цифровой хелпер.
Примерно так это будет выглядеть:
alias: Обновление тарифа
description: ""
triggers:
- at: "17:00:00"
id: "17:00"
trigger: time
- at: "23:00:00"
id: "23:00"
trigger: time
actions:
- choose:
- conditions:
- condition: trigger
id: "17:00"
sequence:
- target:
entity_id: input_number.изменяемый_тариф_цифровой_хелпер
data:
value: "{{ states('sensor.постоянный_тариф') }}"
action: input_number.set_value
- conditions:
- condition: trigger
id: "23:00"
sequence:
- target:
entity_id: input_number.изменяемый_тариф_цифровой_хелпер
data:
value: >
{% set start_date_str =
states('input_datetime.дата_хелпер') %} {% set start_date =
start_date_str | as_timestamp | timestamp_custom('%Y-%m-%d',
true) | as_datetime %}
{% set current_datetime = now() %}
{% set years_difference = current_datetime.year -
start_date.year %}
{% set electric_value = states('sensor.постоянный_тариф') | float
%}
{% if years_difference == 0 %}
{{ electric_value * 0.92 }}
{% elif years_difference == 1 %}
{{ electric_value * 0.91 }}
{% else %}
{{ electric_value * 0.9 }}
{% endif %}
action: input_number.set_value
mode: single
После чего останется только перейти в настройки системы -> Панели -> открыть панель энергии и указать в качестве сущности электричества ту, что считает потреблённые киловатты. И в качестве сущности цены - созданный цифровой хелпер.
Существуют дополнительные факторы, влияющие на итоговую стоимость электроэнергии, но данный метод позволяет получить результаты, максимально приближенные к фактическим счетам за электричество.
Комментарии
Отправить комментарий