Шалость удалась (часть 1)
С чего всё началось
У нас есть офис на живописной набережной Ростова-на-Дону. Работаем мы в гибридном формате: можно приехать в офис, а можно остаться работать из дома.
Но периодически возникала одна неприятная ситуация: приезжаешь в офис, а там нет интернета. Иногда вместе с ним нет и электричества.
Причины каждый раз находились разные: плановые ремонтные работы, проблемы у провайдера, а иногда и банальные неуплаченные песо за услуги связи.
Самое неприятное было даже не в самом отсутствии интернета. На большинство этих причин я всё равно никак не мог повлиять. Меня раздражало другое: хотелось заранее понимать, жив ли вообще офис и есть ли там интернет, прежде чем туда ехать.
Казалось бы, задача довольно простая. И решить её можно было множеством уже готовых способов. Например, можно купить у провайдера белый IP и мониторить доступность офисного роутера извне. Но ради такой задачи связываться с дополнительной услугой, платить за неё и выставлять устройство наружу не хотелось. Можно установить мониторинг непосредственно на роутер. Хороший вариант, если бы у нас стоял MikroTik, Keenetic или другое устройство, с которым хотелось бы экспериментировать. Но в офисе работает достаточно старый роутер, который при этом прекрасно справляется со своей основной задачей. Здесь действует один из фундаментальных законов системного администрирования: Если работает - не трогай.
Была даже идея поставить в офис умную колонку и мониторить её доступность через экосистему умного дома. Технически задача решалась бы, но покупать целую умную колонку только для того, чтобы периодически выяснять, жива ли она, выглядело уже слишком большим оверхедом.
Наконец, существовал совсем простой вариант - умная розетка. Подключить через неё роутер и хотя бы понимать, есть ли в офисе электричество.
Наверное, на этом история могла бы закончиться. Но это было бы слишком просто. А как же помучаться?
К тому моменту удачно совпали сразу несколько обстоятельств. Я проходил курс по IoT и инженерии умного дома, где работал с ESP32, Arduino и Raspberry Pi. Параллельно изучал Go и искал проект, на котором можно было бы применить его не в учебных примерах, а для решения настоящей задачи. Кроме того, мне хотелось попробовать агентный подход к разработке на проекте, который можно целиком контролировать самому.
В результате простая мысль «хочу знать, работает ли интернет в офисе» постепенно превратилась в другую: а почему бы не собрать собственное устройство мониторинга и не написать для него всю систему целиком - от прошивки до backend?
- Рациональнее ли это покупки умной розетки? Определённо нет.
- Интереснее? Определённо да.