25 февраля 2013 в 12:21
Билд-светофор в офисе
Меня долго не покидала идея визуализировать статусы билдов каким-нибудь простым и эффективным способом. Под катом я расскажу, как в моем офисе появился настоящий дорожный светофор, как он работает и зачем он вообще нужен.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
На мой взгляд решение получилось эффективным. Буду рад ответить на ваши вопросы в комментариях.