Счетчики воды оптический метод снятия показаний. Счетчики воды с дистанционным съемом показаний

Все знают, что лень двигатель прогресса. Так случилось и в моем случае.

В квартире присутствует 6 точек раздачи воды (3 холодные и 3 горячие). На каждой из точек стоит счетчик.
Каждые 2 счетчика спрятаны за люками скрытого монтажа, один из люков находится за зеркалом, которое нужно снять, чтобы до него добраться.

Раз в месяц с 20 по 25 число необходимо снимать показания со всех счетчиков и отправлять данные в Управляющую Компанию на бланке определенного образца.

В какой-то момент мне надоело открывать люки, снимать зеркало и было решено автоматизировать снятие показаний.

Вот, для примера, пара люков (открытый и закрытый):


Сначала перерыл интернет на предмет существующих устройств автоматизации. Нашел только один для меня подходящий - Счетчик импульсов-регистратор «Пульсар» 6-ти канальный . Надо сказать, что стоит он почти 6000 рублей! На самом деле в розницу нигде я его не видел, так как слишком специфический продукт и предполагается, что закупать их будут ТСЖ на все квартиры в доме. Попытался его заказать через интернет в разных местах, но каждый раз, как только доходило до доставки, продавец пропадал. Как я понял, они не любят работать с «физиками», либо был не слишком настойчив.
Ну, нет, так нет - сделаем сами, да еще и дешевле.

Тут то и пригодилась Arduino Mega 2580 с Ethernet модулем, которая была когда-то куплена для различных экспериментов.

Когда делали ремонт в квартире, от каждой точки, где имеются счетчики, до щитка на лестничной клетке, были проложены кабели типа UTP cat 5e. Это было одно из требований контролирующей организации, чтобы в будущем снимать все показания централизованно. Будущее все никак не наступает, а провода пригодились.

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

В итоге, что мы имеем:

  • Счетчики воды
  • Arduino Mega 2580
  • Arduino Ethernet 3.0
  • Бокс для Arduino
  • Блок питания
  • Шлейф для протягивания из слаботочного щитка в шкаф к Arduino.
  • Домашний сервер на Debian с Lighttpd и Mysql
Сами счетчики такие:


Экспериментальным путем было определено, что счетчики работают не просто, а очень просто. Когда последний разряд меняет свое значение с 9 на 0, замыкается геркон внутри счетчика и это значит, что утекло еще 10 литров воды. В таком состоянии он находится до того, пока значение последнего разряда не станет равным 3. Т.е. фактически нам надо фиксировать момент перехода из состояния «разомкнуто» в состояние «замкнуто». Заострю внимание, что мы фиксируем ТОЛЬКО факт перехода из одного состояния в другое, потому что система может обесточиться, да и вообще, мало ли какие могут быть коллизии.

В момент замыкания геркона, Arduino по HTTP вызывает простенький perl-скрипт на сервере, где крутится lighttpd. Скрипт записывает в базу данных этот момент. Другой скрипт позволяет смотреть текущее состояние счетчиков.

