Music Server Interface

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • hismastersvoice
    Supermoderator
    • 25.08.2015
    • 7147

    Zitat von Sonikmartincz
    Zdravím pánové. To je velmi zajímavé téma a dlouho jsem čekal na něco podobného. V bytě mám hráče zřízené prostřednictvím LMS a jsem rád, že se mi podařilo najít způsob, jak připojit LoxoneUI. Nebylo by však možné vytvořit pokyny, jak nastavit rozhraní tak, aby bylo propojeno s oblíbenými, seznamy skladeb a, co je nejdůležitější, s knihovnou? Je to možné? Děkuju
    I´m not sure how many User here speaks Czech..?? I use also google Translator, with english you have a better chance to get answeres.
    There will be a Loxberry Plugin if the MSG is ready. You can use it for the LMS / Squeezelite etc. combination.
    I also get a lot of PNs about these question, but please be patient, it will come but it just takes some time.
    Kein Support per PN!

    Kommentar

    • Gast

      Sorry, my mistake, I copy a wrong part of translator.

      Greetings gentlemen. This is a very interesting topic and I have been waiting for something similar for a long time. I have players set up via LMS in the apartment and I am glad that I managed to find a way to connect LoxoneUI. But wouldn't it be possible to create instructions on how to set up the interface to be linked to favorites, playlists and, most importantly, the library? Possible? Thank you

      Kommentar


      • hme0354
        hme0354 kommentierte
        Kommentar bearbeiten
        This actually work in progress. We all hope this will work in Future.

      • Prof.Mobilux
        Prof.Mobilux kommentierte
        Kommentar bearbeiten
        It takes some more time to finish all the things. We are currently implementing MSG in the Squeezelite Plugin and there will be also an implementation in the MS4Lox project.
    • Gast

      hismastersvoice Prof.Mobilux I just uploaded a new version to the repository with some bugfixes:
      • Fixed playing a favorite (the Loxone folks really like adding play commands; it's the sixth I have to map!).
      • Incorporated alarms via new endpoints (/alarm/:type/:volume). TTS is still in the works.
      • I made the favorite output of the Loxone Miniserver work (AQs zone ouptut). Read below!
      I have (ab)used the way the favorite zone identifier works. In short, the number is a 7-digit identifier, that tracks the source playing the track, and the position. This is actually more flexible than the expected way of using this entry! I have explained how to get the identifiers back from this encoded number in the docs, but here's the short summary:


      I'm checking now the zone on - zone off thingy which is a bit tricky on how to make it properly behave as I don't want to overload the API.

      Kommentar

      • hismastersvoice
        Supermoderator
        • 25.08.2015
        • 7147

        Gast
        Thanks for update

        Now Room/Global Fav works perfect.

        When I klick to a Playlist (not Fav) in last version they played well.
        Now I get...

        Code:
        [WSCK] Received message: audio/2/serviceplay/lms/noUser/WyJUZXN0X1BMXzEiLDMwMDAwMDJd
        (node:29161) UnhandledPromiseRejectionWarning: ReferenceError: zone is not defined
        at MusicServer._audioServicePlay (/opt/music_server/msg/service/music-server/index.js:760:5)
        at MusicServer._handler (/opt/music_server/msg/service/music-server/index.js:360:21)
        at WebSocketConnection.connection.on (/opt/music_server/msg/service/music-server/index.js:83:39)
        at WebSocketConnection.emit (events.js:198:13)
        at WebSocketConnection.processFrame (/usr/lib/nodejs/websocket/lib/WebSocketConnection.js:554:26)
        at /usr/lib/nodejs/websocket/lib/WebSocketConnection.js:323:40
        at process._tickCallback (internal/process/next_tick.js:61:11)
        (node:29161) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 8)
        Zuletzt geändert von hismastersvoice; 23.05.2020, 21:26.
        Kein Support per PN!

        Kommentar


        • Gast
          Gast kommentierte
          Kommentar bearbeiten
          Fixed!
      • Gast

        I just added support for:
        • Equalizer (GET / PUT). More info in the docs about how to read / write the values coming from this input.
        • Icon support and modifications for inputs (line-in entries). Also added documentation on how to use those.
        • Added playlist creation support via UI.
        • Enabled storing a global favorite from library / playlists.
        Angehängte Dateien

        Kommentar

        • hismastersvoice
          Supermoderator
          • 25.08.2015
          • 7147

          Thanks for update,

          When I start the MSG I get a lot of "[ERR!] Default behavior for "play": Cannot read property '0' of null" messages.
          Not sure why there is "play": when reading the Eqaulizer.

          When I turn the EQ in the App I get
          --> [CALL] Calling PUT to http://localhost:8091/zone/2/equalizer
          [ERR!] Default behavior for "equalizer": Cannot read property '0' of null

          Is the Value of the EQ stored in the App/MiniServer or do I have to store them and send em back?


          Code:
          [WSCK] Received message: audio/cfg/getroomfavs/20/0/10
          [WSCK] Received message: audio/cfg/getroomfavs/0/0/10
          --> [CALL] Calling GET to http://localhost:8091/zone/20/favorites/0
          [WSCK] Received message: audio/cfg/equalizer/1
          --> [CALL] Calling GET to http://localhost:8091/zone/1/equalizer
          [WSCK] Received message: audio/cfg/equalizer/2
          --> [CALL] Calling GET to http://localhost:8091/zone/2/equalizer
          [WSCK] Received message: audio/cfg/equalizer/3
          --> [CALL] Calling GET to http://localhost:8091/zone/3/equalizer
          [WSCK] Received message: audio/cfg/equalizer/4
          --> [CALL] Calling GET to http://localhost:8091/zone/4/equalizer
          [WSCK] Received message: audio/cfg/equalizer/5
          --> [CALL] Calling GET to http://localhost:8091/zone/5/equalizer
          [WSCK] Received message: audio/cfg/equalizer/6
          --> [CALL] Calling GET to http://localhost:8091/zone/6/equalizer
          [WSCK] Received message: audio/cfg/equalizer/7
          --> [CALL] Calling GET to http://localhost:8091/zone/7/equalizer
          [WSCK] Received message: audio/cfg/equalizer/8
          --> [CALL] Calling GET to http://localhost:8091/zone/8/equalizer
          [WSCK] Received message: audio/cfg/equalizer/9
          --> [CALL] Calling GET to http://localhost:8091/zone/9/equalizer
          [WSCK] Received message: audio/cfg/equalizer/10
          --> [CALL] Calling GET to http://localhost:8091/zone/10/equalizer
          [WSCK] Received message: audio/cfg/equalizer/11
          --> [CALL] Calling GET to http://localhost:8091/zone/11/equalizer
          [ERR!] Default behavior for "play": Cannot read property '0' of null
          [WSCK] Received message: audio/cfg/equalizer/12
          --> [CALL] Calling GET to http://localhost:8091/zone/12/equalizer
          [WSCK] Received message: audio/cfg/equalizer/13
          --> [CALL] Calling GET to http://localhost:8091/zone/13/equalizer
          [WSCK] Received message: audio/cfg/equalizer/14
          --> [CALL] Calling GET to http://localhost:8091/zone/14/equalizer
          [ERR!] Default behavior for "play": Cannot read property '0' of null
          [ERR!] Default behavior for "play": Cannot read property '0' of null
          [ERR!] Default behavior for "play": Cannot read property '0' of null
          [WSCK] Received message: audio/cfg/equalizer/15
          --> [CALL] Calling GET to http://localhost:8091/zone/15/equalizer
          [WSCK] Received message: audio/cfg/equalizer/16
          --> [CALL] Calling GET to http://localhost:8091/zone/16/equalizer
          [WSCK] Received message: audio/cfg/equalizer/17
          --> [CALL] Calling GET to http://localhost:8091/zone/17/equalizer
          [ERR!] Default behavior for "play": Cannot read property '0' of null
          [ERR!] Default behavior for "play": Cannot read property '0' of null
          [ERR!] Default behavior for "play": Cannot read property '0' of null
          [WSCK] Received message: audio/cfg/equalizer/18
          --> [CALL] Calling GET to http://localhost:8091/zone/18/equalizer
          [WSCK] Received message: audio/cfg/equalizer/19
          --> [CALL] Calling GET to http://localhost:8091/zone/19/equalizer
          [WSCK] Received message: audio/cfg/equalizer/20
          --> [CALL] Calling GET to http://localhost:8091/zone/20/equalizer
          [ERR!] Default behavior for "play": Cannot read property '0' of null
          [ERR!] Default behavior for "play": Cannot read property '0' of null
          [WSCK] Received message: audio/cfg/equalizer/0
          [ERR!] Default behavior for "play": Cannot read property '0' of null
          [ERR!] Default behavior for "play": Cannot read property '0' of null
          [ERR!] Default behavior for "play": Cannot read property '0' of null
          [ERR!] Default behavior for "play": Cannot read property '0' of null
          [ERR!] Default behavior for "play": Cannot read property '0' of null
          [ERR!] Default behavior for "play": Cannot read property '0' of null
          [ERR!] Default behavior for "play": Cannot read property '0' of null
          [ERR!] Default behavior for "play": Cannot read property '0' of null
          [ERR!] Default behavior for "play": Cannot read property '0' of null
          [ERR!] Default behavior for "play": Cannot read property '0' of null
          [ERR!] Default behavior for "play": Cannot read property '0' of null
          [WSCK] Received message: audio/cfg/iamaminiserverdone
          [HTWS] Unknown command: audio/cfg/iamaminiserverdone
          [WSCK] Received message: audio/cfg/mac
          [WSCK] Received message: audio/cfg/getmonitorstatus
          [HTWS] Unknown command: audio/cfg/getmonitorstatus
          [WSCK] Received message: audio/cfg/getmonitorstatus
          [HTWS] Unknown command: audio/cfg/getmonitorstatus
          [WSCK] Received message: audio/cfg/getmonitorstatus
          [HTWS] Unknown command: audio/cfg/getmonitorstatus
          [WSCK] Received message: audio/cfg/getmonitorstatus
          [HTWS] Unknown command: audio/cfg/getmonitorstatus
          Kein Support per PN!

          Kommentar


          • Gast
            Gast kommentierte
            Kommentar bearbeiten
            You have to store them and return them back; mostly because the Loxone UI (and Loxone Miniserver, the equalizer values are read from this one too o.O) need to know what are the values currently being used by your equalizer (for instance, if you update it externally once we get the SSE interface working).
        • hismastersvoice
          Supermoderator
          • 25.08.2015
          • 7147

          If I delete more the one RoomFav at a time I get a loop of but I´m still at the implementing.

          Code:
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
          Kein Support per PN!

          Kommentar


          • Gast
            Gast kommentierte
            Kommentar bearbeiten
            Checking, this one seems like a bug.

          • Gast
            Gast kommentierte
            Kommentar bearbeiten
            This is my log:

            Code:
            [WSCK] Received message: audio/2/roomfav/delete/7
            --> [CALL] Calling DELETE to http://localhost:8091/zone/2/favorites/6/1
            [WSCK] Received message: audio/cfg/getroomfavs/2/0/10
            --> [CALL] Calling GET to http://localhost:8091/zone/2/favorites/0
            Mind pasting what you get just above? Be sure that your total number returns the right amount of elements. Thanks!

          • hismastersvoice
            hismastersvoice kommentierte
            Kommentar bearbeiten
            If I only delete one at a time then I get the same log.
            It happens only if I del more than one.
        • Prof.Mobilux
          Supermoderator
          • 25.08.2015
          • 4590

          hismastersvoice Mabye a stupid question - but where can I find Player Favorites in LMS's WebUI?! It seems that I only have global favs in the WebUI. If I add something to the favorites, it's always been added to the global favorite section.

          Klicke auf die Grafik für eine vergrößerte Ansicht

