Durch meine Arbeit konnte ich schon einige Erfahrung mit dem Projektmanagement-Tool Jira von Atlassian sammeln. Ich persönlich arbeite sehr gerne mit Jira, da man Projektabläufe sehr gut organisieren kann.
Nachdem wir neuerdings einen weiteren Standort haben und ich zusammen mit einem Kollegen unter anderem für IT-Themen zuständig bin, dachte ich mir es wäre klasse, eine Statusanzeige über eintreffende Tickets zu bekommen.
Ein alter Raspberry war schnell gefunden, ein paar einzel programmierbare RGB-LEDs hatte ich auch noch von meinem Ambilight-Projekt.
Zum Ansteuern der LEDs kann man direk an den Raspberry an PIN 19 (MOSI) und 23 (CLK).
Normalerweise sollte man die RGB-LEDs nicht direkt über den Raspberry speisen sondern ein zusätzliches Netzteil verwenden (Masse muss mit dem Raspberry verbunden sein). In diesem Fall sollten aber sowieso nur 2 LEDs zum Einsatz kommen, die der Raspberry noch stemmen kann.
Nun muss man natürlich dem Raspberry noch sagen, wie er die LEDs ansteuert:
Konfiguration und Vorbereitung des Raspberrys
Wie man das Betriebssystem (Raspbian Wheezy) aufsetzt kann man in etlichen Beiträgen im Internet lesen, daher gehe ich darauf nicht weiter ein.
Zunächst muss man das SPI-Modul aktivieren. Dazu wählt man sich per Putty bzw. SSH auf den Raspberry auf und startet die Konfiguration.
sudo raspi-config
Advanced Options -> SPI -> Yes
Anschießend muss noch ein Update vom Raspi gemacht sowie Python installiert werden
sudo apt-get udpate sudo apt-get install python-dev sudo apt-get install python-pip sudo apt-get install git sudo pip install spidev
Installation von benötigten Bibliotheken
Um die LEDs komfortabel anzusteuern, empfehle ich das Python-Programm „BiblioPixel“.
sudo pip install bibliopixel
Das Tool kann noch viel mehr, wie zum Beispiel einige Animationen. Ich möchte aber nur einzelne LEDs ansteuern.
Installation und Konfiguration des Jira Clients
Um die Jira Tickets auslesen zu können, habe ich kurz im Netz geschaut, ob es vielleicht etwas in Python gibt. Und siehe da, es kommt schon einen Jira Client in Python geschrieben. Den kann man sich dann ganz einfach mit folgendem Befehl installieren
sudo pip install jira
Man kann natürlich mit dem Client noch viel mehr machen, als Tickets auslesen. Die komplette Doku hier hier zu finden.
Nun muss der Jira Client noch eingerichtet werden. Es existiert bereits eine Datei client.py. Dort stehen allerdings soviele Anweisungen, die für meinen Fall gar nicht relevant sind. Daher habe ich mir eine 2. Datei „client2.py“ angelegt.
Zuerst werden die Bibliotheken geladen
import bibliopixel.colors as colors import time from bibliopixel.led import * from bibliopixel.drivers.WS2801 import * from jira import JIRA
Anschließend wird der Treiber zur ANsteuerung der LEDs geladen
driver = DriverWS2801(2) led = LEDStrip(driver)
Danach werden die Informationen für Jira geladen
options = { 'server': 'https://firma.atlassian.net' } jira = JIRA(basic_auth=('User', 'password'))
Somit sind die Vorbereitungen schon getroffen. Zum Auslesen der Tickets und direktem filtern nach dem Benutzernamen habe ich folgenden Code verwendet:
issues_status = [issue.fields.status for issue in jira.search_issues('project = PROJEKTNAME and assignee = benutzer')]
Man bekommt dabei eine Liste mit Statusobjekten der Tickets, die die Bedingung Projekt und aktueller Bearbeiter haben.
Diese Liste kann man nun auswerten und den verschiedenen Stati verschiedene Farben zuordnen
red = colors.Red green = colors.Green blue = colors.Blue yellow = colors.Yellow led0 = red led1 = red todo = False inprogress = False done = False for elem in issues_status: i = elem.id print elem.name + " " + elem.id if (i == '10002'): todo = True break elif (i == '3'): inprogress = True else: done = True if todo: led0 = red elif inprogress: led0 = yellow elif done: led0 = green else: led0 = blue led.update()
Der letzte Befehl
led.update()
ist wichtig, weil erst dann die LEDs angesteuert werden.
Da es ja darum geht, zu sehen, ob Tickets noch nicht behandelt (Status rot) wurden, wird zunächst geprüft ob der Status ‚todo‘ (ID 10002) gefunden wurde. Wenn ja, wird LED 1 auf rot gesetzt. Falls nicht, wird überprüft, ob ein Ticket in Bearbeitung (ID 3) ist. Ist das der Fall, wird die LED 1 auf gelb gesetzt. Wenn alle Tickets auf ‚done‘ stehen, wird die LED 1 grün. Der letzte Fall sollte eigentlich nie eintreten, da hieße nämlich, dass Jira zu diesem Namen und Projekt keine Tickets gefunden hat.
Das Ganze kann natürlich noch erweitert werden, aber die Grundlogik sollte klar sein.
Den Raspberry und die LEDs haben wir nun in ein transparentes Gehäuse. Und so sieht das ganze nun aus: