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

Принцип работы и подключение счетчика воды с импульсным выходом

Правительство РФ по вопросу энергосбережения поставило перед коммунальными службами задачу, которая заключается в достоверном учете потребления энергоресурсов: электричества, тепла, газа и водоснабжения.

Актуальность приобретают системы точного автоматизированного дистанционного учета воды с возможностью мониторинга в режиме реального времени. Это позволяет полностью исключить воздействие человека на достоверность показателей. Такими приборами можно управлять с помощью специальных устройств, которые обладают выходом в телекоммуникационные сети. К ним относится и импульсный счетчик воды.
зачем импульсный выход на счетчике воды. schetchik impulsnyi vihod1. зачем импульсный выход на счетчике воды фото. зачем импульсный выход на счетчике воды-schetchik impulsnyi vihod1. картинка зачем импульсный выход на счетчике воды. картинка schetchik impulsnyi vihod1.

Что это такое, его плюсы и минусы

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

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

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

Основными их преимуществами принято считать:

Если говорить о недостатках, то ими являются:

Несмотря на имеющиеся недостатки, импульсный прибор учета пользуется популярностью среди населения РФ.
зачем импульсный выход на счетчике воды. schetchik impulsnyi vihod2. зачем импульсный выход на счетчике воды фото. зачем импульсный выход на счетчике воды-schetchik impulsnyi vihod2. картинка зачем импульсный выход на счетчике воды. картинка schetchik impulsnyi vihod2.

Конструкция

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

Принцип действия

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

Итак, рассмотрим все подробней:

зачем импульсный выход на счетчике воды. schetchik impulsnyi vihod3. зачем импульсный выход на счетчике воды фото. зачем импульсный выход на счетчике воды-schetchik impulsnyi vihod3. картинка зачем импульсный выход на счетчике воды. картинка schetchik impulsnyi vihod3.
Важно обращать внимание на то, что 1 импульс может приравниваться, к примеру, 10, 100 или 1000 литрам воды – значение напрямую зависит от диаметра трубопровода.

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

Важно помнить: в дальнейшем планируется эксплуатация исключительно импульсных счетчиков.

Как его подключить?

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

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

В обязательном порядке счетчик должен быть подключен проводами к сети сбора необходимой информации. Далее показания будут переданы в специализированный расчетный центр, где будут занесены в квитанцию для оплаты. Иными словами, передавать показания хозяевам собственности нет необходимости.
зачем импульсный выход на счетчике воды. schetchik impulsnyi vihod4. зачем импульсный выход на счетчике воды фото. зачем импульсный выход на счетчике воды-schetchik impulsnyi vihod4. картинка зачем импульсный выход на счетчике воды. картинка schetchik impulsnyi vihod4.

Снятие показаний

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

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

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

Источник

Умные счетчики воды с импульсным выходом

зачем импульсный выход на счетчике воды. 8a666465159411e980ca000c29975fcc. зачем импульсный выход на счетчике воды фото. зачем импульсный выход на счетчике воды-8a666465159411e980ca000c29975fcc. картинка зачем импульсный выход на счетчике воды. картинка 8a666465159411e980ca000c29975fcc.

Сейчас в большинстве квартир стоят счетчики воды, с которых жильцы ежемесячно снимают показания и передают данные приборов учета в управляющую компанию. Но все больше набирают популярность приборы с импульсным выходом, которые позволяют вести учёт дистанционно. Это автоматизирует процесс и дает большую экономию времени, что для многих очень актуально. В большинстве моделей приборов учета бренда ЭКО НОМ есть возможность комплектации счетчиков импульсным выходом. К ним относятся и счетчики воды 15-110, 15-80 и 20-130.

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

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

Визуально он выглядит, как небольшой кабель длиной до полутора метров. Обычно для автоматизации дистанционного съема показаний счетчики оснащают встроенным или накладным импульсным выходом – датчиком геркона. Импульсный выход может обозначаться аббревиатурой И или ДГ.

Разберем принцип действия прибора с импульсным выходом. Геркон – это электромеханическое коммутационное устройство, которое может изменять состояние электрической цепи: размыкать или замыкать при воздействии на него магнитного поля.

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

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

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

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

Источник

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

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

Сферы использования и классификация

