Хабрахабр

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

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

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

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

И до сих пор возникает. Возникало. Пробую себя в новых ролях, командах, технологиях. И до сих пор пробую. Ведь работа это не только и не столько про «приходить в 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 вольт. План был прост и гениален! Имеем подключенное по Wi-Fi устройство с REST API и ещё 1000 фич. Перепрошиваем чем-нибудь типа http://wifi-iot.ru/, цепляем мигалку — profit!

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

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

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

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

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

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

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

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

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

Ожидание:

Реальность:

Итак заменяем 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).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть