Шалость удалась (часть 5)
Когда pet-проект оказался полезен не только мне
На этом первоначальную задачу уже можно было считать решённой. ESP32 стояла в офисе, подключалась к Wi-Fi и периодически отправляла heartbeat на мой VPS. Backend сохранял данные, а через простой Web UI я мог посмотреть состояние устройства.
Перед поездкой в офис теперь можно было ответить на тот самый вопрос, с которого всё началось: Интернет там вообще есть?
Но примерно в этот момент у проекта появился ещё один пользователь. Вернее, сразу вся компания.
У нашей компании есть собственные разработки — в частности, LightPulse и LighTeams.
Когда руководитель увидел идею с отдельным устройством мониторинга, появилась дополнительная задача. Если ESP32 уже умеет проверять доступность внешних сервисов из офисной сети, почему бы не использовать её сигнал внутри корпоративной инфраструктуры?
Так у устройства появился второй независимый маршрут. Первый остался прежним — частый heartbeat на мой backend. Второй стал корпоративным: устройство должно было периодически обращаться к LightPulse.
Для LightPulse не требовалось получать heartbeat каждые несколько секунд. Достаточно было сигнала примерно раз в 30–40 минут.
Смысл запроса оставался прежним: Устройство находится в офисе, подключилось к Wi-Fi, вышло в интернет и смогло достучаться до внешнего сервиса.
Значит, с высокой вероятностью офис сейчас онлайн. Но теперь эта информация была доступна не только мне через собственный Web UI. Благодаря интеграции LightPulse с Mattermost данные можно было использовать внутри привычной корпоративной инфраструктуры. И маленький эксперимент неожиданно начал превращаться в настоящий внутренний инструмент.
Один датчик — два разных сигнала При этом объединять оба сценария в один я не стал. Мой backend и LightPulse решали разные задачи.
Частый heartbeat позволял моей системе относительно быстро замечать потерю связи с устройством. ESP32 ── 5 sec ──► VPS
Корпоративному сервису такая частота была совершенно не нужна. ESP32 ── 39 min ──► LightPulse
В результате одна ESP32 выполняла сразу две функции. Для моей системы она оставалась постоянно работающим сетевым probe, позволяющим оценивать доступность офисной сети.
Для корпоративной инфраструктуры — источником периодического сигнала о том, что офис на связи.
И всё это по-прежнему работало по первоначальному принципу проекта: - Никаких входящих подключений к офису. - Никто снаружи не пингует ESP32. - Никто не подключается к роутеру. - Не нужен белый IP. - Не нужно открывать порты.
Устройство само инициирует оба соединения наружу и сообщает: Я всё ещё здесь. Интернет есть.
На этом действительно можно было остановиться. У меня было физическое устройство, работающий backend, база данных, Web UI и даже интеграция с корпоративной системой.
Но появилась новая проблема. Я мог открыть страницу и увидеть, что устройство перестало выходить на связь. Вот только для этого мне сначала нужно было самому открыть страницу. И какой тогда смысл в мониторинге, если о проблеме я узнаю только после того, как сам пойду её искать?
Продолжение следует…
#ESP32 #IoT #GoLang #Backend #Мониторинг #PetProject #Разработка #Mattermost #WiFi #LightPulse #LighTeams