[Build-Ampel] 4 Die Software
Im letzten Abschnitt habe ich den Zusammenbau beschrieben.
Hier soll es nun kurz um die softwareseitige Ansteuerung der Ampel gehen.
Ich habe mich dazu entschieden den Arduino passiv anzusteuern. Dafür wurde per ArduinoIDE StandardFirmata auf den Arduino gespielt, wodurch er sich über USB seriell ansteuern lässt. Dies erleichtert einige Dinge und verlagert sämtliche Logik auf den PC an den die Ampel angeschlossen ist. Ein wesentlicher Vorteil ist, dass man auch komplexere Netzwerk-Settings (VPN/Proxy/etc) relativ easy umsetzen kann. Nachteil dieser Lösung ist sicherlich, dass man einen Rechner braucht, der sich um die Ansteuerung kümmert.
In meinem Fall war es wichtiger den Arduino möglichst einfach in ein VPN zu bringen. Der Rechner ist sowieso vorhanden :-)
Die serielle Steuerung des Arduinos übernimmt in meinem fall ein kleines NodeJS-Script, welches den aktuellen Teamcity-Build-Status alle 15 Sekunden abfragt und die Ampel-Lampen per Arduino entsprechend "grün" (letzter Build erfolgreich), "gelb blinkend" (Build / Tests laufen gerade) oder "rot" (Probleme beim letzter Build) schaltet.
Die serielle Ansteuerung des Arduino erfolgt mittels des Johnny-Five IoT-Frameworks Dieses Framework ist die einzige Dependency und stellt bereits eine Menge Funktionalität (Schieberegister, LCD-Ansteuerung, Animationen,...) von Haus aus bereit.
Das komplette Projekt habe ich unter MIT-Lizens auf meinem Github unter folgendem Link bereitgestellt: UnoJohnnyBuildInfo.
Es wurde weitestgehend modularisiert, sodass sich die Teamcity-Anbindung über eine Config-Datei anpassen lässt und alle Dependencies in der package.json Datei verwaltet werden.
Es soll lediglich einen Ansatz für künftige Modifikationen / Nachbauten liefern.
Falls ein Leser etwas ähnliches umsetzt, so kann er mich gerne anpingen.