2026-01-20

Настройка счетчика коммунальных услуг через веб интерфейс Home assistant (HA)

Общая концепция снимания показаний с счетчика коммунальных услуг:

  • физический счетчик имеет возможность подать импульс на определённый объем поданной услуги, например на каждые 10 литров природного газа 1 импульс, далее в статье будет рассмотрен именно этот случай.
  • этот импульс преобразуется в виде сообщения в брокер mqtt как нажатие на кнопку, т.е. для каждого импульса сначала “Включено”, затем “Выключено”
  • “Счётчик” в HA из брокера mqtt считает количество импульсов
  • сенсор HA из “Счетчика” получает объем потребленный услуги (кВт, m³ и т.п.)
  • полученный сенсор указывается в разделе HA Энергия\Конфигурация энергии как Источник
  • далее HA своим стандартным образом собирает статистику и визуализирует в виде графиков и отчетов.
    Ранее подсчет коммунальных услуг был настроен по статье Cчетчик газа в Home Assistant без паяльника Однако в очередной раз запутавшись в ручной постройке диаграмм решил перевести всё на стандартные рельсы.
    Вроде получилось.

К деталям

  • часть по получению импульса с физического счетчика и отправки в брокер оставлю за рамками этой статьи. У меня это выполнено на tasmota и эмуляции нажатия на кнопку через gpio с подтяжкой резистором. Датчик фабричный именно для моего газового счетчика без гальванического подключения - внутри датчика геркон.
  • Создаем бинарный сенсор в HA для получения импульсов от механического счетчика:
      mqtt:  
      binary_sensor:
        
      - name: "gas_meter_pulse"  
          unique_id: "gas_meter_pulse"  
          state_topic: "stat/IoT-O142-/GAS_METER_PULSE"  
          off_delay: 1  
          payload_on: "ON"  
          payload_off: "OFF"
    
  • Создаем счётчик для подсчета импульсов от счетчика коммунальной услуги (в моём случае газа)
    Настройки\Устройства и службы\Вспомогательные\Создать вспомогательный объект alt text
    В этом счетчике будем хранить все цифры которые показывает счетчик. Задаём название (у меня это “Счетчик газа О142 (все цифры без разделения)””), начальное значение счетчика - текущие показания счетчик. Для примера мой счетчик имеет на циферблате точность 3 знака, но импульс подает только при полном обороте последнего колеса - - то получается, чтобы ввести начальный остаток (то что сейчас на счетчике) например 123,451 м3 в поле “Начальное значение счетчика” надо указать 123450 и “Шаг” указать равный 10. Тогда при провороте последнего колеса (и соответственно подачи импульса) значение счетчика увеличится на 10 и получится 123460. Задаем “Идентификатор объекта”. alt text
  • Создаём автоматизацию для подсчета импульсов - объема поданной услуги Настройки\Автоматизации и сцены\Автоматизации+Создать автоматизацию\Создать новую автоматизацию.
    Добавляем триггер
    alt text
    Добавляем действие
    alt text
    Автоматизация увеличит значение счетчика при получении импульса от физического счетчика на инкремент.
  • Создаем сенсор для использования в разделе “Энергия”
    HA. Получилось сенсор создать только через запись в файле template.yaml, по современным правилам записи потому-что необходимые параметры для сенсора device_class: gas и total_increasing поддерживаются только в современных правилах. Без этих параметров невозможно выбрать сенсор для подсчета коммунальной услуги и правило пересчета из количества импульсов в m³. Ниже пример для газового счетчика.
    template: !include template.yaml ``` ./template.yaml
    • sensor:
          - name: “Счетчик газа О142(m³)”
            unique_id: gas_meter_sensor
            unit_of_measurement: m³
            state: “”
            device_class: gas
            state_class: total_increasing ``` Из web интерфейса HA тоже самое можно сделать Настройки\Устройства и службы\ Вспомогательные+Создать вспомогательный объект \ Template, выбираем Сенсор
      alt text
      alt text
      Заполняем сенсор
      alt text
      Использую один тариф и для примерного подсчета стоимости услуги создал вспомогательное значение Настройки\Устройства и службы\ Вспомогательные+Создать вспомогательный объект \ Число. В дополнительных настройках выбираем “Поле ввода”, единица измерения обязательна должна быть из совместимых, например для природного газа
      alt text
      Заполняем Название, Минимальное и Максимальные значения, в Дополнительных настройках Режим отображения “Поле ввода”, Шаг слайдера 0.0001 - т.к. газ указывают за 1000м3, счетчик показывает в m³ и надо делить на 1000. Для газа Единица измерения должна быть RUB/m³.
      Получится должно примерно так:
      Стоимость 1м3 газа, RUB/m³
      alt text
      alt text
  • в разделе “Энергия”\вертикальное троеточие\Конфигурация энергии идем в Природный газ+Добавить последний созданный сенсор и “Использовать объект с текущей ценой”
    alt text
  • получится примерно следующее
    alt text
    Советы и выводы:
  • выделить все составные элементы в одну категорию - в последующем проще восстанавливать логическую цепочку.
  • проводить периодическую корректировку значений счетчика газа в HA и физического счетчика, т.к. неизбежны пропуски импульсов и соответственно занижение показаний. Для этого Панель разработчика\Действия, ищем Установить значение (counter.set_value), выбираем объект (тот который отражает все цифры счетчика без запятой), вводим новое значение счетчика не забывая что инкремент 10 и это значит что последняя цифра должна быть нулем.
    alt text
  • не понятен момент как при увеличении тарифа (повышение стоимости коммунальных услуг) кроме как в тот же день поменять и тариф в HA. Может стоит разработчикам HA ввести регистр “в такой-то период считай по такому тарифу, далее по такому”.

Опубликовано 2026-01-20
https://habr.com/ru/articles/965078/

Дата публикации January 20, 2026