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

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

  1. ИгорьК

    ИгорьК Давно здесь

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

    - однако паять его непросто, следующий, на мой взгляд - 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
     

    Вложения:

    Последнее редактирование: 4 янв 2017
    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
    Рязанский_Ардуинщик и Securbond нравится это.
  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. ИгорьК

    ИгорьК Давно здесь

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