Скетч Arduino с комментариями:
#include #include #include // Эту библиотеку необходимо скачать тут: https://github.com/thomasfredericks/Bounce-Arduino-Wiring byte mac = {0x90,0xA2,0xDA,0x0E,0xF1,0x92}; // MAC-адрес нашего устройства (написан на наклейке платы Ethernet shield) IPAddress ip(192,168,1,11); // IP адрес, если вдруг не получится получить его через DHCP //IPAddress server(192,168,1,10); // ip-адрес удалённого сервера (использовался, пока не было имени) char server = "smarthome.mydomain.ru"; // Имя удалённого сервера char request; // Переменная для формирования ссылок int CounterPin = {22,23,24,25,26,27}; // Объявляем массив пинов, на которых висят счетчики char *CounterName = {"0300181","0293594","0300125","0295451","0301008","0293848"}; // Объявляем массив имен счетчиков, которые мы будем передавать на сервер Bounce CounterBouncer = {}; // Формируем для счетчиков Bounce объекты EthernetClient rclient; // Объект для соединения с сервером void setup() { //Serial.begin(9600); for (int i=0; i<6; i++) { pinMode(CounterPin[i], INPUT); // Инициализируем пин digitalWrite(CounterPin[i], HIGH); // Включаем подтягивающий резистор CounterBouncer[i].attach(CounterPin[i]); // Настраиваем Bouncer CounterBouncer[i].interval(10); // и прописываем ему интервал дребезга } // Инициализируем сеть if (Ethernet.begin(mac) == 0) { Ethernet.begin(mac, ip); // Если не получилось подключиться по DHCP, пробуем еще раз с явно указанным IP адресом } delay(1000); // даем время для инициализации Ethernet shield } void loop() { delay(1000); // Задержка в 1 сек, пусть будет. Мы уверены, что два раза в секунду счетчик не может сработать ни при каких обстоятельствах, потому что одно срабатывание - 10 литров. // Проверяем состояние всех счетчиков for (int i=0; i<6; i++) { boolean changed = CounterBouncer[i].update(); if (changed) { int value = CounterBouncer[i].read(); // Если значение датчика стало ЗАМКНУТО if (value == LOW) { //Serial.println(CounterPin[i]); sprintf(request, "GET /input.pl?object=%s HTTP/1.0", CounterName[i]); // Формируем ссылку запроса, куда вставляем имя счетчика sendHTTPRequest(); // Отправляем HTTP запрос } } } } // Функция отправки HTTP-запроса на сервер void sendHTTPRequest() { if (rclient.connect(server,80)) { rclient.println(request); rclient.print("Host: "); rclient.println(server); rclient.println("Authorization: Basic UmI9dlPnaJI2S0f="); // Base64 строка, полученная со значения "user:password" rclient.println("User-Agent: Arduino Sketch/1.0"); rclient.println(); rclient.stop(); } }

На сервере крутится: Debian, Lighttpd, Mysql. В свою очередь на нем имеется два perl-скрипта: один для записи состояний счетчиков в базу, второй для вывода текущих показаний.

input.pl
#!/usr/bin/perl -w use strict; use CGI::Fast; use DBI; while(my $q = CGI::Fast->new) { main($q); } sub main { my $q = shift; my $dbh = DBI->connect("dbi:mysql:database=smart_home;mysql_client_found_rows=1;mysql_enable_utf8=1;mysql_socket=/var/run/mysqld/mysqld.sock", "dbname", "password", { RaiseError => 1, AutoCommit => 1, mysql_multi_statements => 1, mysql_init_command => q{SET NAMES "utf8";SET CHARACTER SET "utf8"} }) or die "Cannot connect"; $dbh->{mysql_auto_reconnect} = 1; print "Content-Type: text/html; charset=UTF-8\n\n"; print "OK\n"; my $object = $q->param("object"); if ($object) { $dbh->do(q{INSERT INTO water_count (object) VALUES(?)},undef,$object) or die $dbh->errstr; } }

result.pl
#!/usr/bin/perl -w use strict; use CGI::Fast; use DBI; # массив стартовых показаний счетчиков my $start = { "0300125" => 102.53, "0301008" => 75.31, "0300181" => 65.92, "0293594" => 54.51, "0293848" => 55.04, "0295451" => 87.43 }; while(my $q = CGI::Fast->new) { main($q); } sub main { my $dbh = DBI->connect("dbi:mysql:database=smart_home;mysql_client_found_rows=1;mysql_enable_utf8=1;mysql_socket=/var/run/mysqld/mysqld.sock", "dbname", "password", { RaiseError => 1, AutoCommit => 1, mysql_multi_statements => 1, mysql_init_command => q{SET NAMES "utf8";SET CHARACTER SET "utf8"} }) or die "Cannot connect"; $dbh->{mysql_auto_reconnect} = 1; print "Content-Type: text/html; charset=UTF-8\n\n"; print "Текущие показания счетчиков:
"; my $sql = "SELECT count(*) as c,object FROM water_count group by object"; my $sth = $dbh->prepare($sql); $sth->execute; while (my ($count, $object) = $sth->fetchrow_array()) { $start->{$object} = sprintf("%.2f",$start->{$object}+$count/100); } $sth->finish; foreach my $object (keys $start) { my ($intcurrent,$fine) = split(/\./,$start->{$object}); print "$object $intcurrent.$fine
\n"; } }

