Счетчик воды подключение к компьютеру

Обновлено: 03.07.2024

Все началось с проржавевшего полотенцесушителя. Прохудился, надо менять. Ну сказано, сделано. Сходил на рынок, купил, принес. Вызвал сантехника Васю. Тот заценил все это добро одним глазам и сказал что скоро придет. Через час вернулся с газовой горелкой, трубой, болгаркой и коллегой Федей. Часа три они оперировали заунитазье и наконец-то позвали меня. Вот мол те два крана, а дальше мол е. сь сам. С тем и ушли. Ну думаю, надо посмотреть в инете как че дальше делать. Один умный человек посоветовал сварить полипропиленовые трубы и ими соединить сушилку. В "ОБИ" мне помогли с выбором труб и разных уголков, муфт и сгонов. Все это добро я привез домой и начал варить. После удачно-неудачной сварки, сушилка оказалась на своем месте. Подал воду и начал радоваться. И вот тут у меня упал взгляд на два непонятных провода выходящих из водосчетчиков и аккуратно скрученных. О. Зачем водосчетчику провод? Явно он что-то может передавать. Если да, то что за протокол? Поиск в интернете был весьма быстрым. Я моментально нашел описание сего девайса. Протокол меня просто порадовал своей сложностью :) А работает он так: 10 литров протекло, геркон замкнулся, разомкнулся. Единственное изменение которое присутствовало, ток это период замкнутого состояния. Длинна его зависела от скорости потока воды, ну или на сколько сильно открыт кран. Каждый месяц жена залезает туда для снятия показаний. И тут я решил облегчить ей эту задачу. Говорю мол сделаю я тебе такой девайс, который сам будет тикать с водосчетчиком и показывать данные на дисплей.
А вот они на фото.

 Водосчетчики

Далее сел обдумывать алгоритм. Думал, думал и надумал.
Итого мы имеем два двойных клеммника для герконов и 6 кнопок. Вот такая у меня получилась схема. Жуть, да? На скорую руку етит.


Теперь картинки режимов.
Первый старт, счетчик по нулям. Буква "W" говорит о том что он в работе.

 В работе

Жмакаем на кнопку "Коррекция" и входим в режим ввода данных. Буква "S" говорит о том что мы в режиме ввода данных, а буква "H" может сменится на "С" и означает горячая/холодная вода.

 Коррекция

Жмакая по кнопке "Разряд" выбираем соответственно разряд. Для наглядности рядом с буквой "H" или "C" появится буковка.
Кнопками "Коррекция +" и "Коррекция -" выставляем значения по счетчику для холодной и горячей воды.

 Ввод данных

Далее проделываем ту же работу с холодной водой поменяв текущее значение кнопкой "Горячая/Холодная". После ввода данных нажимаем на кнопку "Коррекция" для подтверждения водимых данных. Контроллер перейдет в режим работы о чем покажет буквой "W" и начнет считать расход воды.

 Ввод в работу

Главное не забыть что данные выводятся до десяток. Единицы литров воды он не учитывает. То есть значения выводятся без крайнего правого разряда водосчетчика.
Кнопка "Подсветка" нужна для того чтобы включить или выключить подсветку. Но если все же после включения подсветки забыть ее выключить, она сама выключится через определенный промежуток времени. Период включения подсветки можно менять изменив значение переменной "t". Работа задержки проста. Пока выполняется условие if переменная увеличивается при каждом пробеге по программе. Это удобно тем что задержка есть, но при этом программа выполняется.
В железе я не реализовывал, так как хочу убрать дисплей, а передачу показаний замутить по RS-485 прям на комп и там смотреть. Так что если кто захочет сделать с дисплеем то милости просим. Проект для CodeVisionAVR и проект для Proteus можно скачать ниже.
Фьюз биты для ATmega8

Фьюз биты для ATmega8

Внесены небольшие изменения в программу:
1 - Изменена визуализация ввода началных значений.
2 - Добавлен русский вариант для ЖК с кириллицей.

