Raspberry mit 7Zoll Display im Kioskmodus Starten

Der Raspberry Pi kann viele Funktionen erfüllen. Er wird mit Mopidy oder Squeezelight/Squeezebox zum Musikplayer. Ich habe mich nach ersten Versuchen Volumio und Mopidy/MPD, für Squeezelight/Squeezebox/LMS entschieden. Diese Lösung ist multiroom fähig. Die Software bzw. der Hersteller dieser Lösung wurde von Logitech aufgekauft und dann später als OpenSource zur Verfügung gestellt. Internet Radio, Spotify, lokale MP3 Files etc. können so bequem abgespielt werden. Die Steuerung kann z.B. per Browser oder auch per App (z.B. iPeng) erfolgen.

Im Smarthome kann über OpenHAB auch eine Steuerung erfolgen. Das ist hier aber nicht das Thema. 

Hat man ein Touch Display für den PI, kann die Steuerung direkt über das Touch-Display erfolgen. Wie man das einrichtet, will ich hier in diesem Beitrag beschreiben. Ziel ist es, das nach einschalten des Gerätes, eine Oberfläche automatische startet, welche eine Eingabe bzw. Steuerung über das Display mit den Fingern ermöglicht.

Ich hab da auch mal mit einer Fritz!PowerLine geschaut, was da für ein Verbrauch anliegt. Die ca. 6 Watt bei aktiven Display und die fast 3 Watt wenn das Display aus ist. Ich denke das ist für einen Dauerbetrieb (wenn nötig) auch noch im Rahmen.

Zunächst lade ich das Betriebssystem NOOBS_v3.2.0 light. Da wird dann nur die "lite" Version über das Internet installiert. Also sowenig wie nötig an Software installiert.

Da nach dem ersten Starten wird SSH aktiviert, die Einstellung für die Sprache über raspi-config eingestellt und so etwas wie "set -o vi" ins /etc/profile geschrieben. Also etwas was mir ein wenig die Arbeit erleichtert auf der "UNIX console". 

raspi-config

apt-get update

apt-get upgrade

apt-get install dnsutils

Dann gehts los und ich arbeite die folgenden Befehlen und Einstellungen ab.

# Install X11 LXDE .... das dauert dann auch gern mal ne Stunde :-/

# https://www.therryvanneerven.nl/how-to-install-raspbian-jessie-on-an-old-raspberry-pi.html

sudo apt-get install -y xinit lxde-core lxterminal lxappearance lightdm xserver-xorg xserver-xorg-video-fbdev reboot

# Keyboard

# http://ozzmaker.com/virtual-keyboard-for-the-raspberry-pi/

sudo apt-get install -y xinput xinput-calibrator

# Touchscreen

# https://rataks.com/blog/raspberry-pi-touchscreen-in-moode-with-chromium.html

apt-get install -y xserver-xorg-legacy xorg

# 7" Display howto:

# https://maker-tutorials.com/raspberry-pi-touchscreen-installieren-und-anschliessen-tipps-tricks/

# https://raspberry.tips/raspberrypi-tutorials/raspberry-pi-touch-display-installieren-und-einrichten

sudo apt-get install -y florence at-spi2-core matchbox-keyboard unclutter lsb-release chromium-browser

Jetzt wird die grafische Oberfläche installiert

sudo sed -i "s/allowed_users=console/allowed_users=anybody/" /etc/X11/Xwrapper.config
sudo wget https://goo.gl/NEqFRp -O /opt/start-gui
chmod +x /opt/start-gui
sudo wget https://goo.gl/bTB4Vv -O /lib/systemd/system/start-gui.service

Der Start der Oberfläche zur Steuerung des Squeezebox Client nach dem Booten wird durch folgenden Aufruf erledigt:

root@display:~ # cat /opt/start-gui

#!/bin/bash

/usr/bin/xinit /usr/local/share/triode-jivelite/bin/jivelite

Die Konfigurationsdatei für das Stück Software für den Autostart sieht wo aus:

root@display:~ # cat /lib/systemd/system/start-gui.service

[Unit]

Description=Start Chromium GUI

After=nginx.service php5-fpm.service mpd.service

[Service]

Type=simple

ExecStart=/opt/start-gui

User=pi

[Install]

WantedBy=multi-user.target

Den Service muss man dann noch einrichten:

systemctl enable start-gui

Für den Autostart wird u.a. ein Script benötigt, welches nach Login die grafische Oberfläche start. Dabei muss dann wiederum ein "Programm" gestartet werden, welches für die Steuerung genutzt werden kann. Was gibt es besseres als einen Browser (chromium-browser) der auf eine WebSite (mopidy) zugreift. Hierzu das folgende Scipt /opt/start-gui

#!/bin/bash

/usr/bin/xinit /usr/bin/chromium-browser --start-maximized --incognito --single-process --process-per-site --disable-sync-preferences --no-startup-window --kiosk --touch-events --disable-touch-drag-drop --enable-touchview --enable-pinch --window-size=800,480 --windowposition=0,0 --disable-session-crashed-bubble --disable-infobars --no-first-run --app=http://localhost:6680/musicbox_webclient/index.html#home --nocursor

Alternativ hier der Aufruf für JiveLite eine Squeezelite Benutzeroberfläche für Linux

#!/bin/bash

/usr/bin/xinit /opt/jivelite/bin/jivelite.sh

Mit dem Befehl raspi-conf wird die Konfiguration des Systems so eingestellt, das automatisch der Benutzer "pi" sich anmeldet. 

Dann muss noch der "Squeeze..." Client unter Linux installiert werden. Ich nehme dazu den Client  JiveLite

sudo apt-get install git libsdl1.2-dev libsdl-ttf2.0-dev libsdl-image1.2-dev libsdl-gfx1.2-dev libexpat1-dev

Clone luajit from github and compile:

cd /usr/local/src

git clone http://luajit.org/git/luajit-2.0.git
cd luajit-2.0
make
sudo make install
sudo ldconfig

Clone JiveLite from github and compile:

cd /usr/local/src

git clone https://github.com/ralph-irving/jivelite
cd jivelite
make
cd ..
sudo mv ./jivelite /opt

Zum Schluss noch der Tipp mit dem Screensaver über ein einfaches Script "jivelite.sh", welches dann zum Aufruf kommt im "start-gui.sh" Script.

#!/bin/bash

export SDL_VIDEO_ALLOW_SCREENSAVER=1