Raspberry Pi als Kiosk mit resourcenschonendem Browser und VESA Mount

Posted on 22. März 2013 Comments

Auf der Arbeit sollte ich einen Raspberry Pi zu einem reinen Service-PC im Kiosk-Modus umwandeln. Dafür habe ich ein VESA kompatibles Gehäuse auf ebay gekauft, das man hinten an den Monitor schrauben kann. Über einen DVI-HDMI Adapter wird das Bild ausgeliefert, dazu noch eine Maus und Tastatur über USB und ein Netzwerkkabel. Anleitungen wie man Raspbian installiert gibt es schon genügend, also überspringe ich mal den ganzen Installations- und Konfigurationspart. An Browsern habe ich Chromium aufgrund des eingebauten Kiosk Modus ausprobiert und dann noch Midori, weil der vorinstalliert ist. Chromium hat schlicht zu viele Resourcen gefressen und Midori hat nicht das geboten, was ich wollte. Ich wollte einen Browser, der absolut idiotensicher nur diese eine Seite anzeigt, kein Adressfeld, kein Quelltext ansehen o.ä.Ich stieß dann irgendwann auf den kiosk-browser von Peter Schultz auf github. Im Grunde sind es nurIMG_20130322_155429

ein paar Zeilen C-Code, die ein Fenster mit GTK+ öffnet und darin ein WebKit-Widget lädt. Das ist übrigens dasselbe Framwork, das auch Chromium benutzt. Zusätzlich hat er noch 2 Signale auf Tasten auf dem Keyboard gemappt, eins für Aktualisieren(F5) und eins um den Vollbildmodus zu verlassenn(F11). Das Aktualisieren habe ich drin behalten, aber da ich keine Notwendigkeit sehe, den Vollbildmodus zu verlassen, diese Zeile Code einfach auskommentiert.
Dann habe ich natürlich noch die Standardwebsite geändert. Mit nodm(s.u.) machte er trotzdem Proleme also habe ich noch folgende Zeilen hinzugefügt um das Bild immer mittig zu halten und in der Größe meines Bildschirms darzustellen:

gtk_window_set_default_size(GTK_WINDOW(window), 1280, 1024);
gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER_ALWAYS);

Den vollen Quelltext findet ihr hier: browser-repat.c und aktuelle Versionen zuerst auf GitHub.

Auch die Makedatei hat bei mir nicht funktioniert, ich habe ein Haufen Fehler nach diesem Schema bekommen:

undefined reference to `gtk_XXX

Stattdessen funktionierte bei mir dieser Befehl:

gcc -o browser browser.c $(pkg-config --libs --cflags gtk+-2.0 webkit-1.0)

Schlussendlich habe ich noch xorg und nodm installiert um lightdm bzw. lxde (wegen den ganzen Tastenkombinationen) los zu werden. Dabei habe ich diese Anleitung von nexxylove befolgt.

Die browser-Datei wandert in /usr/local/bin und in ~/.xsession steht nur:

#!/bin/bash
/usr/local/bin/browser

Dann wird noch in /etc/X11/default-display-manager statt /usr/sbin/lightdm einfach /usr/sbin/nodm  eingetragen und in /etc/default/nodm der Wert NODM_ENABLED auf true gesetzt.

Comments

  1. Hi, tolle Arbeit – ich würde mir das gerne mal schnell ansehen. Stellst du das bin zur Verfügung ? thx, Pit

  2. Hi coole Sache!
    Kann man mit dem Browser auch Silverlight Media elemente wiedergeben?

  3. Hi, danke dir für diesen Blogeintrag! Ich bin noch nicht ganz durchgestiegen und bevor ich mir den Kopf zerbreche über etwas, das ich nicht verstehe, möchte ich dich fragen.
    Mein Gedanke ist die Musicbox (http://www.woutervanwijk.nl/pimusicbox/) um einen ressourcenschonenden Displayserver zu ergänzen, welcher das Webinterface von Musicbox anzeigt und per Touchscreen bedient werden kann. Texteingabe ist dabei nicht nötig, dafür kann notfalls eine Tastatur herhalten.
    Daher meine Frage an dich: Kann diese GUI mit einem Touchdisplay umgehen?
    Danke für Deine Hilfe!

  4. Hi,
    Ich denke das sollte gehen. Prinzipiell kannst du natürlich Touchscreens anschließen, da die Taps auf den Bildschirm Klicks simulieren. Das kommt ein bisschen darauf an, worauf Pi Music Box basiert, ich weiß nicht ob eine GUI dabei ist.
    Da läuft auf jeden Fall ein MPD Server drauf(http://de.wikipedia.org/wiki/Music_Player_Daemon) dafür gibt es diverse Clients. So wie ich das verstanden habe, läuft darauf ein Webserver mit einem MPD Client. Den könntest du natürlich in einem lokalen Browser anzeigen lassen, s. z.B. http://repat.de/2013/03/raspberry-pi-als-kiosk-mit-resourcenschonendem-browser-und-vesa-mount/

  5. das klingt alles super, aber leider verstehe ich es nicht.
    Ich kann mit Windows umgehen, aber die Befehle hier sagen mir leider nichts.
    Schade, das Projekt ist eigentlich genau das, was ich suche..

  6. Hi Wanja,

    ein bisschen Programmier Grundwissen in C und Kommandezeile ist für diese Lösung schon nötig. Welchen Teil kann ich ggf. denn besser erklären? Der Artikel ist auch schon 2013, also fast 8 Jahre alt. Vielleicht gibt es inzwischen bessere Lösungen.

Pings

  1. Automatisches Ausloggen im Kiosk Modus bei Inaktivitaet mithilfe von xscreensaver | repats blog

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.