Все началось с того, что в квартире наконец поставили счетчики воды (4 импульсных счетчика, так как 2 стояка) и встал вопрос как проще всего снимать показания. А если учесть что одна пара счетчиков оказалась внутри шкафа кухни, то было принято решения попробовать это автоматизировать.
На просторах интернета можно найти устройство с 1-wire шиной на пару счетчиков по не очень гуманной цене порядка 2500 рублей. Так же это решение требовало вести провода к устройству обработки, что тоже не радовало.
Изыскания на тему, как сделать самом данное устройство, привели сначала к arduino + esp8266 в качестве wifi передатчика, а после погружения в тему оказалось, что сам esp8266 может прекрасно справиться с данной задачей.
В итоге на алиексперс был выбран и закуплен вот такой вариант платы: www.aliexpress.com/snapshot/6483884486.html, у нее обрезается контейнер для батареек и подключается старый блок питания от телефона нокия (подходит любой БП порядка 5 вольт, так как на плате стоит преобразователь в 3.3).
После тестового мигания светодиодами (плата прошита прошивкой, позволяющей помигать с телефона) настал выбор инструментов для программирования.
Так как это мой первый опыт работы с МК, не хотелось сразу связываться с SDK, изучать его, настраивать среду компиляции и т.д.
В итоге остановил свой выбор на проекте NodeMCU nodemcu.com/index_en.html китайских товарищей и ESPlorer esp8266.ru/forum/threads/esplorer.34 Виктора.
Порог вхождения не высок, все интуитивно понятно, но как обычно есть ложка дегтя в бочке меда — нехватка памяти, так как сама вирт. машина LUA съедает достаточно. Оказалось что есть набор методик, которые позволяют нивелировать проблему (разбиение на отдельные файлы и выполнения по очереди, компиляция этих файлов), но проблема с памятью все равно регулярно требует кучу времени на отладку и добавление нового «куска» кода порой влечет за собой переделку всего проекта.
Пару слов о функционале:
Счетчик воды импульсный — по сути это аналогично нажатию кнопки (замыканию контактов) когда последняя цифра счетчика проходит через 0 ( вернее у меня с цифры 9 до 4).
Счетчик вешается на один из портов GPIO и землю с подтяжкой по питанию (используется внутренний резистор, режим _PULLUP ).
2 счетчика подключаются к одному МК (можно было все 4 подключить, но провода не наш метод :) ).
В качестве системы сбора и хранения данных выступает сервис thingspeak.com, что сняло вопрос о наличие устройства обработки этих данных в квартире и дает возможно наглядно следить за расходом воды.
Раз в месяц данные забираются с этого сервиса и отправляются на портал PGU Москвы (это тема отдельная, так как официально нормального способа отбавки данных я не нашел, а текущее используемое решение полученное по средствам анализа трафика андроид приложения крайне сырое). В принципе если бы был официальный API отправки данных, то можно было бы заставить thingspeak самому слать эти данные (к этому думаю и приду в будущем), а пока есть маленький скрипт на внешнем
После почти 2 месяцев эксплуатации был обнаружен проект esp8266.ru/arduino-ide-esp8266, который сподвиг попробовать повторить все это на arduino. В результате вторую неделю одно из устройств работает на нем.
Конечно arduino для esp8266 еще достаточно сырое, но общее впечатление очень хорошее. Проблемы с ресурсами, которые преследовали постоянно при работе с nodemcu ушли, памяти хватает, базовые библиотеки рабочие. Появилось желание применить МК еще для чего-нибудь.
PS: Специально не описывал сами программы, так как написать их не трудно, а удовольствия от разбирательства со специфическими проблемками можно получить массу :). Тем же кому интересен результат рекомендую обратить внимание на проект homes-smart.ru/index.php/oborudovanie/bez-provodov-wi-fi/62-besprovodnoj-datchik-na-baze-esp8266-dlya-servisa-narodmon-ru, который «из коробки» умеет очень многие вещи.
Автор: Solopov