Импульсный счетчик — это популярное решение для контроля расхода воды в жилом секторе. Главным предназначением такого счетчика является учет и фиксирование объема использованного ресурса, автоматический расчет его стоимости за определенный период. Кроме того, современные изготовители могут предложить покупателю многотарифные модели, позволяющие отдельно рассчитывать стоимость потребленной холодной и горячей воды. Такие приборы способствуют большей экономии ресурса и затраченных на него средств.

зачем импульсный выход на счетчике воды. f24c7c1a9c8dbc1cb5a62657e2b39579. зачем импульсный выход на счетчике воды фото. зачем импульсный выход на счетчике воды-f24c7c1a9c8dbc1cb5a62657e2b39579. картинка зачем импульсный выход на счетчике воды. картинка f24c7c1a9c8dbc1cb5a62657e2b39579.Приобрести счетчик воды с импульсным выходом можно в любом специализированном магазине

Импульсные приборы учета могут работать вместе со сложной электроникой. Благодаря этому такие счетчики можно включать в состав системы “умный дом”.

При этом устройства могут эффективно работать с холодной водой (температура в пределах +5…+40 °C) при максимальном давлении в 1,5 мПа. Что касается горячей воды, то тут устройства способны выдерживать температуры до +90°C и максимальное давление в 1,8 мПа. Такие показатели делают водомеры наиболее подходящими для использования в автономных и централизованных системах водоснабжения.

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

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

Принцип работы и устройство прибора

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

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

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

зачем импульсный выход на счетчике воды. 35d6495cf97ea5d70961d869681b394d. зачем импульсный выход на счетчике воды фото. зачем импульсный выход на счетчике воды-35d6495cf97ea5d70961d869681b394d. картинка зачем импульсный выход на счетчике воды. картинка 35d6495cf97ea5d70961d869681b394d.Перед началом эксплуатации счетчика воды с импульсным выходом следует посмотреть обучающее видео

Для удобной и эффективной эксплуатации водомер с импульсным выходом может оборудоваться:

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

Достоинства и недостатки водомера

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

зачем импульсный выход на счетчике воды. 9b03b266c631968827dd230f89016f38. зачем импульсный выход на счетчике воды фото. зачем импульсный выход на счетчике воды-9b03b266c631968827dd230f89016f38. картинка зачем импульсный выход на счетчике воды. картинка 9b03b266c631968827dd230f89016f38.После установки на счетчик должна быть установлена пломба

Помимо этого, к преимуществам этих приборов относят:

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

Критерии выбора водосчетчика

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

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

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

Подключение водяного счетчика выполняется специалистом, так как прибор требует налаживания.

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

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

Источник

Принудительная замена счетчиков воды старого образца на счётчики с удалённым снятием показаний. Законно?

зачем импульсный выход на счетчике воды. prinuditelnaya zamena schetchikov vody. зачем импульсный выход на счетчике воды фото. зачем импульсный выход на счетчике воды-prinuditelnaya zamena schetchikov vody. картинка зачем импульсный выход на счетчике воды. картинка prinuditelnaya zamena schetchikov vody.

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

Подобное новшество не получило широкого распространения. Этим могут пользоваться мошенники.

Попробуем разобраться, необходимо ли менять водосчётчики.

Водосчётчики с удалённым снятием показаний

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

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

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

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

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

Обязательно ли менять свои водосчётчики

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

Владелец помещения обязан заменить водосчётчик только в случае поломки или признания водосчётчика непригодным к использованию.

Использовать можно только водосчётчики, которые прошли соответствующую сертификацию.

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

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

Источник

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

Когда-то системы домашней автоматизации, или как их часто называют “умный дом”, были жутко дорогими и их могли позволить себе лишь богачи. Сегодня на рынке можно найти достаточно бюджетные комплекты с датчиками, кнопками/выключателями и исполнительными устройствами для управлением освещением, розетками, вентиляцией, водоснабжением и другими потребителями. И даже самый криворукий DIY-шник может приобщиться к прекрасному и за недорого собирать устройства для умного дома.

зачем импульсный выход на счетчике воды. ak2x6li6an5gyqbrg2ett au. зачем импульсный выход на счетчике воды фото. зачем импульсный выход на счетчике воды-ak2x6li6an5gyqbrg2ett au. картинка зачем импульсный выход на счетчике воды. картинка ak2x6li6an5gyqbrg2ett au.

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

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

