Pull to refresh

Comments 74

Я, имея в виду перспективу доделать умный дом, купил пару водосчетчиков Элехант. Они по блютусу отдают фактические показания. Приедет малина, буду её учить показания снимать.
Погуглил, прикольная штука. Жаль у нас в окрестностях такое не продают :(
я у них на сайте заказывал. Ещё и календарь прислали
Я не из России. Боюсь мою местность это будет сначана проблематично переправить, далее не факт, что местный водоканал согласится это взять на учет, а потом непонятно как обслуживать, поверять, и т.п.

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


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

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

Тогда становится значительно сложнее разместить достаточно близко железку, которая будет снимать и логировать показания… Нигде счастья нет!

Ну не так уж и мало они пробивают: до установки пробивало порядка 5м (на пути стена сруба), установил в колодец, хватает чтобы пробить со дна и принять рядом.


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

После поиска вариантов как раз нашел эти счетчики. Купил и поставил, с этой частью все ок.
Но вот в умный дом их пока так и не подключил, у них есть некоторые особенности с BLE, рассказывать о которых производитель отказался.
Так что купил донгл от нордика, и думаю разберу протокол как будет свободное время.
Потом думаю проще всего будет использовать ESP32 как мост в MQTT, а далее в Home Assistant.

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

Поляризационный фильтр для объектива вам в помощь!
Эх, тыщу лет поляриком не пользовался. Картинку обновил. Впрочем, существенно лучше не стало :)
Ох уж эти языки высокого уровня и решения задачи, что называется, «в лоб»… Начнем с того, что если бы устройство было «ведомым», то оно могло бы себе позволить с максимальной скоростью опрашивать состояние пина и надеяться что оно не пропустит изменение его состояния. А в данном случае опрос пина это одна из задач, и состояние пина может меняться довольно непредсказуемо. Самое логичное и простое — это по прерыванию инкрементировать счетчик в ОЗУ и установит флажок, что при следующем удобном случае нужно обновить значения в ЕЕПРОМ. Потом про сам ЕЕПРОМ. Где проверка целостности данных? И можно подумать над логикой сохранения значений. Один метод это использовать «плавающую» запись по всему адресному пространству для минимизации износа конкретных ячеек, другой метод мониторить питание (тогда нужно отказаться от внешнего аппаратного сброса и, например, добавить оптопару для контроля наличия 220В) и писать в ЕЕПРОМ только при пропадании питания.
+1, надежность на уровне станции юных техников
Спасибо за конструктивный комментарий. Постараюсь учесть во второй версии.

Пара мыслей, отчасти в оправдание
— литры пробегают достаточно медленно — 5 сек на литр. Импульс там порядка секунды — такое сложно пропустить
— выбор между работой по прерываниям и опросом я сделал до того как прикрутил туда uasyncio. Без «многопоточности» там архитектура совсем другая была и с прерываниями было жутко неудобно. Теперь можно пересмотреть и вернуться назад к прерываниям.
— На счет ЕЕПРОМ. Как можно проверить целостность двух чисел?
— На износ ячеек пофиг — я ж туда FRAM собрался ставить. Конкретнее FM24CL04 — обещают неограниченное количество циклов перезаписи
— Про мониторинг питания. Скорее всего в следующей версии будет что нибудь с батарейно-розеточным питанием
литры пробегают достаточно медленно — 5 сек на литр. Импульс там порядка секунды — такое сложно пропустить

А как часто проверяется состояние пина? Видишь сколько лишней работы делает микроконтроллер?

На счет ЕЕПРОМ. Как можно проверить целостность двух чисел?

CRC8 например.

На износ ячеек пофиг

Любая техническая задача имеет множество решений. FRAM вещь хорошая, но можно вполне решать проблему и имеющейся в данный момент микросхемой поменяв алгоритм работы.
Как мы оба видим путей решения одной и той же задачи может быть много :)
В целом замечание принял.
Отличный проект, спасибо за проделанную работу и статью. Но если бы я автоматизировал счётчики, то сделал бы батарейный блок на nRF24L01 (на мой взгляд лучше лишний раз не использовать 220В в санузле), а основным сделал бы проводной или беспроводной АМС сервер. Вот здесь описание кучи подобных реализованных проектов.

https://hi-lab.ru/arduino-mega-server/ams-pro
Спасибо за наводку.

батарейный блок на nRF24L01

А насколько хватит батареи? И правильно ли я понимаю, что нужен будет еще AMS сервер (т.е. 2 устройства вместо одного)?

лучше лишний раз не использовать 220В

Розетка там все равно есть для бойлера. Это не влажная зона а сам БП залит компаундом по самое не хочу.
Я не делал батарейные nRF24 сенсоры для снятий показаний со счётчиков воды, но зато делал аналогичные сенсоры температуры, контактные, протечки и прочие — по моим прикидкам двух батареек АА должно хватить минимум на год.

Что касается АМС сервера, то, на мой взгляд, устройство, описанное в статье, имеет серьёзный архитектурный недостаток. Поясняю. В «умном доме» могут быть не только счётчики воды, а ещё 20-30 других датчиков (температуры, задымления и т. д.). И использовать на каждый ESP8266 это совершенно неправильно из-за привязки каждого датчика к 220В и засорения Wi-Fi. Гораздо более правильно использовать 1 сервер и подцепить к нему все беспроводные (батарейные) сенсоры.
использовать 1 сервер и подцепить к нему все беспроводные (батарейные) сенсоры

И как они будут с сервером общаться, ведь снова по Wi-Fi? Почему вы думаете, что в этом случае засорения не будет?
Да как же по Wi-Fi? По nRF24 конечно. Я же вроде несколько раз это объяснил. Посмотрите схемы сетей по вышеприведённой ссылке — там хорошо видно, что на 1 АМС сервер приходится по несколько nRF24 соединений датчиков и актуаторов. И всё это, само-собой, прекрасно работает на практике в реальных проектах.
Ок, не по Wi-Fi, а по радио. Но частота же тоже 2.4ГГц, значит по идее так же эфир забивается?
Вы немного путаете тёплое с мягким. Во первых, 2,4 ГГц — это обобщённое название диапазона и частоты и ширина полосы и временные характеристики у этих сигналов разные. Во-вторых забивание Wi-Fi это больше проблема работы большого количества Wi-Fi клиентов с роутером, а не частотные и временные помехи друг для друга. Ну, и как я уже сказал, это на «ура» работает на практике — проверено на десятках инсталляций.
Решение на базе АМС также имеет серьезный архитектурный недостаток.

В моем умном доме уже есть пусть и не 20-30 датчиков, а всего до десятка и используются фабричные от Xiaomi. У них это самое батарейное питание, отдельный радиоканал и свой шлюс ZigBee-WiFi — примерно то, что вы и предлагаете.

К этому всему прилагается еще сервер majordomo, который занимается более высокоуровневой автоматизацией (в связке с Xiaomi). Городить здесь третий узел на базе AMS помоему уже излишне.

Вот если бы Xiaomi свой Zigbee открыл…
Ну, эти все технологии (ESP8266, nRF24 и прочий «умный дом») настолько гибкие, что можно делать как хочешь, вариантов ровно миллион — каждый может выбрать архитектуру под себя и в соответствии со своими потребностями.

В обойме АМС решений есть и сервер MajorDoMo:

