В прошлой статье «Многотарифный счётчик электричества для умного дома Home Assistant» я рассказал, как считать общее потребление электричества в доме на основе счётчика Zigbee и его интеграции в Home Assistant.

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

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

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

График потребления энергии выключателем в Home Assistant
График потребления энергии выключателем в Home Assistant

Конфигурация

Для создания счётчика создадим три новых сенсора класса Power. У меня выключатель трёхклавишный Tuya Zigbee, поэтому он будут называться с префиксом gang3 switch.

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

Например, у меня к первой клавише подключено 6 ламп по 3 Вт, ко второй — 6 ламп по 5,5 Вт, к третьей — 4 лампы по 5,5 Вт.


template:
 - sensor:
     - name: "gang3 switch switch 1 energy power"
       unique_id: "gang3_switch_switch_1_energy_power"
       device_class: power
       state_class: measurement
       unit_of_measurement: "W"
       state: "{{ 3.0 * 6 if is_state('switch.gang3_switch_switch_1', 'on') else 0 }}"

     - name: "gang3 switch switch 2 energy power"
       unique_id: "gang3_switch_switch_2_energy_power"
       device_class: power
       state_class: measurement
       unit_of_measurement: "W"
       state: "{{ 5.5 * 6 if is_state('switch.gang3_switch_switch_2', 'on') else 0 }}"

     - name: "gang3 switch switch 3 energy power"
       unique_id: "gang3_switch_switch_3_energy_power"
       device_class: power
       state_class: measurement
       unit_of_measurement: "W"
       state: "{{ 5.5 * 4 if is_state('switch.gang3_switch_switch_3', 'on') else 0 }}"

     - name: "gang3 switch total energy power"
       unique_id: "gang3_switch_total_energy_power"
       device_class: power
       unit_of_measurement: "W"
       state: >-
         {{
           (states('sensor.gang3_switch_switch_1_energy_power') | float(0)) +
           (states('sensor.gang3_switch_switch_2_energy_power') | float(0)) +
           (states('sensor.gang3_switch_switch_3_energy_power') | float(0))
         }}

Cенсор gang3_switch_total_energy_power суммирует мощность всех трёх клавиш, чтобы получить общее потребление выключателя.

Далее для перевода нашей общей энергии из просто Ватт в кВт/ч создаём еще один сенсор.


sensor:
- platform: integration
 source: sensor.gang3_switch_total_energy_power
 name: gang3_switch_total_energy_usage
 unit_prefix: k
 round: 2
 unit_time: h
 max_sub_interval:
   minutes: 1

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


utility_meter:
 daily_gang3_switch_total_energy_usage:
   source: sensor.gang3_switch_total_energy_usage
   cycle: daily
   tariffs:
     - t1
     - t2
     - t3

И дополнительно, создаём автоматизацию с указанием в какой период времени, какой действует тариф для utility_meter.


- alias: Set tariff
 trigger:
   - platform: time
     at:
       - "07:00:00"
       - "17:00:00"
     variables:
       tariff: "t1"
   - platform: time
     at:
       - "23:00:00"
     variables:
       tariff: "t2"
   - platform: time
     at:
       - "10:00:00"
       - "21:00:00"
     variables:
       tariff: "t3"
 action:
   - service: select.select_option
     target:
       entity_id:
         - select.daily_gang3_switch_total_energy_usage
     data:
       option: "{{ tariff }}"

Каждую минуту автоматизация запускается и устанавливает правильный текущий тариф для daily_gang3_switch_total_energy_usage.

Результат

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

Статистика потребления энергии выключателем в Home Assistant
Статистика потребления энергии выключателем в Home Assistant

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

Комментарии (5)


  1. Alex-ZiX
    12.11.2025 15:11

    Есть же реле zigbee, которые считают потребление. А математическим путём считать, на мой взгляд, это ненадолго - лампочки перегорают, на из место становятся другие, возможно другого номинала. Очень быстро в таком подсчёте возникнут отклонения, а постоянно править цифры руками надоест. Кроме того, свет не основной потребитель сейчас в домах, плюс редко включается днём.


    1. linux2000 Автор
      12.11.2025 15:11

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

      По номиналам ламп, на самом деле данная конфигурация у меня уже работает более года и еще ни одна не выходила из строя, а если и выйдет, то можно их сразу взять с запасом) Благо на маркетплейсах много предложений, что покупка 5 лампочек стоит часто почти столько же, сколько 2 лампочки.


  1. eps
    12.11.2025 15:11

    homeassistant-powercalc is a versatile custom component for Home Assistant that estimates power consumption for devices like lights, fans, smart speakers, and more—especially those without built-in power meters. It acts as a virtual energy monitor, using advanced strategies to calculate power usage. For light entities, PowerCalc analyzes factors such as brightness, hue, saturation, and color temperature to deliver accurate consumption estimates. For other devices, it offers extensive configuration possibilities


    1. linux2000 Автор
      12.11.2025 15:11

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


      1. eps
        12.11.2025 15:11

        Тариф в home-assistant учитывается отдельно (numeric helper + schedule / automation).

        Учитывать положение диммера можно, там в довольно очевидном месте можно вставить template.
        У меня этим компонентом, например, высчитывается мощность компьютера в зависимости от % загрузки ЦП.