Skip to content

vasilievip/meters-automation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Meters automation

Автоматизируем передачу показаний счетчиков в коммунальные службы не выходя из дома

Last submission status

Initiation

  • У меня был установлен счетчик холодной воды "от застройщика", самый простой, показания можно только посмотреть глазами
  • Установлен бойлер, счетчик горячей воды не используется (показания не меняются), но показания надо все равно передавать регулярно (даже если не менялись надо заходить и жать кнопку "передать"...)
  • На звонок в киевводоканал с вопросом "как автоматически передавать показания из квартиры?" был получен ответ "Мы таким не занимаемся..."
  • Автор про паяльник знает только то, что им можно получать сведения от незаинтересованных в выдачи таких сведений граждан и что-то там делать с оловом
  • Счетчик электроэнергии установлен не в квартире и показания передаются без моего участия
  • В квартире все "умное" (даже шторы по расписанию закрываются/открываются) и на счетчики я довольно долго косо смотрел, но как-то руки не доходили
  • Отсутствие желания общаться с коммунальными службами на эту тему отпало в принципе, после звонка с вопросом в киевводоканал
  • Отсутствие желания делать повторяющиеся и абсолютно бесполезные телодвижения по передаче показаний
  • Наличие возможности потратить на эксперимент деньги и время в разумных пределах

Research

Довольно интересное для моих входящих данных решение было в статье: https://habr.com/ru/post/409829/. Народ сделал девайс-накладу, который фотографирует показания счетчика, шлет фотку на сервис через интернет используя встроенный GSM модуль (у GSM операторов есть спец тариф "датчик" для таких дел), сервис распознает фотку и показания можно забирать через интернет. Вот это чудо устройство: https://www.accentcom.ru/sps-1g.

Проблемы с чудо-девайсом:

  • В случае включения "великого русского файрвола" есть угроза потерять все полимеры
  • Найти чудо-устройство на украинском рынке довольно проблематично и цена сильно завышена

Подобный девайс подсказали коллеги уже когда я закончил свой эксперимент:

Стрельнув по нескольким сайтам со счетчиками с вопросом "как автоматизировать передачу показаний", попал на одного очень хорошего продавца (https://vodomery.kiev.ua/) который сразу предложил решение (в выходные по вечерам отвечал человек), а конкретнее:

Ну сам smart-mac девайс производитель продает вроде дешевле, но так как продавец активно взялся помогать, то я решил что экономить сотню или около того не буду. Как эти показания затолкать в коммунальную службу продавец не сказал, и вроде как можно, но там "не все так просто"...

Ну штож - "Challenge accepted"...

High level design

Картинка ниже сразу возникла у меня в голове и я начал поэтапно ее имплементировать:

Alt text
Из особенностей:

  • накладка для передачи работает от батарейки, что хорошо, но должна по кабелям быть подключена к 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

Тут было просто - по ссылке https://ectc.com.ua/distancionnaya-peredacha-pokazanij/schetchik-impulsov-smart-mac-d105 есть таба "Скачать файлы", там pdf с инструкцией. Читаем, выполняем, все работает:)
Alt text
Примерно такие шаги:

  • кабеля питания 220 сунуть в гнездо 9 и 10
  • подключить к вайфай по инструкции
  • настроить девайс в личном кабинете

Alt text

Phase 3

Подключаем счетчик к smart-mac девайсу

Тут было больше всего непонятного поэтому описываю что произошло. Накладка на счетчик устанавливается просто и выглядит так:

Alt text

Два провода коричневый и черный надо затолкать в клемы 1 и 2 smart-mac девайсу. Вот так:

Alt text

Далее надо попасть на девайс по локальной сети (да у него есть свой маленький http сервер с вебмордой) и настроить начальные показания, и вот тут началось интересное. Счетчик считает импульсы и надо знать цену импульса... Я был послан в паспорт счетчика который выглядит вот так:

Alt text

Так как чукча не читатель, а писатель - то я вернулся назад к продавцу с вопросами. В итоге получил ответ "импульс это литр", что привело меня к следующему:

Alt text

Игого я на показателе smart-mac "Total Pulse Ch1" (потому как я засунул белый провод накладки в импульсный вход 1) прописываю цифру в импульсах, тоесть литрах:

Alt text

Далее заходим в личный кабинет smart-mac и проверяем что все работает - открываем кран холодной воды и смотрим, что литроимпульсы соответствуют цифрам на счетчике. Как я уже писал выше - в интерфейсе разбираться не было ни желания ни необходимости ... то я просто дернул апишку и получил ответ с нужной циферой и обрадовался: https://support.smart-mac.com/knowledge-bases/2/articles/43-api-dlya-servera

Phase 4

Автоматизируем передачу показаний

Тут я не буду углубляться в детали - код в репозитории, смотрите, форкайте, автоматизируйте.. Алюминь! :)
Стек технологий следующий:

  • java 11
  • maven
  • selenuim + pageobjects
  • selenuim testcontainer
  • spring boot
  • spring cloud openfeign

В итоге кнопка "передать" не меняющиеся показания горячего счетчика выгладит так:

String successPopupText = new LoginPage(container.getWebDriver())
        .loginAs(teploEnergoProperties.getEmail(), teploEnergoProperties.getPassword())
        .openCountersPage()
        .copyCountersDataFromPrevious()
        .submit()
        .getSuccessPopupText();
assertThat(successPopupText).isNotEmpty();

Phase 5

Запускаем в космос

Далее надо чтобы по расписанию запускалась сборка проекта и чтобы логины и пароли были не в паблике. Ну тут все очень просто:

Summary

Вместо игого

  • Потрачено пару вечеров и 3620 гривен
  • Автоматизировано все что хотелось автоматизировать
  • Накладных расходов нет, кроме сапорта в счет личного времени (что намного интереснее чем лазить за показаниями:)
  • Тестконтейнер с селениумом записывает видео о том как мой код кликает по сайту, в свободное время попробую сделать чтобы эти видео прилетали мне в телеграм

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages