Code Competition 07/2016: Master of Monitoring

Anmeldung ist geschlossen

Code Competition 07/2016: Master of Monitoring

25 25 people viewed this event.

Programmiere Deine Monitoringlösung für die Überwachung von angebundenen Systemen

{ABOUT}

Das IoT (Internet of Things) und Industrie 4.0 stehen vor der Tür. Und dieses Mal kannst Du ganz nah ran an aktuelle Praktiken in führenden Unternehmen! Digitale Maschinensteuerungen und Überwachungssysteme sind essentiell, um die Effektivität der zukünftigen Industrie zu verbessern.

HARTING hat mit dem Embedded System “MICA” ein Computing System entwickelt, das als eigenständiges Gerät die Installation von mehreren Containern ermöglicht. Das MICA-Projekt hat bereits den Hermes Award 2016 gewonnen und Barack Obama hat es sich auf der CeBIT 2016 angeschaut – und Du kannst daran mitentwickeln. Wie das? Ganz einfach, mit der Anzahl an Maschinen steigt auch die Anzahl an verwendeten MICA’s im Unternehmen. Diese MICA’s müssen zentral überwacht und gesteuert werden.

Harting Mica

Dieser Anforderung widmet sich auch diese Code Competition. Stell Dir vor, Du hast eine Vielzahl an Maschinen (eine Maschine kannst Du Dir hierbei wie einen Computer vorstellen), auf denen unterschiedlichste Anwendungen in voneinander getrennten Containern laufen.
Um bei einer größeren Anzahl Computersysteme und darauf befindliche Container den Überblick zu behalten, ist eine zentrale Steuerung notwendig.
Und hier beginnt Deine Aufgabe. Du sollst eine (Web-)oberfläche entwickeln, auf der einzelne Maschinen hinzugefügt werden können (auf IP-Basis bzw. Container per RPC Request) und der aktuelle Status der Maschine (online/offline) angezeigt wird.
Jetzt weißt Du, welche Maschinen erreichbar sind, und welche nicht. Um aber von einer zentralen Steuerung zu profitieren, sollte auch ein simples Management der Maschinen möglich sein.
Das heißt in diesem Fall: Es soll von der Weboberfläche aus möglich sein, auf den verbundenen Maschinen Container hinzuzufügen, zu starten und zu stoppen.
Schau Dir die Aufgabenstellung in Ruhe an, sie ist nicht so kompliziert, wie es auf den ersten Blick aussieht 😉

{INPUT}

Um eine Steuerung über eine Weboberfläche zu erstellen, müssen Maschinen hinzugefügt und entfernt werden können, sowie mit den Maschinen kommuniziert werden. Für die Simulation einzelner Maschinen stellen wir Dir ein auf Node.js basierendes Skript zur Verfügung. Du kannst das Skript mittels Node.js ausführen, es verhält sich wie eine Maschine und antwortet auf JSON-RPC-Requests. Eine Instanz des Skripts repräsentiert genau eine Maschine.

Der Versuchsaufbau sieht letztlich schematisch so aus:

Hinweis: Du musst nur die gelb markierten Komponenten entwickeln, die Maschinen werden durch das bereitgestellte JavaScript virtuellemaschine.js simuliert.

Virtuelle Maschine

Lade Dir einfach das Javascript “virtuellemaschine.js” herunter und starte es mit Node.js. Es simuliert nun eine echte Maschine und ist unter einer IP-Adresse (mit der sie Deiner Oberfläche hinzugefügt werden kann) erreichbar. In Deinem lokalen Umfeld wird das vermutlich 127.0.0.1 auf Port 80 sein. Unter der IP-Adresse lauscht die Maschine nun und ist über JSON-RPC-Requests ansprechbar (und gibt Responses).
Tipp: Es kann sein, dass Du beim Starten des Skripts einen Fehler erhältst. In der Regel liegt das daran, dass der Port 80 bei Dir bereits von einem anderen Programm (oder aus einem anderen Terminalfenster heraus) genutzt wird. In diesem Fall kannst Du im “virtuellemaschine.js”-Skript in Zeile 21 den Port z.B. auf 8080 ändern.
Mittels JSON-RPC(JSON Remote Procedure Call) ist der Aufruf von Funktionen auf entfernten Geräten (z.B. auf einer Maschine) möglich und es können mit verschiedenen Requests beispielsweise Container hinzugefügt, entfernt, gestoppt, gestartet, usw. werden.
Um JSON-RPC zu verwenden, musst du ein Node.JS-Modul installieren. Das Modul ist im zum Download bereitgestellten Archiv “node_modules.zip” enthalten.

