Pull to refresh
83.01
2ГИС
Главные по городской навигации

Мигание винтажными светодиодами или как мы предупреждаем о «пожарах» на проекте

Reading time5 min
Views15K


Рутина — огромное поле для автоматизации. Если задача отнимает много сил, требует усидчивости и из раза в раз повторяется — это верный знак, что стоит сделать парочку шагов к уменьшению этой повторяющейся боли. А ещё реализацию можно превратить в неплохой технофанчик.


Сегодня я расскажу про автоматизацию системы оповещений, мониторинга и алертов. Под катом польская мигалка 1984 года и ни одного пропущенного возгорания. Код и инструкции по сборке прилагаются.


Недавно мне стукнуло 8 лет. 8 лет, как я работаю в 2ГИС. По этому поводу один товарищ поинтересовался: «А как ты так долго держишься? Не возникало желания попробовать что-то новое?»


Возникало. И до сих пор возникает. И до сих пор пробую. Пробую себя в новых ролях, командах, технологиях. Почему нет? Ведь работа это не только и не столько про «приходить в 9:00, открывать таск-менеджер и брать в работу очередную задачу, в 18:00 идти домой», и даже не «А!!! Нас опять DDoS’ят, давай request_limit впилим вот сюда, а вот тут грепнем IPшники, а вот сюда… Ой, как уже 3 часа ночи?». Это всё не то. Работа — это про коллектив, взаимоотношения, вечерние посиделки на кухне. Про интересные задачи и комфортную среду обитания, в конце концов. Всё убивает пофигизм и рутина. Как работать с первым — не знаю, не замечал за собой, а вот про второе — расскажу.


Сегодня мы пойдём проторенной дорожкой: билд-светофор в офисе, и ещё один; и поавтоматизируем оповещения, мониторинг и алерты. Но делать очередной светофор для билд-сервера — это пошло. Билдов, веток и тестов у нас много, а грабить склад ГАИ ради десятка светофоров желания нет. Будем визуализировать «пожары»!


Стандартная система мониторинга



Вот типичный экран который висит у нас в кабинете. 95% времени он показывает, насколько жив наш проект и что с ним происходит. Параллельно есть канал в Slack с уведомлениями о релизах и об ошибках.


Чтобы не отвлекать всю команду, на неделю назначается дежурный, который выполняет роль релиз-мастера и принимает огонь на себя, если произошло что-то страшное. Его задача выяснить, что случилось, и либо починить самому, либо найти того, кто всё исправит.


Также мы используем этот монитор для daily-митингов — открываем Kanban Board в Jira и понеслось.


Что не так?


Статус дежурного не отменяет рабочие задачи. Если ответственный за пожары забрёл слишком далеко в чертоги своего разума, результат может быть менее оперативным, чем требуется. Это натолкнуло на мысль, что для полного счастья нам нужна более весомая оповещалка, чем бесконечные уведомления от Slack.


Автоматизируй это!


Идея окрепла, когда на просторах Avito обнаружилась отличная винтажная польская мигалка 1984 года выпуска. Если где-то пожар, то пусть эта штука включается! Штуку обещали даже в почти рабочем состоянии. 500 рублей и она у меня в рюкзаке. Так давайте добавим ей немного хайпа IoT и набросов на Arduino.



План действий


План был прост и гениален! Берем блок питания на 12 вольт, добавляем Sonoff SV — esp8266 с реле и всей необходимой обвязкой и питанием от 12 вольт. Перепрошиваем чем-нибудь типа http://wifi-iot.ru/, цепляем мигалку — profit! Имеем подключенное по Wi-Fi устройство с REST API и ещё 1000 фич.


Про расходы



Шнур питания с плоской вилкой от бабушкиного радиоприемника или из ближайшего рынка радиотоваров — 60 рублей
Блок питания 12v 10w с Aliexpress или всё тех же радиотоваров — 260 рублей
Sonoff SV — $4.85 + доставка
Мигалка винтажная — бесценно (500 рублей)


Мнение корпоративного Wi-Fi


На столь смелые действия корпоративный Wi-Fi с сертификатами EAP-PEAP и прочими страшными словами сказал «Ты не пройдёшь!».



