Das wir einem Fotoclub beigetreten sind und auch Ausstellungen mit unseren Bildern bestückt haben hatte ich schon geschrieben, im Zuge dieser Veranstaltungen kam die Frage auf, ob nicht alle eingereichten Bilder während der Ausstellungsdauer auf einem Beamer gezeigt werden können.
Ansich kein Problem einfach einen Laptop an den Beamer anschließen und mit dem Tool seiner Wahl eine Slideshow ablaufen lassen. Nun sollte das Starten und Beenden der Bilderanzeige, zu den jeweiligen Öffnungszeiten, von einer nicht Technik versierten Person durchgeführt werden.
Um diese Problemstellung zu lösen, habe ich mich an den in der Schublade liegenden Raspberry PI erinnert, dieser soll bei uns in Zukunft die Hausautomatisierung übernehmen. Das Ziel war nun den Raspberry so zu installieren und zu konfigurieren, dass er automatisch nach dem Einstecken des Netzteils hochfährt und die Slideshow startet, in den nachfolgenden Schritten will ich euch die Vorgehensweise erklären.
Update:
Wer nun RASPBIAN JESSIE einsetzen möchte, muss den autostart etwas anders realisieren.
Update:
Wer nun RASPBIAN JESSIE einsetzen möchte, muss den autostart etwas anders realisieren.
Erster Schritt - Installation des Betriebssystems (RASPBIAN)
Als Erstes müsst ihr euch das Betriebssystem herunterladen (Download Link) ich habe mich für RASPBIAN entschieden da dies eine Debian Variante und daher auch verwandt mit Ubuntu ist, das heißt die Konsolenbefehle sind die gleichen.
Die folgende Installationsbeschreibung lässt sich auf einem Linux System umsetzen, wenn ihr Windows oder einen Mac nutzt verlinke ich euch hier eine Anleitung.
Mit dem folgenden Befehl findet ihr heraus, welche Bezeichnung eure SD-Karte bekommen hat, sobald ihr diese in den Kartenleser eingesteckt habt. (Befehl vor dem einstecken der Karte im Terminal aufrufen)
tail -f /var/log/messages
Um das Image auf die SD-Karte zuschreiben, reicht der folgende Befehl aus. Ihr müsst gegebenenfalls den Speicherort der .img Datei sowie die Bezeichnung, der SD-Karte anpassen.
sudo dd bs=4M if=/tmp/2014-09-09-wheezy-raspbian.img of=/dev/sdd
Ergebnis:
781+1 records in 781+1 records out 3276800000 bytes (3,3 GB) copied, 144,65 s, 22,7 MB/s
Sobald der Kopiervorgang abgeschlossen ist, könnt ihr die SD-Karte von eurem Rechner entfernen und in den Raspberry einstecken und diesen mittels anschließen an die Stromversorgung zum Leben erwecken. Nach einigen Sekunden sollte euch das Konfigurationsfenster erwarten.
Hier solltet ihr nun zumindest die folgenden Punkte durchgehen.
- Expand Filesystem - Dies ist notwendig damit ihr die volle Kapazität der SD-Karte nutzen könnt
- Change User Password - Aus Sicherheitsgründen solltet ihr für den Standardbenutzer “pi” ein neues Passwort vergeben
- Abschließend auf “Finish” und den angefragten Neustart (reboot) mit “Yes” bestätigen
Falls ihr das Passwort nicht geändert haben solltet, lautet der Standardlogin wie folgt.
User: pi
Passwort: raspberry
Der nächste Schritt ist nun einen Benutzer ohne besondere Rechte anzulegen der sich nach dem Starten des Raspberry automatisch einloggen kann.
pi@MihRos-pi ~ $ sudo adduser pictures Adding user `pictures' ... Adding new group `pictures' (1004) ... Adding new user `pictures' (1001) with group `pictures' ... Creating home directory `/home/pictures' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for pictures Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] Y pi@MihRos-pi ~ $
Der neu erstellte Benutzer soll später auch Zugriff auf den Videoausgang (/dev/fb0) haben daher müssen wir ihn noch zu der Gruppe “video” hinzufügen.
pi@MihRos-pi ~ $ sudo adduser pictures video Adding user `pictures' to group `video' ... Adding user pictures to group video Done. pi@MihRos-pi ~ $
Um die Bilder auch abspielen zu können brauchen wir noch das Tool “framebuffer imageviewer” oder kurz “fbi”.
pi@MihRos-pi ~ $ sudo apt-get install fbi Reading package lists... Done Building dependency tree Reading state information... Done Suggested packages: imagemagick The following NEW packages will be installed: fbi 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 59,7 kB of archives. After this operation, 157 kB of additional disk space will be used. Get:1 http://mirrordirector.raspbian.org/raspbian/ wheezy/main fbi armhf 2.07-10 [59,7 kB] Fetched 59,7 kB in 0s (160 kB/s) Selecting previously unselected package fbi. (Reading database ... 73325 files and directories currently installed.) Unpacking fbi (from .../archives/fbi_2.07-10_armhf.deb) ... Processing triggers for mime-support ... Processing triggers for man-db ... Setting up fbi (2.07-10) ... pi@MihRos-pi ~ $
Die Grundinstallation ist jetzt abgeschlossen, als Nächstes brauchen wir einen Ordner in dem wir das Skript und die später automatisch erstellten Konfigurationsdateien ablegen können das beim Starten des Raspberry ausgeführt werden soll.
pi@MihRos-pi / $ cd /usr/ pi@MihRos-pi /usr $ sudo mkdir scripts pi@MihRos-pi /usr $ sudo chown pictures scripts/ pi@MihRos-pi /usr $ cd scripts/ pi@MihRos-pi /usr/scripts $ sudo nano fbi_local.sh pi@MihRos-pi /usr/scripts $ sudo chown pictures fbi_local.sh pi@MihRos-pi /usr/scripts $ sudo chmod 711 fbi_local.sh pi@MihRos-pi /usr/scripts $
- sudo chown pictures scripts/ - Der Benutzer “pictures” wird zum Besitzer des Ordner gemacht
- sudo nano fbi_local.sh - Erstellen des Skripts (Inhalt steht unten)
- sudo chown pictures fbi_local.sh - Der Benutzer “pictures” wird zum Besitzer des Skripts gemacht
- sudo chmod 711 fbi_local.sh - Die Berechtigungen des Skripts werden so angepasst, dass nur der Besitzer das Skript ändern und ausführen kann, alle anderen Benutzer können sich das Skript nur lesend anschauen
fbi_local.sh - Skript
#!/bin/bash filelist="/usr/scripts/files.txt" piclist="/usr/scripts/pics.txt" delay="3" rm $filelist cd /home/pictures/slideshow find . -iname \*.jp* > $filelist shuf -o $piclist $filelist fbi -readahead -noverbose -a -t $delay -l $piclist --blend 1 -s 100000
- delay="3" - Definiert die Anzeigedauer eines Bildes in Sekunden
- rm $filelist - Löscht die evtl. vorhandene Bilderliste
- cd /home/pictures/Slideshow - Wechselt in das Verzeichnis “Slideshow” in diesem Ordner müssen sich auch die Bilder, die abgespielt werden sollen befinden. Unterordner können ebenfalls erstellt werden diese sind mit berücksichtigt.
- find . -iname \*.jp* > $filelist - Sucht nach Dateien mit der Endung .jp* und schreibt diese in eine Dateiliste
- shuf -o $piclist $filelist - Der Befehl durchmischt alle Einträge aus der Dateiliste so dass eine relativ zufällige Bildreihenfolge erreicht wird. Falls eine Reihenfolge nach Dateinamen erfolgen soll diese Zeile mit “#” auskommentieren.
Als nächstes sorgen wir dafür, dass das Script bei jedem Login von pictures automatisch aufgerufen wird. Dafür öffnen wir die Datei .profile
pi@MihRos-pi /usr/scripts $ cd /home/pictures/ pi@MihRos-pi /home/pictures $ sudo nano .profile
An das Ende fügen wir noch die folgende Zeile ein
/usr/scripts/fbi_local.sh
Wenn sich der Benutzer pictures jetzt anmeldet, wird automatisch das Script aufgerufen. Jetzt sorgen wir für den automatischen Login von pictures.
Zuerst die Datei /etc/inittab öffnen:
pi@raspberrypi /home/pictures $ sudo nano /etc/inittab #STRG+W drücken um nach der folgenden Zeile zu suchen 1:2345:respawn:/sbin/getty --noclear 38400 tty1 #Die Zeile mit “#” auskommentieren und in die nächste Reihe folgendes einfügen 1:2345:respawn:/bin/login -f pictures tty1 /dev/tty1 2>&1
Der Block sollte jetzt folgendermaßen aussehen:
#1:2345:respawn:/sbin/getty –noclear 38400 tty1 1:2345:respawn:/bin/login -f pictures tty1 /dev/tty1 2>&1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6
Update für RASPBIAN JESSIE:
Mit Debian Jessie haben die Entwickler entschieden ein neues init System mit dem Namen "systemd" zu verwenden.
Daher hat sich die Autologin Methode etwas geändert.
sudo /etc/systemd/system/getty@tty1.service.d/autologin.conf [Service] ExecStart= ExecStart=-/sbin/agetty --autologin "pictures" %IUnter Umständen müsst ihr vorher den Ordner "getty@tty1.service.d" erstellen
cd /etc/systemd/system/ sudo mkdir getty@tty1.service.d
Damit haben wir erzielt, dass sich der Benutzer “pictures” automatisch einloggt. Falls der User sich ausloggt, oder seine Shell beendet wird, wird er ebenso automatisch wieder eingeloggt.
Damit wir jetzt unser Skript testen können, erstellen wir auf einem USB Stick (FAT32 oder ext3/4 formatiert) einen Ordner mit dem Namen “slideshow” und kopieren ein paar Bilder in diesen.
pi@MihRos-pi ~ $ sudo mkdir /media/usbstick pi@MihRos-pi ~ $ tail -f /var/log/messages #USB Stick in den Raspberry einstecken Nov 22 15:30:01 MihRos-pi kernel: [ 832.672527] sda: sda1 pi@MihRos-pi ~ $ sudo mount /dev/sda1 /media/usbstick pi@MihRos-pi ~ $ sudo cp -R /media/usbstick/slideshow /home/pictures/
Als letzten Installationsschritt bringen wir den Raspberry noch auf den letzten Stand. Voraussetzung dafür ist natürlich eine bestehende LAN/WLAN Verbindung zum Internet. Falls dies nicht vorhanden sein sollte könnt ihr diesen Schritt überspringen.
pi@MihRos-pi ~ $ sudo apt-get update pi@MihRos-pi ~ $ sudo apt-get upgrade
Jetzt können wir den Raspberry mit dem folgenden Befehl neu starten und prüfen, ob die Slideshow startet.
pi@MihRos-pi ~ $ sudo shutdown -r now
Wenn alles richtig funktioniert sollte nach dem booten des Raspberry eine Slideshow mit den Bilder automatisch erscheinen.
Hardwareliste:
- Raspberry Pi Model B+ inkl. Gehäuse (Alle B(+) Raspberrys haben einen Netzwerkanschluss, die A(+) nicht)
- SD Karte mit 16GB (Wird für alle Raspberry Pi ohne das "+" gebraucht)
- microSD Karte 16GB (Für alle neuen PIs)
- passive Alu Kühlkörper (Nicht unbedingt notwendig, verlängert aber die Lebensdauer bei Dauerbetrieb)
- passive Kupfer Kühlkörper (Nicht unbedingt notwendig, verlängert aber die Lebensdauer bei Dauerbetrieb)
Bei Fragen könnt ihr euch wie immer über die Kommentare an uns wenden.