Статья

Сбор и визуализация показаний счетчиков воды Элехант СВД-15 в Home Assistant

Внезапно обнаружив, что у всех счетчиков воды в моей квартире заканчивается срок поверки, я задумался над приобретением счетчиков, которые умеют передавать свои показания. В настоящий момент существует довольно много реализаций, но мне больше всего приглянулся счетчик СВД-15, представленный компанией Элехант.

Основные его плюсы следующие:

Низкая цена (около 900 руб).Передача показаний по Bluetooth.Приятный внешний вид.Встроенной батарейки должно хватать на весь срок службы.

Минусы:

Данные передаются в открытом виде (но мне не жалко столь конфиденциальных данных).
Оформление в одном цвете (красном). Соответственно, глянув на счетчик - не понять, на холодную или горячую воду он.
Т.к. визуализация на самом счетчике отсутствует, невозможно снять показания без смартфона или выносного дисплея (который продается отдельно).

Особого смысла рассказывать про установку этих счетчиков или настройку приложения не вижу. Само приложение довольно примитивно и показывает только текущее показание. Какие-либо графики, отчеты, автоматизации в нем не предусмотрены. Мне же хотелось видеть графики расхода воды, автоматизировать процесс отправки показаний в снабжающие организации. Поэтому я начал искать варианты передачи показаний в Home Assistant, который используется в роли системы управления моим "полоумным" домом.

В ходе поисков наткнулся на проект, в котором автор из контроллера ESP32 сделал небольшое устройство, которое собирает данные со счетчика, выводит их на своем дисплее и отправляет по MQTT. Способ интересный, но мне не хотелось добавлять еще одно промежуточное устройство в систему, да и лень было ждать посылки с Aliexpress. Поэтому я решил реализовать сбор данных непосредственно в Home Assistant, который у меня крутится на Raspbery PI 3.

В итоге родился компонент Elehant_water. Работает он просто. Раз в 30 секунд он в течении 10 секунд сканирует эфир, находит все счетчики, которые вы указали в конфиге, и считывает с них показания.

Установить компонент можно через HACS, добавив мой репозиторий, либо просто скачать компонент и поместить его в папку custom_components в HA.

В конфиг необходимо внести следующие настройки:

sensor: - platform: elehant_water devices: - id: 30123 name: "Горячая вода" - id: 30124 name: "Холодная вода"

После перезагрузки HA, счетчики должны появиться в системе. Первые данные они получат в течении 1-5 минут. Затем опрос будет происходить каждые 30 секунд. В ближайшем будущем выпущу апдейт, в котором можно будет указывать в конфиге периодичность сканирования и время сканирования.

После того, как счетчики появились в системе, неплохо бы было строить графики потребления воды. Для этого я использовал связку InfluxDB и Grafana.

Сам процесс подробно расписан в статье на Хабре. Я же поделюсь примером настроек и парой проблем, с которыми сам столкнулся.

Установка InfluxDB и Grafana, в моем случае, очень просты - так как у меня стоит HASS.IO, обе системы устанавливаются через админскую панель в два клика.

В InfluxDB добавляем базу и пользователя (в моем случае - это homeassistant).

Выполняем следующие запросы в БД. Они устанавливают следующую политику хранения: часовые данные хранятся месяц, недельные — год, а месячные - бессрочно.

CREATE RETENTION POLICY "month" ON "homeassistant" DURATION 30d REPLICATION 1 CREATE RETENTION POLICY "year" ON "homeassistant" DURATION 52w REPLICATION 1 CREATE RETENTION POLICY "infinite" ON "homeassistant" DURATION INF REPLICATION 1

В конфиг Home Assistant добавляем подключение к БД:

influxdb: host: a0d7b954-influxdb port: 8086 database: homeassistant username: homeassistant password: *** max_retries: 3 default_measurement: state include: entities: - sensor.gv_bathroom - sensor.gv_kukhnia - sensor.hv_kitchen - sensor.khv_vannaia

