Меня долго не покидала идея визуализировать статусы билдов каким-нибудь простым и эффективным способом. Под катом я расскажу, как в моем офисе появился настоящий дорожный светофор, как он работает и зачем он вообще нужен.
Поиск светофорa.
Поиск светофора оказался самой сложной задачей. Хотелось найти именно списанный дорожный светофор, теплый и ламповый. Как оказалось, в рунете таких светофоров просто нет. Есть несколько компаний, специализирующихся на производстве сигнализационного светового оборудования, в том числе и светофоров, но, к сожалению, это либо светодиодные светофоры, либо ламповые (для сигнализации на автомойках или конвейерных линиях), но не дорожные. Выглядят предложения российских и белорусских компаний примерно так:
Кроме того новый светофор стоит не дешево. Цены на трехсекционный светофор начинаются от $300.
Списанный (или украденный) дорожный светофор можно найти ebay, благо предложений море. Классические американские и английские светофоры выглядят восхитительно, но за счет приставки «vintage», цены на нормальные варианты стартуют с $400. Плюс нужно учитывать стоимость доставки крупного и тяжелого груза.
По счастливой случайности мне через несколько недель поиска удалось найти выход на людей в ГАИ (дело происходит в Беларуси), которые занимаются заменой уличных светофоров. Через них я выяснил, что ламповый светофор, отслуживший положенные 15 лет, разбирают и утилизируют. Стеклянные линзы идут на цементный завод, железные отражатели на металлолом, пластиковые корпуса (да, они оказывается все давно пластиковые) на переработку. Один из таких светофоров все же продолжил свою работу, только теперь в уютном офисе.
Subject
Размер дорожного светофора определяется диаметром линз. В нашей стране бывают светофоры с линзами 10, 20 и 30 сантиметров, при чем последние встречаются чаще других. В зависимости от ширины улицы и насыщенности движения выбирают тот или иной тип. Мне достался самый большой — общая высота светофора превышает метр. Проезжая по улице вы даже не замечаете насколько он огромный. Размер такого светофора — это первое что поражает людей в офисе. Были предположения что это какая-то специально увеличенная версия или даже железнодорожный светофор.
Корпус и козырьки отечественного светофора производства середины девяностых сделаны из крепкого пластика, толщиной 5 миллиметров. Линзы из цветного стекла, рифленые изнутри, отражатели из железа. В светофоре 3 отдельных взаимозаменяемых секции, скрученных между собой болтами. Секции можно открывать — слева расположены завесы, справа простенькие пружинные защелки. Никакой системы защиты от хулиганов в таком светофоре не предусмотрено, открыть его можно легким движением руки. Кроме лампочек по 60 ватт и проводов, внутри больше ничего нет.
Светофор мне достался в хорошем состоянии, не считая небольшой трещины на одной из секций, которая судя по виду появилась совсем недавно (возможно во время демонтажа или транспортировки). Внутри меня ожидала гора мертвых насекомых и пласты слипшейся дорожной сажи, так что один вечер пришлось потратить на наведение порядка. Кроме того отражатели заметно подгнили за время службы, но со своей задачей справляются исправно. Я отмыл светофор, заменил лампочки и включил его напрямую в розетку у себя на кухне. Вот что получилось:
Электроника
Для переключения сигналов светофора было решено использовать 16-канальный контроллер (меньше просто не существует) MP710 и 4-х канальное реле MP701, производства МАСТЕР КИТ. В сердце контроллера чип Attiny45. Работает он на частоте 20 МГц, обладает памятью целых 4kb. 16 каналов контроллера можно переключать в огромном количестве режимов, типа медленного затухания, стробоскопа и т.п. На обратной стороне контроллера есть 16 светодиодов, очень удобных для отладки кода. Изначально в чип загружен скрипт, показывающий возможности контроллера:
Все это великолепие может пригодится разве что для реализации новогодней гирлянды. Думаю в большинстве проектов хватило бы простого включения/выключения.
Из электроники в моем светофоре есть еще обычный бытовой регулятор напряжения. Его пришлось допиливать уже в собранную и установленную конструкцию: свет от светофора не очень приятный и режет глаза, хочется его немного приглушить. Сейчас светофор работает примерно на одну треть от своей максимальной мощности, т.е где-то на ватт 20. Скажу, что этого вполне достаточно для его задач. При желании можно повернуть ручку регулятора на большее значение напряжения или вовсе выключить светофор.
Во время отладки реле стоит учитывать, что оно не имеет никаких предохранителей, любая ошибка подключения станет фатальной, поэтому без мультиметра не обойтись. Еще стоит помнить, что длинна usb провода ограничена. Экспериментально выяснилось, что сопротивление провода более 13 метров не позволяет нормально проходить сигналу.
На сайте производителя можно скачать софт для управления контроллером для Windows. Предназначена программка исключительно для отладки, интерфейс выглядит так:
Кроме того, есть возможность управлять контроллером по средствам FTP. Схема приблизительно такая: на Windows машине у вас запущен сервис, который с определенным периодом проверяет файл конфигурации на удаленном сервере. Такой вариант интересен разве что в ознакомительных целях, и применять его в реальном приложении нет никакого желания.
Мне было необходимо использовать всего 3 канала контроллера. Используя библиотеку Libhid я написал 3 очень простых скрипта, в задачи каждого из которых входило погасить все каналы и включить один, соответствующий красной, желтой или зеленой лампочке светофора. Далее я расскажу по какому принципу эти самые лампочки включаются.
Логика
Логика работы светофора следующая: на Jenkins сервере запускаются билды проектов, которые по сути являются наборами Selenium тестов. Проектов около 10, в каждом порядка сотни тестов. Каждую минуту по крону запускается php скрипт, который проверяет статусы всех последних билдов. Если хотя бы один из билдов завершился неудачей (хотя бы один тест не выполнился), php скрипт вызывает программу, включающую красную лампочку. Если все билды зеленые, то и лампочка, соответственно, загорается зеленая. В том случае, когда валидный ответ от Jenkins сервера не приходит (сервер лежит или нет интернета, к примеру), загорается желтая лампа светофора. Задача разработчиков проверять, что не так, если светофор горит красным. Вот и вся логика :).
Альтернативы
Электронную часть светофора можно было бы реализовать и по-другому. Выбирая контроллер для реализации своей идеи, я руководствовался тем, что в офисе в любом случае есть компьютеры, к которым можно этот контроллер подключить. Позже экспериментально я убедился, что идея была бы не реализуема с контроллером MP710, если бы длинна USB провода превысила 13 метров. Поверьте, это не так и много, ведь провод от светофора идет не напрямую к компьютеру (как от утюга к розетке), а по стене и напольным/настольным коробам. Кроме того, в моей реализации минусом можно считать то, что пользователь компьютера, в который включен контроллер, может перезагружаться или просто выключить машину, в случае чего загорается желтая лампочка.
Полную независимость можно было бы получить с помощью Arduino + Ethernet Shield.
Еще одним независимым вариантом могла бы стать плата Raspberry Pi или любой ее аналог.
Такое решение обошлось бы немного дороже чем то, которое выбрал я (если не учитывать стоимость компьютера к которому подключен контроллер), но зато появилась бы полная независимость и автономность. Возможно, в следующий раз именно так и сделаю.
Стоимость
Посчитать объективную стоимость всего устройства непросто, т.к бОльшую часть составляет стоимость светофора, которая может разнится в зависимости от вашего региона/вкусов/везения. Условно примем ее равной $300, что соответствует новому светофору, который не сложно найти почти в любом городе.
Контроллер MP710 | $30 |
Реле MP701 | $17 |
Провода, USB удлинители, короб, крепеж, регулятор яркости | $40 |
Светофор | $300 |
123 | Итого: $387 |
На мой взгляд решение получилось эффективным. Буду рад ответить на ваши вопросы в комментариях.
Автор: mr_MAIL