Mysql база с одной таблицей:
CREATE TABLE `water_count` (`object` varchar(20) NOT NULL DEFAULT "", `datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP) ENGINE=InnoDB DEFAULT CHARSET=utf8

В таблице есть только два поля. Первое - название объекта (в нашем случае это номер счетчика). Второе - дата и время в формате TIMESTAMP, которые заполняются автоматически, когда происходит вставка строки.

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

Что дальше?
Дальше хочется ежемесячную автоматическую распечатку на заполненном бланке.
Так же хочется подключить счетчик электроэнергии с передачей данных в Мосэнергосбыт, а потом и с их оплатой.
Статистика, графики и прочие радости работы с данными.

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

Казалось бы, остаётся только смириться с таким положением дел, но ещё в процессе установки счётчиков воды я обратил внимание на то, что из них выходят какие-то провода (рис. 1):

«Это для подключения к централизованной системе снятия показаний», - сказал мастер. - «но не ждите, что в вашем доме её скоро установят». Мне, как любителю всяческих систем, это дало хорошую пищу для дальнейших размышлений. Их результат я и хочу предложить вашему вниманию.

Поскольку видеть «набежавшие» литры хотелось не только в туалете, а тянуть туда провода категорически не хотелось, была разработана система, состоящая из двух блоков: считывателя-передатчика с батарейным питанием, устанавливаемого в санузле, и приёмника-индикатора, выполненного в виде настольных часов с дополнительными функциями.

Считыватель-передатчик

Изучение паспорта на водосчётчик внесло некоторую ясность в то, на что годится выходящая из него сигнальная линия. Оказалось, что внутри счётчика находится герконовый датчик, срабатывающий и отпускающий контакты после прохождения каждых 10 литров воды. В документе также указывалось, что выходной сигнал соответствует некому стандарту NAMUR. Беглый поиск в интернете выдал следующую схему подключения геркона по этому стандарту (рис. 2):

Как мы видим, кроме собственно геркона в схеме присутствует два дополнительных резистора R1 и R2, один из которых включён параллельно, а другой - последовательно с контактами геркона. Сразу нужно сказать, что никакой пользы для дела учёта воды они не приносят, а нужны лишь для контроля обрыва и короткого замыкания проводов на участке от счётчика до контрольного устройства. Сопротивление шлейфа счётчика соответственно принимает значение R2 или R1+R2 при замкнутых и разомкнутых контактах геркона соответственно.

В качестве принципа действия системы было решено выбрать передачу импульсов счётчика по радиоканалу и их подсчёт в приёмном устройстве, снабжённом дисплеем. Такой подход позволил сделать блок считывания предельно простым и, следовательно, минимально требовательным в части расхода энергии. За основу передатчика был взят один из многочисленных пультов от радиоуправляемых машинок, сломанных моим маленьким сынишкой;) .

Схема пульта, выбранного в качестве основы для блока считывания, оказалась построена на базе микросхемы PT8A977B фирмы Pericom Technologies. Типовая схема включения этой микросхемы показана на рис. 3. Микросхема обеспечивает обработку нажатий до 5 кнопок с возможностью управления питанием передающего каскада. Собственное потребление микросхемы составляет не более 5 мкА в режиме ожидания и не более 100 мкА при нажатых кнопках.

На первый взгляд казалось возможным обойтись вообще без переделок исходной схемы, просто подключив выходы счётчиков вместо кнопок пульта. В реальности всё оказалось сложнее: во-первых, из-за наличия схемы NAMUR, а во-вторых, из-за возможного длительного нахождения контактов счётчиков в замкнутом состоянии. Таким образом, между водосчётчиками и радиопередатчиком потребовался «посредник», преобразующий сигнал стандарта NAMUR в простые логические уровни «0/1» и ограничивающий длительность передаваемых импульсов. Вероятно, весь этот функционал можно было реализовать на аналоговых микросхемах, но мне оказалось проще применить один микроконтроллер типа ATTiny13V (рис. 4):


Схема подключается к точкам с соответствующими номерами, отмеченным красным на рис. 4. В основном микроконтроллер находится в спящем режиме, ожидая поступления прерываний от контактов счётчиков. При их поступлении он «просыпается» и формирует импульсы нормированной длительностью 250 мс на выходах сигналов HOT и COLD. Для повышения помехозащищённости и для более удобной обработки импульсов на приёмной стороне они сопровождаются стробирующим импульсом такой же длительности на выходе STROBE. Внешний вид блока считывания, смонтированного в корпусе пульта управления, показан на рис. 5, 6:


Приёмник-индикатор

Так как следование импульсов счётчиков не ограничено во времени и носит случайный характер, очевидным требованием к блоку приёма и индикации является его круглосуточная работа и готовность принимать эти импульсы. Поскольку плодить лишние устройства, вдобавок потребляющие электроэнергию 24 часа в сутки, желания не было, решено было снабдить этой функцией обычные настольные часы. В первоначальном (заводском) варианте это были обычные китайские часы-будильник со светодиодным индикатором, проработавшие у меня около 6 лет (рис. 7):


Главным их недостатком оказался отсчёт времени без использования кварцевого резонатора, за счёт синхронизации с частотой электросети. Когда погрешность хода этих часов начала достигать ±20 минут в сутки (!), их решено было отключить и убрать до лучших времён. И вот для их переделки нашёлся очень удачный повод.

В результате беглого ознакомления с родной «начинкой» часов стало ясно, что использовать из неё можно только сетевой трансформатор. Так как хотелось сделать новые часы максимально информативными и универсальными, в качестве их дисплея было решено применить двухстрочный жидкокристаллический индикатор 16х2 с подсветкой, хорошо подходящий по размерам к «окошку» в корпусе. Схема нового варианта часов показана на рис. 8:


Точный отсчёт времени и бесперебойный ход часов при пропадании сетевого напряжения осуществляется микросхемой DD3 типа DS1307. Измерение комнатной температуры производится раз в минуту с использованием микросхемы DD1 типа DS18B20. Основу устройства составляет микроконтроллер DD2 типа ATMega8515, осуществляющий обработку нажатий кнопок, считывание данных часов и термометра, получение и подсчёт радиоимпульсов водосчётчиков, вывод информации на индикатор и подачу звуковых сигналов на динамик BA1. Микроконтроллер работает с тактированием от встроенного RC-резонатора, что позволило дополнительно снизить габариты платы (рис. 9):


Разъём X1 на плате часов предназначен для подключения приёмного радиомодуля, «позаимствованного» из сломанной игрушки. Схема этой платы (с отмеченными точками подключения к схеме часов) и её внешний вид после удаления лишних деталей показаны на рис. 10,11.


Внешний вид получившегося устройства в сборе показан на рис. 12:


Работа с системой

Считыватель-передатчик нашей системы фактически получился необслуживаемым (за исключением замены батарей), поэтому вся работа производится только с приёмником-индикатором (часами). В соответствии с потребностями автора часы имеют минимально необходимую функциональность. Управление осуществляется четырьмя кнопками MODE, SET, NEXT(+), BACK(-). Сразу после подачи питания на дисплее отображается основной экран (рис. 13), содержащий следующую информацию: текущее время, день недели и дата, температура воздуха. Дополнительно на экране могут отображаться символ включённого будильника и индикатор активности радиоканала (слева и справа от часов соответственно):


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


Показания выводятся с точностью 0,1 м 3 и непосредственно пригодны для передачи в расчётные центры. Для их обнуления (например, после ежемесячного считывания), достаточно нажать кнопку BACK(-). Следующее нажатие кнопки MODE вызывает экран с информацией о версии прошивки и авторе, а ещё одно нажатие возвращает нас к основному экрану (рис. 13). Устройство может отображать каждый экран неограниченно долго; этим можно воспользоваться, например, для контроля расхода воды в реальном времени.

Для настройки устройства используется кнопка SET, переводящая устройство в режим установки параметров. Если эта кнопка была нажата во время отображения основного экрана, появляется экран установки времени (рис. 15):


Редактируемый параметр подчёркивается двумя чёрточками в нижней строке, его увеличение и уменьшение производится кнопками NEXT(+) и BACK(-) соответственно, а переход к следующему параметру осуществляется кнопкой SET. Обратим внимание, что вместо корректировки секунд обе клавиши NEXT(+) и BACK(-) производят их обнуление, что полезно для точной настройки часов по сигналам точного времени. По завершению ввода часов, минут и секунд следующее нажатие кнопки SET вызывает экран установки даты (рис. 16):


Редактирование параметров на этом экране осуществляется аналогичным образом. Отметим, что текущее число автоматически корректируется после ввода текущего месяца, что не позволяет по ошибке задать неправильную дату, например 31 апреля или 30 февраля. Год в настройках можно выбрать в пределах (20)13-(20)25. День недели вычисляется автоматически. Следующее нажатие кнопки SET вызывает экран настройки будильника (рис. 17):


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

Пн-Вс - срабатывание в определённый день недели

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

** - ежедневное срабатывание

-- - будильник отключён

Если кнопка SET нажата во время отображения показаний водосчётчиков, она вызывает экран настройки показаний счётчиков (рис. 18). Это бывает полезно, если по каким-либо причинам (например, из-за отключения электричества) показания системы разошлись с реальными показаниями счётчиков.


Кнопками NEXT(+) и BACK(-) можно осуществить подстройку накопленных показаний с интервалом 0,1 м 3 . Выбор редактируемого параметра производится, как обычно, кнопкой SET. Чтобы в любой момент вернуться в основной экран из экранов настройки, достаточно нажать кнопку MODE.

Примечания по сборке и настройке

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

Штатные антенны от радиоуправляемой игрушки (телескопическая длиной 30 см на пульте и отрезок провода длиной 10 см на приёмнике) обеспечивают лишь минимальную дальность связи: около 5-6 метров в пределах прямой видимости. С учётом реальных расстояний в пределах квартиры, а также наличия, как правило, железобетонных стен между ванной и остальным жилищем, этого явно недостаточно. Поэтому обе антенны были заменены на отрезки гибкого провода, а подбор его длины производился экспериментальным путём. Практика показала, что при длине передающей антенны около 0,6 м, а приёмной - 1 м радиосигнал прекрасно принимается в пределах всей квартиры (расстояние между передатчиком и приёмником около 25 м, с учётом двух бетонных перегородок). При этом очевидно, что и такая дальность - не предел, и устойчивой работы радиоканала можно будет добиться даже в двух-трёхэтажном доме.

Заключение

В заключение коснёмся ранее не затрагивавшихся вопросов устойчивости и помехозащищённости системы. На первый взгляд может показаться, что её нетрудно «сбить с толку» любой радиоуправляемой игрушкой того же диапазона. На самом деле это не так, так как не зря в схеме применено стробирование данных при помощи сигнала TURBO микросхемы PT8A977В! Автору ещё не попадался ни один радиопульт, в котором этот сигнал был бы задействован, а значит, даже если ваш самый близкий сосед вдруг вздумает впасть в детство и поуправлять игрушечной машинкой, стабильности системы ничего не угрожает. Не говоря уже о том, что сигнал соседского пульта со штатной антенной, скорее всего, просто «не добьёт» до нашего приёмника.

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

Несмотря на то, что за счёт применения простых делителей в устройстве считывания его статическое потребление тока получилось сравнительно большим (от 250 до 400 мкА), опыт работы с системой показал, что одного комплекта из двух щелочных батареек АА уверенно хватает на 4-5 месяцев бесперебойной работы передатчика. Данный результат можно считать вполне приемлемым.

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



Как вам эта статья?

  • Типы водосчетчиков
  • Принцип работы импульсных выходов на счетчиках
  • Cпособы автоматического получения показаний расхода воды со счетчиков
  • Устройство для считывания показаний с использованием 1-wire
  • Сохранение показаний в базе данных и графическое отображение данных о расходе воды
  • Передача показаний в управляющую компанию (теория)

Введение

В настоящее время широкое распространение получили универсальные квартирные водосчетчики. Если отойти от темы домашней автоматизации, я считаю это очень хорошей тенденцией — ведь ведение учета расхода воды (да и не только воды) достаточно эффективная мера, способствующая сбережению ресурсов. Конечно, в современных Российских реалиях (низкая стоимость воды, электричества, наш менталитет) это звучит весьма странно, но где-то в душе я убежден, что обращать внимание на сбережение ресурсов нужно начинать уже сегодня. А если мыслить не так глобально, то сегодня счетчики, как минимум, позволяют экономить на счетах за коммунальные услуги. Что-то я отвлекся…

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

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

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

С первыми все понятно: посмотрел, записал, отправил в управляющую компанию. Никакой автоматизации. Хотя есть народные умельцы, которые умудряются снимать показания с таких счетчиков с помощью веб-камер («сфотографировать» и затем с помощью специальных алгоритмов распознать цифры — пример реализации) или устанавливают специальные оптические считыватели скорости вращения гребенки на счетчике (чаще всего это та самая «светящаяся красная лампочка» со старых оптических компьютерных мышей — да да, это камера с очень низким разрешением) с последующей обработкой и преобразованием в конкретные цифры расхода воды. Если у вас счетчик без выходов и вы не хотите тратить деньги на установку новых счетчиков, то можете погуглить подобные решения — их достаточно много и почти все можно сделать «своими руками». Но, на мой взгляд, подобный подход носит скорее исследовательский характер, нежели стабильно работающее простое решение с использованием специально разработанных для этих целей импульсных выходов в водосчетчиках.

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

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

Задача сводится к подсчету импульсов в единицу времени и умножению их на «цену» одного импульса. Как правило 1 импульс = 10 литров, в некоторых счетчиках это значение равно 1 литру. Какая цена импульса у вашего счетчика можно посмотреть в техническом паспорте. Такая информация иногда бывает на самом счетчике.

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

В моей реализации Умного дома почти все сенсоры подключены к шине 1-wire и счетчики импульсов для учета расхода воды не стали исключением. Я использовал готовое устройство от магазина radioseti — «Модуль счетчик с буферной памятью 2 канала» . Как видно из названия, устройство позволит считывать показания с двух счетчиков. Устройство основано на чипе Maxim DS2423 и при наличии определенных умений, не составит труда спаять такое устройство самостоятельно.

Во встроенной памяти устройства есть две целочисленные переменные Counters.A и Counters.B , в которых хранится количество «подсчитанных» импульсов на каждом входе (горячая и холодная вода). Каждой переменной выделено 32 байта — этого хватит с огромным запасом на много лет, даже при цене импульса в 1 литр.

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

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

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

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

Устройство работает на удивление стабильно. За более чем пол года эксплуатации расхождение «считанных» фактических показаний составило порядка 20 литров на горячую и 40 литров на холодную воду в меньшую сторону. При среднем расходе воды в месяц 4 и 6 кубометров соответственно это всего около 0,1% — не много. Раз в пару лет можно «откорректировать» значения в памяти устройства вручную.

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

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

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

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

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

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


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

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


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

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

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

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

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

  • Смс сообщения (реализуемо)
  • E-mail (реализуемо и очень просто)
  • Через сайт УК (реализуемо, но придется разобраться как устроен их сайт и научиться эмулировать с помощью скрипта «ручную» передачу показаний)
  • API сервисов ЖКХ (пока не реализуемо, но чувствую что скоро они появятся)

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

Выводы

С доступными на сегодняшний день решениями (как аппаратными, так и софтовыми) считать показания со счетчика воды, сохранить их в БД, а затем визуализировать, использовать для статистических расчетов, передать в управляющую компанию очень просто — даже если вы не умеете пользоваться паяльником и не являетесь гуру-программирстом. Нужно лишь немного терпения, желание и не бояться нового 🙂

Вода / Счетчики холодной и горячей воды

В большинстве квартир Москвы уже состоят счетчики воды. Как правильно снять показания, передать их, что будет - если показания не переданы вовремя? Портал mos.ru разработал небольшую инструкцию на этот счет.

Как правильно снять показания счетчиков холодной и горячей воды?

Показания снимаются одинаково по обоим счетчикам.

Объем воды считается литрами и кубометрами. Кубометр - это куб 100 х 100 х 100 см. 1 кубометр = 1000 литров. 1 литр = 0,001 кубометра.

Перед вами на счетчике 8 ячеек с цифрами — пять черных и три красных. В черных показано количество целых кубометров использованной воды, в красных — количество литров. 744 литра — это 0,744 кубометра. То есть, 00017744 - это 17 774 литра воды или 17,774 кубометра.

Передать нужно цифры из черных ячеек, а красные округлить до целого значения. Если на счетчике цифра 00017744, мы округляем ее до 00018, и в таком виде вписываем в бумажную квитанцию или электронную форму: 00018.

Через месяц цифры на счетчике будут, к примеру, 00022010.

Как передать показания счетчика воды в Москве?

Максимально быстро показания счетчика можно передать через Личный кабинет на сайте mos.ru. Сохраните в Личном кабинете данные о квартире один раз, и впоследствии вам не придется вносить их вручную. Останется только своевременно вводить цифры со счетчиков в форму передачи показаний.

Порядок действий следующий:

  1. Заходим в Личный кабинет на my.mos.ru, выбираем раздел «Мои данные» и вкладку «Оплата ЖКУ»
  2. Заполняем предложенные графы:
    • Придумываем название квартире, за которую будем платить - например, «наш дом». Важно: В ЛК можно настроить передачу показаний по счетчикам из других квартир, которые можно назвать, например, «Мамина квартира», «Бабуля » или «Дядя Петя».
    • Номер квартиры,
    • 10-значный код плательщика (он находится в правом верхнем углу ЕПД),
  3. Сохраняем данные. Теперь вы можете передавать данные счетчиков воды и не тратить время на заполнение одной и той же информации при каждой передаче показаний.

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

Подошел срок передачи данных? Заходим на. mos.ru в раздел «Услуги », выбираем «Жилье , ЖКУ, двор», далее «Прием показаний приборов учета воды», нажимаем «Получить услугу». В форме заявления выбираем квартиру, вносим показания счетчиков воды и нажимаем «Отправить ».

Если вы пропустили сроки передачи показаний счетчика воды…

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

Если же вы не вносите показатели за 3 месяца подряд и более, услуга передачи данных через ЛК приостанавливается. Для ее восстановления принесите текущие показания счетчиков в Управляющую компанию. В следующем месяце вы сможете снова передавать показания через интернет, и будет произведен перерасчет.

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

  • Как быть?

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


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


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

    Решение есть! Автоматические счетчики

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


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

    Преимущества водосчетчиков с дистанционным снятием

    Какие же плюсы присущи таким счетчикам, и почему их стоит приобретать для эксплуатации? Давайте разберемся!

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


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

    И непосредственно сам список плюсов:

    1. Один из главных плюсов, вы можете забыть о беготне с квитанциями по учреждениям и кабинетам.
    2. Управляющему дома будут доступные данные о показании водяных счетчиков в любой момент.
    3. Жильцы вздохнут спокойно, поскольку больше никто не будет «атаковать» их квартиру на предмет снятия показаний счетчика.
    4. Данные будет легко подвергнуть проверке.
    5. Показания будут попадать в информационно-расчетный центр в один и тот же день, благодаря чему больше не возникнет путаницы со сроками.

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