Счётчик воды для Home Assistant из датчика протечки Tuya

от автора

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

В продаже есть несколько уже готовых решений, которые могут подключаться к Home Assistant, передавать данные сразу в Водоканал и другие компании ЖКХ. Но стоимость устройств начинается от 3000 руб, а если стояки с подачей холодной и горячей воды разнесены далеко, то придётся покупать 2 датчика и бюджет проекта заметно вырастает.

Поэтому в рамках данной статьи расскажу, как реализовать счетчик расхода воды на базе дешевого датчика Tuya (около 450 руб.) и настроить отображение данных в Home Assistant. Также реализуем подсчёт общего объёма водоотведения и сигнализацию о возможном затоплении.

Схема применима к счётчикам, которые создают импульсный сигнал по типу Геркон.

Принцип работы счётчика

Уже почти все современные счётчики, измеряющие расход воды имеют выводы, с которых можно считывать показатели. На практике эти провода в большинстве домов никуда не подключены, поэтому мы будем их использовать для получения данных. Принцип работы счётчика простой, каждые 10 литров воды контакты замыкаются на короткое время (у некоторых моделей значение может отличаться) и именно по этому импульсу мы будем увеличивать в Home Assistant показатели расхода воды. Все настройки реализованы для Home Assistant 2026.4.

Для реализации интеграции с Home Assistant я предпочёл использовать датчик Tuya для контроля протечки. Он небольшого размера, работает от 2-х батареек AAA и может работать от них от 1 года и более. По типу связи есть модель с Zigbee или Wi-Fi — в зависимости от предпочитаемого протокола.

Датчик протечки

Датчик протечки
Подключение датчика протечки к водосчётчику

Подключение датчика протечки к водосчётчику

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

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

Клема

Клемма подключения

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

Схема подключения к счётчику с типом подключения Геркон

Схема подключения к счётчику с типом подключения Геркон

Самый простой способ как проверить и определить какой у вас тип счётчика, это подключить мультиметр к контактам 1 и 4, а 2 и 3 замкнуть между собой. После включить воду и пролив порядка 10 литров воды, увидеть, было ли замыкание контактов. Если было, то ваш счётчик имеет тип подключения Геркон. В противном случае, если замыкания не наблюдается, скорее всего используется Намур или другой тип интерфейса.

Если у вас подключение Намур, то потребуется купить систему измерения, например Ватериус.

Далее не забудьте подключить данный датчик к умному дому Tuya как обычный сенсор протечки воды и задайте ему понятное имя, например “Счётчик холодной воды”. И не забудьте выключить уведомление в приложении, чтобы он не присылал бесполезные сообщения, продолжая считать, что он датчик протечки и произошло затопление.

Настройка Home Assistant

Для реализации измерения в HA, нам потребуется создать сущности input_number, где будет храниться расход холодной и горячей воды.

Для данного кода можно создать отдельный packages/water.yaml или добавить в основной configuration.yaml

input_number: cold_water_input_number:   name: "cold water"   min: 0   max: 5000000   step: 10   unit_of_measurement: "L"   mode: box hot_water_input_number:   name: "hot water"   min: 0   max: 5000000   step: 10   unit_of_measurement: "L"   mode: box

В данном коде мы создали два поля ввода, где будет храниться значение воды в литрах (позже в интерфейсе HA приведём их к привычным в ЖКХ м³). Каждое срабатывание датчика от водосчётчика будет прибавлять 10 литров. Максимальный размер поля равен 5000 м³, кажется этого вполне достаточно, квартирные счётчики скорее выйдут из строя раньше, чем достигнут этого значения. Дополнительным плюсом параметра input_number, будет возможность при необходимости изменять значения через интерфейс Home Assistant.

Ещё создадим счётчик, который будет учитывать общий расход воды (водоотведение).

counter: sewerage_counter:   initial: 0   step: 10

Далее добавим код, который создаст 3 сенсора, которые будут в интерфейсе HA показывать значения в м³ для холодной, горячей воды и водоотвода (канализации).

template: - sensor:     - name: "cold_water_input_sensor"       unique_id: "cold_water_input_sensor"       device_class: water       unit_of_measurement: "m³"       state: "{{ (states('input_number.cold_water_input_number') | float) / 1000 }}"       state_class: total_increasing     - name: "hot_water_input_sensor"       unique_id: "hot_water_input_sensor"       device_class: water       unit_of_measurement: "m³"       state: "{{ (states('input_number.hot_water_input_number') | float) / 1000 }}"       state_class: total_increasing     - name: "sewerage counter sensor"       unique_id: "sewerage_counter_sensor"       device_class: water       unit_of_measurement: "m³"       state: "{{ (states('counter.sewerage_counter') | float(0)) / 1000 }}"       state_class: total_increasing

