Как стать автором
Поиск
Написать публикацию
Обновить

Многотарифный счетчик электричества для умного дома Home Assistant

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров5.3K

Когда я начал автоматизировать свой умный дом, одной из целей было отслеживание потребления электроэнергии. Казалось бы, задача простая — в интернете хватает готовых решений. Многие из них легко интегрируются в Home Assistant и работают «из коробки». Но есть нюанс: учёт по нескольким тарифам (день, ночь, пик) найденные решения не полноценно поддерживают.

После тестирования нескольких конфигураций я пришёл к выводу — проще сделать своё решение, которое будет учитывать текущий тариф в статистике. Так появился этот проект: умный счётчик Tuya с Zigbee и интеграцией в Home Assistant с поддержкой многотарифного учёта электроэнергии.

В этой статье я расскажу, как всё настроил: от подключения счётчика до реализации логики учёта по тарифам. Потратил на это немало времени, но теперь система работает стабильно, и ею удобно пользоваться.

Основные задачи, которые я решал:

  • поддержка нескольких тарифов (пик, полупик, ночь);

  • возможность корректировки значений через интерфейс Home Assistant;

  • устойчивость к кратковременным сбоям (перезапуск сервера с Home Assistant, обрыв Zigbee-сети и т.д.);

  • защита от аномальных скачков значений — например, если счётчик внезапно вернёт некорректные данные.

Система была отлажена на Home Assistant версии 2025.7.

Показатели электроэнергии Home Assistant
Показатели расхода электроэнергии в Home Assistant

Оборудование

Для измерения потребления я выбрал однофазный счётчик Tuya с токовым трансформатором (около 1900 руб.). Он измеряет основные параметры — напряжение, ток и потреблённую энергию, передаёт данные по Zigbee и отлично интегрируется с Home Assistant.

Умный счётчик Tuya Zigbee
Умный счётчик Tuya Zigbee

Я специально отказался от модели с экраном — в щитке уже есть основной счётчик с дисплеем, а дублировать показания смысла не вижу.

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

Электрический щиток с Tuya Zigbee счётчиком
Электрический щиток с Tuya Zigbee счётчиком

После установки устройство просто добавляется в экосистему Tuya. Для работы по протоколу Zigbee потребуется соответствующий хаб.

У счётчиков с токовыми трансформаторами могут быть небольшие отклонения в измерениях. Но это не проблема — через приложение можно выполнить калибровку, чтобы данные стали точнее.

Калибровка умного счётчика
Калибровка умного счётчика

Home Assistant

Для добавления счетчика в Home Assistant, я использую интеграцию с Tuya (Настройки → Устройства и службы → Интеграции). Через неё в Home Assistant доступны данные большинства устройств, которые добавлены в систему Tuya.

Интеграция Tuya в Home Assistant
Интеграция Tuya в Home Assistant

После появления счетчика в системе необходимо добавить следующий код конфигурации. Для данного кода можно создать отдельный packages/energy.yaml или добавить в основной configuration.yaml


input_number:
 energy_t1:
   name: "Energy T1"
   unit_of_measurement: "kWh"
   min: 0
   max: 100000
   step: 0.01
   mode: box

 energy_t2:
   name: "Energy T2"
   unit_of_measurement: "kWh"
   min: 0
   max: 100000
   step: 0.01
   mode: box

 energy_t3:
   name: "Energy T3"
   unit_of_measurement: "kWh"
   min: 0
   max: 100000
   step: 0.01
   mode: box

 energy_last_meter:
   name: "Предыдущее значение энергии"
   unit_of_measurement: "kWh"
   min: 0
   max: 100000
   step: 0.01

В этом коде мы добавляем поля для ввода значений текущего значения энергии (t1, t2, t3) и плюс в energy_last_meter будем хранить общее накопленное значение нашим счетчиком (это будет чисто технический параметр для работы конфигурации).

Настройка показателей в Home Assistant
Настройка показателей в Home Assistant

Далее создадим сенсоры (energy_t1_sensorenergy_t2_sensorenergy_t3_sensor), из которых будет выводиться информация об энергии. Можно этот код не добавлять, а использовать input_number созданные выше, но тогда значения будут показываться не в виде текста, а как поле для ввода данных, что не всегда красиво выглядит в интерфейсе.


template:
 - sensor:
     - name: "Energy T1 sensor"
       unique_id: "energy_t1_sensor"
       unit_of_measurement: "kWh"
       device_class: energy
       availability: "{{ states('input_number.energy_t1') not in ['unknown', 'unavailable'] }}"
       state: "{{ states('input_number.energy_t1') | float(0) }}"

     - name: "Energy T2 sensor"
       unique_id: "energy_t2_sensor"
       unit_of_measurement: "kWh"
       device_class: energy
       availability: "{{ states('input_number.energy_t2') not in ['unknown', 'unavailable'] }}"
       state: "{{ states('input_number.energy_t2') | float(0) }}"

     - name: "Energy T3 sensor"
       unique_id: "energy_t3_sensor"
       unit_of_measurement: "kWh"
       device_class: energy
       availability: "{{ states('input_number.energy_t3') not in ['unknown', 'unavailable'] }}"
       state: "{{ states('input_number.energy_t3') | float(0) }}"

Далее в файле automations.yaml или в блоке automation: основного конфигурационного файла, задаём автоматизацию по переключению тарифов:


- alias: "Accumulation of consumption by tariffs"
 trigger:
   - platform: time_pattern
     minutes: "/1"
 variables:
   current_energy: "{{ states('sensor.zigbee_dual_meter_total_energy') | float(0) }}"
   last_energy: "{{ states('input_number.energy_last_meter') | float(0) }}"
   energy_delta: "{{ current_energy - last_energy }}"
   current_tariff: >
     {% set hour = now().hour %}
     {% if 7 <= hour < 10 or 17 <= hour < 21 %}
       t1
     {% elif 23 <= hour or hour < 7 %}
       t2
     {% else %}
       t3
     {% endif %}
   input_number_entity: "input_number.energy_{{ current_tariff }}"
 condition:
   - condition: numeric_state
     entity_id: sensor.zigbee_dual_meter_total_energy
     above: 0
 action:
   - choose:
       - conditions:
           - condition: template
             value_template: "{{ 0 < energy_delta < 1 }}"
         sequence:
           - service: input_number.set_value
             target:
               entity_id: "{{ input_number_entity }}"
             data:
               value: >
                 {{ (states(input_number_entity) | float(0)) + energy_delta }}
   - service: input_number.set_value
     target:
       entity_id: input_number.energy_last_meter
     data:
       value: "{{ current_energy }}"

Представленный код запускается каждую минуту и сравнивает текущее накопленное значение счетчика current_energy с предыдущим last_energy. Если energy_delta больше нуля, то в переменной current_tariff определяется текущий тариф в зависимости от времени суток и на основе него, будет определено значение переменной input_number_entity куда нужно прибавить полученную energy_delta.

Данные о потребляемой мощности берутся с сенсора счётчика sensor.zigbee_dual_meter_total_energy.

На основе текущего времени суток определяется активный тариф:

  • T1 — с 7:00 до 10:00 и с 17:00 до 21:00;

  • T2 — с 23:00 до 7:00;

  • T3 — во все остальные часы.

Также мы фильтруем данные, значение energy_delta должно быть в диапазоне от 0 до 1 кВт/ч, если выше, то его отбрасываем. Иногда бывают выбросы показателей и не отфильтровав значение, мы испортим статистику, да и в квартире/доме потребление 1 кВт/ч за 1 минуту невозможно.

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

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

Дополнительно датчики можно вывести на дашборд Energy, где красиво отобразить потребляемую энергию.

График расхода электроэнергии в Home Assistant
График расхода электроэнергии в Home Assistant

Заключение

Созданная система работает надёжно даже при кратковременных сбоях связи или перезапуске Home Assistant. Она даёт точную картину потребления по каждому тарифу, а при необходимости значения можно вручную скорректировать через интерфейс.

Показатели электроэнергии Home Assistant
Показатели расхода электроэнергии в Home Assistant

Другие полезные конфигурации для умного дома и обзоры умных устройств, можно найти в моём Tg канале.

Теги:
Хабы:
+12
Комментарии20

Публикации

Ближайшие события