Можно было б засучить рукава, погуглить https://github.com/esp8266/Arduino/issues/1032, взять свежий SDK и «быстренько» написать всё самому. Но тогда технофанчик превращается в длительное копание и дебаг. Отложу-ка этот вариант до выпуска версии 2.0, улучшенной и исправленной.


Мягкие изделия


Возьмём так не любимый olartamonov Arduino, россыпь того, что вот уже N лет пылилось в ящиках, и соберем монстра Франкенштейна. Склада домашних деталей будет достаточно, чтобы проверить жизнеспособность MVP и выкинуть после отладки красивой и блестящей версии 2.0.



Решение топорно: Arduino подключается к сети по Ethernet, получает IP по DHCP, слушает запросы по HTTP и мигает «светодиодиком». Любой за вечер может скомпоновать такое решение из Examples Arduino IDE (но никогда, слышите, никогда ей не пользуйтесь! Это ад).


А чем пользоваться?

Тем, кто до сих пор плачет, колется, но продолжает есть кактус, предлагаю пересесть хотя бы на PlatformIO (ставится на Atom или VSCode), но лучше вообще этим не пользоваться, а почитать курс лекций по STM32 или ещё чего более полезного. А я, как покусанный в детстве ардуинщиками, таки доделаю своё черное дело :)


Код выложен на github, тут нет авторизации, развесистого API и красивых html страничек. Только MVP, только хардкор! Используйте на свой страх и риск, я предупреждал.


Твердые изделия


Когда софт написан, приходит время заводить мигалку. Ниже схема, что должна помочь разобраться в устройстве.


Ожидание:



Реальность:



Итак заменяем Sonoff SV на:
Arduino UNO + wiznet w5100 + Реле


Подключение по пинам:
DIGITAL 10 — SS
DIGITAL 11 — MOSI
DIGITAL 12 — MISO
DIGITAL 13 — SCK
GND — GND
5V — 5V


Реле подключаем ещё проще: сигнальный пин на DIGITAL 4, силовой провод на мигалку цепляем в разрыв на C (common) и NC (normally closed).


Achtung!
Смотрите документацию к своим устройствам. Не факт, что, подключив плату Ethernet к 5 вольтам, вы не получите веселый дымок при тестировании! В моем случае всё штатно, и модуль рассчитан на питание от 5 вольт.


Пластиковые изделия


Объявление на Avito гласило, что мигалка в почти рабочем состоянии. За давностью лет в ней умерла только одна деталь — шестерня, вращающая отражатель.



Выдыхаем, берем в руки Fusion360, моделируем новую и печатаем на офисном 3D-принтере.


Процесс моделинга шестерни

Проверяем радиусы и прочие характеристики шестерни, боремся с недоэкструзией и параметрами слайсера


Продолжаем моделить


Печатаем, примеряем


Ещё чуть-чуть подгоняем и печатаем снова. Оригинальные клёпки были высверлены и заменены на комбинацию обычных винтов M3 и самоконтрящихся гаек. Не забыли добавить под них посадочные места.



Смазываем шестерни, заменяем провода, собираем обратно — работает!


Хорошо бы напечатать шестерню из нейлона, но первая чистовая печать завершилась неудачей, а на вторую остатков пробника от bestfilament уже не хватило.


То, ради чего мы — несмотря ни на что!



Как заставить мигалку включаться, когда произошло что-то из ряда вон выходящее?


Элементарно! Мы на работе используем Grafana, так что просто заводим новый Notification Channel с типом WebHook, который и посылает запрос на включение мигалки по определенным критериям. Выключается она сама через несколько секунд, чтобы не нагнетать атмосферу ещё больше.


Сколько времени ушло на всё это безобразие? Пара вечеров, если не отвлекаться. Плюс полдня рабочего времени, чтобы настроить интеграцию с остальными внутренними системами.


Технофанчик удался, польза в команду принесена, фотографии процесса сборки напоследок приведены.


Вот она перед нами, мигалка с проводами






Tags:
Hubs:
+63
Comments21

Articles

Information

Website
2gis.ru
Registered
Founded
Employees
1,001–5,000 employees
Location
Россия