Вдруг кому пригодится.
Сделано на базе Wemos D1 mini. Также понадобятся шилды зарядки батареи (нужно доработать, припаяв сопротивление порядка 12 кОм между входным напряжением +5в и пином D0) и SD-карты от этого же производителя. И АКБ, типа 18650.
Поначалу было сделано аппаратное устранение дребезга контактов (так мне было проще) на микросхеме 74LVC14AD.118. Но система работала плоховато и все равно дребезг полностью не устраняла. Поэтому было переделано на MC14490. Но потом выяснилось что и специализированная микросхема не спасает (ну или у меня руки кривые) полностью и за длительный период счетчик все равно убегает вперед. Потому код был изменен - был написан кусок устраняющий дребезг программно.
Есть web-интерфейс для вывода показаний, настройки и заливки кода для обновления ...
Конфиг записывается или на SD (если есть) или во флэш.
Данные отсылаются на mqtt сервер, где mqttwarn их складывает в базу sqlite3 (ну не сам конечно, а с помощью скрипта на Perl). mqttwarn в процедуре execute пришлось немного доработать, добавив одну строку, чтобы топик передавался вторым аргументом.
При пропадании внешнего питания модуль переходит в режим light_sleep с малым потреблением. При восстановлении питания и при очередном срабатывании счетчика, модуль просыпается и работает в штатном режиме. Если в режиме сна питание не восстановилось, то при срабатывании счетчика это учитывается и модуль опять засыпает.
Наваял еще пару php и html, чтобы можно было статистику смотреть не на самом устройстве, а на сервере, куда данные отсылаются. За день, за месяц и за год.
На самом устройстве можно просто посмотреть кол-во куболитров [IMG], например вот -
Сервер у меня локально крутится на Debian 9.
Все подробности тут -
Собранная плата без АКБ.
Конфиг
Статистика на локальном http сервере из базы sqlite