Folgende Requests sind möglich:

ZweckRemote FunktionParameter
Container installiereninstall_containername (Name des Containers), ip (IP des virtuellen Geräts)
Container löschendelete_containername (Name des Containers)
Container stoppenstop_containername (Name des Containers)
Container startenstart_containername (Name des Containers)
Status eines Containersget_statename (Name des Containers)
Auflistung der installierten Containerget_containers
reboot der virtuellen Maschinereboot

Ein Beispiel in JSON:

{"jsonrpc":"2.0","id":1,"method":"install_container","params": {"name":"Container1","ip":"192.168.1.13"}}

Website GUI

Die GUI der Anwendung soll eine HTML Webseite (gerne auch mit JavaScript) sein. In dieser GUI sollen Maschinen zum Monitoring hinzugefügt und entfernt werden können (auf IP-Basis). Auf diesen Maschinen sollen Container entfernt und hinzugefügt werden können (mit Hilfe von JSON-RPC-Requests an die entsprechende Maschine). Zu jeder hinzugefügten Maschine soll der aktuelle Status angezeigt werden (online/offline). Auch der Status der installierten Container soll angezeigt werden (ON/OFF). Zusätzlich sollen die oben aufgeführten, vordefinierten Befehle an jedes Gerät/jeden Container geschickt werden können.

Eine beispielhafte GUI könnte so aussehen:

DeviceStatusBefehleInstall
Gerät AonlineRebootContainer installieren
Container 1
ONStart Stop Delete
Container 2
OFFStart Stop Delete
Container 3
ONStart Stop Delete
Gerät BofflineRebootContainer installieren
Container 1
OFFStart Stop Delete
Container 2
OFFStart Stop Delete
Container 3
OFFStart Stop Delete

{REQUIREMENTS}

  • Monitoring der Verfügbarkeit von per Netzwerk (IP-Adresse) angebundenen Maschinen
  • GUI mit Info über den Status und mit der Möglichkeit, Maschinen hinzuzufügen und zu entfernen sowie die definierten Befehle abzusetzen
  • Die Installation eines Containers soll keine reale Installation anstoßen, sondern lediglich einen Container hinzufügen
  • Erlaubte Sprachen: JavaScript (Node.JS), Python, HTML (kein PHP) Optional: C++, GO

{OPTIONAL}

  • Wenn Dir sinnvolle Ideen für weitere Funktionen und Requests kommen, kannst Du diese natürlich gerne einbauen (virtuellemaschine.js lässt sich leicht ergänzen).
  • Beispielsweise wäre es denkbar, auf installierten (erstellten) Containern noch Software durch den Upload eines Images anzustoßen.

{REVIEW}

Worauf achten wir bei der Bewertung Deines Programms?

  • Funktionalität: Lässt sich das Programm ausführen? Tut es, was es soll?
  • Code-Qualität: Ist der Code sinnvoll strukturiert und effizient?
  • Code-Lesbarkeit: Lässt sich der Quellcode nachvollziehen?
  • Dokumentation: Verstehen wir die Bedienung des Programms? Ist der Code kommentiert?
  • Zusätzliche Features: Auch sinnvolle Zusatzfeatures fließen etwas mit in die Wertung ein 😉

Wir führen diese Code Competition in Zusammenarbeit mit unserem Partner, der HARTING Technologiegruppe durch. Die HARTING Technologiegruppe ist eines der weltweit marktführenden Unternehmen im Bereich der Entwicklung, Herstellung und des Vertriebs elektrischer und elektronischer Verbindungs- und Netzwerktechnik.

Event registration closed.
 

Date And Time

01/07/2016 @ 00:00 to
31/08/2016 @ 00:00
 

Anmeldeschluss

31/07/2016
 

Ort

Online-Veranstaltung
 

Veranstaltungskategorie

Event Tags

Share With Friends