Дмитрий 04.04.14

вдруг отключили электричество. и? значения не сохранились?

Алексей 04.04.14

Данные пишутся в EEPROM. Смотрите исходник, 41 строка.

Андрей 28.09.14

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

Алексей 28.09.14

Все в ваших руках :) Пришлите мне на почту ваш вариант и я его опубликую.

Добрый день! Буду очень признателен если Вы поделитесь информацией по fuse-битам? Заранее благодарен! С уважением!

Александр 20.10.15 23:31

Добрый день!Как тактируется контроллер,нужен ли в схеме кварц? В исходнике есть о нем упоминание. Сброс, запитка контроллера? Удалось ли реализовать передачу показаний по RS-485?

Алексей 21.10.15 07:31

Александр, супруга сказала что такая приблуда ей не нужна. Поэтому все заглохло. Если использовать RS-485, то необходимо ставить кварц кратный битрейту. Например 7,3728 МГц. Питание подается по параллельной паре UTP. Протокол для передачи показания довольно простой, даем старт байт затем 4 байта данных и стоп байт. Вроде и все.

Павел 02.11.15 11:42

Алексей, добрый день! Прочитав Вашу статью я загорелся реализовать данный вариант считывания данных со счетчика и переноса их на дисплей. Сам работаю в ИТ, поэтому с программированием проблем возникнуть не должно, но вот с "железом" не связан никак, поэтому самостоятельно спаять схему не смогу. Скажите, может быть есть какие-либо варианты готовых схем? Например Arduino или что-нибудь в этом духе? Смотрел на сайте Чип и Дип - там миллион вариантов и готовых плат с контроллерами и кварцом и самих дисплеев, но как собрать всё воедино я просто не представляю. Можете что-нибудь порекомендовать? Заранее спасибо! Павел

Алексей 02.11.15 15:32

Сначала нужно решить на каком МК будет реализована схема. Например Если все делать с нуля, то можно пойти еще дальше и например использовать мою плату с STM32F030F4P6 + купить TFT дисплей ST7735. Оформить все это в красивом боксе и радовать глаз. Либо можно купить arduino mini и стерев загрузчик, просто залить прошивку скачав ее отсюда и так же пользоваться устройством. Тут важен не подход к готовой плате, а под какой МК есть желание писать программу. Та же Arduino это всего лишь ATmega8 и самописный загрузчик. Так что выбирайте МК, а я направлю куда лучше копать.

Павел 02.11.15 16:19

Алексей, спасибо большое за ответ! На самом деле для меня не очень принципиален сам МК, поскольку я и предполагал использовать именно Вашу прошивку (за нее Вам отдельное спасибо!). У меня проблема именно в том, чтобы собрать всё это. Поскольку, даже понимая идею и предназначение всего этого, я не имею никакого представления куда и что подключать и что с чем соединять. Поэтому, дабы уменьшить количество манипуляций со сборкой, я предполагал использовать Arduino Uno R3 на базе ATmega328, купив к нему дисплей, кнопки и источник питания. Спаять плату сам я точно не смогу. Скажите, такая комбинация подойдет для Вашей прошивки? Заранее спасибо!

Алексей 02.11.15 16:35

Подойдет. Но лучше mini. Там тот же МК, а плата меньше.

Павел 02.11.15 16:41

Я исходил из того, что Uno изначально имеет встроенный USB порт и разъем питания, чтобы опять же было меньше манипуляций со сборкой, размер платы также не имеет значения, поскольку места достаточно. Также в качестве кнопок я подобрал восьмикнопочную матрицу. Но как соединить это пока не представляю. Скажите, Вы сможете помочь рекомендациями по сборке?

Алексей 02.11.15 18:33

Ну из под Arduino я даже и не знаю, а вот если на чистый МК, то кнопки нужно посадить на один порт и опрашивать. Остальное как в статье. Вообще это целый проект и его нужно будет собирать полностью с нуля.

