Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[upnpcontrol] Playlists stop occasionally #8321

Closed
5iver opened this issue Aug 20, 2020 · 4 comments
Closed

[upnpcontrol] Playlists stop occasionally #8321

5iver opened this issue Aug 20, 2020 · 4 comments
Assignees
Labels
bug An unexpected problem or unintended behavior of an add-on

Comments

@5iver
Copy link

5iver commented Aug 20, 2020

When playing a playlist after browsing or searching, occasionally the playlist will stop playing. It is possible that this occurs with albums too. Using the latest code as of now from https://github.com/mherwege/openhab-addons/tree/upnp...

2020-08-20 16:26:15.013 [INFO ] [org.jupnp.transport.impl.async.AsyncServlet] - HttpServlet.service(): id: 1903, request URI: /upnpcallback/dev/5f9ec1b3-ed59-1900-4530-30f9ed4f6395/svc/upnp-org/AVTransport/event/cb
2020-08-20 16:26:15.015 [DEBUG] [org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler] - Upnp device Portable received variable LastChange with value <Event xmlns="urn:schemas-upnp-org:metadata-1-0/AVT/">
  <InstanceID val="0">
    <TransportState val="PLAYING"/>
    <CurrentTrackDuration val="0:02:30"/>
    <CurrentMediaDuration val="0:02:30"/>
    <CurrentTransportActions val="Pause,Stop,Next,Previous,Seek,X_DLNA_SeekTime"/>
  </InstanceID>
</Event> from service AVTransport
2020-08-20 16:26:15.017 [DEBUG] [org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler] - Upnp device Portable received variable CurrentTransportActions with value Pause,Stop,Next,Previous,Seek,X_DLNA_SeekTime from service AVTransport
2020-08-20 16:26:15.017 [DEBUG] [org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler] - Upnp device Portable received variable InstanceID with value 0 from service AVTransport
2020-08-20 16:26:15.018 [DEBUG] [org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler] - Upnp device Portable received variable CurrentMediaDuration with value 0:02:30 from service AVTransport
2020-08-20 16:26:15.018 [DEBUG] [org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler] - Upnp device Portable received variable CurrentTrackDuration with value 0:02:30 from service AVTransport
2020-08-20 16:26:15.018 [DEBUG] [org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler] - Upnp device Portable received variable TransportState with value PLAYING from service AVTransport
2020-08-20 16:26:15.018 [DEBUG] [org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler] - Update server TwonkyMedia [NAS01] channel upnpcontrol:upnprenderer:5f9ec1b3-ed59-1900-4530-30f9ed4f6395:control state from renderer Portable
2020-08-20 16:28:45.615 [INFO ] [org.jupnp.transport.impl.async.AsyncServlet] - HttpServlet.service(): id: 1904, request URI: /upnpcallback/dev/5f9ec1b3-ed59-1900-4530-30f9ed4f6395/svc/upnp-org/AVTransport/event/cb
2020-08-20 16:28:45.617 [DEBUG] [org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler] - Upnp device Portable received variable LastChange with value <Event xmlns="urn:schemas-upnp-org:metadata-1-0/AVT/">
  <InstanceID val="0">
    <TransportState val="STOPPED"/>
    <CurrentTransportActions val="Play"/>
  </InstanceID>
</Event> from service AVTransport
2020-08-20 16:28:45.618 [DEBUG] [org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler] - Upnp device Portable received variable CurrentTransportActions with value Play from service AVTransport
2020-08-20 16:28:45.618 [DEBUG] [org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler] - Upnp device Portable received variable InstanceID with value 0 from service AVTransport
2020-08-20 16:28:45.618 [DEBUG] [org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler] - Upnp device Portable received variable TransportState with value STOPPED from service AVTransport
2020-08-20 16:28:45.619 [DEBUG] [org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler] - Update server TwonkyMedia [NAS01] channel upnpcontrol:upnprenderer:5f9ec1b3-ed59-1900-4530-30f9ed4f6395:control state from renderer Portable
2020-08-20 16:28:45.619 [DEBUG] [org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler] - Serve next media 'Dam That River' from queue on renderer Portable
2020-08-20 16:28:46.446 [DEBUG] [org.openhab.binding.upnpcontrol.internal.handler.UpnpHandler] - Upnp device Portable invoke upnp action SetAVTransportURI on service AVTransport with inputs {InstanceID=0, CurrentURI=http://10.5.5.10:9000/disk/DLNA-PNWMABASE-OP01-FLAGS01700000/O0$1$8I8677388.wma, CurrentURIMetaData=<DIDL-Lite xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"><item id="0$1$9$154574P1R8677388" parentID="0$1$9$154574" restricted="true"><dc:title>Dam That River</dc:title><upnp:class>object.item.audioItem.musicTrack</upnp:class><upnp:album>Dirt</upnp:album><upnp:albumArtURI>http://10.5.5.10:9000/disk/DLNA-PNJPEG_TN-OP01-CI1-FLAGS00d00000/defaa/A/O0$1$8I8677388.jpg?scale=org</upnp:albumArtURI><dc:creator>Alice in Chains</dc:creator><upnp:artist>Alice in Chains</upnp:artist><dc:publisher></dc:publisher><upnp:genre>Alternative</upnp:genre><upnp:originalTrackNumber>1</upnp:originalTrackNumber></item></DIDL-Lite>}
2020-08-20 16:28:46.446 [DEBUG] [org.openhab.binding.upnpcontrol.internal.handler.UpnpHandler] - Upnp device Portable invoke upnp action SetAVTransportURI on service AVTransport reply {}
2020-08-20 16:28:46.652 [INFO ] [org.jupnp.transport.impl.async.AsyncServlet] - HttpServlet.service(): id: 1905, request URI: /upnpcallback/dev/5f9ec1b3-ed59-1900-4530-30f9ed4f6395/svc/upnp-org/AVTransport/event/cb
2020-08-20 16:28:46.989 [INFO ] [org.jupnp.transport.impl.async.AsyncServlet] - HttpServlet.service(): id: 1906, request URI: /upnpcallback/dev/5f9ec1b3-ed59-1900-4530-30f9ed4f6395/svc/upnp-org/AVTransport/event/cb
2020-08-20 16:28:48.163 [DEBUG] [org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler] - Cannot play, media URI not yet set in the renderer
2020-08-20 16:28:48.163 [DEBUG] [org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler] - Error: {}
java.util.concurrent.TimeoutException: null
        at java.util.concurrent.CompletableFuture.timedGet(CompletableFuture.java:1784) ~[?:1.8.0_242]
        at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1928) ~[?:1.8.0_242]
        at org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler.play(UpnpRendererHandler.java:335) [bundleFile:?]
        at org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler.serve(UpnpRendererHandler.java:1101) [bundleFile:?]
        at org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler.serveNext(UpnpRendererHandler.java:1044) [bundleFile:?]
        at org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler.onValueReceivedTransportState(UpnpRendererHandler.java:876) [bundleFile:?]
        at org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler.onValueReceived(UpnpRendererHandler.java:769) [bundleFile:?]
        at org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler.onValueReceivedLastChange(UpnpRendererHandler.java:852) [bundleFile:?]
        at org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler.onValueReceived(UpnpRendererHandler.java:765) [bundleFile:?]
        at org.eclipse.smarthome.io.transport.upnp.internal.UpnpIOServiceImpl$UpnpSubscriptionCallback.eventReceived(UpnpIOServiceImpl.java:161) [bundleFile:?]
        at org.jupnp.controlpoint.SubscriptionCallback$2.eventReceived(SubscriptionCallback.java:222) [bundleFile:?]
        at org.jupnp.model.gena.RemoteGENASubscription.receive(RemoteGENASubscription.java:114) [bundleFile:?]
        at org.jupnp.protocol.sync.ReceivingEvent$2.run(ReceivingEvent.java:130) [bundleFile:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_242]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_242]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_242]