Name: 24-05-_2020_15-28-45.jpg
Ansichten: 918
Größe: 177,8 KB
ID: 250806
          🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


          LoxBerry - Beyond the Limits

          Kommentar


          • hme0354
            hme0354 kommentierte
            Kommentar bearbeiten
            It is possible to make folders under the favorites. Maybe loxone makes one for each room?

          • Gast
            Gast kommentierte
            Kommentar bearbeiten
            Seems that Loxone stores their room favorites in a table called roomfavs_audio, so I wouldn't bet on that. But can definitely be emulated using playlists and/or folders.

          • hme0354
            hme0354 kommentierte
            Kommentar bearbeiten
            With the folders room favs could also bei used in other apps.
        • Gast

          Would it be possible to emulate via additional playlists?

          Kommentar

          • hismastersvoice
            Supermoderator
            • 25.08.2015
            • 7147

            Prof.Mobilux
            I read the "/var/lib/squeezeboxserver/prefs/favorites.opml
            xml -> array -> json.
            The advantage is that you can handle the global favs from the Web UI.
            Until I imlement the roomfav handling I only push the first 8 global favs to roomfav.
            Now I work to implement that the I can add/delete the roomfavs from the global and write them into a file.
            Kein Support per PN!

            Kommentar


            • Prof.Mobilux
              Prof.Mobilux kommentierte
              Kommentar bearbeiten
              hismastersvoice Ok, understood. Thanks for the explanation. I just thought Loxone always uses a LMS option but never has implement an feature by theirselves :-) I think I will us subfolders as Gast suggetsted above. I do not want to use any files which are not exist in the "original" LMS. Furthermore Squeezelite Plugin may not be installed on the same system as the LMS. So I cannot read files directly and have to use a JSON query over jsonrpc.js

            • hismastersvoice
              hismastersvoice kommentierte
              Kommentar bearbeiten
              So you do all handling of Favs in the WebUI? Because writing still keeps the same, or am I wrong?

            • hismastersvoice
              hismastersvoice kommentierte
              Kommentar bearbeiten
              Ok have rea again the Fav handling in CLI
              So it possible to add/del addlevel etc
          • hismastersvoice
            Supermoderator
            • 25.08.2015
            • 7147

            Gast
            Still have also the Problem that in the Queue is always the first Title shown as played. Also the Cover is shown from the first titel.
            How can I give the Musicserver the index of the playes title for the queue?

            Klicke auf die Grafik für eine vergrößerte Ansicht

Name: 24-05-_2020_19-53-28.png
Ansichten: 732
Größe: 145,8 KB
ID: 250864Klicke auf die Grafik für eine vergrößerte Ansicht

Name: 24-05-_2020_19-53-43.png
Ansichten: 707
Größe: 262,2 KB
ID: 250865
            Kein Support per PN!

            Kommentar

            • hismastersvoice
              Supermoderator
              • 25.08.2015
              • 7147

              Gast

              I play this morning a bit around with the Equalizer.
              To be honest I don´t understand it

              With the start of the MSG there is a request of the values, so far so good.

              When I change a value in the I get a request like. [Mon May 25 07:14:20 2020] 127.0.0.1:54038 [200]: /zone/2/equalizer
              So the called URL is without the values?
              So how should I get the changed values from the MSG to the Router-Script?

              How should the format look like?
              In the description there is "The format is returned in a 10-band ISO compliant array", but I get a msg that it should be a json format.
              Kein Support per PN!

              Kommentar


              • hismastersvoice
                hismastersvoice kommentierte
                Kommentar bearbeiten
                Ok Thanks.

                If I read the content, the first Value is always a NULL. Don´t matter what I change in the Loxone App, it stays a NULL.
                The rest of the values change like expected.
                Any ideas to this?

                [
                null,
                -2.2,
                -0.2,
                -1,
                -1.5,
                -3.5,
                -2.5,
                8,
                9,
                10
                ]

                Thanks...

              • hismastersvoice
                hismastersvoice kommentierte
                Kommentar bearbeiten
                got it, there was an ! at the first chapter, don´t now why... After reset the MiniServer there was without.

              • hismastersvoice
                hismastersvoice kommentierte
                Kommentar bearbeiten
                Puuuhhh... EQ works.
                Was a bit more tricky than I expect
            • hismastersvoice
              Supermoderator
              • 25.08.2015
              • 7147

              Also another Idea for geting the correct states when changes happens from outside.
              We have Gateways in Loxberry an MS4L, they act on every change.
              So if we send on such a change to the Port 7091 a request so the update happens immediately, and also on the "play" signal.

              The advantage is that there is no unneeded data traffic every 5 seconds and on every change the status will be updated.
              Kein Support per PN!

              Kommentar

              • Christian Fenzl
                Lebende Foren Legende
                • 31.08.2015
                • 11200

                From the Squeezelite Player plugin (and of course with MS4L), we at most wait for the push interface 🙂
                Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                Kommentar


                • Gast
                  Gast kommentierte
                  Kommentar bearbeiten
                  Yup, I'm delaying this a bit to map the most common actions first, but this is coming soon
              • Juras
                Smart Home'r
                • 10.09.2016
                • 32

                I was waiting ages for this, hope it will be working with Squeezelite Player.

                Kommentar

                Lädt...