Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS 19000420 - MPD Steuerung

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

    LBS 19000420 - MPD Steuerung

    Hi, ich bastle an einer MPD Steuerung. Das LBS ist angelehnt an LBS VLC Remote Control von panzaeron.

    Was geht:

    Eingänge:
    KO Wiedergabe/Stopp
    KO Pause
    KO Weiter/Zurück
    KO Wiederholen
    KO Zufall
    KO Lautstärke
    KO Stumm
    KO Dafault Laut. setzen
    KO URI wiedergeben(Input von LBS 19000124 - Speicherplätze)
    KO Gewählter Kanal (Input von LBS 19000124 - Speicherplätze)
    Ausgänge:
    Uptime MPD Server
    Fehler
    Datei
    Titel
    Künstler
    Album
    Jahr
    Genre
    Titel-Nr.
    Gesamtanzahl
    Wiedergabe
    Pause
    Wiederholen
    Zufall
    Position
    Lautstärke
    Stumm
    Gewählter Kanal (Ausgabe der Kanalnummer, falls immer noch KO URI wiedergegeben wird, sonst 0 *)

    * Da ich Kanäle auf Taster gelegt (Tasten als Wertegeber, Status LED reagiert auf Werte, Wert = Kanal) habe und diese leuchten wenn der Kanal aktiv ist, muss ich erkennen ob ein anderer Client die Playliste verändert hat. Wenn also der Player stopp oder die URI zum gewählten Kanal von einen anderen Client geändert wurde, gibt der edomi MPD Client nur mehr 0 als Kanal aus.
    19000420.png




    LBS läuft nur wenn Eingänge oder Ausgänge aktiviert werden.

    EXEC läuft als Deamon und überwacht den LBS auf neue Kommandos und den MPD Server auf Änderungen (wegen nächstem Titel oder Befehle anderer Clients).

    Installation:

    1. LBS wie üblich installieren
    /usr/local/edomi/www/data/liveproject/lbs/EXE19000420.php

    2. Includes im Unterverzeichnis 19000420/ installieren
    /usr/local/edomi/www/data/liveproject/lbs/19000420/mpd.class.php
    /usr/local/edomi/www/data/liveproject/lbs/19000420/mpd.define.php


    Changelog:

    v0.1 - 28.06.2016
    - Grundfunktionalität
    v0.2 - 01.07.2016
    - Kanal als Eingang und Ausgang hinzugefügt
    Zuletzt geändert von hapi; 03.07.2016, 20:56.

    #2
    Ich bin heute dazu gekommen, Deinen LBS zu testen - läuft auf Anhieb.
    Vielen Dank, sehr gute Arbeit.

    Kommentar


      #3
      Tut bei mir auch was es soll. Wenn jemand weitere Features benötigt, bitte melden. Speziell für Playlist Manipulation wäre das meiste vorbereitet, allerdings brauche ich das für mich nicht. Steuere Webradio über edomi/knx und den Rest über einen Android MPD Client.

      Kommentar


        #4
        Mir ist da noch was zu Deinem LBS aufgefallen.
        Vor ein paar Tagen hatte ich einen kurzen Stromausfall - ein paar Sekunden. Da war dann der Bus (und der IP-Zugriff darauf) tot.
        EDOMI ist z.Zt. auf einem alten Laptop mit Akku (also quasi ne USV) installiert und ist weiter gelaufen und hat auch protokolliert.

        SYSLOG:
        SYSLOG.PNG

        Ich habe mpd auf einem Synology-NAS laufen. Das war dann auch erst mal aus (Asche auf mein Haupt - z.Zt. auch ohne USV).
        Nachdem der Bus wieder da war, ging auch die Kommunikation mit dem Bus wieder. Allerding hat EDOMI (also der LBS19000420) die Verbindung zum mpd nicht neu aufbauen können. Es kamen dann im sekundentakt Fehler ins Log.

        ERRORLOG:
        ERRORLOG.PNG

        Nach einem Neustart von EDOMI lief dann alles wieder wie gewohnt. Der mpd-Server muss offensichtlich schon laufen, wenn Dein LBS startet sonst gibt es keine Verbindung. Ich kann nicht sagen ob es möglich ist dies zu ändern, wäre aber schön für die Stabilität.

        Bitte nicht falsch verstehen. Dein LBS tut es sehr gut - ist nur ein Hinweis. Und wenn man es weiß, kann man ja entsprechend handeln.

        Gruß Marco

        Kommentar


          #5
          Meine Frau hat sich auch schon beschwert (meine MPDs laufen auf Windows, nach jedem Update...).
          Steht definitiv als nächstes auf der ToDo Liste. Bin aber leider ziemlich ausgelastet momentan. Bitte den Thread beobachten...

          Kommentar


            #6
            Habt ihr mit euren MPD Setups die Möglchkeit einzelne Räume anzusteuern und zu synchronisieren (Multiroom)? Bzw. ist es mit dem LBS möglich einzelne MPD-Instanzen zu bedienen und von einander unabhängige Lautstärkeregelung zu realisieren?
            Gruß -mfd-
            KNX-UF-IconSet since 2011

            Kommentar


              #7
              Ich habe derzeit zwei Instanzen des mpd zu laufen (gleiche IP / verschiedene Ports 6600 und 6601). Zur Steuerung der beiden Zonen habe ich zwei Mal den LBS installiert, mit den beiden unterschiedlichen Ports. Damit ist getrennte Lautstärkeregelung kein Problem.
              Über Synchronität kann ich nichts sagen, da beide Zonen weit voneinander entfernt sind.

              Kommentar


                #8
                Synchron sind die so sicher nicht. Eine Idee hätte ich noch, aber nicht getestet. Man kann eine 5.1 oder 7.1 Soundkarte in Stereozonen aufteilen, wie das in Windows geht, habe ich hier mal beschrieben, bei Linux gibt es Anleitungen für Pulseaudio.

                Diese Virtuellen Stereosoundkarten kann man nun im MPD konfigurieren (alle 3 für einen MPD). Man könnte hier trotzdem 3 MPD Server laufen lassen, man müsste nur darauf achten, dass nur einer einen Output gleichzeitig bespielt, sonst wird es gemischt oder es gibt Fehler.
                Code:
                audio_output {
                    type        "winmm"
                    name        "Line 1"
                    device        "Line 1 (Virtual Audio Cable)"
                    mixer_type        "software"
                }
                
                audio_output {
                    type        "winmm"
                    name        "Line 2"
                    device        "Line 2 (Virtual Audio Cable)"
                    mixer_type        "software"
                }
                
                audio_output {
                    type        "winmm"
                    name        "Line 3"
                    device        "Line 3 (Virtual Audio Cable)"
                    mixer_type        "software"
                }
                Der MPD lässt es so nun zu, die Outputs auszuwählen, einen, zwei oder alle drei. Das sollte eine relativ synchrone Ausgabe sein.

                Jetzt gibt es nur noch ein Problem, die MPD Lautstärke gilt für alle 3 Outputs. Die Outputs haben aber auch noch eine Betriebssystemlautstärke (sollte per script+LBS steuerbar sein) oder es gibt noch einen steuerbaren Verstärker. Alles nicht getestet, denke aber es müsst funktionieren... Wenn das jemand testet, bitte berichten.

                Kommentar


                  #9
                  Ich habe leider noch ein anderes Problem. Wenn der MPD ausfällt, so erzeugt der LBS hunderte Fehler im ERRLOG. Ich dachte jetzt, ich kann die einfach per try catch abfangen, aber trotz try catch, landen die Fehler im Log. Wie kann das sein? Wie kann ich das lösen?

                  PHP-Code:
                              // HaPi: Exception handling on connection loss
                              
                  try { fputs($this->mpd_sock,"$cmdStr\n"); }  // Zeile 219
                              
                  catch (Exception $e) {
                                  
                  $this->errStr $e->getMessage();
                                  
                  writeToTraceLog('Exception: '.$e->getMessage());
                                  return 
                  NULL;
                              } 
                  Code:
                  <tr class="sErr"><td>2016-08-11 20:48:36</td><td>511766</td><td>?</td><td>15080</td><td>Datei: /usr/local/edomi/www/data/liveproject/lbs/19000420/mpd.class.php | Fehlercode: 8 | Zeile: 219 | fputs(): send of 6 bytes failed with errno=32 Broken pipe</td><td>ERROR</td></tr>

                  Kommentar


                    #10
                    Die Aufteilung der 7.1 Karte (UA0099) kenne ich vom Wiregate. Das funktioniert grundsätzlich sehr gut (was die Synchronität angeht).

                    Zitat von hapi Beitrag anzeigen
                    Jetzt gibt es nur noch ein Problem, die MPD Lautstärke gilt für alle 3 Outputs. Die Outputs haben aber auch noch eine Betriebssystemlautstärke (sollte per script+LBS steuerbar sein) oder es gibt noch einen steuerbaren Verstärker. Alles nicht getestet, denke aber es müsst funktionieren... Wenn das jemand testet, bitte berichten.
                    Es gibt soweit mir bekannt ist
                    • die Lautstärke des jew. mpd
                    • Lautstärke System (amixer)
                    • Lautstärke einzelner Kanal bzw. Stereokanal


                    Das einzige was ich bisher erfolgreich zur Einzelkanalsteuerung getestet habe, sofern alles über alsa(mixer) läuft ist:
                    https://knx-user-forum.de/forum/öffe...030#post917030

                    Allerdings ist der Haken bei der Sache, dass das nur lokal klappt, und sich nicht elegant von einer anderen Maschine aus steuern läßt wie der mpd.
                    Gruß -mfd-
                    KNX-UF-IconSet since 2011

                    Kommentar


                      #11
                      @hapi
                      Try/Catch wird nicht funktionieren, da EDOMI eine eigene Fehlerbehandlung implementiert hat - sonst würde es das Fehler-Log nicht geben können

                      Du kannst aber sämtliche Fehlermeldungen deaktivieren - dies machen diverse Community-LBS so.
                      EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                      Kommentar


                        #12
                        Danke für den ersten Hinweis.

                        error_reporting(0); scheint es nicht zu sein. Halbe Stunde suchen brachte leider nicht das gewünschte Ergebnis.

                        Dürfte ich um einen weiteren Hinweis bitten? Sorry.

                        Kommentar


                          #13
                          Probier mal
                          PHP-Code:
                          restore_error_handler();
                          error_reporting(0); 

                          Kommentar


                            #14
                            Danke! Das hat funktioniert. Deaktiviere ich damit nur den error_handler für mein LBS oder ist der ab dem Befehl systemweit deaktiviert? Anders gefragt, kann und soll ich ihn nach der kritischen Operation wieder auf Edomi-Standard setzen?

                            Kommentar


                              #15
                              Das sollte man wohl besser nur auf den EXEC-Teil beschraenken, im LBS-Teil sollte es ohnehin nicht zu Fehlern kommen. Immer im Kopf behalten: der EXEC-Teil ist autark und laeuft als eigenstaendiger Prozess, der LBS-Teil hingegen ist nicht mehr (aber auch nicht weniger ) als ein Teil der Edomi-Logikengine...

                              Und solange Du Deine Fehler selber vollumfaenglich loggst gibt es eigentlich keinen Grund, die ins Edomi-Log zu schreiben, bzw schreiben zu lassen, IMHO...

                              Kommentar

                              Lädt...
                              X