UPnP > list of all presets

Chris.G

Member
Joined
Apr 25, 2024
Messages
12
I am currently working on the "nice-to-have" functions for the Smart Home app.

Is there a way to get a list of all presets via UPnP so that I can display them in my app?

THX Chris
 
Using attached zip, set your WiiM device IP address in config.inc.

Adjust line 14 to give proper XML output:
curl -s -X POST "$URL" -H "$HSA" -H 'Content-Type: text/xml;charset="utf-8"' -d "$DAT" | sed -e "s/&amp;/\&/g" | sed -e "s/&quot;/\"/g" | sed -e "s/&gt;/\>/g" | sed -e "s/&lt;/\</g" | sed -e "s/&apos;/\'/g"

SOAP message
bash ./GetKeyMapping.sh
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body>
<u:GetKeyMappingResponse xmlns:u="urn:schemas-wiimu-com:service:playQueue:1">
<QueueContext><?xml version="1.0"?>
<KeyList>
<ListName>KeyMappingQueue</ListName>
<MaxNumber>20</MaxNumber>
<Key0></Key0>
<Key1>
<Name>QuickMix_#~2024-04-17 08:26:14</Name>
<Source>Pandora2</Source>
<PicUrl>http://mediaserver-cont-sv5-1-v4v6....2/30/a4324bb6baa420d4db334f48/1080W_1080H.jpg</PicUrl>
</Key1>
<Key2>
<Name>Diana Krall Station_#~2023-12-30 14:30:14</Name>
<Source>Prime</Source>
<PicUrl>https://images-na.ssl-images-amazon...d82309/2230192791952404244._CB1576889060_.png</PicUrl>
</Key2>
...
<Key18></Key18>
<Key19></Key19>
<Key20></Key20>
</KeyList>
</QueueContext>
</u:GetKeyMappingResponse>
</s:Body> </s:Envelope>
 

Attachments

  • arylic.zip
    39.2 KB · Views: 3
Last edited:
Using attached zip, set your WiiM device IP address in config.inc.

Adjust line 14 to give proper XML output:


SOAP message

