Kartenspieler Pi MusicBox Update

Ich bin von der Grundfunktionalität recht zufrieden mit dem Kartenspieler, aber die Software ist noch nicht perfekt. Mich stört da das ganze Datei basiert ist das man bei der Benennung der Ordner auf Leer und Sonderzeichen achten muss und außerdem haben wir 50 Karten nachgekauft und es wird auf der einen Seite irgendwann unübersichtlich wenn viele Abspiellisten aufgelistet werden. Also will ich ein anderes Backend aber die selbe Funktionalität für die Kinder in der Bedienung. Dafür habe ich Pi MusicBox ausgewählt. Es ist sehr modular basiert auf Mopidy im als Abspiel Server was wiederum kompatibel zu MPD ist, so das es Clients wie Sand am Meer gibt.

Daher habe ich mich mit mpc als Konsolen Client beschäftigt.  Mit diesem Befehl

mpc ls ‚Local media/Albums‘

Kann ich mir die verfügbaren Alben anzeigen lassen und dann mit dem Befehl

mpc clear;mpc add ‚Local media/Albums/<AlbumName>‘;mpc play 1

das jeweilige Album abspielen. Aber ich würde ja am liebsten das wenn die Kinder ständig die Karten wechseln das die genaue Position gespeichert wird und dort dann beim nächsten mal weitergespielt wird. Diese Funktionalität gibt es zwar in Mopidy aber anscheint kann man sie nicht ansprechen.  Daher habe ich mir die Skripte aus mpdtoys angesehen. Genauer mpstore und mpload. Damit kann man dann die Funktionalität nachbauen das bei einem Kartenwechsel die Position in der Playlist gespeichert wird. Leider ist Mopidy nicht 100% MPD konform so da es eine Fehlermeldung liefert wenn man die Option crossfade nutzt daher muss man die noch aus mpload raus kommentieren(Zeile 226 die Datei findet man mit whereis mpload ).

#$dest->fade($snap->{xfade}) if exists $snap->{xfade};

Damit man vergleichen kann ob die Playlist die momentan gespeichert werden soll die selbe ist die unter der Id gespeichert ist habe ich ein sehr kleines Perl Skript geschrieben das hat noch die zusätzliche Abhängigkeit List::Compare daher noch das passende Paket nach installieren:

apt-get install liblist-compare-perl

Damit das alles mal Form annimmt habe ich das RPi-Jukebox-RFID  Repository geforked und meine Änderungen eingepflegt.(Die Doku steht noch aus…)

 

 

 

Kartenspieler

Ich habe in dem Blog Eintrag Gedanken zur Toniebox letztendlich dazu tendiert ein fertiges Gerät zu kaufen.  Nachdem wir da nochmal drüber nachgedacht haben fanden wir es aber doch zu teuer. Unsere Kinder bekommen meisst Sicherungskopien von den Original CDs und wenn dann eine verkratzt ist brennt man eben eine neue. Bis man da 200€ für Rohlinge verbrannt hat das dauert.  Die Idee war also vom Tisch und dann haben die Kinder den CD-Player kaputt gemacht.

Außerdem kam der Bastler durch und ich wollte doch volle Kontrolle über das System. Also habe ich eingekauft:

Einen Raspberry Pi habe ich noch da gehabt eine MicroSD Karte auch. Initial gebaut habe ich es mit einem Raspberry Pi 3 weil es damit schneller und einfacher ist wegen den direkt vorhanden Schnittstellen (USB/HDMI) aber nachdem alles lief habe ich die SD Karte in einen Raspberry Pi Zero W gesteckt und da lief auch alles. Das ganze steckt jetzt in einem ehemaligen Schmuckkästchen in der oberen Schublade. In der darunter sind die Karten.  Und in den anderen beiden haben die Kinder Zeug/Wertsachen/Edelsteine rein getan. Das gute an dem Schmuckkästchen  ist das man die Seiten wo jetzt die Boxen drin sind auf und zu klappen kann und das man gut an die Kontrolle Knöpfe der Boxen kommt.

Ich hab die Software von RPi-Jukebox-RFID  samt Anleitung genutzt. Jedoch auf aktuellem Rasbian Strech installiert. Geändert hatte sich wenig. Zu spät habe ich als Alternative zur ausführlichen Anleitung das Install Skript gefunden. Die Boxen wurden gut erkannt. Jetzt ging es nur darum die Multimedia tasten auf den Boxen zu verknüpfen.  Dafür habe ich wie hier beschrieben showkey genutzt. Das hatte nur den Nachteil das man wirklich einen Bildschirm braucht und es nicht peer SSH geht.  Bei mir kam dann die folgende Datei raus:

string F100 = „echo ‚pause‘ | nc.openbsd -w 1 localhost 4212\n“
string F101 = „echo ’stop‘ | nc.openbsd -w 1 localhost 4212\n“
string F102 = „echo ‚prev‘ | nc.openbsd -w 1 localhost 4212\n“
string F103 = „echo ’next‘ | nc.openbsd -w 1 localhost 4212\n“
string F104 = „amixer -c 1 set PCM 1+ toggle\n“
string F105 = „amixer -c 1 sset PCM 1.5db+\n“
string F106 = „amixer -c 1 sset PCM 1.5db-\n“

keycode 164 = F100
keycode 166 = F101
keycode 165 = F102
keycode 163 = F103
keycode 113 = F104
keycode 115 = F105
keycode 114 = F106

Die Datei lade ich dann in der /etc/rc.local mit

sudo loadkeys /home/pi/RPi-Jukebox-RFID/misc/mykeys

Wichtig ist das man es so einstellt das der ein Benutzer auf der Console direkt angemeldet wird sonst kommen die Befehle nicht an. Nach einem Update kann es passieren das man das wieder neu einstellt.

Erst hatte ich die Stop Taste mit „Herunterfahren“ belegt aber das wurde zu oft aus versehen gedrückt. Jetzt habe ich dafür einen der RFID Schlüsselanhänger den man über den Leser ziehen muss um das System herunterzufahren, so das es eine recht bewusste Handlung ist.  Obwohl die Stop Funktion recht überflüssig ist. Ich bin auch noch nicht mit dem Stromkabel Schalter zum anschalten zufrieden weil die Kinder im Betrieb manchmal damit „rum klicken“. Außerdem ist es unglücklich das es zwei unterschiedliche andere Methoden zum Ein und Ausschalten gibt.