Music Server Interface

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

    #91
    Prof.Mobilux

    I got one challange...
    When using Soptify and Tunein we don`t get "icon-id", we get the "icon" with an URL.
    So I check now first if the key "icon-id" exist, if not I use "icon" and use the URL.
    Works for me so far.

    PHP-Code:
    //get current index
    $pl_index = $res_json['result']['playlist_cur_index'];
    //artwork
    if (array_key_exists('icon-id', $res_json['result']['item_loop'][$pl_index])) {
    $icon_id = $res_json['result']['item_loop'][$pl_index]['icon-id'];
    $image = "http://" . $config[LMS_IP] . ":" . $config[LMS_WEB_PORT] . "/music/".$icon_id."/cover.jpg";
    } else {
    $image = strstr($res_json['result']['item_loop'][$pl_index]['icon'], 'http');
    $image = urldecode($image);
    } 
    
    Kein Support per PN!

    Kommentar

    • Gast

      #92
      Wow, I just checked version 11 and they have remapped a bunch of stuff :O The structure for plays has added yet another command…

      Thankfully MSG will take care of that and won't require any adjustments from your side

      Kommentar

      • Gast

        #93
        I have been playing all day with v11, and finding what was broken. They have changed A LOT of things compared to v10 (the one currently running on my miniserver); but I was able to patch / fix the majority of the stuff I found. In particular, the player card has been revamped completely, and they have added to the main menu a bunch of sections that did not exist / were hidden before. However, I wonder if anyone knows somebody at Loxone, because I'd love to send them a bunch of CSS fixes related to grid cover on the home page, and listing items!

        Here are the last additions (pushed to master already):
        • Bugs:
          • I fixed the bug that prevented the home page to work on initial load.
          • I fixed the bug related to the library not loading.
          • I fixed the bug related to the cover not showing. This one is a tricky one because it was related to queue management. The cover on the main player is now a carousel.
          • I made a bunch of calls return default values to prevent UI crashing.
        • Features:
          • I introduced a new endpoint for line-ins (external inputs). Same format as any other list ("id", "name"), under "/inputs". Im
          • Wrapped JSON.parse to show contextual information about the error.
          • I disabled optimistic updates when the code is a 5XX. If you return 4XX, the server will handle it for you optimistically, if you return 5XX the player will rollback to its previous state. I'm however not happy with how this is implemented right now so it'll need a refactor at some point.
        Haven't started yet the SSE events, but I have a pretty clear idea on how to make all the internal machinery for them.
        Angehängte Dateien

        Kommentar

        • hismastersvoice
          Supermoderator
          • 25.08.2015
          • 7189

          #94
          i tried the last master, and get the follow error.
          Understand that the format is wrong, but I don´t see which of the var I send wrong.
          Yesterday with the old Version I don´t get this.

          How can I find the var that I send wrong?

          Code:
          [CALL] Calling GET to http://localhost:8091/zone/1/state
          [CALL] Calling GET to http://localhost:8091/zone/2/state
          [CALL] Calling GET to http://localhost:8091/zone/3/state
          [CALL] Calling GET to http://localhost:8091/zone/4/state
          [CALL] Calling GET to http://localhost:8091/zone/5/state
          [CALL] Calling GET to http://localhost:8091/zone/6/state
          [CALL] Calling GET to http://localhost:8091/zone/7/state
          [CALL] Calling GET to http://localhost:8091/zone/8/state
          [CALL] Calling GET to http://localhost:8091/zone/9/state
          [CALL] Calling GET to http://localhost:8091/zone/10/state
          [CALL] Calling GET to http://localhost:8091/zone/11/state
          [CALL] Calling GET to http://localhost:8091/zone/12/state
          [CALL] Calling GET to http://localhost:8091/zone/13/state
          [CALL] Calling GET to http://localhost:8091/zone/14/state
          [CALL] Calling GET to http://localhost:8091/zone/15/state
          [CALL] Calling GET to http://localhost:8091/zone/16/state
          [CALL] Calling GET to http://localhost:8091/zone/17/state
          [CALL] Calling GET to http://localhost:8091/zone/18/state
          [CALL] Calling GET to http://localhost:8091/zone/19/state
          [CALL] Calling GET to http://localhost:8091/zone/20/state
          buffer.js:214
          throw new ERR_INVALID_ARG_TYPE('value', 'not number', value);
          ^
          
          TypeError [ERR_INVALID_ARG_TYPE]: The "value" argument must not be of type number. Received type number
          at Function.from (buffer.js:214:11)
          at MusicServer._encodeId (/opt/music_server/msg/service/music-server/index.js:764:19)
          at MusicServer._getAudioState (/opt/music_server/msg/service/music-server/index.js:715:23)
          at zones.map (/opt/music_server/msg/service/music-server/index.js:161:19)
          at Array.map (<anonymous>)
          at MusicServer._pushAudioEvents (/opt/music_server/msg/service/music-server/index.js:160:31)
          at MusicServer.pushAudioEvent (/opt/music_server/msg/service/music-server/index.js:148:10)
          at Timeout.setTimeout [as _onTimeout] (/opt/music_server/msg/service/music-server/music-zone.js:308:27)
          at ontimeout (timers.js:436:11)
          at tryOnTimeout (timers.js:300:5)
          at listOnTimeout (timers.js:263:5)
          at Timer.processTimers (timers.js:223:10)
          Kein Support per PN!

          Kommentar


          • madito
            madito kommentierte
            Kommentar bearbeiten
            You send time in miliseconds.

          • Gast
            Gast kommentierte
            Kommentar bearbeiten
            hismastersvoice the id’s sent need to be strings. You can use strval() in PHP to convert from a number to a string. I will however autoconvert it and push a fix.

          • hismastersvoice
            hismastersvoice kommentierte
            Kommentar bearbeiten
            Works... Thanks
        • hismastersvoice
          Supermoderator
          • 25.08.2015
          • 7189

          #95
          Gast



          Played around with the queue.
          "start:" is always 0, so Cover an Current Song is always the firt song in the list
          Even when I send start: with current position in the json-data it stays still at 0 (see code bellow)
          Do you know how to change?

          Second thing is, when I like to jump direct to a song the command audio/2/queue/2 eg for position 2

          [WSCK] Received message: audio/2/queue/2
          [HTWS] Unknown command: audio/2/queue/2

          Think that the command is not implement yet, right?

          Thanks again for the great work.The basics work now well.


          Code:
          { id: 2,
          totalitems: 49,
          start: 0,
          items:
          [ { type: 2,
          slot: 1,
          qindex: 1,
          audiopath: 'LTk0NzY4NTk1Nzg1ODA4',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b273df9b70f870bb942ad900061d',
          id: 'LTk0NzY4NTk1Nzg1ODA4',
          name: 'Underdog / Alicia Keys' },
          { type: 2,
          slot: 2,
          qindex: 2,
          audiopath: 'LTk0NzY4NTk1ODAxODg4',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b2732fcfbea37325d667e877addb',
          id: 'LTk0NzY4NTk1ODAxODg4',
          name: 'if we never met - remix / John K, Sigala' },
          { type: 2,
          slot: 3,
          qindex: 3,
          audiopath: 'LTk0NzY4NTg3OTIxMDQw',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b273b226999f1df0dcdec8a53abe',
          id: 'LTk0NzY4NTg3OTIxMDQw',
          name: 'Let\'s Fall in Love for the Night / FINNEAS' },
          { type: 2,
          slot: 4,
          qindex: 4,
          audiopath: 'LTk0NzY4NjAyOTI3NTQ0',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b273399b7c2f3ef2a17d47a68c04',
          id: 'LTk0NzY4NjAyOTI3NTQ0',
          name: 'Control / Zoe Wees' },
          { type: 2,
          slot: 5,
          qindex: 5,
          audiopath: 'LTk0NzY4NTc3NDkwODY0',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b2733c0c7e023205b0a6fd86f87c',
          id: 'LTk0NzY4NTc3NDkwODY0',
          name: 'Alles was ich hab / Fynn Kliemann' },
          { type: 2,
          slot: 6,
          qindex: 6,
          audiopath: 'LTk0NzY4NjAyOTk0MDY0',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b273c7d2c34b10fc7b3afcf3dca0',
          id: 'LTk0NzY4NjAyOTk0MDY0',
          name: 'Some Say / Nea' },
          { type: 2,
          slot: 7,
          qindex: 7,
          audiopath: 'LTk0NzY4NTg2OTE3Mjgw',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b27346113e087787563c203a6f3e',
          id: 'LTk0NzY4NTg2OTE3Mjgw',
          name: 'Welcome to Wonderland / Anson Seabra' },
          { type: 2,
          slot: 8,
          qindex: 8,
          audiopath: 'LTk0NzY4NTg2OTE3MzUy',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b2730d0621554b1c6c9dbf3556be',
          id: 'LTk0NzY4NTg2OTE3MzUy',
          name: 'Make You Mine / PUBLIC' },
          { type: 2,
          slot: 9,
          qindex: 9,
          audiopath: 'LTk0NzY4NTcwNzE3NzQ0',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b273e41bb4b65d2936e518c74539',
          id: 'LTk0NzY4NTcwNzE3NzQ0',
          name: 'I\'ll Wait / Kygo, Sasha Sloan' },
          { type: 2,
          slot: 10,
          qindex: 10,
          audiopath: 'LTk0NzY4NTk1NzgwODU2',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b2730871e3b6ebf9bac234012c8c',
          id: 'LTk0NzY4NTk1NzgwODU2',
          name: 'Nobody Needs You Like I Do / Milow' },
          { type: 2,
          slot: 11,
          qindex: 11,
          audiopath: 'LTk0NzY4NTk1MzY3NTI4',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b273fdf2e993e10e67396b3bf759',
          id: 'LTk0NzY4NTk1MzY3NTI4',
          name: 'Be Kind (with Halsey) / Marshmello, Halsey' },
          { type: 2,
          slot: 12,
          qindex: 12,
          audiopath: 'LTk0NzY4NTk1MzY3NjAw',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b2739bb05bc76657e5fa7e77ed55',
          id: 'LTk0NzY4NTk1MzY3NjAw',
          name: 'The Game / Milky Chance' },
          { type: 2,
          slot: 13,
          qindex: 13,
          audiopath: 'LTk0NzY4NTk1MzY3NDgw',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b273516148dcc2bd9a2285d3c234',
          id: 'LTk0NzY4NTk1MzY3NDgw',
          name: 'Wish I Was Better / Kina, yaeow' },
          { type: 2,
          slot: 14,
          qindex: 14,
          audiopath: 'LTk0NzY4NTk1Nzk5Nzc2',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b273a1c204c401e519a65252fdb5',
          id: 'LTk0NzY4NTk1Nzk5Nzc2',
          name: 'In My Bones / Ray Dalton' },
          { type: 2,
          slot: 15,
          qindex: 15,
          audiopath: 'LTk0NzY4NTg2OTU3MzUy',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b2739dafceda0875d6a7b39f4eea',
          id: 'LTk0NzY4NTg2OTU3MzUy',
          name: 'Salt / Ava Max' },
          { type: 2,
          slot: 16,
          qindex: 16,
          audiopath: 'LTk0NzY4NTk1MzcxMjg4',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b2730e423d98a00610e237fe40ab',
          id: 'LTk0NzY4NTk1MzcxMjg4',
          name: 'Happiest Year / Jaymes Young' },
          { type: 2,
          slot: 17,
          qindex: 17,
          audiopath: 'LTk0NzY4NjAyOTQ5NjMy',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b2735c8f958d5b46996987f448b2',
          id: 'LTk0NzY4NjAyOTQ5NjMy',
          name: 'Not Gonna Cry / Emma Steinbakken' },
          { type: 2,
          slot: 18,
          qindex: 18,
          audiopath: 'LTk0NzY4NTgzMTk2MDgw',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b2731ee808d53ec2731624ae0fa6',
          id: 'LTk0NzY4NTgzMTk2MDgw',
          name: 'Roter Sand / Emilio' },
          { type: 2,
          slot: 19,
          qindex: 19,
          audiopath: 'LTk0NzY4NTk5NDMxNDMy',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b273965b9f0f35d1412deed2bc7c',
          id: 'LTk0NzY4NTk5NDMxNDMy',
          name: 'Keep Me Up / Michael Schulte' },
          { type: 2,
          slot: 20,
          qindex: 20,
          audiopath: 'LTk0NzY4NTc3Njc3NzA0',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b2735d463f5eb40dca42913eb3f5',
          id: 'LTk0NzY4NTc3Njc3NzA0',
          name: 'Down / Jack Curley' },
          { type: 2,
          slot: 21,
          qindex: 21,
          audiopath: 'LTk0NzY4NTY2MzA5Mzc2',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b27361e2de41fa728853d7685954',
          id: 'LTk0NzY4NTY2MzA5Mzc2',
          name: 'Your Favourite Song / Younotus, Julian Perretta' },
          { type: 2,
          slot: 22,
          qindex: 22,
          audiopath: 'LTk0NzY4NTk1MzY3OTYw',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b273cc029cfbd05b649b322b76ce',
          id: 'LTk0NzY4NTk1MzY3OTYw',
          name: 'Shadow (feat. IRO) - From Songland / Macklemore, IRO' },
          { type: 2,
          slot: 23,
          qindex: 23,
          audiopath: 'LTk0NzY4NTk0MTUzMDE2',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b27308ac645145d2959e46ae2b7f',
          id: 'LTk0NzY4NTk0MTUzMDE2',
          name: 'Didn\'t I / OneRepublic' },
          { type: 2,
          slot: 24,
          qindex: 24,
          audiopath: 'LTk0NzY4NTg2ODk4NzI4',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b273ed640392ef995cfc745d97ae',
          id: 'LTk0NzY4NTg2ODk4NzI4',
          name: 'Wollt dir nur sagen / Mathea' },
          { type: 2,
          slot: 25,
          qindex: 25,
          audiopath: 'LTk0NzY4NTk5NDI1MjQ4',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b27372f88de87ad7e66daa2538e4',
          id: 'LTk0NzY4NTk5NDI1MjQ4',
          name: 'Unfamiliar / Seeb, Goodboys, HRVY' },
          { type: 2,
          slot: 26,
          qindex: 26,
          audiopath: 'LTk0NzY4NjAzMDQ4ODY0',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b273b7df438aebb5174244effa2d',
          id: 'LTk0NzY4NjAzMDQ4ODY0',
          name: 'Fingertips / Tom Gregory' },
          { type: 2,
          slot: 27,
          qindex: 27,
          audiopath: 'LTk0NzY4NTk5NDI5OTY4',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b2734d62aa3be017e21c4365192f',
          id: 'LTk0NzY4NTk5NDI5OTY4',
          name: 'Übermorgen / Mark Forster' },
          { type: 2,
          slot: 28,
          qindex: 28,
          audiopath: 'LTk0NzY4NTc3NTk4OTc2',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b273392c7541b28fa2020fb24f1e',
          id: 'LTk0NzY4NTc3NTk4OTc2',
          name: 'IDK You Yet / Alexander 23' },
          { type: 2,
          slot: 29,
          qindex: 29,
          audiopath: 'LTk0NzY4NTM4MzQwNzA0',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b2731cfd1f91fbb4030ad408b0e2',
          id: 'LTk0NzY4NTM4MzQwNzA0',
          name: 'Tomorrow / Jack Curley' },
          { type: 2,
          slot: 30,
          qindex: 30,
          audiopath: 'LTk0NzY4NTc2NzY4NTky',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b273c35f72d1880b0d227edc4dd0',
          id: 'LTk0NzY4NTc2NzY4NTky',
          name: 'Conversations in the Dark / John Legend' },
          { type: 2,
          slot: 31,
          qindex: 31,
          audiopath: 'LTk0NzY4NTk5NDIxOTky',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b27392515df7050107e53734f5e4',
          id: 'LTk0NzY4NTk5NDIxOTky',
          name: 'False Confidence / Noah Kahan' },
          { type: 2,
          slot: 32,
          qindex: 32,
          audiopath: 'LTk0NzY4NTk5NDI5ODk2',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b273dedbec8cca43642f06533476',
          id: 'LTk0NzY4NTk5NDI5ODk2',
          name:
          'If the World Was Ending - feat. Julia Michaels / JP Saxe, Julia Michaels' },
          { type: 2,
          slot: 33,
          qindex: 33,
          audiopath: 'LTk0NzY4NTc3NTIwMzI4',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b2736841ca0faa2646c3d06c45d6',
          id: 'LTk0NzY4NTc3NTIwMzI4',
          name: 'Ich frag mich / Philipp Dittberner, Marv' },
          { type: 2,
          slot: 34,
          qindex: 34,
          audiopath: 'LTk0NzY4NTk2MTA3ODcy',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b273aea0d98794e91056c608e069',
          id: 'LTk0NzY4NTk2MTA3ODcy',
          name: 'Moral of the Story / Ashe' },
          { type: 2,
          slot: 35,
          qindex: 35,
          audiopath: 'LTk0NzY4NTg2NDAyMzA0',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b2734f2fae704ba1d221acb7c278',
          id: 'LTk0NzY4NTg2NDAyMzA0',
          name: 'Don\'t Let Me Down / Milky Chance, Jack Johnson' },
          { type: 2,
          slot: 36,
          qindex: 36,
          audiopath: 'LTk0NzY4NTk1MDU0MzI4',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b2737636e1c9e67eaafc9f49aefd',
          id: 'LTk0NzY4NTk1MDU0MzI4',
          name: 'You should be sad / Halsey' },
          { type: 2,
          slot: 37,
          qindex: 37,
          audiopath: 'LTk0NzY4NTk5NDI3Mzg0',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b27324c39b52de69d4d017f7c7e3',
          id: 'LTk0NzY4NTk5NDI3Mzg0',
          name: 'Another Place / Bastille, Alessia Cara' },
          { type: 2,
          slot: 38,
          qindex: 38,
          audiopath: 'LTk0NzY4NTk5NDMxMTIw',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b2731efaf786926a303bb2fc3e07',
          id: 'LTk0NzY4NTk5NDMxMTIw',
          name: 'Watershed / Giant Rooks' },
          { type: 2,
          slot: 39,
          qindex: 39,
          audiopath: 'LTk0NzY4NTk5NDI5NTYw',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b2732852aad4e34f32ce35001b1d',
          id: 'LTk0NzY4NTk5NDI5NTYw',
          name: 'Love Songs / Lukas Graham' },
          { type: 2,
          slot: 40,
          qindex: 40,
          audiopath: 'LTk0NzY4NTYwOTE5MDMy',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b2730c2c97099fd6a637ed0aa4a4',
          id: 'LTk0NzY4NTYwOTE5MDMy',
          name: 'you broke me first / Tate McRae' },
          { type: 2,
          slot: 41,
          qindex: 41,
          audiopath: 'LTk0NzY4NTk5NDIzNDU2',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b273b154bc645350b122934566e4',
          id: 'LTk0NzY4NTk5NDIzNDU2',
          name: 'Drown (feat. Clinton Kane) / Martin Garrix, Clinton Kane' },
          { type: 2,
          slot: 42,
          qindex: 42,
          audiopath: 'LTk0NzY4NTY4MjA2MDI0',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b27370e6c775adc0f71e6bef0a9b',
          id: 'LTk0NzY4NTY4MjA2MDI0',
          name: 'This City / Sam Fischer' },
          { type: 2,
          slot: 43,
          qindex: 43,
          audiopath: 'LTk0NzY4NTk1MDU1Mzc2',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b273ab2f8973949159695f65df7b',
          id: 'LTk0NzY4NTk1MDU1Mzc2',
          name: 'Level of Concern / Twenty One Pilots' },
          { type: 2,
          slot: 44,
          qindex: 44,
          audiopath: 'LTk0NzY4NTk0MDkwODAw',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b27377fdcfda6535601aff081b6a',
          id: 'LTk0NzY4NTk0MDkwODAw',
          name: 'Falling / Harry Styles' },
          { type: 2,
          slot: 45,
          qindex: 45,
          audiopath: 'LTk0NzY4NjAyOTQyNzQ0',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b273db6821edb077d0fb376e5d75',
          id: 'LTk0NzY4NjAyOTQyNzQ0',
          name: 'What If I Told You That I Love You / Ali Gatie' },
          { type: 2,
          slot: 46,
          qindex: 46,
          audiopath: 'LTk0NzY4NjAyOTQyODE2',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b27389c5b751d1cf7a00ec9f122d',
          id: 'LTk0NzY4NjAyOTQyODE2',
          name: 'I Just Wanna Shine - Radio Edit / Fitz and The Tantrums' },
          { type: 2,
          slot: 47,
          qindex: 47,
          audiopath: 'LTk0NzY4NTg2MzIzNjY0',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b27342cb5131538d155c52368688',
          id: 'LTk0NzY4NTg2MzIzNjY0',
          name: 'Treppenhaus / LEA' },
          { type: 2,
          slot: 48,
          qindex: 48,
          audiopath: 'LTk0NzY4NTg4MzI0NTEy',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b27320bae774f91a8fb95d40dedb',
          id: 'LTk0NzY4NTg4MzI0NTEy',
          name: 'Lying That You Love Me / JC Stewart' },
          { type: 2,
          slot: 49,
          qindex: 49,
          audiopath: 'LTk0NzY4NTk0MTE0MzI4',
          coverurl:
          'https://i.scdn.co/image/ab67616d0000b273f0501dd6866fcf2777475691',
          id: 'LTk0NzY4NTk0MTE0MzI4',
          name: 'On My Life / Cheat Codes' } ] }
          Kein Support per PN!

          Kommentar

          • Gast

            #96
            Correct Queue is still in the works. There is so much functionality in there that is hard to keep track of all stuff

            Things that I have identified that are pending are:
            • SSE for pushing events.
            • Queue processing (not only playing on queue items, but also on things like "replace queue" or "append to queue" functionality.
            • Search! It's super prominent now where before it was hidden under a setting. I think to temporarily deactivate it I can decrease the API version.
            • Finish up inputs (they are read now but not written, e.g. when their name or their icon changes).
            • Directory operations (you can return a directory type and make it navigate deeper).
            • Equalizer.

            Kommentar


            • hismastersvoice
              hismastersvoice kommentierte
              Kommentar bearbeiten
              Perfect...
              So I deactivate the queue for now, and go forward with the fav-handling.
          • hismastersvoice
            Supermoderator
            • 25.08.2015
            • 7189

            #97
            Gast
            can you say what is /favorites/0 and where are they shown?
            I only have implemented /zone/X/favorites/0
            Are there only room favs available or also global favs?

            Is there a possibility to do more than 8 favs?
            Zuletzt geändert von hismastersvoice; 18.05.2020, 15:37.
            Kein Support per PN!

            Kommentar

            • Gast

              #98
              Zitat von hismastersvoice
              Gast
              can you say what is /favorites/0 and where are they shown?
              I only have implemented /zone/X/favorites/0
              Are there only room favs available or also global favs?
              From what I saw in v10 (the UI served via web server from my current LMS), they have a "global favorites" option, aside with the "room" favorites. So i mapped both as you described. I think you can try returning fake data and you'll see them appear in the UI.

              Is there a possibility to do more than 8 favs?
              Ha! Interesting question! I initially tried returning more than 8, and the UI actually renders them. But if you try e.g. removing one favorite, the UI gets broken because of too many favorites. Same thing for manually adding them; the UI controls before pushing you the new favorite if you have exceeded the global 8 favorites. At this point I just decided to cap favorites to 8, and make them work like the UI expects. But I agree it's kinda sad

              Kommentar


              • hismastersvoice
                hismastersvoice kommentierte
                Kommentar bearbeiten
                I have fond that these Fav are right bellow of the room-favs, and I have allready integrated it.
                8 Room-Favs are OK, the Global-Favs are also there. So far it works perfect for me an my wife. She likes it really.

              • TomekWaw
                TomekWaw kommentierte
                Kommentar bearbeiten
                Wasn't it be easier to just skip v10 already and require v11 for MSG? Just asking
                Zuletzt geändert von TomekWaw; 19.05.2020, 04:18.

              • Gast
                Gast kommentierte
                Kommentar bearbeiten
                If MSG is properly implemented it should be compatible with both. I just found that some calls that I could avoid are now needed (e.g. the queue is now mandatory, they don't read the cover from the "play" endpoint, because they want to show a carousel with the covers). But aside from that it's OK
            • hismastersvoice
              Supermoderator
              • 25.08.2015
              • 7189

              #99
              So for now I think I have everthing implemented that is ready at the MSG



              For queue I wait until you have ready.
              Will make some other things ready the next days and do a first beta of MS4L V1.0

              Thanks to
              Prof.Mobilux
              madito
              for sharing tips and code
              And in special to Gast for that great work. Learned a lot in php and json implementing
              Zuletzt geändert von hismastersvoice; 18.05.2020, 16:39.
              Kein Support per PN!

              Kommentar

              • hismastersvoice
                Supermoderator
                • 25.08.2015
                • 7189

                Gast
                A question for further steps

                Should I code a Room-Fav-Editor for MS4L, or do you think that you are able to bring search (radio/spotify/library) and Fav-Handling into the UI?
                If so I don´t do the work to integrate it in the WebUI.
                If it takes longer of even never I do something like ceate a Global-Fav -> copy -> 8 of the Global to Room and sort it.
                I think that is could be good to handle.

                For me it would be OK to work such things in the Back and not in den AppUI.


                Kein Support per PN!

                Kommentar


                • Gast
                  Gast kommentierte
                  Kommentar bearbeiten
                  Favorite handling is _partially_ already in the UI. For instance you can favorite a playlist and you will receive the corresponding PUT call to modify the list. There are still some commands missing but I will add those too
              • TomekWaw
                LoxBus Spammer
                • 25.07.2019
                • 435

                BTW, here's a nice overview of V11 Music Interface:



                I know this is out of scope of this intergration, but it seems that you can have multiple Spotify accounts added as "music services" and select particular Spotify account as "room favorite". Pretty nice..
                Noch ein oder zwei Jahre mit Loxone und ich werde Deutsch sprechen

                Kommentar


                • Gast
                  Gast kommentierte
                  Kommentar bearbeiten
                  I just checked the video; I didn't know the Spotify integration was so deep in their UI. In my case I'm also working on a MSG <-> Spotify (there are few screenshots on an earlier post), and through this one I put all Spotify content into the UI, plus use my own account to reproduce. This is a more limited solution than a Squeezelite player (or MS4L) but if Spotify is all you want (which is probably my case) it should be fine.

                  But I agree this is different from using the LMS integration for adding Spotify. I will check about it but I can tell you this will be once we've fully mapped the rest of the UI

                • TomekWaw
                  TomekWaw kommentierte
                  Kommentar bearbeiten
                  Gast I totaly don't need this - I have only one premium Spotify account and it's connected to LMS @ MS4L directly via spotty plugin, works fine enought for me. Just wanted to point out that v11 UI has somehow deeper integration with "music services" and percheps some time in the future it might be worth to take a look at it, but it doesn't seem to be required now

                • hismastersvoice
                  hismastersvoice kommentierte
                  Kommentar bearbeiten
                  For me it is important to set Playlists and Manage Favorites, the rest I do in the WebUI.
                  If there is additional the option t play music from the library, I´m really fine.

                  If there comes more in the future I´m happy about and will intregreat it.
              • hismastersvoice
                Supermoderator
                • 25.08.2015
                • 7189

                Gast
                I think there is an issue with the player state.
                If I start the player with an 3rd Party App there is no update in the AppUI.
                Look like you start the state update with the play from the App??

                Made a short Video for better understanding.


                If I start the Zone with play in the App everything works fine.
                The problem is if I start the Zone with eg Loxone Touch T5, there starts to play but not to update the zone-state.
                Kein Support per PN!

                Kommentar


                • hismastersvoice
                  hismastersvoice kommentierte
                  Kommentar bearbeiten
                  No T5 don´t work

                  Zone off (double kick)
                  [WSCK] Received message: audio/2/off
                  [HTWS] Unknown command: audio/2/off

                  RoomFav + (doublekick)

                  [WSCK] Received message: audio/2/roomfav/plus
                  [HTWS] Unknown command: audio/2/roomfav/plus


                  Volume (single Klick)
                  works

                • Prof.Mobilux
                  Prof.Mobilux kommentierte
                  Kommentar bearbeiten
                  Same here. The state is only updated when the player is set to play. But from my understanding we will implement push updates in the future? Pulling the state every x seconds is ok as a workaround, but from my point of view we definitely need push updates in MSG.

                • Gast
                  Gast kommentierte
                  Kommentar bearbeiten
                  OOOOOOOOOH! The T5 is the one producing the "off" command! I looked (and asked) about this for a while. I can map this one to stop. I'm not sure they're fully equivalent, but we will discover later!

                  Regarding the polling, you're right. We do not poll if you're not playing, but that's a bug! By definition MSG tries to emulate as much as it can if you don't provide certain commands. This is a case where not implementing SSE would still have to work.

                  I will fix all three bugs (zone off, next favorite, state polling) on the weekend!
              • hismastersvoice
                Supermoderator
                • 25.08.2015
                • 7189

                Gast
                I have played with the Music-Zones in the Config. Bellow the missing commands.

                audio/X/on
                audio/X/off

                I think you should not only link it to stop because on/off can be also used for Power-Management in the Skripts.

                audio/2/roomfav/plus
                Maybe there is also audio/2/roomfav/minus, I use a Fav-Minus it in my Skript-T5-Receiver with tripple-Klick. So I don´t have to go to all Favs

                audio/X/sleep
                It could be nice to have it, I use it when we go to bed to play a short time music.

                audio/X/stop
                I´m not sure in which case to use, but I think you can link it to zone/X/stop

                Events
                Don´t think that it is needed, for now.

                Code:
                [WSCK] Received message: audio/2/on
                [HTWS] Unknown command: audio/2/on
                
                [WSCK] Received message: audio/2/off
                [HTWS] Unknown command: audio/2/off
                
                [WSCK] Received message: audio/2/roomfav/plus
                [HTWS] Unknown command: audio/2/roomfav/plus
                
                [WSCK] Received message: audio/2/stop
                [HTWS] Unknown command: audio/2/stop
                
                [WSCK] Received message: audio/2/sleep/300
                [HTWS] Unknown command: audio/2/sleep/300
                300 is Ts
                
                [WSCK] Received message: audio/2/alarm/18
                [HTWS] Unknown command: audio/2/alarm/18
                [WSCK] Received message: audio/2/firealarm/18
                [HTWS] Unknown command: audio/2/firealarm/18
                [WSCK] Received message: audio/2/bell/17
                [HTWS] Unknown command: audio/2/bell/17
                [WSCK] Received message: audio/2/wecker/18
                [HTWS] Unknown command: audio/2/wecker/18
                18/18/17/18 is the Volume for the Evnet
                
                [WSCK] Received message: audio/2/tts/DEU|TTS Test Zone 2/18
                [HTWS] Unknown command: audio/2/tts/DEU|TTS Test Zone 2/18
                DEU = Language TTS Test Zone 2 = Text 18 is Volume
                Central Music
                It is a really dump block, it only do all commands after each other. There is no combination.
                But makes it easier for you, you don´t have to do it with separate commands.

                Other
                One Thing that I miss, the AQs (current RoomFav) always shows 0.
                Not sure if the Block wait for a information from the Music-Server.


                Klicke auf die Grafik für eine vergrößerte Ansicht  Name: 20-05-_2020_22-32-21.png Ansichten: 0 Größe: 11,7 KB ID: 250300
                Kein Support per PN!

                Kommentar

                • hismastersvoice
                  Supermoderator
                  • 25.08.2015
                  • 7189

                  Additional
                  If I like to play a Fav from "All-Favorites" there comes not a play signal like from the Room-Favs

                  [WSCK] Received message: audio/2/favoriteplay/ZmF2OjA
                  [HTWS] Unknown command: audio/2/favoriteplay/ZmF2OjA

                  ZmF2OjA is different for each Fav, but don´t know how to use. There should be somethink like "fav:0" etc.

                  This is the json I send for "All-Fav"
                  Code:
                  {"total": 9, "items": [{
                  "id": "fav:0",
                  "url": "http://opml.radiotime.com/Tune.ashx?id=s24896&formats=aac,ogg,mp3,wmpro,wma, wmvoice&partnerId=16&serial=750e5cf1d34bf17ffcab36 593f7ce799",
                  "title": "SWR3",
                  "image": "http://cdn-profiles.tunein.com/s24896/images/logoq.png?t=1/image.png" },{
                  "id": "fav:1",
                  "url": "http://opml.radiotime.com/Tune.ashx?id=s20291&formats=aac,ogg,mp3,wmpro,wma, wmvoice&partnerId=16&serial=750e5cf1d34bf17ffcab36 593f7ce799",
                  "title": "SWR1 Baden-Württemberg",
                  "image": "http://cdn-profiles.tunein.com/s20291/images/logoq.png?t=1/image.png" },{
                  "id": "fav:2",
                  "url": "http://opml.radiotime.com/Tune.ashx?id=s37126&formats=aac,ogg,mp3,wmpro,wma, wmvoice&partnerId=16&serial=750e5cf1d34bf17ffcab36 593f7ce799",
                  "title": "SWR Aktuell",
                  "image": "http://cdn-profiles.tunein.com/s37126/images/logoq.png?t=153243/image.png" },{
                  "id": "fav:3",
                  "url": "spotify:user:spotify:playlist:37i9dQZF1DWSWyJydK4fTU",
                  "title": "Top of the Morning",
                  "image": "https://i.scdn.co/image/e9b8e2e1e9624e6eec20e3781df4420d6e5325cb" },{
                  "id": "fav:4",
                  "url": "spotify:playlist:37i9dQZF1EtsqjKrtRB2MN",
                  "title": "Deine Top Tracks aus 2019",
                  "image": "https://lineup-images.scdn.co/your-top-songs-2019_DEFAULT-de.jpg" },{
                  "id": "fav:5",
                  "url": "spotify:playlist:1qErKv5LbnaWtst1w6iiGU",
                  "title": "Radio-Favoriten",
                  "image": "https://i.scdn.co/image/ab67616d0000b27360a98c3be4daffefe9014c7e" },{
                  "id": "fav:6",
                  "url": "spotify:playlist:37i9dQZF1DWWYIyS8LLUDj",
                  "title": "This Is Stevie Wonder",
                  "image": "https://i.scdn.co/image/ab67706f00000002fcac3bd5ce244380d871e0d2" },{
                  "id": "fav:7",
                  "url": "spotify:playlist:37i9dQZF1DX8TvdyVZSYFY",
                  "title": "Acoustic Throwbacks",
                  "image": "https://i.scdn.co/image/ab67706f00000002b993db2853bd63806df2464f" },{
                  "id": "fav:8",
                  "url": "spotify:album:6Eycw3dwcDMEFSqkUvLQ7g",
                  "title": "...And Justice For All von Metallica",
                  "image": "https://i.scdn.co/image/ab67616d0000b2737c05e69390ab7c628a83cee7" }
                  ]}

                  Sync Zones
                  [WSCK] Received message: audio/2/sync/3/4
                  [HTWS] Unknown command: audio/2/sync/3/4

                  Do some testing, so sync if you implement the signal should from my side.
                  Zuletzt geändert von hismastersvoice; 21.05.2020, 15:23.
                  Kein Support per PN!

                  Kommentar

                  • Gast

                    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

                    Kommentar

                    Lädt...