Под катом мой вариант устройства на базе ESP8266, которое считает импульсы со счетчиков воды и по MQTT отправляет показания на сервер умного дома. Программировать будем на micropython с использованием библиотеки uasyncio. При создании прошивки я наткнулся на несколько интересных сложностей, о которых также расскажу в этой статье. Поехали!

Схема

зачем импульсный выход на счетчике воды. image loader. зачем импульсный выход на счетчике воды фото. зачем импульсный выход на счетчике воды-image loader. картинка зачем импульсный выход на счетчике воды. картинка image loader.

Сердцем всей схемы является модуль на микроконтроллере ESP8266. Изначально планировался ESP-12, но мой оказался бракованный. Пришлось довольствоваться модулем ESP-07, который был в наличии. Благо они одинаковые и по выводам, и по функционалу, разница только в антенне — у ESP-12 она встроенная, а у ESP-07 — внешняя. Впрочем, даже без антенны WiFi сигнал в моей ванной ловится нормально.

Обвязка модуля стандартная:

Для программирования и отладки я буду использовать UART, который вывел на гребенку. Когда нужно — я просто подключаю туда USB-UART переходник. Нужно только не забывать, что питается модуль от 3.3В. Если забыть переключить переходник на это напряжение и подать 5В, то модуль скорее всего сгорит.

С электричеством в ванной у меня проблем нет — розетка расположена примерно в метре от счетчиков, так что запитывать буду от 220В. В качестве источника питания у меня будет трудится небольшой блочок HLK-PM03 от Tenstar Robot. Лично у меня туго с аналоговой и силовой электроникой, а тут готовый блок питания в маленьком корпусе.

Для сигнализации режимов работы я предусмотрел светодиод, подключенный к GPIO2. Впрочем распаивать я его не стал, т.к. в модуле ESP-07 уже есть светодиод, причем подключенный к тому же GPIO2. Но на плате пускай будет — вдруг я захочу вывести этот светодиод на корпус.

Переходим к самому интересному. У счетчиков воды нет никакой логики, у них нельзя спросить текущие показания. Единственное что нам доступно это импульсы — замыкание контактов геркона каждый литр. Выводы герконов у меня заведены в GPIO12/GPIO13. Подтягивающий резистор я буду включать программно внутри модуля.

Изначально я забыл предусмотреть резисторы R8 и R9 и в моем варианте платы их нет. Но раз я уже выкладываю схему на всеобщее обозрение, то стОит исправить эту оплошность. Резисторы нужны, чтобы не спалить порт в случае если прошивка глюканет и выставит единицу на пине, а геркон закоротит эту линию на землю (с резистором потечет максимум 3.3В/1000Ом = 3.3мА).

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

Поэтому я решил реализовать сохранение значений счетчиков в микросхеме памяти, подключенной по I2C. Особых требований по размеру флеш памяти у меня нет — нужно сохранять всего 2 числа (количество литров по счетчикам горячей и холодной воды). Даже самый маленький модуль подойдет. А вот на количество циклов записи нужно обратить внимание. У большинства модулей это 100 тыс циклов, у некоторых до миллиона.

Казалось бы миллион это много. Но я за 4 года проживания в своей квартире потребил чуть более 500 кубов воды, это 500 тыс литров! И 500 тыс записей во флеш. И это только холодная вода. Можно, конечно, перепаивать микросхему каждые пару лет, но оказалось есть микросхемы FRAM. С точки зрения программирования это тот же самый I2C EEPROM, только с ооооочень большим количеством циклов перезаписи (сотни миллионов). Вот только пока все никак не доеду до магазина с такими микросхемами, поэтому пока постоит обычная 24LC512.

Печатная плата

Изначально я планировал делать плату в домашних условиях. Потому плата проектировалась как односторонняя. Но продолбавшись битый час с c лазерным утюгом и паяльной маской (без нее как-то не comme il faut), я все же решил заказать платы у китайцев.

зачем импульсный выход на счетчике воды. image loader. зачем импульсный выход на счетчике воды фото. зачем импульсный выход на счетчике воды-image loader. картинка зачем импульсный выход на счетчике воды. картинка image loader.

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

С односторонней разводкой также связан был один большой косяк. Т.к. плата рисовалась односторонняя, то дорожки и SMD компоненты планировалось размещать с одной стороны, а выводные компоненты, разъемы и блок питания с другой. Когда через месяц я получил платы, то забыл про изначальный план и распаял все компоненты на лицевой стороне. И только когда дело дошло до припаивания блока питания выяснилось, что плюс и минус разведены наоборот. Пришлось колхозить перемычками. На картинке выше я уже поменял разводку, но земля перекидывается из одной части платы в другую через выводы кнопки Boot (хотя можно было бы и на втором слое дорожку провести).

Получилось вот так

зачем импульсный выход на счетчике воды. au dcsvpehh9p5g9iqyob5hjslu. зачем импульсный выход на счетчике воды фото. зачем импульсный выход на счетчике воды-au dcsvpehh9p5g9iqyob5hjslu. картинка зачем импульсный выход на счетчике воды. картинка au dcsvpehh9p5g9iqyob5hjslu.

Корпус

Следущий шаг — корпус. При наличии 3D принтера это не проблема. Особо не заморачивался — просто нарисовал коробку нужного размера и сделал вырезы в нужных местах. Крышка крепится к корпусу на маленьких саморезах.

зачем импульсный выход на счетчике воды. image loader. зачем импульсный выход на счетчике воды фото. зачем импульсный выход на счетчике воды-image loader. картинка зачем импульсный выход на счетчике воды. картинка image loader.

Я уже упоминал, что кнопка Boot может быть использована как кнопка общего назначения — вот ее и выведем на переднюю панель. Для этого я нарисовал специальный “колодец” где живет кнопка.

зачем импульсный выход на счетчике воды. image loader. зачем импульсный выход на счетчике воды фото. зачем импульсный выход на счетчике воды-image loader. картинка зачем импульсный выход на счетчике воды. картинка image loader.

Внутри корпуса также располагаются пеньки, на которые устанавливается плата и фиксируется единственным винтом М3 (на плате больше места не оказалось)

Дисплей подбирал уже когда напечатал первый примерочный вариант корпуса. Стандартный двухстрочник в этот корпус не влазил, зато в сусеках обнаружился OLED дисплей SSD1306 128×32. Маловат, но мне на него не каждый день глазеть — покатит.

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

Устройство в сборе. Дисплейный модуль приклеен на сопли термоклей

зачем импульсный выход на счетчике воды. snqrxfyyihzqwiwwwf 1yly545m. зачем импульсный выход на счетчике воды фото. зачем импульсный выход на счетчике воды-snqrxfyyihzqwiwwwf 1yly545m. картинка зачем импульсный выход на счетчике воды. картинка snqrxfyyihzqwiwwwf 1yly545m.

зачем импульсный выход на счетчике воды. owbh2oguwv4tiez2basnv11hgvw. зачем импульсный выход на счетчике воды фото. зачем импульсный выход на счетчике воды-owbh2oguwv4tiez2basnv11hgvw. картинка зачем импульсный выход на счетчике воды. картинка owbh2oguwv4tiez2basnv11hgvw.

Конечный результат можно увидеть на КДПВ

Прошивка

Перейдем к программной части. Для вот таких небольших поделок мне очень нравится использовать язык Python (micropython)- код получается очень компактный и понятный. Благо тут нет необходимости спускаться на уровень регистров с целью выжимать микросекунды — все можно сделать из питона.

Вроде бы все просто, да не очень — в устройстве намечается несколько независимых функций:

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

Каждый счетчик обрабатывается экземпляром класса Counter. Первым делом из EEPROM (value_storage) вычитывается начальное значение счетчика — так реализуется восстановление после пропадания питания.

Пин инициализируется со встроенной подтяжкой к питания: если геркон замкнут — на линии ноль, если разомкнут линия подтягивается к питанию и контроллер читает единицу.

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

Задержка в 25мс нужна для фильтрации дребезга контактов, а заодно она регулирует как часто просыпается задача (пока эта задача спит — работают другие задачи). Каждые 25мс функция просыпается, проверяет пин и если контакты геркона замкнулись, то значит через счетчик прошел очередной литр и это нужно обработать.

Обработка очередного литра тривиальна — просто увеличивается счетчик. Ну и новое значение неплохо было бы на флешку записать.

Для удобства использования предусмотрены “доступаторы”

Ну а теперь воспользуемся прелестями питона и библиотеки uasync и сделаем объект счетчика waitable (как это на русский перевести-то? Тот, которой можно ожидать?)

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

