Все началось с того, что в квартире наконец поставили счетчики воды (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, который «из коробки» умеет очень многие вещи.

Комментарии (10)


  1. reff
    21.04.2015 14:22

    устройство с 1-wire шиной на пару счетчиков по не очень гуманной цене порядка 2500 рублей.
    Можете указать точное название или дать ссылку?


    1. Solopov Автор
      21.04.2015 14:26
      -1

      1. Ivasoft
        21.04.2015 22:50
        -1

        А выглядит, как сплиттер для модема. Кто-бы мог подумать )


  1. jonic
    21.04.2015 14:23

    Я сейчас занят интерпретатором JS для ESP8266, проблема памяти стоит тоже остро. Но я уверен что смогу побороть начальную прожорливость и надеюсь в RAM оставить только динамические данные scope.


    1. Janom
      21.04.2015 23:36

      А статью на эту тему не планируете? ;)


      1. jonic
        22.04.2015 12:10
        +1

        В обязательном порядке, как только будет что показать. Следить за проектом можно тут: github.com/wip-studio/esp.js


  1. sisaenkov
    22.04.2015 10:03

    Тоже сделал снятие показаний с помощью Arduino, основываясь на одной из статей на хабре с теми лишь изменениями, что данные хранятся еще и на SD-карте, помимо mysql (на случай длительного отключения света). Если по каким-то причинам показания на SD-карте пропали, или сама карточка новая, то последние переданные на сервер значения снова запишутся на карту.

    Раз в месяц показания отправляются на ПГУ с помощью shell-скрипта.

    Для AllBalance на андроиде написал виджет с отображением текущих показаний, изменений за месяц, и последних переданных на ПГУ:

    Тык


    1. reff
      22.04.2015 11:09

      Ваша творческая составляющая достойна похвалы.


      1. Solopov Автор
        23.04.2015 20:54

        Согласен, кстати видел в одной и статей предложение в ванной поставить табло и крупно выводить трату воды, чтобы стимулировать уменьшения расхода :)


        1. roller
          24.04.2015 02:44

          И сразу в рублях показывать.