Ankündigung

Einklappen
Keine Ankündigung bisher.

8-Kanal Multiroom Audio Controller+Verstärker auf piCorePlayer Basis

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    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.

    Kommentar


      Hallo papaarrugada . Gibt es noch 4-fach-Muting-Platinen?
      Zuletzt geändert von gkamp; 27.06.2019, 11:37. Grund: Falscher Thread

      Kommentar


        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

        Kommentar


          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.

          Kommentar


            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.

            Kommentar


              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

              Kommentar


                powerOff.sh

                Code:
                #!/bin/sh
                
                sleep 1s
                
                sudo echo "0" > /sys/class/gpio/gpio24/value
                echo 'power off!'
                readKeys.sh

                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.




                Kommentar


                  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.

                  Kommentar


                    An welchen Homeserver? Den von Gira? Da geht gar nichts in der Richtung!

                    Kommentar


                      Meinst du einen Server mit verschiedenen VMs oder Docker, wo dann jedes Subsystem auf eine USB-Soundkarte zugreift?
                      Interessante Idee - keine Ahnung ob sowas möglich ist!

                      Kommentar


                        Ich verwende folgenden und bin sehr zufrieden:
                        http://music-server.net/help/Willkommen.html

                        Kommentar


                          Zitat von vento66 Beitrag anzeigen
                          An welchen Homeserver? Den von Gira? Da geht gar nichts in der Richtung!
                          nein ich meinte das was die ganze nicht-KNX-Welt unter Homeserver versteht . Ein PC der verschiedene Serveraufgaben, unter anderem auch die aufgaben des GIRA-Homeservers übernimmt.

                          @gurumeditation: ja, ich verwende docker-container, ich hätte aber an einen "audio-container" der alle Soundkarten anspricht.

                          @gspsteve: ja, an so etwas habe ich gedacht, vielen Dank für den Link werde ich mir ansehen.

                          Kommentar


                            Zitat von karino Beitrag anzeigen
                            Wo finde ich denn die "Logik", die das "PowerOn" abschaltet, wenn keine der 4 Zonen aktiv ist?
                            Ich mache das ganz banal über EDOMI. Mein Endstufennetzteil hängt einfach an einem Schaltaktor Ausgang.
                            Wenig spektakulär, funktioniert aber seit mehr als zweieinhalb Jahren sehr zuverlässig.
                            Gruß -mfd-
                            KNX-UF-IconSet since 2011

                            Kommentar


                              Hi zusammen,

                              ich habe unseren Mediaserver nun endlich gebaut, funktioniert super :-).

                              Dieser besteht aus 16 Verstärkern (also 8-Stereo-Zonen) inkl. Raspberry und 2 x 4-fach-Mutingplatinen von papaarrugada . Nun würde ich gerne noch weitere Zonen mit dazunehmen, so dass ich einen zweiten Server aufbauen möchte. Dazu habe ich eine Frage: Aufgrund der GPIO-Pins und der Last des Raspberries (Master) würde ich im 2. Gehäuse einen weiteren Raspberry (als Slave) einbauen. Laut Squeezeserverconfig können mehrere Server aufgebaut werden und per Master-Slave miteinander kommunizieren. Bevor ich mich daran mache: Hat das jemand von Euch auch schon gebaut? Spricht aus Eurer Sicht etwas dagegen?

                              Viele Grüße,
                              Flo

                              Kommentar


                                Ich verstehe jetzt nicht, was mit Master/Slave gemeint ist.
                                Für den LMS sind es ja letztlich alles gleichberechtigte Squeeze Client Instanzen. An einem LMS kannst du (fast) beliebig viele davon betreiben. Unter anderem ja auch die originalen Squeezeboxen und beliebige Selbstbauten.

                                Du musst ja auf einem zweiten Raspi nicht zwingend einen (weiteren) LMS starten. Viele hier haben den LMS ja auch auf einer ganz anderen Hardware (NAS, o.ä.) laufen.

                                Gruß -mfd-
                                KNX-UF-IconSet since 2011

                                Kommentar

                                Lädt...
                                X