You can browse (partially) with DLNA but then you can connect media only to Sonos and not to DLNA renderers.
That approach aligns with what I was thinking.
By the way, I have to try myself big data requests.
Let me know if you need me to run any tests against my setup. I'll be away from coding for the Vera for the next week, but can help/test once my schedule returns to normal.
At the end, you will play the music on Sonos ?
I will be playing the music on Sonos and I have the Sonos plugin setup and configured. I was planning on using the DLNA plugin for browsing and the Sonos plugin for the execution of requests. I anticipate matching the two entities up by IP Address.
I’m starting to play around with the in wall keypad API. I have some flexibility on how I implement things from my side so I don’t necessarily need to filter by just a letter by could if it increase performance or user experience. For instance, I can send data to a keypad in blocks (rows) of items, say 20 at a time. However, that would mean I would need to get those items as you receive them. I’m not convinced that I want to scroll through 2,500 items either though.
Last thing; I think I can probably improve a little the performance of Browse request using its filter parameter, asking only the necessary data in the returned data. The final string will be smaller.
That’s an interesting thought and I can help with benchmarks. For my use case, I could technically have different users on different keypads making requests. I’ll need to consider how I deal with those situations. For instance a user in one zone is searching by Album and another user is searching by Title.
I’ll need information in the album example like:
[ul][li]Album Title[/li]
[li]Path or some key to play the music[/li]
[li]A numeric primary key that the 3rd party system will send to tell me which item I need to play when the user selects it. When the user selects the item, I’ll take this numeric primary key and do a lookup to the “Path or some key to play the music” and then execute the Sonos request[/li][/ul]
That last bullet item is making me wonder if on startup if I don’t just make a set of serialized requests to the DNLA plugin to go fetch these individual large item lists ( ‘By Artist’, ‘By Album’, ‘By Genre’, ‘By Composer’, ‘By Track’, ‘By Playlist’). I could then take your results, add additional metadata that I need for my use case and then cache them (perhaps on external storage USB Stick) to limit the impact of memory use on the Vera. One thing I’m not sure is when you’re storing these large variables with
these lists in the DNLA plugin are those stored in RAM or NV Memory? My music collection is fairly static so this cache approach might be okay and improve performance on my side.
Correction: you can use the DLNA plugin to render Sonos media on Sonos.
For your need (filtering), the Search UPnP request could be the solution, rather than the Browse request I use in my code.
With Search, you can specify a search criteria like title == “toto”. I don’t know if you have the possibility to provide a regular expression, that is required if you want to search only titles starting with A or B or C for example.
Would I need to build my own DLNA parser to do this or is there a way I could use your plug-in to specify a search?
BTW, I appreciate your input and help. I’m looking forward to trying to tackle some variant of this!