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

в 4:34, , рубрики: 3d, arduino, DIY, diy или сделай сам, Блог компании 2ГИС, мигалка, офис, принтер, Разработка под Arduino, сделай сам, умный дом, электроника, Электроника для начинающих

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

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

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

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

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

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

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

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

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

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

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

Что не так?

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

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

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

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

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

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

Про расходы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ожидание:

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

Реальность:

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

Итак заменяем 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 гласило, что мигалка в почти рабочем состоянии. За давностью лет в ней умерла только одна деталь — шестерня, вращающая отражатель.

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

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

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

Проверяем радиусы и прочие характеристики шестерни, боремся с недоэкструзией и параметрами слайсера
Мигание винтажными светодиодами или как мы предупреждаем о «пожарах» на проекте - 10

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

Печатаем, примеряем
Мигание винтажными светодиодами или как мы предупреждаем о «пожарах» на проекте - 12

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

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

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

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

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

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

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

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

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

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

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

Мигание винтажными светодиодами или как мы предупреждаем о «пожарах» на проекте - 16
Мигание винтажными светодиодами или как мы предупреждаем о «пожарах» на проекте - 17
Мигание винтажными светодиодами или как мы предупреждаем о «пожарах» на проекте - 18
Мигание винтажными светодиодами или как мы предупреждаем о «пожарах» на проекте - 19
Мигание винтажными светодиодами или как мы предупреждаем о «пожарах» на проекте - 20
Мигание винтажными светодиодами или как мы предупреждаем о «пожарах» на проекте - 21

Автор: AotD

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js