Internet-Wecker mit Raspberry Pi - Logitech Media Server

Logitech Media Server

Eine mögliche Lösung war der Logitech Media Server den ich installiert habe. Das System ist zwar veraltet, kann aber vieles was ich gerne möchte - sogar mehrere (beliebig viele!) Weckzeiten sind möglich. Allerdings finde ich nichts wie ich die Weckfunktion dann einfach abschalten kann.

Was mich bisher gestört hat sist dass die Ausgabegeräte "headless" konzipiert sind, das bedeutet sie laufen ohne Bildschirm. Das bedeutet dass ich zum Radio einschalten das Handy benutzen müsste - und das ist doof. Die Variante mit einem Touchscreen über "piCore Player" gibt es zwar auch, aber dieser schaltet sich nachts nicht richtig aus was mich sehr beim Einschlafen gestört hat. Außerdem belegt der Bildschirm die GPIOs so dass ich kein HiFiDAC-Modul einsetzen kann.

Dennoch habe ich das System mal wieder reaktiviert und zum Testen eine Instanz in der Küche aufgebaut. Tatsächlich spielt brav jeden Morgen das Radio. Leider ist aber die einzige Möglichkeit der Bedienung eine Webseite aufzurufen. Ich hätte aber gerne die Möglichkeit über Tasten die Wiedergabe ein- und auszuschalten, und vielleicht auch noch die Lautstärke zu kontrollieren.

Der nächste Schritt wäre dann die Oberfläche. Prinzipiell wäre es ganz einfach: es gibt ein Modul "JiveLite" das die Darstellung auf einem Touchscreen ermöglicht. Leider funktionierte die Lösung die ich 2019 ausprobiert hatte nicht mehr - vermutlich hatte ich einen anderen Touchscreen oder Raspberry verwendet. Vielleicht hatten sich aber auch Teile des Programms aktualisiert - wer weiß.

Also stieg ich gleich auf den Pi in der Version 3 um, denn für diesen hatte ich einen 5"-Touchscreen. Leider lief JiveLite nicht - es gab immer die Fehlermeldung "unknown command: ts_setup" oder so ähnlich. 


Waveshare 5" Touchscreen einrichten


SSH in den piCore-Player


mount /mnt/mmcblk0p1
cd /mnt/mmcblk0p1
vi config.txt


Vor dem Ende diesen Block einfügen (die letzte Zeile muss EINE Zeile sein!):
hdmi_group=2
hdmi_mode=87
hdmi_cvt 800 480 60 6 0 0 0 hdmi_drive=1 dtoverlay=ads7846,cs=1,penirq=25,penirq_pull=2,speed=50000,keep_vref_on=0,swapxy=0,pmax=255,xohms=150,xmin=200,xmax=3900,ymin=200,ymax=3900


Mit <ESC>, :wq! speichern und VI verlassen


Änderungen sichern:


sudo filetool.sh -b


Auf der piCore-Seite den Autostart von JiveLite abschalten


Neu starten


SSH in den piCore-Player, dort diesen Code als eine Zeile eingeben und den Schirm kalibrieren:


sudo TSLIB_FBDEVICE=/dev/fb0 TSLIB_TSDEVICE=/dev/input/event0 /usr/local/bin/ts_calibrate


Wenn gewünscht testen mit:


 sudo TSLIB_FBDEVICE=/dev/fb0 TSLIB_TSDEVICE=/dev/input/event0 /usr/local/bin/ts_test


oder


sudo SDL_VIDEODRIVER=fbcon SDL_FBDEV=/dev/fb0 TSLIB_TSDEVICE=/dev/input/event0 SDL_MOUSEDRV=TSLIB /opt/jivelite/bin/jivelite

Nachdem ich allerdings die aktuellste Version des piCore-Players eingespielt hatte funktionierte es besser.

Es gibt unter "Einstellungen" die Möglichkeit die Uhranzeige und das Abschalten des Bildschirms zu steuern, wie dies am besten zu verwenden ist überlege ich. Einerseits wäre eine Anzeige der Uhrzeit interessant, andererseits möchte ich nicht dass nachts der Bildschirm an ist. Vielleicht kann ich irgendwo einstellen dass der Bildschirm aktiv bleibt, aber die Hintergrundbeleuchtung ausschaltet.

Das Hauptproblem ist aber dass der Touchscreen immer wieder die Kalibrierung vergisst. Das scheint daran zu liegen dass eine Variable gesetzt werden muss die auf die Datei mit den Daten zeigt. Das hier (in /mnt/mmcblk0p2/tce/jivelite.sh) soll helfen, aber wird dann auch beim Start diese Datei ausgeführt?

#!/bin/sh
# Datei: /mnt/mmcblk0p2/tce/jivelite.sh
# angepasst von https://www.thefanclub.co.za/how-to/how-setup-picoreplayer-jivelite-use-waveshare-55-amoled-touchscreen

 

# Disable mouse pointer
export JIVE_NOCURSOR=1
# Set touch calibration file
export TSLIB_CALIBFILE=/usr/local/etc/pointercal
# Jivelite interface framerate
#export JIVE_FRAMERATE=22
# Set 32bit color
#/usr/sbin/fbset -depth 32

 

# Set Touch input device
export TSLIB_TSDEVICE=/dev/input/event0 # This might be event1 in some cases
export SDL_MOUSEDRV=TSLIB

 

# Define custom JogglerSkin/Grid Skin size
# The default 1920x1080 skin is too small - scale to 853x480. This could be any
#export JL_SCREEN_WIDTH=800
#export JL_SCREEN_HEIGHT=480

 

# Set custom screen resolution
#/usr/sbin/fbset -xres 800 -yres 480

 

# Run Jivelite
while true; do
  /opt/jivelite/bin/jivelite &
  sleep 3
done

 

Steuerung des piCorePlayers via SSH

 

Eine Alternative wäre es den pCP über Kommandos zu steuern. Wenn man sich via SSH auf das System schaltet  (Benutzer tc, Passwort piCore) kann man mit dem Befehl "pcp" das Verhalten steuern. Zur Verfügung stehen diese Möglichkeiten:

 

=========================================================================================
Basic piCorePlayer CLI
-----------------------------------------------------------------------------------------
Squeezelite/LMS
---------------
- pcp play : play current track in playlist
- pcp stop : stop current track
- pcp pause : pause current track
- pcp up : volume up
- pcp down : volume down
- pcp next : next track
- pcp prev : previous track
- pcp rand : generate random track playlist
- pcp power [on|off] : software power on or off
- pcp volume [0-100] : set volume between 0 to 100
- pcp rescan : look for new and changed media files in connected LMS library
- pcp wipecache : clear connected LMS library and rescan
- pcp mode : display Squeezelite\'s current mode
-----------------------------------------------------------------------------------------
piCore
------
- pcp bu : (b)ack(u)p
- pcp sd : (s)hut(d)own
- pcp bs : (b)ackup then (s)hutdown
- pcp rb : (r)e(b)oot
- pcp br : (b)ackup then (r)eboot
-----------------------------------------------------------------------------------------
piCorePlayer
------------
- pcp d0 : debug off
- pcp d1 : debug on
-----------------------------------------------------------------------------------------

Jetzt fehlt nur noch die Möglichkeit diese Befehle über GPIOs auszulösen.