В разделе include: entities указываем счетчики, показания которых вы хотите перенести в InfluxDB. В моем случае - это два счетчика холодной воды и два горячей. Перезагружаем Home Assistant и накапливаем небольшую историю, чтобы перейти к настройке Grafana.

Когда данные будут накоплены, заходим в Grafana и добавляем новый дашбоард, а там - новый график. Я выбрал вариант отображения в виде Bar.

Приложу скриншоты настроек Grafana:

У меня четыре счетчика воды, но мне не нужна детализация отдельно по кухне и по ванной комнате, поэтому я суммирую значения расхода горячей воды и холодной. Делается это на вкладке Transform:

В итоге у вас должен получиться вот такой график:

Теперь через Share получаем ссылку на этот график и вставляем его через iframe в ваш Lovelace. В идеале, необходимо изменить в ссылке два параметра: from и to на from=now-2d&to=now. Таким образом вы будете получать график за два последних дня.

type: iframe url: >- https://GRAFANA_LINK?orgId=1&from=now-2d&to=now&panelId=2"width="450" height="200" frameborder="0"&theme=light aspect_ratio: 50%

Собственно, все. В моем случае, в Lovelace эти данные выглядят так:

Следующим этапом я буду автоматизировать передачу показаний в управляющую компанию. Скорее всего, посредством СМС. Но это уже будет в отдельной статье.

Я очень кратко прошелся по настройкам Grafana и InfluxDB. Но думаю, информации по ним вполне достаточно в интернете. Если будут возникать какие-то вопросы - спрашивайте в комментариях.


Как раз в процессе поиска вариантов для учета воды... Благодарочка за этот вариант

Решил эту задачу с помощью waterius. Передает показания сам и интегрируется в hass

Рассматривал такой вариант. Но у меня счетчики расположены неудачно, поэтому мне нужно как минимум 2 устройства + сверлить стену между ванной и туалетом. К тому же надо покупать импульсные счетчики, которые стоят как эти.

Срок службы батареи 2 года (https://elehant.ru/cntr_water.php">https://elehant.ru/cntr_water....), замена батареи такой себе квест (https://elehant.ru/img/documents/Elehant-SWD-Instal-Battery.pdf">https://elehant.ru/img/documen...). Надежность системы под большим вопросом. Представляю лицо управляющей компании,. когда принесу его на согласование и лицо сантехника Алексея, когда придет его пломбировать. 

Два года это в выносном дисплее. В самом счетчике - должна отслужить весь межповерочный интервал. А поверка - уже проблема. В моем городе  - проще новые счетчики поставить

Спасибо за интересную реализацию, один лишь вопрос - показатели  сдаются 1 раз в месяц, необходимость опроса каждые 30 секунд?

30 сек - для построения графиков расхода воды с высокой детализацией

Ооо хоть кто то еще с Костромы))) тоже искал тут у нас нормальные импульсные счетчики для воды, но что то не особо нашёл. Все какие-то непонятные( в леруа не был только) и поставил обычные. Два готовых ватериуса лежат еще на 6 лет😂🤣

Забыл маленькую просьбу в статье указать.


Был бы благодарен за ревью кода модуля (https://github.com/raxers/elehant_water">https://github.com/raxers/eleh...).


Это первый мой модуль для Home Assistant, да и в программировании я не очень силен. Но буду рад любым замечаниям и советам.

тут про него не очень https://youtu.be/tRb7ck2Edz0">https://youtu.be/tRb7ck2Edz0

Подскажите, частота опроса влияет на продолжительность жизни батарейки в счётчике и можно ли как-то допилить компонент под двухтарифный СВТ?
На продолжительность влиять не должно, т.к. это сам датчик вещает в эфир, а BT модуль просто слушает.
Добавить двухтарифный наверное можно, но нужно посмотреть какие данные отправляет в эфир счетчик. В частности поле MFG_DATA

Обновил модуль. Теперь он поддерживает СВТ-15


Отличный проект!


По вашей наводке купил себе такие,
доволен как слон ). Только у меня BT на
HassOS хоть убей не работает + рядом на кухне как
раз esp32 esphome собирает данные с BLE
термометров… в общем прикрутил через
esphome – в проекте по вашей ссылке есть
для него компонент и настройки –
https://github.com/vooon/elehant-to-mqtt/blob/master/esphome/meter.yaml.


ЗЫ Купил также
экранчик за 500р. Просто поразительно,
что у нас делают(не важно даже если китайскими руками) BLE экранчик с подсветкой(!) :) - за 500р. :).


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

Поживём-увидим, пока одно удовольствие )


Подскажите, что за экранчик?

а можно подробнее? был бы очень благодарен. 

а можно вас попросить по-подробнее описать процесс (ситуация с есп32 на кухне под датчики бле, прям как у вас), но почему то метод копипаста не сработал)))

Подскажите, что за экранчик?

Подскажите пожалуйста, ID счетчика это его заводской номер?

И ругается на отсутствующий компонент 

Platform error: sensor - Integration 'aioblescan' not found.

Что-то еще надо доставлять?

Я сегодня выложу обновление. Решит проблемы

По id - все верно. Просто цифровой номер

спасибо, жду обновление!

Выкатил обновление. Пробуйте. 

обновился, перезапустил HA - ошибка осталась




Platform error sensor.elehant_water - No module named 'aioblescan'


в модуле импортируется эта библиотека, может ее как-то на сервер надо ставить (это питон скрипт)?




import aioblescan as aiobs

если что, стоит HA из образа на raspberri pi zero w https://github.com/home-assistant/operating-system/releases/download/4.13/hassos_rpi0-w-4.13.img.gz">отсюда 

Поставил через SSH (

pip install aioblescan)

Теперь ругается так 

[custom_components.hacs.repository.integration.raxers.elehant_water] Could not read manifest.json [Expecting value: line 6 column 20 (char 169)]

вернул назад 

"codeowners": [],


сенсоры появились, правда пока данных нет.


У меня номер счетчика такой 0000481, забивать с нулями надо или просто 481?


upd. Методом проб определил, что ID надо вводить без нулей, все данные по датчикам появились. Спасибо за модуль!

Да, извиняюсь, видимо криво залил обновление. 
У меня на сервере работало, а изменения я просто оттуда скопировал в гитхаб. И видать где-то накосячил.
Рад что заработало.
А что касается установки aioblescan - она должна была установиться при первом запуске, но видимо из за проблем в файле манифеста - не сделала это. 

А как Вы установили по SSH aioblescan? У меня, как я понял, как и у Вас, судя по репозиторию, версия без доступа SSH. Я поставил аддон, но он даёт доступ к руту, там 

pip install aioblescan не работает. Поделитесь алгоритмом, пожалуйста.

Ставьте через аддон SSH & Web Terminal (от комьюнити), в настройках аддона отключите Protection mode и дальше уже или через putty или через веб 

pip install aioblescan



Что-то всё равно никак не запускается (( так и пишет 

Platform error sensor.elehant_water - No module named 'aioblescan' 


Уже сколько раз повтрил и перезагрузил




https://sprut.ai/static/media/cache/00/66/16/5/5486694/68613/1000x_image.jpg?1603177359" alt="1000x_image.jpg?1603177359" />
Возможно надо сделать pip3 install aioblescan

Всё заработало! Спасибо огромное!!! ОГРОМНОЕ!!! 3 дня возился. Кстати, заработало только после перезагрузки Малинки по питанию.
Но назрело несколько вопросов: 


  1. 1.Можно ли показания в Кубах сделать, и за запятой остаток? 

  1. 2.Почему-то у меня в устройствах появилось аж 4 счётчика, хотя он у меня один, да и у соседей точно быть не может.
  2. 3.Всё-таки меня мучает вопрос, неужели Блютюз счётчика так часто транслирует в сеть, батарейка 6 лет при этом должна протянуть?
  3. 4.Раньше год-два назад у меня счётчик и температуру воды показывал, но в какой-то момент они убрали эти данные из приложения, то ли на производстве датчик убрали, то ли он врал у кого-то, то ли оба варианта. Возможно ли вычленить эту информацию как-то? // Залез к ним на сайт, они просто его же продают как многотарифный ))) на 300р дороже )
  4. 5. Спустя полсуток, проявляется странное поведение, интервал сканирования стоит 3 минуты, повторил и вечером и утром - пользовался водой, перекрыл входной кран, а на графике отображается, что вода льётся ещё какое-то время

у меня что-то сломалось, теперь такую ошибку сыплет... Не может найти счетчик?

Logger: homeassistant
Source: custom_components/elehant_water/sensor.py:38
First occurred: 16:18:38 (55 occurrences)
Last logged: 16:45:43


Error doing job: Future exception was never retrieved


Traceback (most recent call last):
File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/elehant_water/sensor.py", line 38, in update_counters
mysocket = aiobs.create_bt_socket(0)
File "/usr/local/lib/python3.8/site-packages/aioblescan/aioblescan.py", line 1302, in create_bt_socket
raise exceptions[0]
OSError: [Errno 19] error while attempting to bind on interface 0: No such device

Судя по логам отвалился BT адаптер в системе.

Каким образом установлен Home Assistant?

Готовый образ на raspberry pi zero w 

Классический ребут не помог?

Нет

Попробуйте в терминале запустить:
python3 -m aioblescan

какой вывод будет?

/usr/bin/python3: No module named aioblescan

Ну и неплохо бы проверить саму работу блютуса..

да, очень похоже, т.к. проблема вроде как раз и началась после перехода на 4.14, попробую сделать даунгрейд на 4.13

даунгрейд (ha os update --version "4.13") на 4.13 решил проблему, данные появились. Спасибо!

Тоже пользуюсь такими счетчиками, скрипт для опроса писал сам (разбирал протокол, там в общем-то все просто). Запускаю раз в 5 минут, чаще мне не нужно. Опрашиваю контроллером Wirenboard с внешним USB-BT адаптером (с разъемом для внешней антенны). Чтобы стабильно ловились пакеты от дальних счетчиков в тамбуре - поставил огромную 6 dB антенну.



Здравствуйте все, я вот тоже пробросил счетчики в свой HA, огромное спасибо автору на столь полезную штуку!

https://sprut.ai/static/media/cache/00/31/25/5/7723413/75880/1000x_image.png?1615839251" alt="1000x_image.png?1615839251" />

Счетчики еще не зарегистрировал в управляющей компании, но как только зарегистрирую, их показания я смогу передавать через WEB форму в личном кабинете своей управляйки, так как то сейчас с счетчиком электричества:

https://sprut.ai/static/media/cache/00/31/25/5/7723413/75881/1000x_image.png?1615839427" alt="1000x_image.png?1615839427" />

Вот решил спросить у знатоков, могу я автоматизировать этот процесс?

Я предполагаю что что отправка данных с сайта личного кабинета - это же какая то строчка с кодом?

Я новичок в этом деле, даже не знаю как это правильно называется, чтобы почитать в интернете.

Есть у кого знания и время, прошу помогите разобраться и реализовать эту возможность через home assistant?

Автор пишет что тоже хочет реализовать автоматическую диспетчеризацию, но пока продолжения нет. печально.

В последствии планирую заменить и счетчик электричества на "умный".

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

Всем спасибо за внимание!

Газовый счётчик Элехант как то можно прикрутить?


Работают все счётчики через одно приложение на телефоне.


Пробовал id счётчика писать, состояние сенсора всегда unknown

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

А газовый счетчик, этого же производителя, СГБД-1.8ТК можно добавить в ваш аддон?
Посмотри Форк https://github.com/SzenProgs/elehant_water. Здесь даже показания температуры воды передаются
Подскажите. Не получается прицепить счетчик к Home assistant? что делать?
проверь что BT работает

Вернуться назад
Вернуться назад