Ankündigung
Einklappen
Keine Ankündigung bisher.
8-Kanal Multiroom Audio Controller+Verstärker auf piCorePlayer Basis
Einklappen
X
-
Hat schon jemand hier den Raspberry weggelassen und das ganze einfach per usb an einen bestehenden homeserver angesteckt und dort betrieben?
Sollte ja grundsätzlich genauso funktionieren oder?
Und wäre es nicht einfacher statt einer 7.1 Karte und Alsa-Handständen einfach einen USB-Hub und x Stück 2.0-Kanal noname-Usb-audioadapter zu nehmen?Zuletzt geändert von DeepB; 28.06.2019, 09:44.
Einen Kommentar schreiben:
-
powerOff.sh
readKeys.shCode:#!/bin/sh sleep 1s sudo echo "0" > /sys/class/gpio/gpio24/value echo 'power off!'
Code:#!/bin/sh # Navigate Jivelite menus # Requires a keyboard device be attached. device="/dev/input/event1" press() { sudo evemu-event ${device} --type EV_KEY --code $1 --value 1 --sync sudo evemu-event ${device} --type EV_KEY --code $1 --value 0 --sync sleep 0.1 } Key_1() { # Power on press KEY_K } Key_2() { # Start from a known menu postion (home) press KEY_H # Select Player press KEY_DOWN press KEY_DOWN press KEY_DOWN press KEY_DOWN press KEY_DOWN press KEY_DOWN press KEY_DOWN # go press KEY_ENTER } Key_3() { # go_playlists press KEY_GRAVE } Key_4() { # go favorites press KEY_F } Key_5() { # Start from a known menu postion (home) press KEY_H # Select Settings press KEY_DOWN press KEY_DOWN press KEY_DOWN press KEY_DOWN press KEY_DOWN press KEY_DOWN press KEY_DOWN press KEY_DOWN # go press KEY_ENTER # Select Synchro press KEY_DOWN press KEY_DOWN press KEY_DOWN press KEY_DOWN press KEY_DOWN press KEY_DOWN press KEY_DOWN press KEY_DOWN press KEY_DOWN press KEY_DOWN # go press KEY_ENTER } Key_6() { # volume - press KEY_MINUS } Key_7() { # volume + press KEY_EQUAL } Key_8() { # Power off press KEY_I } Key_9() { # go_playlists press KEY_GRAVE # go entry 1 press KEY_ENTER } Key_10() { # go_playlists press KEY_GRAVE # go entry 1 press KEY_ENTER # go entry 1 press KEY_ENTER } Key_11() { # go_playlists press KEY_GRAVE # go entry 1 press KEY_ENTER # go entry 2 press KEY_DOWN press KEY_ENTER } Key_12() { # go_playlists press KEY_GRAVE # go entry 1 press KEY_ENTER # go entry 3 press KEY_DOWN press KEY_DOWN press KEY_ENTER } Key_13() { # go_playlists press KEY_GRAVE # go entry 1 press KEY_ENTER # go entry 4 press KEY_DOWN press KEY_DOWN press KEY_DOWN press KEY_ENTER } Key_14() { # go_playlists press KEY_GRAVE # go entry 1 press KEY_ENTER # go entry 5 press KEY_DOWN press KEY_DOWN press KEY_DOWN press KEY_DOWN press KEY_ENTER } amps=off player1=off player2=off player3=off player4=off LMS_IP=192.168.0.222 MAC_ADDR1=ab:cd:ef:12:34:60 # Raspberry Pi MAC address Wohnzimmer MAC_ADDR2=ab:cd:ef:12:34:61 # Raspberry Pi MAC address Kueche MAC_ADDR3=ab:cd:ef:12:34:62 # Raspberry Pi MAC address Esszimmer MAC_ADDR4=ab:cd:ef:12:34:63 # Raspberry Pi MAC address Bad COMMAND="status 0 0" # LMS player status command getPower() { RESULT=`( echo "$1 $COMMAND"; echo exit ) | nc $LMS_IP 9090` echo $RESULT | grep "power%3A1" > /dev/null 2>&1 if [ $? == 0 ]; then echo "on" else echo "off" fi } playerOff() { if [ $amps == "on" ]; then echo "$MAC_ADDR1 power 0" | telnet $LMS_IP 9090 echo "$MAC_ADDR2 power 0" | telnet $LMS_IP 9090 echo "$MAC_ADDR3 power 0" | telnet $LMS_IP 9090 echo "$MAC_ADDR4 power 0" | telnet $LMS_IP 9090 fi } playerStop() { if [ $amps == "on" ]; then echo "$MAC_ADDR1 mode stop" | telnet $LMS_IP 9090 echo "$MAC_ADDR2 mode stop" | telnet $LMS_IP 9090 echo "$MAC_ADDR3 mode stop" | telnet $LMS_IP 9090 echo "$MAC_ADDR4 mode stop" | telnet $LMS_IP 9090 fi } sudo chown tc /sys/class/gpio/export # pulldown echo "13" > /sys/class/gpio/export sudo chown -R tc /sys/class/gpio/gpio13/ echo "in" > /sys/class/gpio/gpio13/direction echo "16" > /sys/class/gpio/export sudo chown -R tc /sys/class/gpio/gpio16/ echo "in" > /sys/class/gpio/gpio16/direction echo "17" > /sys/class/gpio/export sudo chown -R tc /sys/class/gpio/gpio17/ echo "in" > /sys/class/gpio/gpio17/direction echo "18" > /sys/class/gpio/export sudo chown -R tc /sys/class/gpio/gpio18/ echo "in" > /sys/class/gpio/gpio18/direction echo "22" > /sys/class/gpio/export sudo chown -R tc /sys/class/gpio/gpio22/ echo "in" > /sys/class/gpio/gpio22/direction echo "23" > /sys/class/gpio/export sudo chown -R tc /sys/class/gpio/gpio23/ echo "in" > /sys/class/gpio/gpio23/direction echo "25" > /sys/class/gpio/export sudo chown -R tc /sys/class/gpio/gpio25/ echo "in" > /sys/class/gpio/gpio25/direction echo "26" > /sys/class/gpio/export sudo chown -R tc /sys/class/gpio/gpio26/ echo "in" > /sys/class/gpio/gpio26/direction echo "27" > /sys/class/gpio/export sudo chown -R tc /sys/class/gpio/gpio27/ echo "in" > /sys/class/gpio/gpio27/direction # pullup echo "4" > /sys/class/gpio/export sudo chown -R tc /sys/class/gpio/gpio4/ echo "in" > /sys/class/gpio/gpio4/direction echo "5" > /sys/class/gpio/export sudo chown -R tc /sys/class/gpio/gpio5/ echo "in" > /sys/class/gpio/gpio5/direction echo "6" > /sys/class/gpio/export sudo chown -R tc /sys/class/gpio/gpio6/ echo "in" > /sys/class/gpio/gpio6/direction echo "7" > /sys/class/gpio/export sudo chown -R tc /sys/class/gpio/gpio7/ echo "in" > /sys/class/gpio/gpio7/direction echo "8" > /sys/class/gpio/export sudo chown -R tc /sys/class/gpio/gpio8/ echo "in" > /sys/class/gpio/gpio8/direction while true do PRESSED8=$(cat /sys/class/gpio/gpio13/value) PRESSED9=$(cat /sys/class/gpio/gpio16/value) PRESSED10=$(cat /sys/class/gpio/gpio17/value) PRESSED11=$(cat /sys/class/gpio/gpio18/value) PRESSED12=$(cat /sys/class/gpio/gpio22/value) PRESSED1=$(cat /sys/class/gpio/gpio23/value) PRESSED2=$(cat /sys/class/gpio/gpio25/value) PRESSED3=$(cat /sys/class/gpio/gpio26/value) PRESSED4=$(cat /sys/class/gpio/gpio27/value) PRESSED5=$(cat /sys/class/gpio/gpio4/value) PRESSED6=$(cat /sys/class/gpio/gpio5/value) PRESSED7=$(cat /sys/class/gpio/gpio6/value) PRESSED13=$(cat /sys/class/gpio/gpio7/value) PRESSED14=$(cat /sys/class/gpio/gpio8/value) player1=$(getPower "$MAC_ADDR1") player2=$(getPower "$MAC_ADDR2") player3=$(getPower "$MAC_ADDR3") player4=$(getPower "$MAC_ADDR4") # echo "Ergebnis" # echo $player1 # echo $player2 # echo $player3 # echo $player4 if [ $amps == "off" ]; then if [ $player1 == "on" ] || [ $player2 == "on" ] || [ $player3 == "on" ] || [ $player4 == "on" ]; then echo "$MAC_ADDR1 display Moment%20bitte... schalte%20ein... 1" | telnet $LMS_IP 9090 echo "$MAC_ADDR2 display Moment%20bitte... schalte%20ein... 1" | telnet $LMS_IP 9090 echo "$MAC_ADDR3 display Moment%20bitte... schalte%20ein... 1" | telnet $LMS_IP 9090 echo "$MAC_ADDR4 display Moment%20bitte... schalte%20ein... 1" | telnet $LMS_IP 9090 amps=on . /home/tc/powerOn.sh fi else if [ $player1 == "off" ] && [ $player2 == "off" ] && [ $player3 == "off" ] && [ $player4 == "off" ]; then echo "$MAC_ADDR1 display Moment%20bitte... schalte%20aus... 1" | telnet $LMS_IP 9090 echo "$MAC_ADDR2 display Moment%20bitte... schalte%20aus... 1" | telnet $LMS_IP 9090 echo "$MAC_ADDR3 display Moment%20bitte... schalte%20aus... 1" | telnet $LMS_IP 9090 echo "$MAC_ADDR4 display Moment%20bitte... schalte%20aus... 1" | telnet $LMS_IP 9090 amps=off . /home/tc/powerOff.sh fi fi # echo "amps" # echo $amps # echo $PRESSED # sleep 1 if [ $PRESSED1 = 1 ]; then Key_1 sleep 0.2 fi if [ $PRESSED2 = 1 ]; then Key_2 sleep 0.2 fi if [ $PRESSED3 = 1 ]; then Key_3 sleep 0.2 fi if [ $PRESSED4 = 1 ]; then Key_4 sleep 0.2 fi if [ $PRESSED5 = 0 ]; then Key_5 sleep 0.2 fi if [ $PRESSED6 = 0 ]; then Key_6 fi if [ $PRESSED7 = 0 ]; then Key_7 fi if [ $PRESSED8 = 1 ]; then playerStop playerOff Key_8 sleep 0.2 fi if [ $PRESSED9 = 1 ]; then Key_9 sleep 0.2 fi if [ $PRESSED10 = 1 ]; then Key_10 sleep 0.2 fi if [ $PRESSED11 = 1 ]; then Key_11 sleep 0.2 fi if [ $PRESSED12 = 1 ]; then Key_12 sleep 0.2 fi if [ $PRESSED13 = 0 ]; then Key_13 sleep 0.2 fi if [ $PRESSED14 = 0 ]; then Key_14 sleep 0.2 fi if [ $PRESSED15 = 1 ]; then if [ $player2 = stopped ]; then echo "Start player2 Kueche" echo "$MAC_ADDR2 play" | telnet $LMS_IP 9090 player2=started sleep 0.2 else echo "Stop player2 Kueche" echo "$MAC_ADDR2 stop" | telnet $LMS_IP 9090 player2=stopped sleep 0.2 fi fi if [ $PRESSED16 = 1 ]; then if [ $player3 = stopped ]; then echo "Start player3 Esszimmer" echo "$MAC_ADDR3 play" | telnet $LMS_IP 9090 player3=started sleep 0.2 else echo "Stop player3 Esszimmer" echo "$MAC_ADDR3 stop" | telnet $LMS_IP 9090 player3=stopped sleep 0.2 fi fi if [ $PRESSED19 = 1 ]; then if [ $player4 = stopped ]; then echo "Start player4 Bad" echo "$MAC_ADDR4 play" | telnet $LMS_IP 9090 player4=started sleep 0.2 else echo "Stop player4 Bad" echo "$MAC_ADDR4 stop" | telnet $LMS_IP 9090 player4=stopped sleep 0.2 fi fi if [ $PRESSED17 = 1 ]; then echo "$MAC_ADDR3 mixer volume +10" | telnet $LMS_IP 9090 sleep 0.2 fi if [ $PRESSED18 = 1 ]; then echo "RASPI_MAC_ADRESS_GOES_HERE mixer volume -10" | telnet $LMS_IP 9090 sleep 0.2 fi if [ $PRESSED20 = 1 ]; then # 1Live echo "Radio 1Live" echo "$MAC_ADDR3 playlist play http://opml.radiotime.com/Tune.ashx?id=s25260&formats=aac,ogg,mp3&partnerId=16&serial=2528c649c658ffeadb7b041df6321e3e" | telnet $LMS_IP 9090 sleep 0.2 fi if [ $PRESSED21 = 1 ]; then # radioeins echo "$MAC_ADDR3 playlist play http://opml.radiotime.com/Tune.ashx?id=s25111&formats=aac,ogg,mp3,wmpro,wma,wmvoice&partnerId=16&serial=afe440bda10df77274ddb47d62a6025f" | telnet $LMS_IP 9090 sleep 0.2 fi if [ $PRESSED22 = 1 ]; then echo "$MAC_ADDR3 display Taste8 ok 2" | telnet $LMS_IP 9090 sleep 0.2 fi sleep 0.2 done echo "17" > /sys/class/gpio/unexport exit
Das letzte Skript ist bei mir dazu da, Tasten einzulesen und bestimmte Radioprogramme einzuschalten usw.
In einer Schleife werden auch die Stati der Player abgefragt und wenn alle gestoppt sind, dann wird das Skript powerOff aufgerufen.
Das hier soll bitte nur ein Beispiel sein und kann beliebig angepasst und erweitert werden.
Einen Kommentar schreiben:
-
Das wäre toll :-)
Genau diese Funktion habe ich ja gesucht! Bin auch gespannt was es sonst an Features gibt :-)
Danke vorab und liebe Grüße,
Karin
Einen Kommentar schreiben:
-
karino
also das muting.sh hier schaltet jeden Ausgang für sich. Es wird für den GPIO separat gestartet. Es läuft also mehrfach, mutet das PIO verzögert, schaltet aber nicht PowerOff.
Das angesprochene PowerOff.sh habe ich testweise für mich realisiert. Habe mittlerweile auch ein ganzes Gerät mit Tochdisplay und Zusatztasten, allerdings noch ohne Gehäuse zusammengebaut. Wenn Interesse besteht und ich mal Zeit habe und daran denke, würde ich noch Fotos und das Skript einstellen.
Einen Kommentar schreiben:
-
gkamp
es müßten noch 1-3 da sein, muß erstmal nachsehen. Aber eine auf jeden Fall. Ich glaube, auch ein vollständiger Bausatz ist noch da. Den Rest müßte man bestellen.
Einen Kommentar schreiben:
-
ah, ok. Hatte gehofft, dass es so wie Du schreibst, funktioniert. Wo finde ich denn die "Logik", die das "PowerOn" abschaltet, wenn keine der 4 Zonen aktiv ist? Habe im muting.sh und powerDelay.sh nichts direkt gesehen. Wie aber auch schon geschrieben: Ich bin leider keine IT-Fachfrau :-)
Wenn ich das verstehe, traue ich mir zu, dass ich per Try and Error dies separat (2 GPIO für je einen PowerOn) für die zwei 4er-Zonen bauen könnte.
VG,
Karin
Einen Kommentar schreiben:
-
-
das sind jetzt 2 Themen. Es gibt das verzögerte PowerOn beim Einschalten, was den Einbschaltplopp verhindert. Im Betrieb kann jede Platine 4x Muting schalten. Wenn mindestens ein Player auf Wiedergabe geht, dann wird auch das PowerOn geschaltet. Wenn alle Player ausgeschaltet werden, wird auch etwas verzögert das PowerOn abschaltet.
Wenn man alles zusammenfassen will (PowerOn), dann gehört auch die Logik in den Skripten für alle 8 Ausgänge erweitert.
Dann schaltet alles wie ein großer 8er-Block.
Oder man will getrennte Logik, dann braucht man auch 2x PowerOn auf 2 GPIOs.
Einen Kommentar schreiben:
-
Hallo papaarrugada . Danke für die schnelle Antwort.
Verstehe ich das richtig, dass dieser PIN "nur" für das verzögerte Ein- und Ausschalten genutzt wird. Würde es evtl. nicht Sinn machen, dass die Platinen abgeschaltet werden, wenn keine der jeweils 4 Zonen aktiv ist? Dann würden die Platinen nur per GPIO aktiv, wenn mind. 1 der 4 Zonen läuft.
Viele Grüße,
karin
Einen Kommentar schreiben:
-
Hallo Karin,
freut mich, daß die Hardware läuft.
Das einfachste wäre es natürlich nur die beiden PowerOn-Pins am Stecker (ich glaube Pin 5) an den Platinen zu brücken. Dann erledigt das Skript beides. Der Ausgang des RaspberryPi kann das, weil auf jeder Platine ein eigenes Treiber-IC verbaut ist, das dann das Relais ansteuert.
Wenn man allerdings verschiedene Verzögerungen haben will, dann muß man softwaremäßig ran und einen neuen freien GPIO-Pin suchen und die beiden Platinen getrennt schalten.
Viel Grüße
Einen Kommentar schreiben:
-
Hallo zusammen,
wir haben es geschafft einen Musikserver mit den beschriebenen Infos und den Platinen von@papaarrugada zu bauen. Wir haben acht Zonen (also 8 Stereoräume/Stereokanäle) gebaut. Demnach sind zwei der Platinen von papaarrugada verbaut. Ich bin allerdings kein Softwareentwickler. Die Skripte hier aus dem Thread beziehen sich auf 4 Stereozonen (1 Platine). Kann mir jemand weiterhelfen, was ich tun muss, um das PowerOn (was bei der 1. Platine GPIO24 ist) für die 2. Platine umzusetzen?
Viele Grüße,
Karin
Einen Kommentar schreiben:
-
Moin zusammen,
bezüglich des Grundrauschen, welches hier bereits an der ein oder anderen Stelle thematisiert wurde habe ich mir für meine 8 Kanäle, bei denen ein minimal wahrnehmbares Summen vorhanden war, den folgenden Artikel gegönnt, nun sind jeweils 3 von 4 Abgängen meiner USB Soundkarten damit ausgestattet und es ist in Summe kein Grundrauschen mehr wahrnehmbar.
https://de.aliexpress.com/item/32949...35e74c4dyWuFEU
Greetz
Eldrik
Einen Kommentar schreiben:
-
Ohne die jetzt im Detail zu kennen, aber prinzipiell bekommt man ordentliche Kabel auch für wenig Geld.
Amazon wäre jetzt nicht meine erste Wahl, bei Kabeln schaue ich eher bei Thomann oder Reichelt.
Teurere Kabel sind - vom Kabelvoodoo mal abgesehen - oft robuster aufgebaut oder besser geschirmt oder beides.
Bei stationärem Einsatz sollte das aber keine Rolle spielen, mobil oder auf der Bühne sehr wohl.
Ich habe billigste und günstige Kabel (mini Klinke) im Einsatz. Die billigsten fühlen sich billig an, halten aber auch schon über 10 Jahre im häuslichen Gebrauch. Klangliche Unterschiede konnte ich nicht feststellen.
Einen Kommentar schreiben:
-
Danke mars
Du hast recht, dass passte nicht, ich meinte das Enertex Power Supply 1167.
Klinke/Klinke Kabel macht natürlich mehr Sinn, weniger Abfall. Die Preise reichen ja zB bei Amazon von einem knappem Euro bis 10 EUR. Gibts hier tatsächlich Unterschiede oder taugen auch die günstigeren was?
Einen Kommentar schreiben:


Einen Kommentar schreiben: