Не нашел похожей статьи в одном источнике, провел изыскания и вот результат

Общая концепция снимания показаний с счетчика коммунальных услуг:
исходит из того, что физический счетчик коммунальной услуги имеет возможность подать импульс на определённый объем поданной услуги, например на каждые 10 литров природного газа 1 импульс, далее в статье будет использован этот случай для примеров.
этот импульс преобразуется в виде сообщения в брокер mqtt как нажатие на кнопку, т.е. для каждого импульса сначала "Включено", затем "Выключено"
"Счётчик mqtt" в HA из брокера mqtt считает количество импульсов
сенсор HA из "Счетчика mqtt" получает объем потребленный услуги (важным является размерность, например для объема газа это 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"-
Создаем счётчик для подсчета импульсов от счетчика коммунальной услуги (в моём случае газа)

Настройки\Устройства и службы\Вспомогательные\Создать вспомогательный объект В этом счетчике будем хранить все цифры которые показывает счетчик. Задаём название (у меня это "Счетчик газа О142 (все цифры без разделения)"), начальное значение счетчика - текущие показания счетчик. Для примера мой счетчик имеет на циферблате точность 3 знака, но импульс подает только при полном обороте последнего колеса - т.е. получается, чтобы ввести начальный остаток (то что сейчас на счетчике) например 123,451 м3 в поле "Начальное значение счетчика" надо указать 123450 и "Шаг" указать равный 10. Тогда при провороте последнего колеса (и соответственно подачи импульса) значение счетчика увеличится на 10 и получится 123460. Задаем "Идентификатор объекта" (в примерах это schetchik_gaza_o142_vse_tsifry_bez_razdeleniia).
-
Создаём автоматизацию для подсчета импульсов - объема поданной услуги
Добавляем триггер
Настройки\Автоматизации и сцены\Автоматизации+Создать автоматизацию\Создать новую автоматизацию Добавляем действие

Автоматизация увеличит значение счетчика при получении импульса от физического счетчика на инкремент.
-
Создаем сенсор для использования в разделе "Энергия" HA. Для сенсора необходимы указать параметры device_class: gas и total_increasing, что не получилось сделать через веб-интерфес HA и получилось только через современый формат. Без этих параметров невозможно выбрать сенсор для подсчета коммунальной услуги и правило пересчета из количества импульсов в m³. Ниже пример для газового счетчика.
В основном файле конфигурации HA configuration.yaml добавляем строку
template: !include template.yamlСоздаём файл ./template.yaml следующего содержимого
- sensor: - name: "Счетчик газа О142(m³)" unique_id: gas_meter_sensor unit_of_measurement: m³ state: "{{ (states('counter.schetchik_gaza_o142_vse_tsifry_bez_razdeleniia') | float) / 1000 }}" device_class: gas state_class: total_increasingЯ использую один тариф и для примерного подсчета стоимости услуги необходимо знать стоимость единицы коммунальной услуги. Создаем вспомогательное значение содержащее стоимость единицы услуги
-

В дополнительных настройках выбираем "Поле ввода", единица измерения обязательна должна быть из совместимых, например для природного газа одна из следующих.

Заполняем Название, Минимальное и Максимальные значения, в Дополнительных настройках Режим отображения "Поле ввода", Шаг слайдера 0.0001 - т.к. газ указывают за 1000м3, счетчик показывает в m³ - точность до 4 знака и надо делить на 1000. Для газа Единица измерения должна быть RUB/m³. Получится должно примерно так:

-
в разделе "Энергия"\вертикальное троеточие\Конфигурация энергии идем в Природный газ\+Добавить последний созданный сенсор и "Использовать объект с текущей ценой"

-
получится примерно следующее


Послесловие:
стоит выделить все составные элементы подсчета коммунальной услуги в одну категорию - в последующем проще восстанавливать логическую цепочку при доработках.
-
стоит проводить периодическую корректировку значений счетчика газа в HA и показаний физического счетчика, т.к. неизбежны пропуски импульсов и соответственно занижение показаний счетчика в HA. Для этого идём в Панель разработчика\Действия, ищем Установить значение (counter.set_value), выбираем объект (тот который отражает все цифры счетчика без запятой), вводим новое значение счетчика не забывая что инкремент 10 и это означает, что последняя цифра должна быть нулем.

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