И так начнём) …
Сначала почему мой выбор - Tasmota ?
Она импонирует мне своей -децентрализацией. Даже если «ляжет» ПО верхнего уровня такие как допустим Homed), Home Assistant, MQTT Broker, Алиса и т.д , пока жива локальная сеть - всегда можно будет управлять устройством по вэб. А также использовать на момент восстановления функционала, встроенные сценарии, таймеры и т.д То есть, всё не превратится в один момент в тыкву , как минимум превратится в паттисон)
Начнем с настройки Тасмоты , установить последнее ПО можно на страничке https://tasmota.github.io/install/ в принципе базовой версии достаточно.
Далее настраиваем на странице “Configure Module”, GPIO контроллера к которым подключены счетчики воды ( желательно подключать через оптопары , так как может быть наводка на провода ), реле, датчики и т.д

На странице “Configure MQTT” настраиваем подключение к брокеру ( у меня брокер с паролем )

Нажав на вкладку «Console” вводим команды, и подтверждаем Enter :
Timezone +3:00
- часовой пояс
TelePeriod 300
– через какой промежуток тасмота будет выдавать данные в брокер , в секундах.
SetOption26 1
- адресация реле (даже если на данный момент не используете , то лучше ввести эту команду чтобы потом не думать почему не работают реле))
Latitude
, Longitude
– координаты Вашей местности для сценариев (от заката до рассвета и т.д)
Counter1 0
– Для ввода данных с счетчика 1 , например Counter1 137129
(где 1371 это потреблённые кубометры до точки на счетчике воды )
Counter2 0
- Для ввода данных с счетчика 2

HOMEd – Custom – добавляем устройство ( соответственно в этом устройстве надо будет поменять имя tasmota_xxxx на имя своего устройства ) и Вуаля.
Для отслеживания состояния устройства, добавляем в CUSTOM устройство в полях:
Availability topic: tele/ tasmota_xxxx /LWT
Availability pattern: {{ online if value == Online else offline }}
{
"exposes": [
"switch_1",
"volume_C1",
"volume_C2"
],
"real": true,
"options": {
"volume_C1": {
"unit": "m³"
},
"volume_C2": {
"unit": "m³"
}
},
"bindings": {
"status_1": {
"inPattern": "{{ on if value == ON else off }}",
"inTopic": "stat/tasmota_74370F/POWER1",
"outTopic": "cmnd/tasmota_74370F/POWER1"
},
"volume_C1": {
"inPattern": "{{ json.COUNTER.C1 / 100 }}",
"inTopic": "tele/tasmota_74370F/SENSOR"
},
"volume_C2": {
"inPattern": "{{ json.COUNTER.C2 / 100 }}",
"inTopic": "tele/tasmota_74370F/SENSOR"
}
}
}

Интеграция счетчика с НА.
В файле configuration.yaml прописываем расположение файла с настройками MQTT:
mqtt: !include mqtt.yaml
.
Создаем этот файл в корне homeassistant, прописываем наши устройства.
sensor:
- name: "ХВС Ванная"
object_id: vanna_cool
state_topic: "tele/tasmota_74370F/SENSOR"
value_template: "{{ ( value_json['COUNTER'].C1 | multiply(0.01) | float ) | round(2) }}"
unit_of_measurement: "m³"
device_class: water
state_class: total
icon: mdi:water
- name: "ГВС Ванная"
object_id: vanna_hot
state_topic: "tele/tasmota_74370F/SENSOR"
value_template: "{{ ( value_json['COUNTER'].C2 | multiply(0.01) | float ) | round(2) }}"
unit_of_measurement: "m³"
device_class: water
state_class: total
icon: mdi:water
availability_topic: tele/tasmota_74370F/LWT
payload_available: Online
payload_not_available: Offline