Posting for reference. The following works with httpyac: https://httpyac.github.io/
JavaScript:
@DLNAPORT=49152
@UPNPPORT=59152
@IP=192.168.1.184
@DLNAURL=http://{{IP}}:{{DLNAPORT}}
@QUEUE_CONTEXT2='&lt;?xml version=&quot;1.0&quot;?&gt;&lt;PlayList&gt;&lt;ListName&gt;zpl_test&lt;/ListName&gt;&lt;ListInfo&gt;&lt;Radio&gt;0&lt;/Radio&gt;&lt;SourceName&gt;RakoitServer&lt;/SourceName&gt;&lt;PicUrl&gt;&lt;/PicUrl&gt;&lt;TrackNumber&gt;2&lt;/TrackNumber&gt;&lt;SearchUrl&gt;&lt;/SearchUrl&gt;&lt;Quality&gt;0&lt;/Quality&gt;&lt;/ListInfo&gt;&lt;Tracks&gt;&lt;Track1&gt;&lt;URL&gt;http://192.168.0.191:10243/WMPNSSv4/3795127141/1_ezE5QTkwOTg1LTNCMDEtNEVFOC1BQ0VFLTM3NzE1RkY2MDEwQX0uMC40.mp3&lt;/URL&gt;&lt;Source&gt;RakoitServer&lt;/Source&gt;&lt;Key&gt;&lt;/Key&gt;&lt;Id&gt;&lt;/Id&gt;&lt;Metadata&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;DIDL-Lite xmlns:dc=&amp;quot;http://purl.org/dc/elements/1.1/&amp;quot; xmlns:upnp=&amp;quot;urn:schemas-upnp-org:metadata-1-0/upnp/&amp;quot; xmlns:song=&amp;quot;www.wiimu.com/song/&amp;quot; xmlns:custom=&amp;quot;www.wiimu.com/custom/&amp;quot; xmlns=&amp;quot;urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/&amp;quot;&amp;gt;&amp;lt;upnp:class&amp;gt;object.item.audioItem.musicTrack&amp;lt;/upnp:class&amp;gt;&amp;lt;item&amp;gt;&amp;lt;song:id&amp;gt;&amp;lt;/song:id&amp;gt;&amp;lt;song:albumid&amp;gt;&amp;lt;/song:albumid&amp;gt;&amp;lt;song:singerid&amp;gt;&amp;lt;/song:singerid&amp;gt;&amp;lt;dc:title&amp;gt;Kalimba&amp;lt;/dc:title&amp;gt;&amp;lt;upnp:artist&amp;gt;Mr. Scruff&amp;lt;/upnp:artist&amp;gt;&amp;lt;upnp:album&amp;gt;Ninja Tuna&amp;lt;/upnp:album&amp;gt;&amp;lt;res protocolInfo=&amp;quot;http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;&amp;quot; duration=&amp;quot;0&amp;quot;&amp;gt;http://192.168.0.191:10243/WMPNSSv4/3795127141/1_ezE5QTkwOTg1LTNCMDEtNEVFOC1BQ0VFLTM3NzE1RkY2MDEwQX0uMC40.mp3&amp;lt;/res&amp;gt;&amp;lt;upnp:albumArtURI&amp;gt;http://192.168.0.191:10243/WMPNSSv4/3795127141/ezE5QTkwOTg1LTNCMDEtNEVFOC1BQ0VFLTM3NzE1RkY2MDEwQX0uMC40.jpg?albumArt=true,formatID=13&amp;lt;/upnp:albumArtURI&amp;gt;&amp;lt;/item&amp;gt;&amp;lt;/DIDL-Lite&amp;gt;&lt;/Metadata&gt;&lt;/Track1&gt;&lt;Track2&gt;&lt;URL&gt;http://192.168.0.191:10243/WMPNSSv4/3795127141/1_ezEyMjI2REU2LTk0QUYtNEQ2Qy05QTBGLUVBRjgyOEIwNDUyM30uMC40.mp3&lt;/URL&gt;&lt;Source&gt;RakoitServer&lt;/Source&gt;&lt;Key&gt;&lt;/Key&gt;&lt;Id&gt;&lt;/Id&gt;&lt;Metadata&gt;&lt;/Metadata&gt;&lt;/Track2&gt;&lt;/Tracks&gt;&lt;/PlayList&gt;'
@KEYMAP_CONTEXT='&lt;?xml version=&quot;1.0&quot;?&gt;&lt;KeyList&gt;&lt;ListName&gt;KeyMappingQueue&lt;/ListName&gt;&lt;MaxNumber&gt;21&lt;/MaxNumber&gt;&lt;Key0&gt;&lt;/Key0&gt;&lt;Key1&gt;&lt;/Key1&gt;&lt;Key2&gt;&lt;/Key2&gt;&lt;Key3&gt;&lt;/Key3&gt;&lt;Key4&gt;&lt;Name&gt;zpl_test&lt;/Name&gt;&lt;PicUrl&gt;https://static.qobuz.com/images/covers/za/wm/mmki6f6gwwmza_600.jpg&lt;/PicUrl&gt;&lt;Source&gt;MyUPnPServer&lt;/Source&gt;&lt;/Key4&gt;&lt;Key5&gt;&lt;/Key5&gt;&lt;Key6&gt;&lt;/Key6&gt;&lt;Key7&gt;&lt;/Key7&gt;&lt;Key8&gt;&lt;/Key8&gt;&lt;Key9&gt;&lt;/Key9&gt;&lt;Key10&gt;&lt;/Key10&gt;&lt;Key11&gt;&lt;/Key11&gt;&lt;Key12&gt;&lt;/Key12&gt;&lt;Key13&gt;&lt;/Key13&gt;&lt;Key14&gt;&lt;/Key14&gt;&lt;Key15&gt;&lt;/Key15&gt;&lt;Key16&gt;&lt;/Key16&gt;&lt;Key17&gt;&lt;/Key17&gt;&lt;Key18&gt;&lt;/Key18&gt;&lt;Key19&gt;&lt;/Key19&gt;&lt;Key20&gt;&lt;/Key20&gt;&lt;/KeyList&gt;'
@QUEUE_CONTEXT3='&lt;?xml version=&quot;1.0&quot;?&gt;&lt;PlayList&gt;&lt;ListName&gt;LeLohas-The Classics_#~2019-07-31 18:44:02&lt;/ListName&gt;&lt;ListInfo&gt;&lt;Radio&gt;0&lt;/Radio&gt;&lt;SourceName&gt;QQFM&lt;/SourceName&gt;&lt;SrcParent&gt;LeLohas-The Classics&lt;/SrcParent&gt;&lt;StationID&gt;&lt;/StationID&gt;&lt;TrackNumber&gt;0&lt;/TrackNumber&gt;&lt;SearchUrl&gt;http://api.fm.qq.com/v1/detail/get_album_show_list?album_id=rd000xFhjc4815DI&amp;amp;appid=1105226088&amp;amp;pagination_size=30&amp;amp;sig=XmcbGfs3QyziLdLiAj361YLKgkE%3D&amp;amp;pagination_cursor=0&lt;/SearchUrl&gt;&lt;Login_username&gt;&lt;/Login_username&gt;&lt;CurrentPage&gt;0&lt;/CurrentPage&gt;&lt;TotalPages&gt;0&lt;/TotalPages&gt;&lt;Quality&gt;0&lt;/Quality&gt;&lt;/ListInfo&gt;&lt;Tracks&gt;&lt;/Tracks&gt;&lt;/PlayList&gt;'
@QUEUE_CONTEXT4='&lt;?xml version=&quot;1.0&quot;?&gt;&lt;PlayList&gt;&lt;ListName&gt;zpl_test&lt;/ListName&gt;&lt;ListInfo&gt;&lt;Radio&gt;0&lt;/Radio&gt;&lt;SourceName&gt;MyUPnPServer&lt;/SourceName&gt;&lt;SrcParent&gt;UPnP&lt;/SrcParent&gt;&lt;StationID&gt;&lt;/StationID&gt;&lt;PicUrl&gt;&lt;/PicUrl&gt;&lt;TrackNumber&gt;2&lt;/TrackNumber&gt;&lt;SearchUrl&gt;&lt;/SearchUrl&gt;&lt;Quality&gt;0&lt;/Quality&gt;&lt;/ListInfo&gt;&lt;Tracks&gt;&lt;Track1&gt;&lt;URL&gt;http://192.168.0.192:8200/MediaItems/A0$128$129$1245444.mp3?type=1,client=33,mime=audio/mpeg,pn=MP3,ext=.mp3&lt;/URL&gt;&lt;Source&gt;MyUPnPServer&lt;/Source&gt;&lt;Key&gt;&lt;/Key&gt;&lt;Id&gt;&lt;/Id&gt;&lt;Metadata&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;DIDL-Lite xmlns:dc=&amp;quot;http://purl.org/dc/elements/1.1/&amp;quot; xmlns:upnp=&amp;quot;urn:schemas-upnp-org:metadata-1-0/upnp/&amp;quot; xmlns:song=&amp;quot;www.wiimu.com/song/&amp;quot; xmlns:custom=&amp;quot;www.wiimu.com/custom/&amp;quot; xmlns=&amp;quot;urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/&amp;quot;&amp;gt;&amp;lt;upnp:class&amp;gt;object.item.audioItem.musicTrack&amp;lt;/upnp:class&amp;gt;&amp;lt;item&amp;gt;&amp;lt;song:id&amp;gt;&amp;lt;/song:id&amp;gt;&amp;lt;song:albumid&amp;gt;&amp;lt;/song:albumid&amp;gt;&amp;lt;song:singerid&amp;gt;&amp;lt;/song:singerid&amp;gt;&amp;lt;dc:title&amp;gt;Heal The World&amp;lt;/dc:title&amp;gt;&amp;lt;upnp:artist&amp;gt;Michael Jackson&amp;lt;/upnp:artist&amp;gt;&amp;lt;upnp:album&amp;gt;King Of Pop&amp;lt;/upnp:album&amp;gt;&amp;lt;res protocolInfo=&amp;quot;http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;&amp;quot; duration=&amp;quot;0&amp;quot;&amp;gt;http://192.168.0.192:8200/MediaItems/A0$128$129$1245444.mp3?type=1,client=33,mime=audio/mpeg,pn=MP3,ext=.mp3&amp;lt;/res&amp;gt;&amp;lt;upnp:albumArtURI&amp;gt;http://192.168.0.192:8200/Thumbnails/A01/share/CACHEDEV1_DATA/.system/thumbnail/013/19.jpg&amp;lt;/upnp:albumArtURI&amp;gt;&amp;lt;/item&amp;gt;&amp;lt;/DIDL-Lite&amp;gt;&lt;/Metadata&gt;&lt;/Track1&gt;&lt;Track2&gt;&lt;URL&gt;http://192.168.0.192:8200/MediaItems/A0$128$129$1179908.mp3?type=1,client=33,mime=audio/mpeg,pn=MP3,ext=.mp3&lt;/URL&gt;&lt;Source&gt;MyUPnPServer&lt;/Source&gt;&lt;Key&gt;&lt;/Key&gt;&lt;Id&gt;&lt;/Id&gt;&lt;Metadata&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;DIDL-Lite xmlns:dc=&amp;quot;http://purl.org/dc/elements/1.1/&amp;quot; xmlns:upnp=&amp;quot;urn:schemas-upnp-org:metadata-1-0/upnp/&amp;quot; xmlns:song=&amp;quot;www.wiimu.com/song/&amp;quot; xmlns:custom=&amp;quot;www.wiimu.com/custom/&amp;quot; xmlns=&amp;quot;urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/&amp;quot;&amp;gt;&amp;lt;upnp:class&amp;gt;object.item.audioItem.musicTrack&amp;lt;/upnp:class&amp;gt;&amp;lt;item&amp;gt;&amp;lt;song:id&amp;gt;&amp;lt;/song:id&amp;gt;&amp;lt;song:albumid&amp;gt;&amp;lt;/song:albumid&amp;gt;&amp;lt;song:singerid&amp;gt;&amp;lt;/song:singerid&amp;gt;&amp;lt;dc:title&amp;gt;Just Give Me A Reason&amp;lt;/dc:title&amp;gt;&amp;lt;upnp:artist&amp;gt;P!nk&amp;lt;/upnp:artist&amp;gt;&amp;lt;upnp:album&amp;gt;The Truth About Love&amp;lt;/upnp:album&amp;gt;&amp;lt;res protocolInfo=&amp;quot;http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;&amp;quot; duration=&amp;quot;0&amp;quot;&amp;gt;http://192.168.0.192:8200/MediaItems/A0$128$129$1179908.mp3?type=1,client=33,mime=audio/mpeg,pn=MP3,ext=.mp3&amp;lt;/res&amp;gt;&amp;lt;upnp:albumArtURI&amp;gt;http://192.168.0.192:8200/Thumbnails/A01/share/CACHEDEV1_DATA/.system/thumbnail/012/18.jpg&amp;lt;/upnp:albumArtURI&amp;gt;&amp;lt;/item&amp;gt;&amp;lt;/DIDL-Lite&amp;gt;&lt;/Metadata&gt;&lt;/Track2&gt;&lt;/Tracks&gt;&lt;/PlayList&gt;'
@SUB=PlayQueue1
@SRV=urn:schemas-wiimu-com:service:PlayQueue:1
@ACT=GetKeyMapping
@MSG=''
@UPNPURL=http://{{IP}}:{{UPNPPORT}}/upnp/control/{{SUB}}
@ENVS=<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body>
@ENVE=</s:Body></s:Envelope>
@DAT={{ENVS}}<u:{{ACT}} xmlns:u="{{SRV}}">{{MSG}}</u:{{ACT}}>{{ENVE}}
@HSA=SOAPACTION: "{{SRV}}#{{ACT}}"


###
# get description
GET {{DLNAURL}}/description.xml
###
# get KeyMappingQueue
POST {{UPNPURL}}
SOAPACTION: "{{SRV}}#{{ACT}}"
Content-Type: text/xml;charset="utf-8"
{{ENVS}}<u:{{ACT}} xmlns:u="{{SRV}}">{{MSG}}</u:{{ACT}}>{{ENVE}}
 
Hi,

Thanks for the info.

But unfortunately I had to bury the "nice-to-have" function because I can't display dynamic icons and titles in the HomeyUI.

Now it looks like this....

1715694110492.png


Chris
 
Hi,

Thanks for the info.

But unfortunately I had to bury the "nice-to-have" function because I can't display dynamic icons and titles in the HomeyUI.

Now it looks like this....

View attachment 7125


Chris
Looks great Chris! That's a lot of hard work to pull it together. Congrats on your 1.0 release!

I was going to suggest adding the artist/channel as text but icon is probably the best choice since screen real estate is limited. If your Homey App community can suggest a safe model (e.g. permit list of 'safe' domains) for pulling in dynamic icons to support the streaming app use case, hopefully the team building the SDK can make some changes to support your use case. I have no idea how responsive they are and where this would rank for their features, but no harm in trying.:)
 
Back
Top