marvin

marvin ist der Name des Robotors aus „Per Anhalter durch die Galaxis“ von Douglas Adams. Er zeichnet sich vor allem durch seine fehlende Motivation und seinen ständigem Pessimismus aus. Er erfüllt zwar seine ihm aufgetragenen Aufgaben pflichtgemäß, betont aber ständig, dass er damit total unterfordert sei und lässt keine Gelegenheit aus, auf seinen deprimierten Gemütszustand hinzuweisen.

marvin wird die zentrale Steuerung der warpzone. Mit ihm soll es möglich sein, Licht an und auszuschalten, das Moodlight zu konfigurieren, die Musik einzustellen und das Mateprepaid-System auf Smartcardbasis zu implementieren. Damit wird er zwar gnadenlos unterfordert sein und seine GHz werden die meiste Zeit Däumchen drehen; das wird er aber verkraften müssen.

Hardware

marvin besteht aus einem Touchscreen, der hochkant über dem Kühlschrank angebracht wurde. Als Rechner dient ein altes Notebook, auf dem Linux installiert ist. Ein im Vollbild-Kiosk-Modus gestarteter Browser zeigt eine HTML-Seite mit Javascript an, die per Ajax die Funktionen auslöst.

Im Backend hört auf der Kiste ein Apache mit PHP, der dann auch passende Kommandozeilentools zur Steuerung loslassen kann. Alternativ ist es dem PHP auch direkt möglich, per TCP/UDP/IP steuerbare Dienste in der Zone zu erreichen.

Konfiguration des X-servers und des Touchscreentreibers für den hochkant-Bildschirm:

Um das Bild zu drehen, der /etc/X11/xorg.conf in der device-section folgende Zeile hinzufügen:

Option „Rotate“ „CCW“

Um die touch-Achsen zu vertauschen, folgendes eingeben:

xinput set-int-prop „Acer T230H“ „Evdev Axes Swap“ 8 1

Um jetzt noch die eine Achse zu invertieren, diesen Befehl ausführen:

xinput set-int-prop „Acer T230H“ „Evdev Axis Inversion“ 8 1 0

Da die Kalibrierung jetzt nicht mehr stimmt, hilft folgendes:

xinput set-int-prop „Acer T230H“ „Evdev Axis Calibration“ 32 0 1080 0 1920

PHP? JS? HTML? Doof?

marvin mag keine ekligen Websprachen. Und ja, ist nicht wirklich Jedermanns Sache. Haben wir auch nur ausgesucht, um marvin zu ärgern. Hat aber auch Vorteile: So ist es jedem „Widget“, also jedem Teil der Oberfläche, möglich, abgekapselt von den Anderen zu sein. Es ist möglich einen Teil der Oberfläche zu verändern, ohne gleich die ganze Oberfläche kaputt zu machen oder neu kompilieren zu müssen. F5 reicht.

Struktur

marvin ist auf github gehostet ( https://github.com/Warpzone/marvin ), es ist aber geplant, marvins Repository auf den Warpzone-Server umzuziehen.

In dem Ordner webroot gibt es die index.php , das ist der Kern der Seite.

Widget-Autoren legen sich im unterordner „widgets“ einen Ordner mit dem Namen des Widgets an. In Ihrem Ordner muss es eine php-Classe mit dem Namen (Name der Klasse UND Dateiname) wie dem Ordner geben. Diese Klasse muss dass Interface iWIdget implementieren.

Wenn das Widget Javascript ausführen möchte, kann es das mit $(document).ready(function(){Tu Was}) gerne am Start machen, wenn es regelmäßig (minütlich) was machen möchte, registriert es sich mit einem Callback. Das Widget „ZoneOffen“ ist die Referenzimplementation, bitte ansehen, wie das dort gemacht wurde.

Alle CSS -Namen innerhalb des Widgets müssen in der Form [widgetname]_[beliebig] sein.

Dein Widget darf durch Dinge innerhalb des Widgets verändern. Ein Neuladen der Seite (durch z.B. einer form) ist strikt verboten. Nimm Javascript. Dafür ist es da.

Am Interface, der index.php, der marvin.js oder der zentralen CSS-Datei wird ohne Rücksprache nicht geschraubt; damit könnte man die Kompatibilität mit anderen Widgets brechen. Und das würde marvin nicht gefallen.

Widget "ZoneOffen"

Beschreibung

ZoneOffen ist eine einfache adaptierte Kopie des Widgets aus dem Blog. Die Kommunikation läuft nicht mehr direkt mit dem Wanker, sondern über ein ajax.php auf dem Server, damit später mal ein Caching implementiert werden kann, um den Wanker zu schonen.

Status

Fertig entwickelt und eingebaut

Widget "TwitterWall"

Beschreibung

TwitterWall zeigt aktuelle Twittermeldungen mit dem Hashtag #warpzone an.

Status

In Entwicklung. Es nutzen scheinbar noch Andere Twitterer den Hashtag #warpzone…

Widget "Wettervorhersage"

Beschreibung

Wettervorhersage zeigt das aktuelle Wetter in Münster und das der folgenden vier Tage an.

Status

In Entwicklung. Das Widget aktualisiert sich noch nicht von alleine.

Widget "RSSFeed"

Beschreibung

RSSFeed könnte z.B. den letzten Blogeintrag von Warpzone.ms anzeigen…

Status

In Entwicklung.

Widget "Prepaid"

Beschreibung

Zahlungswidget, welches möglicherweise in naher Zukunft unser Prepaidsystem am Kühlschrank ablösen könnte ( später per smartcards?)

Status

Bis auf die Datenbankanbindung fertig entwickelt und eingebaut (momentan mit textfile).

Widget "Jukezone"

Beschreibung

Jukebox-Widget zur Radiostreamauswahl bzw. Lautstärkeregelung usw…

Status

Fertig.

Widget "Abfahrtsmonitor"

Beschreibung

Ein Widget, welches anzeigt, welche Busse demnächst in Warpzonenähe abfahren

Status

Funktionsfähig (aber eklig gelöst)

Widget "Moodlight"

Steuerwidget für das Moodlight bzw. die Beleuchtung

Widget "WotZon"

Einträge der WZ Kalender Auflisten (StuC)

ands und philipp kümmern sich momentan um das Projekt. Wenn du mitmachen willst oder ein eigenes widget schreiben willst, sprich diese an. Alternativ kannst du auch einfach das GIT forken, fleißig entwickeln und dann einen Pull-Request stellen, den ands oder philipp dann beantworten werden.