Да, в этом месте вы меня можете потроллить, мол сам же сказал про прерывания, а на деле устроил тупой опрос пина. На самом деле прерывания это первое, что я попробовал. В ESP8266 можно организовать прерывание по фронту, и даже написать обработчик этого прерывания на питоне. В этом прерывании можно обновлять значение переменной. Наверное, этого бы хватило будь счетчик ведомым устройством — таким, которое ждет, пока у него не спросят это значение.

К сожалению (или к счастью?) мое устройство активное, оно должно само слать сообщения по протоколу MQTT и записывать данные в EEPROM. И тут уже вступают ограничения — в прерываниях нельзя выделять память и использовать большой стек, а значит об отправке сообщений по сети можно забыть. Есть плюшки типа micropython.schedule(), которые позволяют запустить какую нибудь функцию “как только так и сразу”, но возникает вопрос “а толку-то?”. Вдруг мы прямо сейчас отправляем какое нибудь сообщение, а тут вклинивается прерывание и портит значения переменных. Или, например, с сервера приехало новое значение счетчика пока мы еще старое недозаписали. В общем, нужно городить синхронизацию или выкручиваться как-то по другому.

А еще время от времени вылетает RuntimeError: schedule stack full и кто его знает почему?

С явным опросом и uasync оно в данном случае как-то красивее и надежнее получается

Работу с EEPROM я вынес в небольшой класс

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

Чтобы каждый раз не передавать объект I2C и адрес ячейки памяти я все это завернул в маленький и удобный классик

Сам объект I2C создается с такими параметрами

Подходим к самому интересному — реализации общения с сервером по MQTT. Ну сам протокол реализовывать не нужно — на просторах интернета нашлась готовая асинхронная реализация. Вот ее и будем использовать.

Все самое интересное собрано в классе CounterMQTTClient, который базируется на библиотечном MQTTClient. Начнем с периферии

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

С инициализацией не все так тривиально

Для задания параметров работы библиотеки mqtt_as используется большой словарь разных настроек — config. Большая часть настроек по умолчанию нам подходит, но много настроек нужно задать явно. Чтобы не прописывать настройки прямо в коде я их храню в текстовом файле config.txt. Это позволяет менять код независимо от настроек, а также наклепать несколько одинаковых устройств с разными параметрами.

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

Корутина в цикле ждет нового значения счетчика и как только оно появилось — отправляет сообщение по протоколу MQTT. Первый кусочек кода отправляет начальное значение даже если водичка через счетчик не течет.

Базовый класс MQTTClient сам себя обслуживает, сам инициирует соединение по WiFi и переподключается когда соединение пропадает. При изменениях в состоянии соединения WiFi библиотека нас информирует вызовом wifi_connection_handler

Функция честно слизана из примеров. В данном случае она считает количество отключений (internet_outages) и их длительность. При восстановлении соединения на сервер отправляется время простоя.

Кстати говоря, последний sleep нужен только для того, чтобы функция стала асинхронной — в библиотеке она вызывается через await, а так могут вызываться только функции в теле которых есть другой await.

Помимо связи с WiFi нужно еще установить соединение с MQTT брокером (сервером). Этим тоже занимается библиотека, а нам выпадает возможность сделать что нибудь полезное, когда соединение установлено

Тут мы подписываемся на несколько сообщений — сервер теперь имеет возможность задать текущие значения счетчиков отправив соответствующее сообщение.

Эта функция обрабатывает пришедшие сообщения, и в зависимости от темы (названия сообщения) обновляются значения одного из счетчиков

Парочка вспомогательных функций

Эта функция занимается отправкой сообщения в случае если соединение установлено. Если соединения нет — сообщение игнорируется.

А это просто удобная функция, которая формирует и отправляет отладочные сообщения.

Так много текста, а мы еще не моргали светодиодом. Вот

Я предусмотрел 2 режима моргания. Если пропало соединение (или оно только устанавливается), то устройство будет моргать быстро. Если соединение установлено — устройство моргает раз в 5 секунд. При необходимости тут можно реализовать и другие режимы моргания.

Но светодиод это так, баловство. Мы же еще на дисплей замахнулись.

Вот это то, о чем я говорил — как просто и удобно с корутинами. Эта маленькая функция описывает ВСЁ взаимодействие с пользователем. Корутина просто ждет нажатия кнопки и включает дисплей на 3 секунды. На дисплее отображаются текущие показания счетчиков.

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

Ну еще парочка настроек и констант для полноты описания

Запускается это все так

Что-то с памятью моей стало