Павел 03.11.15 12:16

Алексей, приветствую! Скажите, а Вы готовы были бы взяться за такой проект? Если да, то может быть обсудим варианты нашего дальнейшего взаимодействия? Или, возможно, Вы могли бы мне кого-нибудь порекомендовать? Как с Вами можно связаться?

Алексей 03.11.15 17:18

Если в планах это коммерческий проект, то нужно разрабатывать плату с нуля.))) Если для себя, то какая нужна помощь?

Считывание показаний счетчика воды - подсчет импульсов

Типы бытовых счетчиков воды

Современные счетчики воды, по показаниям которых мы затем оплачиваем счет за ЖКУ, бывают в основном двух видов (с точки зрения домашней автоматизации):

  • Без выходов
  • С импульсным выходом
  • Цифровой выход RS 485 (в рамках этой статьи не рассматриваются)
  • С радиовыходом (в рамках этой статьи не рассматриваются)

Рассмотрим подробнее счетчики с импульсным выходом. Общий принцип работы очень прост: датчик отдает один полный импульс при прохождении определенного количества жидкости (зависит от характеристик конкретного счетчика).

Импульсный выход основан на воздействии магнитного поля постоянного магнита на геркон, при котором происходит чередующееся замыкание и размыкание контактов геркона. Геркон формирует пассивный выходной сигнал («сухой контакт»), который может считываться любым счетчиком импульсом.

Оборудование для считывания импульсов со счетчика воды

1-wire модуль счетчик с буферной памятью 2 канала

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

К общей 1-wire шине наше устройство подключается стандартным образом через коннектор типа RG-11 (6p4c): DATA, GND, +12V (в схеме датчика встроен стабилизатор напряжения с 12В).

Подключение счетчиков воды

Стабильность работы, пропуски импульсов и ложные срабатывания

На стабильность работы могут влиять следующие факторы:

  • Качество самих счетчиков воды (в моем случае со счетчиками Valtec повезло)
  • Наличие неподалеку источника сильных магнитных полей (силовая проводка, всевозможные источники электромагнитных помех)
  • Надежность фиксации выходов счетчика в разъеме устройства
  • Качество установленной батарейки (и нужно следить за ее напряжением)

Аналоги устройству от Radioseti можно найти в интернете (например от HobbyBoards за 30$ без учета доставки из США) или спаять самому, но, если честно, то по соотношению цена/качество лучшего устройства я не пока видел.

Сохранение показаний со счетчика в базу данных

На сервере Умного дома (я использую Raspberry Pi с ОС Raspbian и USB мастером 1-wire сети DS9490R) по расписанию каждые N-минут (задается по желанию) запускается скрипт, который с помощью библиотеки OWFS считывает показания с 1-wire счетчика импульсов и сохраняет их в СУБД.

Общая схема подключения представлена ниже:

архитектура

Более подробно про считывание значений с устройств 1-wire и управление ими при помощи библиотеки OWFS будет посвящена отдельная статья.

В консоли Linux считывание показаний выглядит примерно так:


А графики, полученные на основе данных с 1-wire счетчика импульсов выглядят примерно так:

График расхода горячей и холодной воды в течении суток

Один день из жизни: показания расхода воды за сутки.
Для построения графиков используется библиотека Highcharts.

Автоматическая передача показаний со счетчиков воды в управляющую компанию

При наличии в БД актуальных данных о расходе воды, можно подсчитать ее расход за месяц и передать в управляющую компанию.

На сегодняшний день (по крайней мере в Москве) многие УК принимают показания с помощью:

Но это тема следующих статей.

Выводы

Считывание показаний счетчиков воды с помощью 1-wire и Raspberry Pi : 5 комментариев

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

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

Интеграцию приборов учета я начал с счетчика воды. Для передачи показаний приходилась каждый раз залезать в скрытый лючок, за которым расположен счетчик, что не очень комфортно. При этом у меня в квартире автономное отопление и счетчик воды только один, а представьте, каково тем, у кого по квартире проходит два стояка и целых 4 счетчика воды?

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

Какого-то штатного способа интегрировать такие счетчики в системы умного дома нет. Можно, конечно, воспользоваться системами типа Saures , но способ, к которому прибегнул я был намного бюджетнее.

Изучив информацию в интернете, я нашел полезную статью о интеграции такого счетчика при помощи zigbee-датчика открытия двери от xiaomi. Схема полностью рабочая, но свободного такого датчика у меня не было. И тут я вспомнил о том, что прямо рядом с счетчиком установлен Аквасторож и его я уже интегрировал в умный дом при помощи esp8266. Между тем, у платы nodemcuv3 с модулем esp8266 на борту достаточно большое количество свободных пинов, куда как раз без усложнения конструкции можно было подключить два провода от импульсного счетчика, что я и сделал.

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

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

Весь код проекта для считывания импульсов счетчика. Весь код проекта для считывания импульсов счетчика.

В проекте ESPHome есть более удобный инструмент pulse counter, который может считать импульсы непосредственно на самой esp8266, но я не смог с ним разобраться и пошел по проверенной схеме, импульсы мы будем считать самим Home Assistant.

После загрузки прошивки и подключения модуля esp по api к Home Assistant нам будет доступен новый бинарный сенсор

В момент импульса он перейдёт из состояния off (cухо) в состояние on (влажно). Далее логика в следующем: создаем счетчик и при каждом переходе из состояния off в on (или наоборот) прибавляем к этому счетчику цену импульса. На моем счетчике один импульс равен 10 литров воды, прошедшей через счетчик. Это стандартное значение и подойдет многим. В строке initial необходимо выставить текущее значение счетчика в литрах. Желательно округлить его кратно 10, так как счетчик в любом случае будет прибавлять по 10 литров.

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

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

На этом подготовка закончена, проверяем конфигурацию, перезагружаем сервер. Вот так выглядит моя карточка с показаниями счетчика воды:

Все счётчики с импульсным выходом (провод торчит из корпуса)

Данные с Ватериуса можно увидеть:

Подключение и настройка

Народная инструкция в Телеграм чате: waterius_forum

Счётчик импульсов состоит из двух микросхем. Attiny85 считает импульсы в режиме сна и сохраняет их в EEPROM. Раз в сутки она будит ESP8266 и слушает i2c линию. ESP8266 спрашивает у Attiny85 данные и отправляет их на сервер. После этого ESP8266 засыпает, а Attiny85 продолжает считать-считать-считать.

  • Иногда (?) не подключается к Ростелекомовским роутерам: Sercomm rv6699, Innbox e70. Лечится указанием статического ip в настройках или включением WPA шифрования сети. Если у вас такие, напишите в теме: Проблемы с роутерами
  • Подозрение на очень редкие зависания в версиях attiny 14 - 21. В 22 (0.10.5) починили, тестируем.



В репозитории ещё есть однослойная для ЛУТа.

Написать отзыв в офиц. группы VK и FB.

Отправка лога ESP в вебинтерфейс (JS код есть, спасибо Владимиру)

OTA обновления: предложить код прошивки и пример веб сервера (можно на базе NodeMCU)

  • На пине reset сделал OloloevReal, вот схема
  • Есть в клоне Waterius-Attiny84-ESP12F, спасибо [badenbaden]

ветка attiny84 поддерживает плату Waterius-Attiny84-ESP12F с 4мя счетчиками и 2мя датчиками протечек.

Прошивка Ватериуса сделана на основе открытых библиотек, работоспособность которых никто не гарантирует. Я также не могу обещать, что устройство будет работать с вашем оборудованием и вы не получите ущерба как во время изготовления, так и во время эксплуатации устройства =). Пожалуйста, сообщите о любом опыте изготовления и использования тут. Вы поможете развитию проекта!

Читайте также: