В прошлой статье «Многотарифный счётчик электричества для умного дома 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 канале.