ESP32 снимает показания водяных счетчиков и сам передает их «куда надо»
В сети сотни статей про использование ESP32 для съема показаний приборов учета, но практически все из них про интеграцию с «умным домом». Мой вариант реализации решает практическую задачу — просто сам передает показания, снимая с меня эту задачу.
Основное отличие моего решения, от тех что я видел, заключается в максимальной автономности и легкости контроля и управления. ESP32 самостоятельно общается с сайтом который принимает показания приборов учета посредством встроенного http клиента. Процесс контролируется и управляется встроенным в ESP32 telegram ботом.
Сам проект опубликован здесь.
Решать эту задачу я начал с изучения API тех сайтов, которые я использовал для передачи показаний. В моем случае это были сайты https://www.mosenergosbyt.ru/ и https://мособлеирц.рф/. Исследовал API банально, используя F12 в своем браузере. Запускаем режим отладки страницы, включаем запись, аутентифицируемся, передаем показания и исследуем методы POST которые обычно передают и принимают в качестве ответов объекты json.
API сайта мосэнергосбыта мне не понравился. Там используются плагины и для разных городов и улиц АPI запросы могут существенно различаться, делая публикацию результатов работы практически бесполезной и не интересной. А вот сайт мособлеирц имеет достаточно понятный и унифицированный API.
Сразу скажу, что ГИС ЖКХ отбросил сразу из-за сложности аутентификации, привязки к госуслугам и 2FA. Однако, если там есть система авторизации по токенам и кто-то знает как ей пользоваться, то было бы интересно перенять такой опыт.
Контролировать процесс было решено с помощью telegram бота встроенного в сам ESP32. Бот сделан на базе библиотеки https://github.com/GyverLibs/FastBot Бот позволяет задать начальные значения отсчета, корректировать их по необходимости, посмотреть текущее состояние, контролировать процесс передачи показаний и заодно напомнит о дате очередной поверки счетчиков.
Счетчики, конечно, должны быть оснащены герконами, импульсы которых считывает контроллер. Пробовал варианты счета импульсов и на основе прерываний, и с аппаратной и с программной защитой от дребезга. Остановился на программной защите основанной на таймерах. Оказалось это самы практичный и надежный вариант. Тестовая эксплуатация на протяжении двух месяцев показала практически 100% точность подсчета импульсов. Такой вариант не требует никакой обвязки, провода от счетчиков можно подключить непосредственно к пинам контроллера. Подсчитанные значения сохраняются в энергонезависимой памяти контроллера, чтобы можно было пережить пропадания питания.
Вкратце это пожалуй все самое интересное о моей поделке. Если кого-то это заинтересует, то с удовольствием готов ответить на вопросы и написать более детальный материал.