Ankündigung

Einklappen
Keine Ankündigung bisher.

MPD mit mehreren Instanzen

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

    MPD mit mehreren Instanzen

    Hallo alle miteinander,

    ich hatte bisher ein wiregate mit mehreren mpd-instanzen für mehrere Räume am laufen. Nach dem Umstieg auf smarthomeng würde ich mpd gerne wieder zum laufen bringen. Nach dem Lesen im Forum scheint es ja bei vielen klappen (siehe diesen Beitrag). Bisher hat es noch nicht geklappt.
    Daher habe ich noch ein paar grundsätzliche Fragen:
    Muss ich im System etwas vorbereiten (mehrere mpd.conf erstellen mit eigenem Port und Einstellungen in asound.conf) oder erledigt dies, dass mpd-plugin alleine?
    Ich wäre dankbar, wenn ihr mir helfen könntet, da ich meine Musik schmerzhaft vermisse.😢

    Beste Grüße
    Marco

    #2
    Es wird wohl dann so sein, das Du ebenfalls mehrere Instanzen wie beim Wiregate vorhalten musst. Die werden dann vermutlich die gleiche IP und unterschiedliche Ports haben wenn die auf dem gleichen Rechner sind, oder?
    Der Zugriff vom Plugin erfolgt via IP:Port auf den Daemon. Und wenn Du mehrere bedienen willst halt per Instanz. Das steht auch im Readme

    Kommentar


      #3
      Danke erstmal für die schnelle Antwort.
      Ich habe bisher einiges ausprobiert, tue mich aber noch etwas schwer mit der Konfiguration von MPD in SHNG. Die Logdatei zeigt mir zwar jetzt keine Fehlermeldungen mehr an, dennoch wird nichts abgespielt.

      Meine Items sehen folgendermaßen aus:
      Code:
      OG:
          Bad:
              Audio:
                  playpause:
                      type: bool
                      mpd_status@bathroom: playpause
                      mpd_command@bathroom: playpause
                      enforce_updates: true
                  radio:
                      type: bool
                      mpd_url@bathroom: "http://stream.antenne1.de/90er/livestream2.mp3"
                      enforce_updates: true
      In der plugin.yaml unter \smarthome\etc\ habe ich folgendes eingetragen:
      Code:
      %YAML 1.1
      ---
      database:
      plugin_name: database
      driver: sqlite3
      connect:
      - database:./var/db/smarthomeng.db
      - check_same_thread:0
      
      mpd:
      plugin_name: mpd
      plugin_enabled: true
      
      mpd_bath:
      class_name: MPD
      class_path: plugins.mpd
      instance: bathroom
      host: 192.168.178.10
      port: 6600
      Da ich keine Fehlermeldung in den Logs finde, bleibt die Ursache des Problems unbekannt. Die Datei mpd.log in /var/log/mpd/ wird seit der Installation von SHNG gar nicht mehr bespielt.
      Vielleicht erkennt einer von euch meinen Fehler.

      Beste Grüße
      Marco
      Zuletzt geändert von MarcoKa; 11.02.2022, 21:41.

      Kommentar


        #4
        Die Item Formatierung bekommst Du hin, wenn Du diesen Thread anschaust. Das ist dann für alle Mitleser einfacher Dir zu helfen wenn Du Deinen Beitrag editierst...

        Du hast zwei Instanzen angelegt aber nur beim zweiten IP und host angegeben. Eine IP muss aber angegeben werden sonst kann keine Verbindung aufgebaut werden. In der Plugin.yaml steht auch kein default. Du kannst mal im Admin Interface unter den Logfiles schauen, ob Du da Fehlermeldungen findest.

        Kommentar


          #5
          Wieder was dazu gelernt - Formatierung klappt dank deines Tipps jetzt.
          Ich dachte der erste Teil mit "mpd:" ist für die allgemeine Einstellung des Plugins.
          Ich habe die plugin.yaml jetzt wie folgt geändert:
          Code:
          %YAML 1.1
          ---
          database:
              plugin_name: database
              driver: sqlite3
              connect:
              -   database:./var/db/smarthomeng.db
              -   check_same_thread:0
          
          mpd_bath:
              plugin_enabled: true
              class_name: MPD
              class_path: plugins.mpd
              instance: bathroom
              host: 192.168.178.10
              port: 6600
          Eine Audioausgabe habe ich noch nicht. In den verschiedenen Logfiles (Details und Warnings) erhalte ich keine Fehlermeldung. Muss ich evtl. noch Dateien im Ordner /plugins/mpd/ anpassen?

          Beste Grüße
          Marco

          Kommentar


            #6
            Ich sehe gerade, dass nicht mal der Neustart des Cores im Log "smarthome-details" angezeigt wird. Hier stimmt also vermutlich etwas nicht.

            Kommentar


              #7
              Dateien im Ordner /plugins/mpd/ brauchst Du nicht anpassen. Wenn der Port oben stimmt, sollte es mit dem mpd auch klappen. Allerdings sollte vorher klar sein, das SHNG an sich rund läuft.

              Kommentar


                #8
                Zur Sicherheit habe ich die MPD-Instanz in SHNG genause genannt wie der Device in mpd.conf und asound.conf heißt. Die entsprechenden Dateien sehen an den betreffenden Stellen wie folgt aus:
                Item:
                Code:
                KG:
                    Bad:
                        Audio:
                            playpause:
                                type: bool
                                mpd_status@dmixerkgbad: playpause
                                mpd_command@dmixerkgbad: playpause
                                enforce_updates: true
                            radio:
                                type: bool
                                mpd_url@dmixerkgbad: "http://stream.antenne1.de/90er/livestream2.mp3"
                                enforce_updates: true
                asound.conf:
                Code:
                pcm_slave.Logi1 {
                pcm "hw:0,0"
                channels 8
                rate 44100
                }
                
                pcm.dmixerkgbad {
                type plug
                slave.pcm {
                type dmix
                ipc_key 1024
                ipc_key_add_uid false
                ipc_perm 0660
                slave Logi1
                bindings [ 0 1 ]
                }
                }
                
                pcm.pulse {
                type pulse
                }
                ctl.pulse {
                type pulse
                }
                pcm.!default {
                type pulse
                }
                ctl.!default {
                type pulse
                }
                mpd.conf:
                Code:
                music_directory "/var/lib/mpd/music"
                playlist_directory "/var/lib/mpd/playlists"
                db_file "/var/lib/mpd/tag_cache"
                log_file "/var/log/mpd/mpd.log"
                pid_file "/run/mpd/pid"
                state_file "/var/lib/mpd/state"
                sticker_file                   "/var/lib/mpd/sticker.sql"
                user "smarthome"
                #group                          "nogroup"
                bind_to_address "192.168.178.10"
                port "6600"
                input {
                        plugin "curl"
                }
                input {
                        enabled    "no"
                        plugin     "qobuz"
                }
                input {
                        enabled      "no"
                        plugin       "tidal"
                }
                decoder {
                        plugin                  "hybrid_dsd"
                        enabled                 "no"
                }
                audio_output {
                type "alsa"
                name "dmixerkgbad"
                device "dmixerkgbad"
                mixer_type "software"
                }
                mixer_type "software"
                id3v1_encoding "UTF-8"
                filesystem_charset "UTF-8"
                Die Informationen in den Logs sind jetzt wieder da. Ich erhalte folgende Fehlermeldungen:
                Code:
                2022-02-12  07:08:32 WARNING  lib.network         TCP connection to 192.168.178.10:6600 failed 5/5 times, last error was: [Errno 111] Verbindungsaufbau abgelehnt
                2022-02-12  07:08:33 ERROR    plugins.mpd_dmixerkgbad.MPD Method plugins.mpd_dmixerkgbad.MPD exception: 'MPD' object has no attribute 'connected'
                > Traceback (most recent call last):
                >   File "/usr/local/smarthome/lib/scheduler.py", line 670, in _task
                >     obj()
                >   File "/usr/local/smarthome/plugins/mpd/__init__.py", line 169, in update_status
                >     self.update_currentsong(warn)
                >   File "/usr/local/smarthome/plugins/mpd/__init__.py", line 191, in update_currentsong
                >     if not self.connected:
                > AttributeError: 'MPD' object has no attribute 'connected'
                Ich verstehe die Meldung so, dass MPD keine Verbindung hat. Bevor ich SHNG installiert habe, konnte ich über den entsprechende Kanal jedoch Sound ausgeben. Alle Kanäle der Soundkarte haben getrennt funktioniert. Nach der Installation von SHNG konnte ich mpd nicht mehr über Konsole starten. Ich erhalte folgende Fehlermeldung:
                "mpd error: connection refused"

                Ein Neustart des mpd über /etc/init.d/mpd restart geht nicht. Der status des mpd lautet:

                Code:
                root@shserver:~# systemctl status mpd.service
                ● mpd.service - Music Player Daemon
                   Loaded: loaded (/lib/systemd/system/mpd.service; enabled; vendor preset: enabled)
                   Active: failed (Result: exit-code) since Sat 2022-02-12 07:42:29 CET; 9s ago
                     Docs: man:mpd(1)
                           man:mpd.conf(5)
                           file:///usr/share/doc/mpd/user-manual.html
                  Process: 2725 ExecStart=/usr/bin/mpd --no-daemon $MPDCONF (code=exited, status=1/FAILURE)
                 Main PID: 2725 (code=exited, status=1/FAILURE)
                
                Feb 12 07:42:27 shserver systemd[1]: Starting Music Player Daemon...
                Feb 12 07:42:29 shserver mpd[2725]: config_file: config parameter "id3v1_encoding" on line 382 is deprecated
                Feb 12 07:42:29 shserver mpd[2725]: Feb 12 07:42 : exception: Failed to create pid file "/run/mpd/pid": Permission denied
                Feb 12 07:42:29 shserver systemd[1]: mpd.service: Main process exited, code=exited, status=1/FAILURE
                Feb 12 07:42:29 shserver systemd[1]: mpd.service: Failed with result 'exit-code'.
                Feb 12 07:42:29 shserver systemd[1]: Failed to start Music Player Daemon.
                Da ich die Fehlerquelle nicht eingrenzen kann, sind es leider etwas viele Infos geworden. Ich hoffe, ihr findet euch zurecht.

                Kommentar


                  #9
                  Einen Fehler habe ich gefunden:
                  Für die Datei /run/mpd/pid fehlten die nötigen Rechte

                  mpd konnte ich jetzt restarten und der status ist ohne Fehlermeldung - mpd läuft.

                  Will ich jetzt etwas mit mpc in der Konsole abspielen, bleibt die Fehlermeldung:
                  "mpd error: Connection refused"
                  Auch in den Logs ändern sich die Fehlermeldungen nicht.

                  Kommentar


                    #10
                    Der Fehler sieht mir so aus also ob dort alle Vorkommen von

                    Code:
                    if not self.connected:
                    (z.B. Zeilen 191 und 204)
                    bzw.
                    Code:
                    if not self._client.connected:
                    Zeile 181
                    noch getauscht werden müssen in

                    Code:
                    if not self._client.connected():
                    In develop habe ich einen Fix gepusht. Du kannst Dir dort die mpd/__init__.py rauskopieren und testen ob das Problem dann für Dich erledigt ist.
                    Zuletzt geändert von bmx; 12.02.2022, 09:13. Grund: hatte () vergessen ...

                    Kommentar


                      #11
                      Vielen Dank BMX - der Radiostream wird auf dem richtigen Ausgang wiedergegeben und die Fehlermeldungen sind größtenteils weg. 😁
                      Im Log steht jetzt nur noch:
                      Code:
                      2022-02-12  09:50:51 WARNING  plugins.mpd         dmixerkgbad@: MPD_dmixerkgbad: currentsong: no items to refresh
                      2022-02-12  09:50:51 WARNING  plugins.mpd         dmixerkgbad@: MPD_dmixerkgbad: statistic: no items to refresh
                      Jetzt fehlt mir nur noch die Feinjustierung
                      Der Radiostream spielt durchgängig, egal, ob der Wert des Items sh.KG.Bad.Audio.radio bei 0 oder 1 ist.
                      Kannst du mir evtl. noch bei zwei Fragen helfen:
                      - Wie schalte ich den Radiostream aus.
                      - Weißt du zufällig, wie ich jetzt einstelle, dass MPD Lieder aus einem bestimmten Ordner als Playlist lädt?
                      Ich habe es mit folgenden Items versucht:
                      Code:
                                  updatedatabase:
                                      type: str
                                      mpd_database@dmixerkgbad: update /var/lib/mpd/playlists/playlist1/
                                      enforce_updates: true
                                  rescandatabase:
                                      type: str
                                      mpd_database@dmixerkgbad: rescan /var/lib/mpd/playlists/playlist1/
                                      enforce_updates: true
                      Dies funktioniert jedoch nicht.

                      Vielleicht kann mir auch jemand weiterhelfen, bei dem der mpd schon läuft. Bei mir hapert es leider an den Basics.

                      Beste Grüße
                      Marco
                      Zuletzt geändert von MarcoKa; 12.02.2022, 13:22.

                      Kommentar


                        #12
                        Ich fürchte das sind eher Fragen zur Bedienung. Da ich überhaupt keinen mpd hier einsetze, kann ich das leider nicht testen und Dir auch nicht weiterhelfen.

                        Bei der Warnung würde ich das so interpretieren, das Du kein Items für statistic und currentsong definiert hast.

                        Es wäre natürlich gut wenn wir mal eine user_doc.rst (deutsch) bekämen in der man all sowas nachlesen kann, vielleicht hast Du ja Lust wenn bei Dir alles läuft das mal zu dokumentieren. Die Readme.md (englisch) scheint mir recht spärlich zu sein ...

                        Kommentar


                          #13
                          An dieser Stelle nochmal Danke für deine Mühe bmx. Wenn alles läuft denk ich über die user_doc.rst nach. Ich probier weiter aus - wird schon klappen.
                          Beste Grüße
                          Marco

                          Kommentar


                            #14
                            Ich bin super happy 😁. Es hat geklappt auf 2 Instanzen verschiendene mp3s abzuspielen. Ohne deine Hilfe beavon hätte ich mit der 2. Instanz noch lange rumprobieren müssen - danke.
                            Insgesamt sollen 8 Zonen mit acht verschiedenen Instanzen bespielt werden.
                            Sorgen bereitet mir noch der Log:
                            Code:
                            2022-02-16  20:12:02 DEBUG    plugins.mpd         kgbad@: MPD_kgbad: requesting status
                            2022-02-16  20:12:02 DEBUG    plugins.mpd         kgbad@: MPD_kgbad: send status to MPD
                            2022-02-16  20:12:03 DEBUG    plugins.mpd         kgschlafzimmer@: MPD_kgschlafzimmer: requesting status
                            2022-02-16  20:12:03 DEBUG    plugins.mpd         kgschlafzimmer@: MPD_kgschlafzimmer: send status to MPD
                            2022-02-16  20:12:04 DEBUG    plugins.mpd         kgbad@: MPD_kgbad: requesting status
                            2022-02-16  20:12:04 DEBUG    plugins.mpd         kgbad@: MPD_kgbad: send status to MPD
                            2022-02-16  20:12:05 DEBUG    plugins.mpd         kgschlafzimmer@: MPD_kgschlafzimmer: requesting status
                            2022-02-16  20:12:05 DEBUG    plugins.mpd         kgschlafzimmer@: MPD_kgschlafzimmer: send status to MPD
                            2022-02-16  20:12:05 WARNING  lib.network         Detected disconnect from 127.0.0.1, send failed.
                            2022-02-16  20:12:06 DEBUG    plugins.mpd         kgbad@: MPD_kgbad: requesting status
                            2022-02-16  20:12:06 DEBUG    plugins.mpd         kgbad@: MPD_kgbad: send status to MPD
                            2022-02-16  20:12:08 DEBUG    plugins.mpd         kgbad@: MPD_kgbad: requesting status
                            2022-02-16  20:12:08 DEBUG    plugins.mpd         kgbad@: MPD_kgbad: send status to MPD
                            Ohne, dass etwas abgespielt wird, herrscht ein hoher Traffic. Ich mache mir etwas sorgen, dass es bei 8 Instanzen dann zu Verzögerungen/Komplikationen kommen kann. Deshalb meine Frage: Kann man das Datenaufkommen etwas verringern?
                            Oder existiert der Datenverkehr nur, weil ich DEBUG eingestellt habe?

                            Kommentar


                              #15
                              Die Aufzeichnungen existieren nur weil Du DEBUG auch als Level gesetzt hast. Wenn Du das wieder rausnimmst, wird auch nichts ins Log geschrieben. Wenn Du das höher setzt also z.B. auf Warning dann kommen eben nur Warnmeldungen im Logfile an.

                              Kommentar

                              Lädt...
                              X