https://hi-lab.ru/arduino-mega-server/ams-pro/projects/main-server
Если у вас есть Xiaomi и majordomo, почему не прицепили дверные датчики к счётчикам, как тут часто советуют?
Так вы параллельно геркону припаяйте, там же сухой контакт вроде бы, магнит не нужен.
Я видел только в комментах тут и на форуме majordomo, инструкции вроде не было. Себе сделать всё некогда…
Хм, так просто :)
надо бы прикупить парочку таких датчиков на поиграться…
Я сделал из комбинации Attiny4313 и ESP модуля Wemos D1 mini Pro, которые общаются между собой по UART. Тинька отвечает за считывание импульсов и сохранение показаний в своей EEPROM (запись в память плавающая — не более 65000 раз в одну ячейку, что позволяет забыть об износе). Если пропадает внешнее питание, то Тинька питается от резервного источника питания (в моём случае это батарейка CR2032). Модуль ESP отвечает за отображение показаний (может возвращать как REST, JSON, так и просто веб-страницу), которые она запрашивает у Тиньки и передаче импульсов на сервер по MQTT (пока не реализовал). В дальнейшем хочу переделать на модули nRF52832 с использованием mesh-сети, если получится в ней разобраться. :)
У меня примерно такая-же конструкция, только Tiny2313 и питается она от литиевой батарейки. В память данные решил не сохранять, так как приняты все меры к тому, чтобы Tiny всегда была включена. На ESP8266 поднят сервер, который отображает дату, время, уровень сигнала WiFi, показания и серийные номера счетчиков, а так же позволяет сделать и сохранить в EEPROM все начальные установки.
Кроме того, показания счетчиков по протоколу MQTT отправляются сервер откуда я их забираю на смартфон. Ну и маленький дисплей OLED не забыл, чтобы можно было посмотреть показания, если вдруг ноутбук и телефон разрядились.
Еще хочу прикрутить управление кранами с электромоторами, чтобы закрывать и открывать воду из любой точки мира дистанционно.
Я тоже изначально делал на Tiny2313, но в итоге не хватило памяти когда начал делать кольцевой буфер для приёма сообщений через UART. Вот тут выложил код Тиньки.
Тоже сначала хотел сделать универсальную плату, чтобы можно было подключить к ней датчики протечки и поставить реле для кранов, но подумал, что места в корпусе уже не хватит. Я запихал всё в такой корпус и провода в него входят через кабельный ввод.
Вот мое чудо, в стиле техно панк))
Я использовал аппаратное подавление дребезга контактов, что существенно упрощает код для Tiny.
Корпус оттуда же.
image
Круто выглядит. Красиво и аккуратно!
Самое главное — работает без глюков больше 1,5 лет. Я этот проект затеял только потому, что у меня дома одна пара счетчиков находится в труднодоступном месте. Теперь ежемесячно говорю себе спасибо))
У меня счетчики уже подключены к системе учета от УК. Как грамотно «размножить» сигнал от них, чтобы не получить проблем?
Не силен в аналоговой электронике, но по моему тут достаточно оптопары. Но тут больше вопрос к УК, как они отреагируют увидев врезку. Впрочем если показания на счетчике совпадают с ихними, то проблем быть не должно.
UFO landed and left these words here
Конструктивная критика принята :)

Кстати, в ESP-07 антенна внешняя. Просто и без нее добивает…
На ESP-07 — же керамическая антенна есть (в добавок к sma разъему) — серый параллелепипед. Так что она добивает совершенно не по счастливой случайности)
Кстати, в более новых ESP-07S от такой антенны отказались и они уже «добивать» не будут.

HLK не имеет никакой встроенной защиты от перенапряжений по входу от слова совсем… Так что после предохранителя необходимо, как минимум, поставить параллельно входу варистор, что-то типа 471KD10. Иначе при хорошем броске напряжение в сети будет большой бах. Можно добавить во второй провод питания (там где нет предохранителя) до варистора маленький NTC термистор на 20-40 Ом и мощностью 1-2Вт для ограничения пусковых токов. На выходе, до электролита можно добавить дроссель на 5-10мкГн, а после электролита очень желательно хороший керамический кондер на 1мкф и 0.1мкф. А вообще я бы посмотрел в сторону таких ИП как IRM-05-3.3, немного дороже, но зато надежнее.

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

На счет IRM-05-3.3. Не так чтобы сильно дорого, но жаба давит за БП отдавать больше, чем за все остальное вместе взятое. Чем он будет кардинально лучше от HLK с обвесом, или обычного зарядника для мобилки?

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

Ок, спасибо. Заскочу на радиорынок на неделе.

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

Присоединяюсь к совету сменить noname HLK на проверенный временем Mean Well. Думаю, и по КПД заодно выиграете.

От себя добавлю: вместо варистора можно использовать супрессор типа 1.5KE400CA. Я такой установил в свой диммер в 2008 году. Прошло почти 10 работы в режиме 24/7 — полёт нормальный безупречный.

Если хотите ещё большей надежности, переходите от китайских ESP на Texas Instruments CC3220. Помимо прочих плюшек, у этого модуля библиотека MQTT поставляется в составе родного SDK, причём не только в виде клиента, но и в виде сервера.
И никаких танцев с бубнами вроде «не хватает» памяти. К слову, у данного модуля 1М+256КБ. Правда, за всё надо платить (в прямом смысле).

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


Ну и 220V это, конечно, эпик фэйл. Я, конечно, понимаю, что ESP очень много жрёт, но есть вагон других IOT решений. В эпоху когда во всех телевизорах делают опцию отключения статусного светодиода в целях энергосбережения вы ради пары байт держите монстра, который жрёт побольше среднего смартфона в активном режиме (лично замерял). Ради чего тогда умный дом?


В общем, перфекционисты негодуют.

На сях компактнее не будет, это точно. Одна работа со строками чего стоит.

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

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

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

