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

После чего останется только перейти в настройки системы -> Панели -> открыть панель энергии и указать в качестве сущности электричества ту, что считает потреблённые киловатты. И в качестве сущности цены - созданный цифровой хелпер.


Существуют дополнительные факторы, влияющие на итоговую стоимость электроэнергии, но данный метод позволяет получить результаты, максимально приближенные к фактическим счетам за электричество.

Комментарии