Итак, весь код есть. Файлики я заливал с помощью утилиты ampy — она позволяет заливать их на внутреннюю (ту, которая в самом ESP-07) флешку и потом доступаться из программы как к обычным файлам. Туда же я залил используемые мною библиотеки mqtt_as, uasyncio, ssd1306 и collections (используется внутри mqtt_as).

Запускаем и… Получаем MemoryError. Причем чем больше я пытался понять где именно утекает память, чем больше я расставлял дебаг принтов, тем раньше возникала эта ошибка. Короткий гуглеж привел меня к пониманию, что в микроконтроллере в принципе всего 30кб памяти в которые 65 кб кода (вместе с библиотеками) ну никак не помещаются.

Трюк заключается в том, чтобы избавить микроконтроллер от ресурсоемкой компиляции. Можно скомпилировать файлы на большом компьютере, а в микроконтроллер залить уже готовый байткод. Для этого нужно скачать прошивку micropython и собрать утилиту mpy-cross.

Я не стал писать Makefile, а вручную прошелся и скомпилировал все нужные файлики (включая библиотеки) примерно так

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

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

И что с этим теперь делать?

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

Мой “умный дом” крутится на системе Majordomo. Модуль MQTT то ли есть из коробки, то ли легко устанавливается из маркета дополнений — уже не помню откуда он у меня взялся. MQTT штука не самодостаточная — нужен т.н. брокер — сервер, который принимает, сортирует и перенаправляет клиентам MQTT сообщения. Я использую mosquitto, который (как и majordomo) крутится все на том же нетбуке.

После того, как устройство хоть раз отправит сообщение значение тут же появится в списке.

зачем импульсный выход на счетчике воды. image loader. зачем импульсный выход на счетчике воды фото. зачем импульсный выход на счетчике воды-image loader. картинка зачем импульсный выход на счетчике воды. картинка image loader.

Эти значения теперь можно связать с объектами системы, их можно использовать в сценариях автоматизации и подвергать различному анализу — все это out of scope этой статьи. Кому интересна система majordomo могу порекомендовать канал Электроника В Объективе — товарищ тоже строит умный дом и доходчиво рассказывает про настройку системы.

Покажу лишь пару графиков. Это простой график значений за сутки

зачем импульсный выход на счетчике воды. image loader. зачем импульсный выход на счетчике воды фото. зачем импульсный выход на счетчике воды-image loader. картинка зачем импульсный выход на счетчике воды. картинка image loader.
Видно, что ночью водой почти никто не пользовался. Пару раз кто-то сходил в туалет, и, похоже фильтр обратного осмоса пару литров за ночь посасывает. Утром потребление существенно возрастает. Обычно я пользуюсь водой из бойлера, но тут я захотел принять ванную и временно переключил на городскую горячую воду — это также хорошо заметно на нижнем графике.

Из этого графика я узнал, что сходить в туалет это 6-7л воды, принять душ — 20-30л, помыть посуду около 20л, а чтобы принять ванную нужно 160л. За день моя семья потребляет где-то около 500-600л.

Для особо любознательных можно заглянуть в записи по каждому отдельному значению

зачем импульсный выход на счетчике воды. image loader. зачем импульсный выход на счетчике воды фото. зачем импульсный выход на счетчике воды-image loader. картинка зачем импульсный выход на счетчике воды. картинка image loader.

Отсюда я узнал что при открытом кране вода течет со скоростью примерно 1л за 5с.

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

зачем импульсный выход на счетчике воды. image loader. зачем импульсный выход на счетчике воды фото. зачем импульсный выход на счетчике воды-image loader. картинка зачем импульсный выход на счетчике воды. картинка image loader.

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

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

Заключение

Сегодня моя квартира стала чуточку умнее. С таким небольшим устройством мне будет удобнее следить за потреблением воды в доме. Если раньше я возмущался “опять много воды за месяц потребили”, то теперь я смогу найти источник этого потребления.

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

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

В статье я рассказал свой вариант устройства на базе ESP8266. На мой взгляд у меня получился весьма интересный вариант прошивки на micropython с использованием корутин — просто и симпатично. Я постарался описать множество нюансов и косяков, с которыми столкнулся походу. Возможно я слишком детально все описывал, лично мне как читателю проще промотать лишнее, чем потом додумывать то, что было недосказано.

Как всегда я открыт для конструктивной критики.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *