Автоматизируем передачу показаний счетчиков в коммунальные службы, не выходя из дома
Входящие
- У меня был установлен счетчик холодной воды «от застройщика», самый простой, показания можно только посмотреть глазами
- Установлен бойлер, счетчик горячей воды не используется (показания не меняются), но показания надо все равно передавать регулярно (даже если не менялись надо заходить и жать кнопку «передать»...)
- На звонок в киевводоканал с вопросом «как автоматически передавать показания из квартиры?» был получен ответ «Мы таким не занимаемся...»
- Автор про паяльник знает только то, что им можно получать сведения от незаинтересованных в выдачи таких сведений граждан и что-то там делать с оловом
- Счетчик электроэнергии установлен не в квартире и показания передаются без моего участия
- В квартире все «умное» (даже шторы по расписанию закрываются/открываются) и на счетчики я довольно долго косо смотрел, но как-то руки не доходили
- Отсутствие желания общаться с коммунальными службами на эту тему отпало в принципе, после звонка с вопросом в киевводоканал
- Отсутствие желания делать повторяющиеся и абсолютно бесполезные телодвижения по передаче показаний
- Наличие возможности потратить на эксперимент деньги и время в разумных пределах
Исследование
Довольно интересное для моих входящих данных решение было в статье. Народ сделал девайс-накладу, который фотографирует показания счетчика, шлет фотку на сервис через интернет используя встроенный GSM модуль (у GSM операторов есть спец тариф «датчик» для таких дел), сервис распознает фотку и показания можно забирать через интернет. Вот это чудо устройство.
Проблемы с чудо-девайсом:
- В случае включения «великого русского файрвола» есть угроза потерять все полимеры
- Найти чудо-устройство на украинском рынке довольно проблематично и цена сильно завышена
Подобный девайс подсказали коллеги, уже когда я закончил свой эксперимент.
Стрельнув по нескольким сайтам со счетчиками с вопросом «как автоматизировать передачу показаний», попал на одного очень хорошего продавца, который сразу предложил решение (в выходные по вечерам отвечал человек), а конкретнее:
- Заменить счетчик на более подготовленный к задаче
- Поставить накладку на счетчик, она будет опрашивать счетчик и ее можно подключать дальше к чему-то
- Подключить накладку к сервису smart-mac через девайс
Ну сам smart-mac девайс производитель продает вроде дешевле, но так как продавец активно взялся помогать, то я решил что экономить сотню или около того не буду. Как эти показания затолкать в коммунальную службу продавец не сказал, и вроде как можно, но там «не все так просто»...
Ну штож — «Challenge accepted»...
High level design
Картинка ниже сразу возникла у меня в голове и я начал поэтапно ее имплементировать:
Из особенностей:
- накладка для передачи работает от батарейки, что хорошо, но должна по кабелям быть подключена к smart-mac девайсу
- smart-mac девайс требует питание 220 и для передачи показаний на сервис — доступ к wifi и интернет. Можно и по локальной сети на него попасть по wifi, но решение усложняется, так как придется все автоматизацию запускать на локальном сервере, а у него аптайм не стабилен, а хочется сделать и забыть:)
- веб интерфейс smart-mac сервиса с дашбордами я не осилил: какие-то автогенеренные дашборды, надо что-то читать. Я почти сразу на форуме smart-mac нашел доку по REST API и успокоился
- для передачи показаний нужен сервер, где можно будет по расписанию что-то запускать, ну мы подумали и я решил что хватит github actions и крона который будет просто собирать проект и ранить юнит тесты
Phase 1: Подготавливаем счетчик для автоматизации
Был интересный нюанс — надо выбрать диаметр 15 или 20, я не знаю как продавец по фото моего старого счетчика увидел 15, но сказал что «на счетчике же написано», где там оно написано я до сих пор не знаю... Ну дальше все просто — покупаем новый счетчик, звоним в киевводоканал и за 400грн происходит замена с постановкой на учет и всеми танцами вокруг водоканала без моего участия. Тут все пошло быстро и оперативно — после звонка, на следующий день пришел мастер, за 20 минут заменил, выдал документы и рассказал когда новый счетчик станет на учет.
Phase 2: Настраиваем smart-mac device
Тут было просто — по ссылке есть таба «Скачать файлы», там pdf с инструкцией. Читаем, выполняем, все работает :)
Примерно такие шаги:
- кабеля питания 220 сунуть в гнездо 9 и 10
- подключить к вайфай по инструкции
- настроить девайс в личном кабинете
Phase 3: Подключаем счетчик к smart-mac девайсу
Тут было больше всего непонятного поэтому описываю что произошло. Накладка на счетчик устанавливается просто и выглядит так:
Два провода коричневый и черный надо затолкать в клеммы 1 и 2 smart-mac девайсу. Вот так:
Игого я на показателе smart-mac «Total Pulse Ch1» (потому как я засунул белый провод накладки в импульсный вход 1) прописываю цифру в импульсах, то есть литрах:
Далее заходим в личный кабинет smart-mac и проверяем что все работает — открываем кран холодной воды и смотрим, что литроимпульсы соответствуют цифрам на счетчике. Как я уже писал выше — в интерфейсе разбираться не было ни желания ни необходимости ... то я просто дернул апишку и получил ответ с нужной циферой и обрадовался.
Phase 4: Автоматизируем передачу показаний
Тут я не буду углубляться в детали — код в репозитории, смотрите, форкайте, автоматизируйте.. Алюминь! :)
Стек технологий следующий:
- java 11
- maven
- selenuim + pageobjects
- selenuim testcontainer
- spring boot
- spring cloud openfeign
В итоге кнопка «передать» не меняющиеся показания горячего счетчика выглядит так:
Phase 5: Запускаем в космос
Далее надо чтобы по расписанию запускалась сборка проекта и чтобы логины и пароли были не в паблике. Ну тут все очень просто:
- docs.github.com/...d-testing-java-with-maven
- docs.github.com/...github-actions#onschedule
- docs.github.com/...storing-encrypted-secrets
Summary
- Потрачено пару вечеров и 3620 гривен
- Автоматизировано все, что хотелось автоматизировать
- Накладных расходов нет, кроме сапорта в счет личного времени (что намного интереснее чем лазить за показаниями:)
- Тестконтейнер с селениумом записывает видео о том как мой код кликает по сайту, в свободное время попробую сделать чтобы эти видео прилетали мне в телеграм или почту
68 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів