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


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


    Сегодня я расскажу про автоматизацию системы оповещений, мониторинга и алертов. Под катом польская мигалка 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, который и посылает запрос на включение мигалки по определенным критериям. Выключается она сама через несколько секунд, чтобы не нагнетать атмосферу ещё больше.


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


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


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






    2ГИС
    202,00
    Карта города и справочник предприятий
    Поделиться публикацией

    Похожие публикации

    Комментарии 21

      +2
      Мигалка крутая!
        +3
        С неё всё и началось =)
        Нельзя просто так взять и пройти мимо такой штуки. Особенно если новые пластиковые и не ламповые стоят от 1000 (а на те что дешевле без слёз вообще не взглянешь)
          0

          Значит, сначала вы увидели мигалку, а потом подумали что она вам нужна и придумали для чего ?))

            0
            Ну если быть совсем хронологически честным, то сначала была мысль про оповещения, но она заглохла при анализе того что представлено на рынке. А позже глаз зацепился за Неё! И звезды сошлись =)
          0
          в оригинале кажется помедленнее же
          +1
          Отличная лампа получилась. Надо к ней добавить звуковое оповещение.

          Кстати, вспомнилась статья про билд-светофор.
            +2
            Пробовал, эффект отличный =) Звуковое сопровождение запускалось как-раз на том мониторе с графиками. Но для работы всё-таки нужен баланс упоротость/полезность. Так что оставил только иллюминацию на несколько секунд. Про светофор этот, кстати, в начале статьи ссылку дал, ага.
            +1
            Вот вот. Вместо того, что-бы решать насущные вопросы, они мигалочки лепят. :-\
            я конечно, не против мигалочек, я просто зол на 2гис, за кривую нумерацию зданий, из за которой, я потерял вечер времени и чуть не потерял 5 т.р.

            А надо было меньше верить 2гис и больше проверять. Яндекс карты открыл, там оказалось всё точно.

            если здание имеет юридический адрес 42а, в кадастровом реестре имеет адрес 42а, какого черта 2Гис пишет 42а к1?

            Тех поддержка 2гис, сказала, что мы не можем присвоить двум разным строениям один адрес, даже если по всем юридическим документам, у них один адрес, мы мол от «балды» нумеруем такие строения.

            Я же каким-то образом должен догадаться, что 42а и 42а к1 это один и тот же адрес.

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

            И да, я потерял в вас веру, как в лучший справочник… Жаль…
              +2
              Знаю местности, где адреса и описания бизнесов месяцами в 2гис отстают от реальности. Уверен, что базы обновляют не те, кто составляет справочник, но все же обидно.

              А лампочки… Если админ занят лампочками, значит, все остальное у него работает, не так ли? За это и выпьем На это и будем рассчитывать.

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

              Итак заменяем Sonoff SV на: Arduino UNO + wiznet w5100 + Реле
              Слабаки.
                +1
                Нет, Ардуинщики!
                  0
                  ИМХО там можно при должной сноровке подключить wz5100 к реле напрямую (ну почти) и вообще ничего не программировать.
                    0
                    С этого момента по-подробнее? Мне на ум приходит только повесить Signal pin реле на RXLED и покидаться ARP/ICMP запросами. Но без какого-нибудь 555 для таймера нужно кидаться очень яростно, никаких плюшек с DNS и вообще юзабилити страдает.

                      0
                      Я не очень в курсе, что он там у вас в UART вываливает. Но да, грубо говоря, подключить реле к Tx. Может, если у вас там охренеть какая сетевая инфраструктура, то можно и вообще без этой платы обойтись и управлять реле подачей питания на витую пару через API маршрутизатора.
                        0
                        UART тут вообще не нужен, а у w5100 есть только SPI, так что тут не понял о чем вы. А вот чего как раз не хотелось — прогибать сетевую инфраструктуру компании под «лампочку». Именно поэтому там есть контроллер с DHCP и REST. Можно просто воткнуть девайс в сеть и в любом GitLab'е или другом сервисе который умеет кидать WebHook'и прописать его hostname (с этим тоже проблем нет — из коробки присваивается wiznetAABBCC.**.local, где AABBCC последние октеты mac-адреса).

                        И именно по этим же причинам не было мыслей завести MQTT (не стыкуется с уже имеющейся инфраструктурой) или прицепить реле к COM-порту (где его сейчас найдёшь? И целый компьютер в качестве микроконтроллера — перебор)
                  0
                  Битва ещё не окончена! Просто лень временно одержала верх в этой битве. Временно я сказал! =)
                  0
                  Вот бы шляпу с 2мя хардовыми мигалками.
                  Как в Кин — Дза — Дзе! :)
                    0
                    Эта мигалка — с нормальную человеческую голову, если две таких — шея отвалится =)
                    +2
                    Приветствую.
                    Могу порекомендовать, использовать как управляющий блок, старый роутер (мне tplink 841 нравятся в этом деле) — вы получаете девайс который можно запитать от 12в и полноценный linux на борту.
                    Через UART можно давать команды оконечным устройствам или просто отчекрыжить один из GPIO и использовать его как логический уровень + Wi-Fi на борту, отдавать команды с мониторинга можно или через WEB API но я предпочитаю не изобредать и использую Ser2Net.
                    Этих роутеров с горелым WAN портом просто море, за пиво ящик отдадут да ещё и спасибо скажут :)

                    Мой изврат на тему индикации событий :)
                      0
                      А что за лампочки такие модные?
                        0
                        Бано-57 — авиационный фонарь.
                        Как и у ТС, сначала появились фонари а потом идея :)

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое