Warpcore
Warpcore Status: stable | |
---|---|
Beschreibung | Trafficanzeige im Rack |
Autor: | schinken |
PayPal |
Beschreibung
Der Warpcore ist eine Beleuchtung des Racks mit Leuchtdioden, welche an den Warp-Kern des Raumschiff Enterprise angelehnt ist. Hierbei sollen die zwei verwendeten Farben abwechselnd an- und ausgeschalten, bzw "gefaded" werden.
Zugleich wird die Beleuchtung auch dazu verwendet, den aktuellen Internet-Traffic (incoming) zu visualieren. Hierzu wird die Geschwindigkeit des "Fadens" bei hohem Traffic erhöht, sowie bei geringem Traffic reduziert. Um Strom zu sparen wird die Beleuchtung abgeschalten sobald sich keine Member mehr im Space befinden. Hierzu wird die API des Open/Close_Anzeiger verwendet.
Ein Video der Installation befindet sich hier: Youtube: Warpcore
LEDs
Für die Realisierung wurden 20 blaue LEDs mit 8000mcd und 18 cyan/türkise LEDs mit 9000mcd verwendet. Die Leuchtdioden wurden auf eBay jeweils im 50er-Pack inklusive Vorwiderstände und Schrumpfschläuche für wenige Euros bestellt.
Im ersten Schritt wurde an jeder Leuchtdiode der mitgelieferte 470 Ohm-Widerstand an der Kathode (-) angelötet. Danach wurde ein zwei bis drei Zentimeter langes Stück des Schrumpfschlauches über den Widerstand geschoben und erhitzt, damit es nicht versehentlich bei der Montage zum Kurzschluss kommen kann. Pro Farbe wurden im Abstand von 20 Zentimeter die LEDs an einen zweiadrigen Klingeldraht angelötet. Hierbei wurde mit einem Teppichmesser die Isolierung entfernt um den Kupferdraht offenzulegen.
Die Verkabelung wurde im Rack mit Heißkleber befestigt und verlegt.
Ansteuerung
Für die Ansteuerung verwenden wir einen Arduino Uno in der Revision 3. Als Ausgänge wurden die PINs 5 und 6 verwendet, da diese als PWM-Ausgang verwendet werden können. Da der Prozessor nur 40mA am Ausgang bereitstellen kann, wurde eine kleine Lochrasterplatine mit Klemmen und BC337-16 Transistoren aufgebaut.
Beschaltung der Transistoren:
// +----[ 470 ]-->|---- +12V _____ |/ PIN5 --+----[_____]-----| | 4k7 |> | \ | +---- GND | | // | +----[ 470 ]-->|---- +12V | _____ |/ +----[_____]------| | 4k7 |> etc. \ +---- GND
Für jede Farbe wurden 4 Transistoren verbaut, da vorgesehen ist auf jeder Seite des Serverschranks eine "LED-Leiste" anzubringen. Alle Dioden einer Farbe sind miteinander verbunden. Hierbei wurde für Cyan der PIN5 und für Blau der PIN6 verwendet.
Arduino/Firmata
Der Arduino Uno ist per USB mit der Flepo verbunden. Als Firmware wurde Firmata verwendet. Implementiert wurde die Steuerung des Arduinos mit node.js, da hierfür eine nodejs-firmata Library existiert.
Die Helligkeitsberechnung wurde mit der Sinus-Funktion sin(x) realisiert. Der Wert x wird je nach Geschwindigkeit unterschiedlich stark inkrementiert. Für die Ansteuerung der zweiten LED-Farbe wurde der berechnete Wert invertiert. Die Berechnung und senden des Wertes an den Arduino wird in einem Intervall von xx Millisekunden vorgenommen.
Da der Netzwerktraffic sprunghaft steigt oder fällt, wurde der Wert mit der exponentielle Glättung geglättet. Die Geschwindigkeit ist mit maximal 6000 kb/s und minmal 100 kb/s gedeckelt.
Der Code für die Ansteuerung befindet sich hier: nodejs-warpcore und hier H.A.R.M.
SNMP Traffic
Um den Netzwerkverkehr unseres Routers zu lesen wurde das Protokoll SNMPv2 verwendet. Hierfür konnte die bereits existierende Library node-snmp-native genutzt werden.
Unter der OID ".1.3.6.1.2.1.2.2.1.10.5" stellt OpenWRT backfire 10.03.1. den Wert "br0-wan incoming" als Bytes seit der Inbetriebnahme des Gerätes zur Verfügung. Zum errechnen der aktuellen Kilobytes pro Sekunde wurde der aktuelle Wert alle 2 Sekunden abgefragt und die Zeit seit der letzten Änderung gemessen.
Der Code befindet sich hier nodejs-snmp-traffic