2020-08-20 16:28:48.230 [DEBUG] [org.openhab.binding.upnpcontrol.internal.handler.UpnpHandler] - Upnp device Portable invoke upnp action SetNextAVTransportURI on service AVTransport with inputs {InstanceID=0, NextURI=http://10.5.5.10:9000/disk/DLNA-PNWMABASE-OP01-FLAGS01700000/O0$1$8I8677900.wma, NextURIMetaData=<DIDL-Lite xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"><item id="0$1$9$154574P2R8677900" parentID="0$1$9$154574" restricted="true"><dc:title>Rain When I Die</dc:title><upnp:class>object.item.audioItem.musicTrack</upnp:class><upnp:album>Dirt</upnp:album><upnp:albumArtURI>http://10.5.5.10:9000/disk/DLNA-PNJPEG_TN-OP01-CI1-FLAGS00d00000/defaa/A/O0$1$8I8677900.jpg?scale=org</upnp:albumArtURI><dc:creator>Alice in Chains</dc:creator><upnp:artist>Alice in Chains</upnp:artist><dc:publisher></dc:publisher><upnp:genre>Alternative</upnp:genre><upnp:originalTrackNumber>2</upnp:originalTrackNumber></item></DIDL-Lite>}
2020-08-20 16:28:48.230 [DEBUG] [org.openhab.binding.upnpcontrol.internal.handler.UpnpHandler] - Upnp device Portable invoke upnp action SetNextAVTransportURI on service AVTransport reply {}
2020-08-20 16:28:48.314 [INFO ] [org.jupnp.transport.impl.async.AsyncServlet] - HttpServlet.service(): id: 1907, request URI: /upnpcallback/dev/5f9ec1b3-ed59-1900-4530-30f9ed4f6395/svc/upnp-org/AVTransport/event/cb
2020-08-20 16:28:48.319 [DEBUG] [org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler] - Upnp device Portable received variable LastChange with value <Event xmlns="urn:schemas-upnp-org:metadata-1-0/AVT/">
  <InstanceID val="0">
    <NextAVTransportURI val="http://10.5.5.10:9000/disk/DLNA-PNWMABASE-OP01-FLAGS01700000/O0$1$8I8677900.wma"/>
    <NextAVTransportURIMetaData val="&lt;DIDL-Lite xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:upnp=&quot;urn:schemas-upnp-org:metadata-1-0/upnp/&quot; xmlns=&quot;urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/&quot;&gt;&lt;item id=&quot;0$1$9$154574P2R8677900&quot; parentID=&quot;0$1$9$154574&quot; restricted=&quot;true&quot;&gt;&lt;dc:title&gt;Rain When I Die&lt;/dc:title&gt;&lt;upnp:class&gt;object.item.audioItem.musicTrack&lt;/upnp:class&gt;&lt;upnp:album&gt;Dirt&lt;/upnp:album&gt;&lt;upnp:albumArtURI&gt;http://10.5.5.10:9000/disk/DLNA-PNJPEG_TN-OP01-CI1-FLAGS00d00000/defaa/A/O0$1$8I8677900.jpg?scale=org&lt;/upnp:albumArtURI&gt;&lt;dc:creator&gt;Alice in Chains&lt;/dc:creator&gt;&lt;upnp:artist&gt;Alice in Chains&lt;/upnp:artist&gt;&lt;dc:publisher&gt;&lt;/dc:publisher&gt;&lt;upnp:genre&gt;Alternative&lt;/upnp:genre&gt;&lt;upnp:originalTrackNumber&gt;2&lt;/upnp:originalTrackNumber&gt;&lt;/item&gt;&lt;/DIDL-Lite&gt;"/>
  </InstanceID>
</Event> from service AVTransport
2020-08-20 16:28:48.320 [DEBUG] [org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler] - Upnp device Portable received variable NextAVTransportURIMetaData with value <DIDL-Lite xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"><item id="0$1$9$154574P2R8677900" parentID="0$1$9$154574" restricted="true"><dc:title>Rain When I Die</dc:title><upnp:class>object.item.audioItem.musicTrack</upnp:class><upnp:album>Dirt</upnp:album><upnp:albumArtURI>http://10.5.5.10:9000/disk/DLNA-PNJPEG_TN-OP01-CI1-FLAGS00d00000/defaa/A/O0$1$8I8677900.jpg?scale=org</upnp:albumArtURI><dc:creator>Alice in Chains</dc:creator><upnp:artist>Alice in Chains</upnp:artist><dc:publisher></dc:publisher><upnp:genre>Alternative</upnp:genre><upnp:originalTrackNumber>2</upnp:originalTrackNumber></item></DIDL-Lite> from service AVTransport
2020-08-20 16:28:48.320 [DEBUG] [org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler] - Upnp device Portable received variable InstanceID with value 0 from service AVTransport
2020-08-20 16:28:48.320 [DEBUG] [org.openhab.binding.upnpcontrol.internal.handler.UpnpRendererHandler] - Upnp device Portable received variable NextAVTransportURI with value http://10.5.5.10:9000/disk/DLNA-PNWMABASE-OP01-FLAGS01700000/O0$1$8I8677900.wma from service AVTransport
@5iver 5iver added the bug An unexpected problem or unintended behavior of an add-on label Aug 20, 2020
@mherwege
Copy link
Contributor

mherwege commented Aug 21, 2020

@openhab-5iver
These lines are interesting:

2020-08-20 16:28:46.652 [INFO ] [org.jupnp.transport.impl.async.AsyncServlet] - HttpServlet.service(): id: 1905, request URI: /upnpcallback/dev/5f9ec1b3-ed59-1900-4530-30f9ed4f6395/svc/upnp-org/AVTransport/event/cb
2020-08-20 16:28:46.989 [INFO ] [org.jupnp.transport.impl.async.AsyncServlet] - HttpServlet.service(): id: 1906, request URI: /upnpcallback/dev/5f9ec1b3-ed59-1900-4530-30f9ed4f6395/svc/upnp-org/AVTransport/event/cb

It looks like the underlying call is made twice and these calls block eachother. I only call invokeAction once, so I am wondering where the second line comes from.
Could you go back further in the log? I would like to see the log when setting the URI of the previous entry before the timeout. I am wondering if something already gets stuck there.

Also, if you look in the renderer properties, you will see a property for the AVTransport containing a URL. This points to an XML containing the renderer AVTransport description. Please post that as well. It may give info on what is supported (so expected to work) and what not.

@mherwege mherwege self-assigned this Aug 21, 2020
@5iver
Copy link
Author

5iver commented Aug 22, 2020

Here's the whole file. There are 10 timeouts, so plenty to work with... UPnP.log.20200821172645.zip.

Also, if you look in the renderer properties, you will see a property for the AVTransport containing a URL. This points to an XML containing the renderer AVTransport description.

All of my renderers return...
image

Same for all of the other URLs too (except the IP)...

image

However, those URLs looked fishy, so I tried http://10.5.5.24:8080/AVTransport/desc.xml...

<scpd xmlns="urn:schemas-upnp-org:service-1-0">
	<specVersion>
		<major>1</major>
		<minor>0</minor>
	</specVersion>
	<actionList>
		<action>
			<name>SetAVTransportURI</name>
			<argumentList>
				<argument>
					<name>InstanceID</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
				</argument>
				<argument>
					<name>CurrentURI</name>
					<direction>in</direction>
					<relatedStateVariable>AVTransportURI</relatedStateVariable>
				</argument>
				<argument>
					<name>CurrentURIMetaData</name>
					<direction>in</direction>
					<relatedStateVariable>AVTransportURIMetaData</relatedStateVariable>
				</argument>
			</argumentList>
		</action>
		<action>
			<name>SetNextAVTransportURI</name>
			<argumentList>
				<argument>
					<name>InstanceID</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
				</argument>
				<argument>
					<name>NextURI</name>
					<direction>in</direction>
					<relatedStateVariable>NextAVTransportURI</relatedStateVariable>
				</argument>
				<argument>
					<name>NextURIMetaData</name>
					<direction>in</direction>
					<relatedStateVariable>NextAVTransportURIMetaData</relatedStateVariable>
				</argument>
			</argumentList>
		</action>
		<action>
			<name>GetMediaInfo</name>
			<argumentList>
				<argument>
					<name>InstanceID</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
				</argument>
				<argument>
					<name>NrTracks</name>
					<direction>out</direction>
					<relatedStateVariable>NumberOfTracks</relatedStateVariable>
				</argument>
				<argument>
					<name>MediaDuration</name>
					<direction>out</direction>
					<relatedStateVariable>CurrentMediaDuration</relatedStateVariable>
				</argument>
				<argument>
					<name>CurrentURI</name>
					<direction>out</direction>
					<relatedStateVariable>AVTransportURI</relatedStateVariable>
				</argument>
				<argument>
					<name>CurrentURIMetaData</name>
					<direction>out</direction>
					<relatedStateVariable>AVTransportURIMetaData</relatedStateVariable>
				</argument>
				<argument>
					<name>NextURI</name>
					<direction>out</direction>
					<relatedStateVariable>NextAVTransportURI</relatedStateVariable>
				</argument>
				<argument>
					<name>NextURIMetaData</name>
					<direction>out</direction>
					<relatedStateVariable>NextAVTransportURIMetaData</relatedStateVariable>
				</argument>
				<argument>
					<name>PlayMedium</name>
					<direction>out</direction>
					<relatedStateVariable>PlaybackStorageMedium</relatedStateVariable>
				</argument>
				<argument>
					<name>RecordMedium</name>
					<direction>out</direction>
					<relatedStateVariable>RecordStorageMedium</relatedStateVariable>
				</argument>
				<argument>
					<name>WriteStatus</name>
					<direction>out</direction>
					<relatedStateVariable>RecordMediumWriteStatus</relatedStateVariable>
				</argument>
			</argumentList>
		</action>
		<action>
			<name>GetTransportInfo</name>
			<argumentList>
				<argument>
					<name>InstanceID</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
				</argument>
				<argument>
					<name>CurrentTransportState</name>
					<direction>out</direction>
					<relatedStateVariable>TransportState</relatedStateVariable>
				</argument>
				<argument>
					<name>CurrentTransportStatus</name>
					<direction>out</direction>
					<relatedStateVariable>TransportStatus</relatedStateVariable>
				</argument>
				<argument>
					<name>CurrentSpeed</name>
					<direction>out</direction>
					<relatedStateVariable>TransportPlaySpeed</relatedStateVariable>
				</argument>
			</argumentList>
		</action>
		<action>
			<name>GetPositionInfo</name>
			<argumentList>
				<argument>
					<name>InstanceID</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
				</argument>
				<argument>
					<name>Track</name>
					<direction>out</direction>
					<relatedStateVariable>CurrentTrack</relatedStateVariable>
				</argument>
				<argument>
					<name>TrackDuration</name>
					<direction>out</direction>
					<relatedStateVariable>CurrentTrackDuration</relatedStateVariable>
				</argument>
				<argument>
					<name>TrackMetaData</name>
					<direction>out</direction>
					<relatedStateVariable>CurrentTrackMetaData</relatedStateVariable>
				</argument>
				<argument>
					<name>TrackURI</name>
					<direction>out</direction>
					<relatedStateVariable>CurrentTrackURI</relatedStateVariable>
				</argument>
				<argument>
					<name>RelTime</name>
					<direction>out</direction>
					<relatedStateVariable>RelativeTimePosition</relatedStateVariable>
				</argument>
				<argument>
					<name>AbsTime</name>
					<direction>out</direction>
					<relatedStateVariable>AbsoluteTimePosition</relatedStateVariable>
				</argument>
				<argument>
					<name>RelCount</name>
					<direction>out</direction>
					<relatedStateVariable>RelativeCounterPosition</relatedStateVariable>
				</argument>
				<argument>
					<name>AbsCount</name>
					<direction>out</direction>
					<relatedStateVariable>AbsoluteCounterPosition</relatedStateVariable>
				</argument>
			</argumentList>
		</action>
		<action>
			<name>GetDeviceCapabilities</name>
			<argumentList>
				<argument>
					<name>InstanceID</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
				</argument>
				<argument>
					<name>PlayMedia</name>
					<direction>out</direction>
					<relatedStateVariable>PossiblePlaybackStorageMedia</relatedStateVariable>
				</argument>
				<argument>
					<name>RecMedia</name>
					<direction>out</direction>
					<relatedStateVariable>PossibleRecordStorageMedia</relatedStateVariable>
				</argument>
				<argument>
					<name>RecQualityModes</name>
					<direction>out</direction>
					<relatedStateVariable>PossibleRecordQualityModes</relatedStateVariable>
				</argument>
			</argumentList>
		</action>
		<action>
			<name>GetTransportSettings</name>
			<argumentList>
				<argument>
					<name>InstanceID</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
				</argument>
				<argument>
					<name>PlayMode</name>
					<direction>out</direction>
					<relatedStateVariable>CurrentPlayMode</relatedStateVariable>
				</argument>
				<argument>
					<name>RecQualityMode</name>
					<direction>out</direction>
					<relatedStateVariable>CurrentRecordQualityMode</relatedStateVariable>
				</argument>
			</argumentList>
		</action>
		<action>
			<name>Stop</name>
			<argumentList>
				<argument>
					<name>InstanceID</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
				</argument>
			</argumentList>
		</action>
		<action>
			<name>Play</name>
			<argumentList>
				<argument>
					<name>InstanceID</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
				</argument>
				<argument>
					<name>Speed</name>
					<direction>in</direction>
					<relatedStateVariable>TransportPlaySpeed</relatedStateVariable>
				</argument>
			</argumentList>
		</action>
		<action>
			<name>Pause</name>
			<argumentList>
				<argument>
					<name>InstanceID</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
				</argument>
			</argumentList>
		</action>
		<action>
			<name>Seek</name>
			<argumentList>
				<argument>
					<name>InstanceID</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
				</argument>
				<argument>
					<name>Unit</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_SeekMode</relatedStateVariable>
				</argument>
				<argument>
					<name>Target</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_SeekTarget</relatedStateVariable>
				</argument>
			</argumentList>
		</action>
		<action>
			<name>Next</name>
			<argumentList>
				<argument>
					<name>InstanceID</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
				</argument>
			</argumentList>
		</action>
		<action>
			<name>Previous</name>
			<argumentList>
				<argument>
					<name>InstanceID</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
				</argument>
			</argumentList>
		</action>
		<action>
			<name>SetPlayMode</name>
			<argumentList>
				<argument>
					<name>InstanceID</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
				</argument>
				<argument>
					<name>NewPlayMode</name>
					<direction>in</direction>
					<relatedStateVariable>CurrentPlayMode</relatedStateVariable>
				</argument>
			</argumentList>
		</action>
		<action>
			<name>GetCurrentTransportActions</name>
			<argumentList>
				<argument>
					<name>InstanceID</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
				</argument>
				<argument>
					<name>Actions</name>
					<direction>out</direction>
					<relatedStateVariable>CurrentTransportActions</relatedStateVariable>
				</argument>
			</argumentList>
		</action>
		<action>
			<name>X_GetOperationList</name>
			<argumentList>
				<argument>
					<name>AVTInstanceID</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
				</argument>
				<argument>
					<name>OperationList</name>
					<direction>out</direction>
					<relatedStateVariable>X_A_ARG_TYPE_OperationList</relatedStateVariable>
				</argument>
			</argumentList>
		</action>
		<action>
			<name>X_ExecuteOperation</name>
			<argumentList>
				<argument>
					<name>AVTInstanceID</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
				</argument>
				<argument>
					<name>ActionDirective</name>
					<direction>in</direction>
					<relatedStateVariable>X_A_ARG_TYPE_ActionDirective</relatedStateVariable>
				</argument>
				<argument>
					<name>Result</name>
					<direction>out</direction>
					<relatedStateVariable>X_A_ARG_TYPE_ROPResult</relatedStateVariable>
				</argument>
			</argumentList>
		</action>
	</actionList>
	<serviceStateTable>
		<stateVariable sendEvents="yes">
			<name>LastChange</name>
			<dataType>string</dataType>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>TransportState</name>
			<dataType>string</dataType>
			<allowedValueList>
				<allowedValue>STOPPED</allowedValue>
				<allowedValue>PLAYING</allowedValue>
				<allowedValue>PAUSED_PLAYBACK</allowedValue>
				<allowedValue>TRANSITIONING</allowedValue>
				<allowedValue>NO_MEDIA_PRESENT</allowedValue>
			</allowedValueList>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>TransportStatus</name>
			<dataType>string</dataType>
			<allowedValueList>
				<allowedValue>OK</allowedValue>
				<allowedValue>ERROR_OCCURRED</allowedValue>
			</allowedValueList>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>PlaybackStorageMedium</name>
			<dataType>string</dataType>
			<allowedValueList>
				<allowedValue>NETWORK</allowedValue>
			</allowedValueList>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>RecordStorageMedium</name>
			<dataType>string</dataType>
			<allowedValueList>
				<allowedValue>NOT_IMPLEMENTED</allowedValue>
			</allowedValueList>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>PossiblePlaybackStorageMedia</name>
			<dataType>string</dataType>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>PossibleRecordStorageMedia</name>
			<dataType>string</dataType>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>CurrentPlayMode</name>
			<dataType>string</dataType>
			<defaultValue>NORMAL</defaultValue>
			<allowedValueList>
				<allowedValue>NORMAL</allowedValue>
				<allowedValue>RANDOM</allowedValue>
				<allowedValue>REPEAT_ONE</allowedValue>
				<allowedValue>REPEAT_ALL</allowedValue>
			</allowedValueList>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>TransportPlaySpeed</name>
			<dataType>string</dataType>
			<allowedValueList>
				<allowedValue>1</allowedValue>
			</allowedValueList>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>RecordMediumWriteStatus</name>
			<dataType>string</dataType>
			<allowedValueList>
				<allowedValue>NOT_IMPLEMENTED</allowedValue>
			</allowedValueList>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>CurrentRecordQualityMode</name>
			<dataType>string</dataType>
			<allowedValueList>
				<allowedValue>NOT_IMPLEMENTED</allowedValue>
			</allowedValueList>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>PossibleRecordQualityModes</name>
			<dataType>string</dataType>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>NumberOfTracks</name>
			<dataType>ui4</dataType>
			<allowedValueRange>
				<minimum>0</minimum>
				<maximum>1</maximum>
			</allowedValueRange>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>CurrentTrack</name>
			<dataType>ui4</dataType>
			<allowedValueRange>
				<minimum>0</minimum>
				<maximum>1</maximum>
				<step>1</step>
			</allowedValueRange>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>CurrentTrackDuration</name>
			<dataType>string</dataType>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>CurrentMediaDuration</name>
			<dataType>string</dataType>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>CurrentTrackMetaData</name>
			<dataType>string</dataType>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>CurrentTrackURI</name>
			<dataType>string</dataType>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>AVTransportURI</name>
			<dataType>string</dataType>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>AVTransportURIMetaData</name>
			<dataType>string</dataType>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>NextAVTransportURI</name>
			<dataType>string</dataType>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>NextAVTransportURIMetaData</name>
			<dataType>string</dataType>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>RelativeTimePosition</name>
			<dataType>string</dataType>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>AbsoluteTimePosition</name>
			<dataType>string</dataType>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>RelativeCounterPosition</name>
			<dataType>i4</dataType>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>AbsoluteCounterPosition</name>
			<dataType>i4</dataType>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>CurrentTransportActions</name>
			<dataType>string</dataType>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>A_ARG_TYPE_SeekMode</name>
			<dataType>string</dataType>
			<allowedValueList>
				<allowedValue>TRACK_NR</allowedValue>
				<allowedValue>REL_TIME</allowedValue>
			</allowedValueList>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>A_ARG_TYPE_SeekTarget</name>
			<dataType>string</dataType>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>A_ARG_TYPE_InstanceID</name>
			<dataType>ui4</dataType>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>X_A_ARG_TYPE_OperationList</name>
			<dataType>string</dataType>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>X_A_ARG_TYPE_ActionDirective</name>
			<dataType>string</dataType>
		</stateVariable>
		<stateVariable sendEvents="no">
			<name>X_A_ARG_TYPE_ROPResult</name>
			<dataType>string</dataType>
		</stateVariable>
	</serviceStateTable>
</scpd>

You can also find a bunch of errors in the log like this...

2020-08-20 15:21:58.890 [ERROR] [org.openhab.binding.upnpcontrol.internal.UpnpXMLParser] - Could not parse rendering control configuration from string 'http://10.5.5.26:8080/description.xml/RenderingControl/desc.xml'

@mherwege
Copy link
Contributor

@openhab-5iver Both of these should be solved in my current branch.
For the timeouts, the reason was I had some long running processes triggered from the information returned by the GENA subscriptions, so running in the same process as the GENA event callback. This blocked receiving further GENA events, hence waiting for these events would time out. This looks like an issue in the jupnp library to me, but I could easily work around it by running the next actions on a GENA event in a separate task.

@5iver
Copy link
Author

5iver commented Oct 9, 2020

This is resolved in the latest code that is yet to be submitted.

@5iver 5iver closed this as completed Oct 9, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug An unexpected problem or unintended behavior of an add-on
Projects
None yet
Development

No branches or pull requests

2 participants