marvin
Begriff
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.
Projektbeschreibung
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.
Technik
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:
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.
Projektstand
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)
Weitere Widgetprojekt-Ideen
Widget "Moodlight"
Steuerwidget für das Moodlight bzw. die Beleuchtung
Widget "WotZon"
Einträge der WZ Kalender Auflisten (StuC)
Ansprechpartner
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.