Также думаю, будет не лишним добавить utility_meter, который будет автоматически считать и выводить в статистику потребление по каждому типу за день и месяц. И сам в начале суток или месяца будет сбрасывать эти показатели.

utility_meter: daily_cold_water_usage:   source: sensor.cold_water_input_sensor   cycle: daily monthly_cold_water_usage:   source: sensor.cold_water_input_sensor   cycle: monthly daily_hot_water_usage:   source: sensor.hot_water_input_sensor   cycle: daily monthly_hot_water_usage:   source: sensor.hot_water_input_sensor   cycle: monthly daily_sewerage_usage:   source: sensor.sewerage_counter_sensor   cycle: daily monthly_sewerage_usage:   source: sensor.sewerage_counter_sensor   cycle: monthly

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

sensor: - platform: statistics   name: "sewerage usage 10min"   entity_id: counter.sewerage_counter   state_characteristic: change   max_age:     minutes: 10

Теперь в файле automations.yaml или в блоке automation: добавим автоматизации для обновления значений при получении импульса от датчика протечки воды. Здесь в поле entity_id необходимо вставить идентификаторы ваших датчиков, которые вы подключили к HA. Также здесь сразу, увеличивается не только значение холодной или горячей воды, но и значение счетчика водоотвода на те же 10 литров.

- alias: Cold water count trigger:   - entity_id: binary_sensor.water_meter_cold_sensor_moisture     platform: state     from: 'on'     to: 'off' action:   - action: counter.increment     data:       entity_id: counter.sewerage_counter   - action: input_number.increment     data:       entity_id: input_number.cold_water_input_number- alias: Hot water count trigger:   - entity_id: binary_sensor.water_meter_hot_sensor_moisture     platform: state     from: 'on'     to: 'off' action:   - action: counter.increment     data:       entity_id: counter.sewerage_counter   - action: input_number.increment     data:       entity_id: input_number.hot_water_input_number

На этом программная часть внедрения закончена, осталась финально всё настроить в интерфейсе Home Assistant.

Интерфейс

Первым делом, выведем в интерфейс поля ввода cold_water и hot_water, где мы можем управлять значением текущего расхода воды, чтобы оно соответствовало изначальному значению на счётчике. Также выведем значения сенсоров cold_water_input_sensor и hot_water_input_sensor, которые уже в привычных м³ будут показывать расход воды.

Интерфейс Home Assistant для настройки счётчиков

Интерфейс настройки счётчиков

Далее можно вывести (суточное) daily и месячное (monthly) значения потребления воды, а также водоотвода.

Статистика расхода воды в Home Assistant

Статистика расхода воды

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

Статистика расхода воды в Home Assistant в виде графиков

Статистика расхода воды в виде графиков

Уведомления

Дополнительной возможностью, которая у нас появляется после сбора данных о расходе воды, это сделать уведомление о потенциальном затоплении. Не везде удаётся установить привычные датчики протечки, поэтому будем для уведомления ориентироваться на общий расход. И как в примере ниже, если за 10 минут было израсходовано суммарно более 30 литров, то сработает уведомление о потенциальном затоплении (параметры для себя можно изменить, чтобы не было лишних срабатываний).

Для реализации уведомления, в automations.yaml добавляем следующий код:

- id: flood_water_alarm_atm alias: "Оповещение о затоплении по расходу канализации" description: "Отправляет алерт, если расход за 10 минут превысил 30 литров" mode: single trigger:   - platform: numeric_state     entity_id: sensor.sewerage_usage_10min     above: 30 action:   - action: notify.mobile_app_phone     data:       title: "🚨 ВНИМАНИЕ: ВОЗМОЖНО ЗАТОПЛЕНИЕ!"       message: "Общий расход воды превысил {{ trigger.above }} литров за последние 10 минут. Текущее значение: {{ states('sensor.sewerage_usage_10min') | round(1) }} л."

Не забудьте изменить “notify.mobile_app_phone” на ваш идентификатор телефона, который подключен к Home Assistant.

Заключение

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

Отдельно отмечу, что используемый нами бинарный датчик (может выдавать сигнал on или off), очень универсальный и на базе него можно сделать много других полезных проектов для умного дома. В следующих статьях покажу другие свои реализации на основе него.

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

ссылка на оригинал статьи https://habr.com/ru/articles/1025148/