На счет 220В. Питание от сети тут отнюдь не потому, что ЕСП много жрет. А потому, что во-первых уже есть розетка — почему бы от нее не запитать? А во-вторых в будущем нужно будет питать моторизированные вентили. От 12В или от 220В — это еще вопрос, но питание там все равно понадобится. Так почему на фоне этого не использовать более простые решения. Все равно на потреблении в 200мА в прыжке (0.66Вт) особо не наэкономишь, а батарейки менять нужно.

Ладно, признаю, я biased энергопотреблением и поэтому мне не нравится питон на ESP. Я когда-то давно видел на GT концепт датчиков а-ля NFC, которые получают питание от антенны и отправляют данные по BLE (наверное). Вот интересно, это уже реальность или есть какие-то сложности?

Кстати, а радиоворовство еще окупается? Вставить в датчик маленький детекторный приёмник как источник питания…

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

Я вот себе повторил решение от Электроника в Объективе. Демонстрировать не буду, ибо заклюют — там тоже ESP от 220 запитано :)

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

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

Так и есть. На входных пинах подтяжка внутренняя. Остальные подтяжки нужны чтобы контроллер завелся в правильном режиме (все согласно даташиту)
тоже хотел купить изначально счетчик с цифровым выходом, но электрик сказал что ничего пломбировать не будет при подключении к счетчику каких либо устройств, так что покупать больше навороченный счетчик не было смысла, ну а для быта той точности которую мне удалось достичь -достатоно. а запитываю все от компактной зарядки для телефона, коих вокруг достаточно
Сейчас только закончил разбираться с оптопортом на свою Неву 113 старую. Небольшой забег по граблям с клиентскими реализациями ser2net, протоколом обмена итд. Пока есть концепт алгоритма опроса и интерфейс хотелок на матлабе (рабочий инструмент). Тоже полюбовался графиками потребления электричества. В перспективе планирую сделать на esp чтобы по mqtt отдавала что надо (показания, мощность, ток итд) и визжала мерзко если ток приближается к заданному порогу. Ибо дом старый, на входе пакетник на 25А а в доме электроплита, кондиционер, чайник, утюг итд. Один раз пакетник уже срабатывал. А для умного дома задача — при покидании всеми квартиры отсекать превышение потребления по заданному порогу и отсылать сообщения (чтоб утюг не забывали включенным). А питание сделаю как в старом электросчётчике ЕС2726 — через конденсатор ;-). Проработал же он свои 6 лет, пока в нём не села батарейка литиевая.
Я менял в квартире счетчик в 2016-ом, ставил счетчик на земельный участок под стройку купленный в 2017-ом. В обоих случаях при опломбировке просил не трогать верхнюю часть счетчика (оба — АГАТ), где порты расположены. В обоих случаях мне сказали, что и не собирались там пломбировать.
А если WiFi не держать постоянно подключенным, чисто сбор показаний и отправка раз в час, с ESP можно организовать батарейное питание?
Теоретически можно. Вроде ЕСП довольно мало в слипе жрет.
Но вот даже включение WiFi на пару секунд ежедневно будет лопать батарею достаточно быстро. Тут я, пожалуй, соглашусь с предложениями предыдущих комментаторов строить на базе каких нибудь nRF24.

Но как я уже сказал у меня нет ограничений по питанию — рядом есть розетка. К тому же мне все равно понадобится силовое питание для того, чтобы вентили закрывать в случае протечки.
Надо счетчик совмещенный с генератором подыскать, протекающая вода заодно крутит турбинку и подзаряжает акк для есп :-) Или термогенератор между холодной и горячей водой, пельтюх какой нибудь…
У Боша в газовой колонке турбинка стояла, которая питала поджиг газа, когда открываешь воду. Можно использовать для подзаряда аккума

А водой без света не пользоваться?
Розетка это хорошо но автономное питание все равно нужно.


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

Я уже выше писал, что сделал счётчик на Tiny4313, которая в случае отключения основного источника питания, питается от батарейки CR2032. Данные по счётчикам запрашиваются по UART и срабатывание импульсов тоже передаётся по UART. Код прошивки приложил в ссылке выше.
Вот же я сделал, что вы хотите: habr.com/post/418573 или не то?
Добрый день! Собрал аналог вашего устройства, но на батарейках. Вдруг будет интересно: habr.com/post/418573
Only those users with full accounts are able to leave comments. Log in, please.