Ein Kollege fragte mich neulich wie er am einfachsten auf drei Fernsehern verschiedene Urls für Präsentationen öffnen könnte. Er dachte zunächst daran einen Rechner mit entsprechender Grafikkarte zu kaufen, ich konnte ihn jedoch überzeugen anstatt eines Rechners, drei Raspberry Pi´s zu verwenden.
Der Plan ist, das der Raspberry Pi hochfährt und automatisch den Browser öffnet.
Um Resourcen zu sparen, wird der midori Browser über die Kommandozeile gestartet und nicht über einen Desktop. Das setzt voraus, das der Pi Benutzer nach dem hochfahren des Systems an der Kommandozeile angemeldet ist.
Hierfür muss die Datei /etc/inittab wie folgt angepasst werden:
Vorher
1:2345:respawn:/sbin/getty --noclear 38400 tty1
nachher
#1:2345:respawn:/sbin/getty --noclear 38400 tty1
1:2345:respawn:/bin/login -f pi tty1 /dev/tty1 2>&1
Damit der Browser den gesamten Bildschirm ausfüllt (Kiosk Mode) und zum Beispiel der Mauszeiger nicht dargestellt wird, müssen noch weitere Programme installiert werden.
apt-get install matchbox x11-xserver-utils unclutter
Das Script sieht dann wie folgt aus:
#!/bin/sh
unclutter &
matchbox-window-manager & :
xset -dpms
xset s off
while true; do
/usr/bin/midori -e Fullscreen -a https://www.itbasic.de
done
Hier eine kurze Erklärung:
unclutter – lässt den Mauszeiger verschwinden
matchbox-window-manager – sorg für den Kiosk Modus
midori -e Fullscreen -a URL – startet den Browser
xset -dpms und xset s off deaktiviert den Bildschirmschoner
Die while Schleife sorgt dafür, das der Browser bei einem Absturz neu gestartet wird.
Nach einem chmod 755 presentation.sh, lässt sich das ganze dann über xinit /home/pi/presentation.sh starten. Um es wieder zu beenden reicht strg + alt + F1 und im Anschluss strg + c.
Automatischer Start
Ein Eintrag in der /home/pi/.profile reicht nun aus, damit die Präsentation nach dem Systemstart gestartet wird.
Ich habe jedoch das folgende Script in der /home/pi/.profile hinterlegt, welches prüft ob der Raspberry Pi eine IP Adresse über den dhcp Server bekommen hat. Wenn keine IP Adresse vorhanden ist, wird die Präsentation nicht gestartet und dafür ein Hinweis auf der Konsole ausgegeben.
start.sh:
#!/bin/bash
ifconfig | grep 192
if [ $? -eq 0 ]
then
xinit /home/pi/presentation.sh
else
echo "!!! keine Netzwerkverbindung !!!"
echo "Bitte stellen Sie eine Netzwerkverbindung her und"
echo "fuehren Sie xinit /home/pi/presentation.sh aus"
fi
Betriebssystem klonen
Für die zwei weiteren Fernseher muss mein Kollege einen Klone der SD Karte erstellen.
Das ganze lässt sich unter linux über dd einfach realisieren.
1. Image der SD Karte erstellen
dd if=/pfad/zur/sd/karte of=/home/user/sd-image.img
2. SD Karte wechseln und Image auf die neue SD Karte spielen
dd if=/home/user/sd-image.img of=/pfad/zur/sd/karte
Auf diesem Weg lässt sich ein Backup des gesamten System erstellen, hilfreich wenn man des öfteren verschiedene Programm etc ausprobieren möchte.
Hostnamen ändern
Zum Abschluss muss noch der Hostname in der /etc/hostname und /etc/hosts angepasst werden, da sonst der Hostname dreimal im Netzwerk vorhanden ist.
Quellen:
Browser im Kiosk Modus starten: https://github.com/MobilityLab/TransitScreen/wiki/Raspberry-Pi
Autologin:http://elinux.org/RPi_Debian_Auto_Login
…super gemacht und richtig gute Kommentare.
Klasse! Danke!
Richtig gute finde ich die Idee, den Browser in der Kommandozeile zu starten.
Ich suche gerade Info zusammen für ein ziemlich ähnliches Projekt.
Im speziellen suche ich ein Skript, mit dem man vom Benutzer eine URL erfragt, die dann nach einem Neustart im Kiosk-Modus angezeigt wird. Irgend eine Idee, wo ich sowas finden könnten?
Die Frage ist, wie die URL über geben werden soll? Es sollte kein Problem sein, die URL per variable zu setzen. Ansonsten könnte man die URL aus einer txt Datei auslesen, per gpio schalten oder evtl auch per email.
Hallo!
Ich habe mir mit Hilfe Deiner Anleitung einen Raspberry Pi fertig gemacht, der nach dem Booten in den Vollbildmodus eines Browsers geht und eine bestimmt Website anzeigt. Um das ganze zu testen, hab ich dann das Ding abgezogen, zu nem Fernseher gebracht, angeschlossen und siehe da: Es läuft.
Das ist 2 Tage her. Nun hab ich das Ding wieder angemacht und ich bekomme die folgende Meldung:
xset: unable to open display „“
unclutter: could not open display
xset: unable to open display „“
matchbox: can’t open display! check your DISPLAY variable.
Midori – Cannot open display:
Kriegt man sicher irgendwie wieder hin, nur was ich gar nicht verstehe ist, dass ich nichts geändert habe ich von dem einen Tag auf den anderen geht es plötzlich nicht mehr.
Kannst Du mir da irgendwie weiterhelfen?
Gruß
Uwe
Das System fährt aber an sich sauber hoch und du kannst etwas über die Kommandozeile eingeben?
In der /etc/inittab ist auch alles in Ordnung?
genau. Das System läuft sauber hoch. Ich kann mich auch ohne weiteres remote einloggen. Ich hab es schon unterwegs an einem Display getestet und es lief reibungslos. Dann hab ich es nur aus testgründen wieder zuhause angeschlossen und bekam dann die Fehlermeldung.
Viele Grüße
Uwe
So aus der Ferne schwer zu sagen, ich würde sonst anfangen.
Funktioniert denn /usr/bin/midori -e Fullscreen -a http://www.itbasic.de?
Ich habe den selben Fehler. Bei mir kam der Fehler auch durch das Anschließen eines anderen Displays zwischendurch. Ich habe heruasgefunden, dass dies mit der internen DISPLAY- Variable im Zusammenhang steht. Diese kann man mit echo $DISPLAY ausgeben. Bei mir ist sie leer. Es müsste in ihr aber etwas wie localhost:11.0 stehen. Das Anschließen eines anderen Displays scheint diese Variable also zu leeren. Ich vermute, dass sie von Linux verwendet wird, um bekannt zu machen auf welchem Display(Ausgang) ein Fenster dargestellt werden soll. Ich habe bisher aber noch nicht herausgefunden, wie man diese Variable wieder auf ihren Ursprungszustand zurückgesetzt bekommt. Vielleicht reichen diese Infos hier ja, um jemand Erfahreneren mit Linux als mich auf die richtige Spur zu bringen. Ich bin zwar Programmierer, aber hab mit Linux eben wenig zu tun.
Hallo, Danke für diesen nützlichen Tipp. Bei der Umsetzung klappte auch alles ganz prima, solange ich normale Webadressen gewählt habe. Ich wollte mich aber mit dem script an unserem Web-Displaybildschirm anmelden und diese Parameterübergabe mag das Script nicht.
Beispiel:
http://www.testseite.de?username=52454 das funktioniert
http://www.testseite.de?username=52454&passwort=85545 das funktioniert leider nicht
Ich vermute, dass es an dem & Zeichen liegt. Ich bin jetzt leider kein Linux Experte und hoffe, auf diesem Wege eine Lösung zu bekommen. Danke im Voraus.
Habe es selbst herausgefunden: die Webadresse muss in Anführungszeichengesetzt werden, dann klappt auch die Parameterübergabe an die Webseite.
also so: „http://www.testseite.de?username=52454&passwort=85545“
Eine Sache funktioniert nicht so, wie angegeben. Nach dem Start von xinit …. soll man ja mit STRG-ALT-F1 und danach CTRL-C wieder auf die Konsole zurückkommen. Nach dem Drücken von STRG-ALT-F1 wird aber ein X-Server Fehler ausgegeben und die Tastenkombination CTRL-C ist nicht möglich. Gibt es da eine Abhilfe? Im Moment wechsele ich dann auf STRG-ALT F2, um Eingaben zu tätigen.
Ansonsten macht das Script genau das, was es soll.
Kann ich dir so gerade nicht sagen, bei mir hatte es funktioniert. Leider habe ich das gerade nicht mehr aufgebaut und einen Rasbperry habe ich auch nicht zur Verfügung.
Hallo!
Erstmal danke für dieses Tut, es macht so ziemlich genau das, was ich gesucht habe!
Es funktioniert auch sehr gut, aber leider nur auf meinem 22″ Monitor. Starte ich den Pi an einem TV, bleibt er nach Ausführung des Scripts schwarz, nur der Mauszeiger ist zu sehen, der dann verschwindet.
Fahre ich den Pi an dem Monitor hoch und stöpsel dann den TV an, wird die Website angezeigt.
Nur stimmt die Auflösung dann auch nicht mehr.
Leider habe ich wenig Ahnung von linuxbasierten BS, weiß nicht, wie man Monitore konfiguriert oder die Auflösung konfiguriert… falls das überhaupt Ursache des Fehlers ist.
Irgend ein Tipp oder eine Idee? Wäre sehr dankbar!
Ich denke wenn du mit dem Monitor startest wird die Auflösung etc für den Monitor angepasst und beim Anschluss an den Fernseher bleiben die ursprünglichen Einstellungen erhalten.
Wenn du das Script nicht automatisch startest, kannst du dann auf der Kommandozeile alles sehen?
Was für einen Fernseher verwendest du?
Funktioniert es nur bei einer bestimmten Seite nicht oder generell?
Vielen Dank für diese tolle Anleitung! Der „Fullscreen“-Mode im Midori-Browser funktioniert prima! Jetzt muss ich es nur noch hinkriegen, dass der Pi nicht mit Raspbian im Desktop-Mode startet. Wie groß ist euer „sd-image“? Es wäre klasse, wenn ihr das bereitstellen könntet.
Ich glaube die Seite http://raspberrycenter.de/handbuch/grundinstallation-raspi-config wird dir weiterhelfen, schau mal unter dem Punkt
boot_behaviour
Hallo
Super Anleitung !!!
Eine Frage od. Problem habe ich doch.
Beim Neustart läuft alles wie gewollt.
Nur nach einer Zeit (unbek.) zeigt der Midori-Browser nichts mehr an.
Wie kann ich ein Reload (zb. 3600 min) hin bekommen.
Ich hatte den Fall noch nicht, evtl könnte man die folgendes versuchen:
while true; do
/usr/bin/midori -e Fullscreen -a http://www.itbasic.de
sleep 3600
killall midori
done
Leider klappt das nicht.
Dann bleibt das System beim Mauszeiger hängen.
Danke
Ich habe hier gerade keinen Raspberry Pi zum testen damit ich das nachstellen kann.
After a bit of struggling everything worked out great! The Raspberry starts and almost emediatly starts the midi browser and opens the desired website.
However I wanted to combine this with the concerto digital signage thing. For that to work though I need the raspberry pi/midori browser to safe cookies even after a reboot. Is that possible?
Sorry in this case I can not help you.
Moin,
ich hab in der Küche einen MiniNotebook mit Debian 9 ink. 25Zoll TFT.
A) Leider Startet das Script nicht, ich hab es in Crontab eingetragen -Keine Funktion, dann unter RC, auch hier keine Besserung.
B) Bringt er den Fehler midori – Anzeige kann nicht geöffnet werden 🙁
Ps.: Das System fährt hoch, und der Autologin ist auch hinterlegt.
Hast du vll ne Idee ?
Liebe Grüße aus Köln
Kannst du das Script denn ohne crontab starten?
händisch geh es, jedoch bringt er dann die Fehlermeldung, das es Probleme mit de Anzeige gibt.
Ich denke, das es damit zutun habe, das ich noch en Monitor am VGA Anschluss dran habe. Am Monitor sollte ja dann auch die Webseite geöffnet werden. Muss ich irgend eine Variable eintragen, das der Browser auf den VGA Ausgang gelegt wird ?
Viele Grüße
Ich vermute du musst tty1 anpassen