Умный счетчик расхода воды: бюджетный подарок к Новому Году.

Тема в разделе "Глядите, что я сделал", создана пользователем ИгорьК, 6 дек 2016.

  1. ИгорьК

    ИгорьК Гуру

    Да, это ESP-8266. Проект настолько прост по железу, что его может собрать даже ребенок.
    Алгоритм описан здесь.
    Подойдут любые модули ESP-8266. Удобнее всего работать с NodeMCU но они, в силу обвеса, должны потреблять большй ток. Если у вас в месте счетчика есть еще и электричество - это наилучший вариант. Если нет:
    - самый лучший вариант - ESP-3, у него нет информационных светодиодов:

    upload_2019-1-14_14-30-29.png

    - однако паять его непросто, следующий, на мой взгляд - ESP-1, тот что на схеме;
    Если сумеете его доработать: выпаять светодиоды - будет еще лучше;

    Water01.jpg

    Намур подсоединять так. Или так.

    - но у меня, как выяснилось, его не оказалось, и пришлось делать на ESP-201, о чем ниже.

    А как выглядит прием показаний - в приложении Screenshot22.png.
    =========================================================================
    Последние годы практически все новые счетчики расхода воды имеют шнурки-веревочки (наверно я погорячился, в Москве сейчас другие и не ставят, а как в Настоящей России мне не ведомо), которые соединены с герконом, замыкаемым каждым десятым литром воды, проходящим по трубе.

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

    К указанному неплохо бы добавить то, что может программировать ESP-8266.
    Лучше это будет модуль PL2303:
    pl2303.jpg
    Можно ESP-8266 программировать и через ардуино.
    Барьер первый: изучить здесь и понять как управлять модулем. По ссылке есть все необходимое, чтобы разобраться как подключить модуль и залить в него программу.

    Главное, нужно понять, как работать с NodeMCU Flasher, чтобы заливать в модуль разные прошивки.

    А залить придется ту, что прилагается к данному посту (nodemcu-master-16-modules-2016-11-19-17-41-04-float), и получить устройство на NodeMCU, работающее на языке Lua. Да, к сожалению ( :) ) , великий и могучий язык программирования Ардуино здесь применяться не будет.
    ===========================================================================

    О логике работы, чтобы стало понятно что же мы делаем.

    Устройство, ясный перец, просто считает количество замыканий герконов. Устройство не знает о показаниях счетчика, поэтому в момент включения ему нужно сообщить текущее показание.
    Взаимодействие с внешним миром осуществляется по wifi с использованием протокола MQTT. Все что нужно знать о протоколе в минимуме - следующее:
    • между передающим и приемным устройством вставляется сервер, он же брокер.
    • брокер принимает сообщения от одного клиента, и передает его тому, кто подписался на эти сообщения.
    • сообщения настолько легкие, что существуют публичные сервера, которые обеспечивают работу.
    • (таким образом решается проблема серых ip-адресов на обоих сторонах, если вы представляете что это за проблема).
    Кто хочет знать истинную правду о вышенавранном - велкам.
    Итак, с одной стороны у нас будет обрисованное устройство, с другой - смартфон. И на него потребуется установить приложение MQTTDash.
    Ну а компьютер не обойдется без программы ESPlorer - главного инструмента пользователя ESP-8266. Как им пользоваться показано в этом длинном фильме, посмотрите его. А если любите и умеете читать - вот еще хорошее описание что и как делать.
    Общая логика такова, что в левом окне набирается код, кнопкой под окном грузится в модуль, а в правом окне наблюдаем результат работы.
    Программа интуитивно проста. Начинаем разбираться.

    UPD 14/12/2016. Устройство работает отлично.
    К сожалению, могу его рекомендовать к повторению только для тех случаев, когда вы можете запитать его от сетевого источника. Печалька...
    bad.jpg
     

    Вложения:

    Последнее редактирование: 29 янв 2019
    ImrDuke, dwk26111974, Igor68 и 3 другим нравится это.
  2. ИгорьК

    ИгорьК Гуру

    Пора залить скрипт (напомню, делается это через ESPlorer). Приложу скрипт в zip файле и дам небольшие комментарии.
    Как он работает - объяснять смысла нет. В другой ветке все его части так или иначе раскрыты и для правоверного ардуинщика они интереса не представляют, а вызывают обоснованное презрение.

    В общем, необходимо сделать лишь три настройки, которые показаны на рисунке:

    Water02.jpg
    Этот счетчик добавляет на каждое срабатывание 10 литров. Если это не ваш случай - меняйте:
    Water04.jpg
    При начальной заливке и проверке оставьте первый пункт как есть - в ESPlorere скрипт постоянно рапортует о происходящем, и для начала нет необходимости ждать целый час.
    Я надеюсь, вы сообразили, что начинать настройку мы будем:
    Water61.jpg
    • при подсоединенном модуле к компьютеру, а не к батарейкам;
    • вместо водяных счетчиков прикрутите обычные кнопки.
    Мы должны получить в итоге вот такую картинку:
    Water03.jpg

    Это окончательный вариант, к которому надо стремиться. Наша цель.

    Если же Вы зальете и запустите скрипт в первый раз, он должен остановиться и ждать дальнейших указаний в таком положении:
    Water05.jpg

    Получилось? Это уже победа! Пробуйте. Заключительная часть через некоторое время.
    UPD 08/12/2016 23:51. Скрипт изменен для более удобной работы. Брокер по умолчанию и для работы здесь - iot.eclipse.org
    UPD 11/12/2016 Добавил скрипт бОльшей экономии электричества. Кто от батареек - рекомендую его. Кто от сети - лучше оставить прежний.
     

    Вложения:

    Последнее редактирование: 11 дек 2016
    Securbond, Igor68 и 9xA59kK нравится это.
  3. ИгорьК

    ИгорьК Гуру

    Дальше комиксы как работать с MQTTDash:
    Water111.jpg
    Water9.jpg
    Если письменно, то нужно
    1. Создать новое подключение, в данном случае к серверу iot.eclipse.org
    2. Создать четыре элемента: холодная, горячася вода, батарейка и отчет. Создаете первый, клонируете его три раза. У каждого элемента настройки отличаются. Те что с водой - позволяют публикацию, имеют класс доставки 1 и галку Retain. Батарейка и Отчет публикацию не позволяют. Смотрите картинки.
    3. Включаем модуль - он входит в wifi, подписывается, и останавливается. Все как на последней картинке прошлого поста.
    4. На смартфоне появляется надпись "Waiting (for) Data".
    5. На смартфоне устанавливаете показания горячей и холодной воды.
    Water14.jpg
    6. Как только показания установлены - модуль рапортует о приеме в соответствующем элементе.
    7. Всякие изменения в состоянии модуля отражаются в окне ESPlorer.

    Пока вы не изменили время отчета с 20 секунд до часа или как вам, там, надо - нажимайте кнопки и проверяйте что происходит. Все изменения отражаются в смартфоне и в терминале ESPlorer.
    Поочередно и вместе нажимая на кнопки, видим одно и то же:
    Water14.jpg

    1. Удалите в скрипте все строки, где есть слово print
    2. Установите время периодичности отчета на час. Maximum: 6870947 то есть (1:54:30.947).
    3. Через меню ESPlorer переименуйте наш файл и назовите его init.lua:
    Water10.jpg

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

    Или хинт. ESPlorer -> Reload -> Правая кнопка мыши на кнопке init.lua -> Rename и меняете название на старое. Перезагрузка.

    4. Подключите устройство к счетчикам.

    Здесь есть нюанс!
    Вода, понятно, должна быть выключена, и счетчики должны стоять так, чтобы контакты геркона были разомкнуты! Важно! Если какой-то замкнут - лейте воду.
    Устройство не запустится, если замкнут хотя бы один контакт. Это не баг. Это такое свойство ESP-8266 ESP-1. Если хотите избавиться от этого (сильно мешает или воды жалко), то придется взять другой модуль. Как его соединить и что изменить в коде - я скажу.

    5. Установите на смартфоне реальные показатели воды.
    6. Включите батарейки. Наблюдайте за тем, как в окошке "Отчет" модуль ответит о своей работе.
    7. Закрывайте люки и дверцы, и делайте подарок мамам/женам/бабушкам к новому году - это они же занимаются расчетами, не так ли?

    8. Попробуйте налить мне Яндекс-Пива. Может тогда, протрезвев, я сделаю еще что-то полезное.
    Пока не решу вопрос с питанием от батареек - пива не наливать!
    Например, показания счетчика на 24 число прошедшего месяца, или сообщение по электронной почте что пора сдать показания вот в таком-то состоянии.
    Или, например, сообщать еще и о времени последней отправки информации:
    Water121.jpg
    9. Заявление о безответственности. Если проект вам понравился, а счетчики у вас без герконов, то
    1. сначала изготовьте устройство и убедитесь что оно работает,
    2. а затем приобретайте счетчики.
    Но не наоборот.


    [​IMG]
     
    Последнее редактирование: 28 апр 2018
  4. 9xA59kK

    9xA59kK Гик

    А что за тип или марка ,модель счетчика, а то у нас в магазинах я со шнурками не видел.
    ps\ А то недавно поменял счетчики кончился межповерочный срок, поставил самые дешевые.
     
  5. ИгорьК

    ИгорьК Гуру

    Так на картинке видно. Itelma.
     
  6. alp69

    alp69 Форумчанин

    Как всегда стиль изложения на высоте! Равно как и проработка содержания! :)
     
    Последнее редактирование: 6 дек 2016
    ИгорьК нравится это.
  7. ИгорьК

    ИгорьК Гуру

    Повествование закончено.
     
  8. Airbus

    Airbus Радиохулиган Модератор

    А магнитом они останавливаются?
     
  9. ИгорьК

    ИгорьК Гуру

    Не знаю.
     
  10. ANV

    ANV Гуру

    А как же заяц? Так и остается неподключенным?
     
    ИгорьК нравится это.
  11. ИгорьК

    ИгорьК Гуру

    Никак не могу поймать, убегает постоянно, а как фотографироваться - тут как тут.
    Вот готовое устройство :)
    Water15.jpg
     
    IgorGonch нравится это.
  12. IgorGonch

    IgorGonch Нуб

    Замечательный проект! Правда при условии, что "интернеты" работают без сбоев (не подумайте - не претензия). А ежели банальный роутер (с 30 декабря у Ростелекома доступ в инет работает только с "толкача" - перезагрузки) "глючит"? Может я, что-то пропустил, но не вижу где хранить количество импульсов в промежутке после последней удачной передачи...
     
  13. ИгорьК

    ИгорьК Гуру

    Хранятся данные. В таблице.
    Другое дело, что я не тестировал устроство на ДЛИТЕЛЬНОЕ (более суток) отсутствие инета: вырубать интернет у себя дома в голову не пришло. Но и так оно должно работать.
    Вернусь домой - проверю и уточню если надо будет.
     
    Последнее редактирование: 3 янв 2017
  14. IgorGonch

    IgorGonch Нуб

    История с выключением "инета" выплыла, увы, случайно. Ростелеком меняли какие-то скрипты и... вуаля - теперь каждые полчаса(то чаще, то реже) приходится перезапускать роутер. ТВ работает, а вот инет хоть по вифи, хоть по шнурку... Хотя РТ предложили решение - поменять роутер... за деньги (Карл!?!?!) Подожду до конца месяца, ежели не поправят, видимо придется идти на их условия.
    А теперь представим ситуацию, когда "выпилился" в отпуск или командировку. Недели на две, а дома, допустим, переключить роутер некому. Вот и возникает вопрос хранения и желательно энергонезависимого. Но это уже, видимо, отдельная история...
     
  15. ИгорьК

    ИгорьК Гуру

    Дык... хранится. Но под такие жесткие условия устройство не затачивалось. Нужно - доработаю.
    Кратковременное пропадние электричества и/или интернета ему не страшны: после включения устройство "забирает" последнюю информацию с сервера. Но если Вы будете лить воду в темноте - ошибки неизбежны. С этим справится лишь резервирование питания.
     
    Последнее редактирование: 3 янв 2017
  16. alp69

    alp69 Форумчанин

  17. IgorGonch

    IgorGonch Нуб

    Это-то и понятно - про "не затачивалось". Просто я, увидев сей проект возбудился, ну и давай там заказывать разные премудрые штучки. А пока идут, думаю дай поковыряюсь несколько поглубже а тут и сюрприз от РТ подоспел, ну как раз к анализу. Вот и напросились выводы... Для такой ситуации, что я описал напрашивается:
    1. Промежуточное хранение данных с заданной периодичностью опроса с глубиной хранения до месяца;
    2. Использование питания от сети и в качестве резерва от батарейного блока (автоматическое переключение при отсутствии питания в сети и автоматический возврат обратно в случае появления такового с выдачей сообщения о факте переключения на онлайн-сервис);
    3. Возможность "снятия" текущих показаний с монитора (к примеру 2-хстрочника), работающего или в постоянном или в режиме "по кнопке"(команде), в случае ежели показания снять необходимо, а "тырнетов" по какой-то причине нет, а счетчики, опять же по какой-то причине неведомой, сантехники-рукожомастера установили так, что без зеркала не обойтись (у товарища моего счетчики находятся на уровне... спокона - 15 см от пола ЗА УНИТАЗОМ!!! и ему с его-то 150 кг шарообразности ежемесячный трюк весьма доставляет).

    Ну вот какие-то такие мысли возникают:
    добавить к ESP ардуину-микру, модуль для работы с SD картой, мониторчик LCD 16*2(мин.необходимый), может быть, модуль точного времени. Конечно, стоимость уже вываливается за минимальный бюджет описываемого проекта, но расширяется степень универсализма и применимости.
    Ой... чет я размечтался - не так ли?;)
     
  18. IgorGonch

    IgorGonch Нуб

    ну да именно в качестве костыля...
     
  19. ИгорьК

    ИгорьК Гуру

    Эм.. в ужасных условиях проходит жизнь отдльных граждан нашей страны... :)
     
  20. ИгорьК

    ИгорьК Гуру

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