Chromecast Audiogroup - no operation possible

  • Platform information:
    • Hardware: raspberry pi 3 b
    • OS: Raspbian GNU/Linux 9 (stretch)
    • Java Runtime Environment: Java™ SE Runtime Environment (build 1.8.0_181-b13)
    • openHAB version: 2.3.0 (Build)

I can control my two Chromecasts via OH (Play, Play URI, …). Unfortunately it is not possible to control the audio group. It does not work to send a stream over “playuri” to the group, nor can the volume be controlled.
When I cast something from an Android device to the audiogroup (for example via BubbleUPnP), then no volume or other function can be applied to the group via OH2.

Is it a bug in OH? or is something wrong with my configuration?

things:

Thing chromecast:audio:Chromecast_Audio1_Kitchen          [ ipAddress="192.168.137.23"]
Thing chromecast:audio:Chromecast_Audio2_Denon            [ ipAddress="192.168.137.22"]
Thing chromecast:audiogroup:Chromecast_Audiogruppe_EG     [ ipAddress="192.168.137.22", port=8009]

items:

// Chromecast Audio1 Küche
Player Chromecast_Audio1_Kitchen_Fernbedienung  "Audio Küche"           <remote>            { channel="chromecast:audio:Chromecast_Audio1_Kitchen:control" }
Dimmer Chromecast_Audio1_Kitchen_Lautstaerke    "Lautstärke"            <soundvolume>       { channel="chromecast:audio:Chromecast_Audio1_Kitchen:volume" }
Switch Chromecast_Audio1_Kitchen_mute           "Mute"                  <soundvolume_mute>  { channel="chromecast:audio:Chromecast_Audio1_Kitchen:mute" }
String Chromecast_Audio1_Kitchen_playuri        "play URI"              <uri>               { channel="chromecast:audio:Chromecast_Audio1_Kitchen:playuri" }
String Chromecast_Audio1_Kitchen_appName        "App Name"              <app>               { channel="chromecast:audio:Chromecast_Audio1_Kitchen:appName" }

// Chromecast Audio2 DENON
Player Chromecast_Audio2_Denon_Fernbedienung    "Audio DENON"           <remote>            { channel="chromecast:audio:Chromecast_Audio2_Denon:control" }
Dimmer Chromecast_Audio2_Denon_Lautstaerke      "Lautstärke"            <soundvolume>       { channel="chromecast:audio:Chromecast_Audio2_Denon:volume" }
Switch Chromecast_Audio2_Denon_mute             "Mute"                  <soundvolume_mute>  { channel="chromecast:audio:Chromecast_Audio2_Denon:mute" }
String Chromecast_Audio2_Denon_playuri          "play URI"              <uri>               { channel="chromecast:audio:Chromecast_Audio2_Denon:playuri" }
String Chromecast_Audio2_Denon_appName          "App Name"              <app>               { channel="chromecast:audio:Chromecast_Audio2_Denon:appName" }

// Chromecast Audiogruppe EG
Player Chromecast_Audiogruppe_EG_Fernbedienung  "Gruppe Erdgeschoss"    <remote>            { channel="chromecast:audio:Chromecast_Audiogruppe_EG:control" }
Dimmer Chromecast_Audiogruppe_EG_Lautstaerke    "Lautstärke"            <soundvolume>       { channel="chromecast:audio:Chromecast_Audiogruppe_EG:volume" }
Switch Chromecast_Audiogruppe_EG_mute           "Mute"                  <soundvolume_mute>  { channel="chromecast:audio:Chromecast_Audiogruppe_EG:mute" }
String Chromecast_Audiogruppe_EG_playuri        "play URI"              <uri>               { channel="chromecast:audio:Chromecast_Audiogruppe_EG:playuri" }
String Chromecast_Audiogruppe_EG_appName        "App Name"              <app>               { channel="chromecast:audio:Chromecast_Audiogruppe_EG:appName" }

here are the log messages, if i try to cast via BubbleUPnP and then tried to control the group via OH:

2018-10-28 20:09:53.972 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception
java.lang.NullPointerException: null
        at su.litvak.chromecast.api.v2.CastChannel$CastMessage$Builder.setDestinationId(CastChannel.java:1358) [225:org.openhab.binding.chromecast:2.3.0]
        at su.litvak.chromecast.api.v2.Channel.write(Channel.java:392) [225:org.openhab.binding.chromecast:2.3.0]
        at su.litvak.chromecast.api.v2.Channel.write(Channel.java:384) [225:org.openhab.binding.chromecast:2.3.0]
        at su.litvak.chromecast.api.v2.Channel.startSession(Channel.java:472) [225:org.openhab.binding.chromecast:2.3.0]
        at su.litvak.chromecast.api.v2.Channel.getMediaStatus(Channel.java:507) [225:org.openhab.binding.chromecast:2.3.0]
        at su.litvak.chromecast.api.v2.ChromeCast.getMediaStatus(ChromeCast.java:295) [225:org.openhab.binding.chromecast:2.3.0]
        at org.openhab.binding.chromecast.internal.ChromecastCommander.handleRefresh(ChromecastCommander.java:102) [225:org.openhab.binding.chromecast:2.3.0]
        at org.openhab.binding.chromecast.handler.ChromecastHandler$Coordinator$1.run(ChromecastHandler.java:231) [225:org.openhab.binding.chromecast:2.3.0]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
        at java.lang.Thread.run(Thread.java:748) [?:?]
2018-10-28 20:09:54.705 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception
java.lang.NullPointerException: null
        at su.litvak.chromecast.api.v2.CastChannel$CastMessage$Builder.setDestinationId(CastChannel.java:1358) [225:org.openhab.binding.chromecast:2.3.0]
        at su.litvak.chromecast.api.v2.Channel.write(Channel.java:392) [225:org.openhab.binding.chromecast:2.3.0]
        at su.litvak.chromecast.api.v2.Channel.write(Channel.java:384) [225:org.openhab.binding.chromecast:2.3.0]
        at su.litvak.chromecast.api.v2.Channel.startSession(Channel.java:472) [225:org.openhab.binding.chromecast:2.3.0]
        at su.litvak.chromecast.api.v2.Channel.getMediaStatus(Channel.java:507) [225:org.openhab.binding.chromecast:2.3.0]
        at su.litvak.chromecast.api.v2.ChromeCast.getMediaStatus(ChromeCast.java:295) [225:org.openhab.binding.chromecast:2.3.0]
        at org.openhab.binding.chromecast.internal.ChromecastCommander.handleRefresh(ChromecastCommander.java:102) [225:org.openhab.binding.chromecast:2.3.0]
        at org.openhab.binding.chromecast.handler.ChromecastHandler$Coordinator$1.run(ChromecastHandler.java:231) [225:org.openhab.binding.chromecast:2.3.0]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
        at java.lang.Thread.run(Thread.java:748) [?:?]

These exceptions are fixed in 2.4.0-SNAPSHOT with:

I haven’t tried updating the playuri channel. But using the playStream action works for me with an audiogroup in rules with 2.4.0-SNAPSHOT, see:

Thanks for the feedback. I would like to stay on the stable channel. Therefore, I will be able to test the things only with the next version 2.4 more accurate.

I’ve also discovered the following problem (in version 2.3): playStream works with a single Chromecast, but not with the group. Here are the log messages:

2018-10-29 10:19:18.620 [DEBUG] [omecast.internal.ChromecastScheduler] - Scheduling connection
2018-10-29 10:19:18.622 [DEBUG] [omecast.internal.ChromecastScheduler] - Canceling connection
2018-10-29 10:19:18.737 [INFO ] [del.script.Chromecast_Audiogruppe_EG] - Triggered 
2018-10-29 10:19:19.198 [DEBUG] [ast.internal.ChromecastStatusUpdater] - MEDIA_STATUS MediaStatus{activeTrackIds: <null>, mediaSessionId: 5, playbackRate: 1, playerState: IDLE, currentItemId: 5, currentTime: 0,000000, customData: <null>, loadingItemId: null, items: <null>, preloadedItemId: null, supportedMediaCommands: 274447, volume: Volume{level: 1.0, muted: false, increment: 0.05, stepInterval: 0.05000000074505806, controlType: null}, media: Media{url: http://br-br1-franken.cast.addradio.de/br/br1/franken/mp3/56/stream.mp3, contentType: audio/mpeg, duration: null}, repeatMode: null, idleReason: INTERRUPTED}
2018-10-29 10:19:19.203 [DEBUG] [ast.internal.ChromecastStatusUpdater] - MEDIA_STATUS MediaStatus{activeTrackIds: <null>, mediaSessionId: 5, playbackRate: 1, playerState: IDLE, currentItemId: 5, currentTime: 0,000000, customData: <null>, loadingItemId: null, items: <null>, preloadedItemId: null, supportedMediaCommands: 274447, volume: Volume{level: 1.0, muted: false, increment: 0.05, stepInterval: 0.05000000074505806, controlType: null}, media: Media{url: http://br-br1-franken.cast.addradio.de/br/br1/franken/mp3/56/stream.mp3, contentType: audio/mpeg, duration: null}, repeatMode: null, idleReason: INTERRUPTED}
2018-10-29 10:19:19.546 [INFO ] [del.script.Chromecast_Audiogruppe_EG] - play URL 
2018-10-29 10:19:19.548 [DEBUG] [ast.internal.ChromecastStatusUpdater] - MEDIA_STATUS MediaStatus{activeTrackIds: [], mediaSessionId: 6, playbackRate: 1, playerState: PLAYING, currentItemId: 6, currentTime: 0,000000, customData: <null>, loadingItemId: null, items: [Item{id: 6, media: Media{url: http://br-br1-franken.cast.addradio.de/br/br1/franken/mp3/56/stream.mp3, contentType: audio/mpeg, duration: null}}], preloadedItemId: null, supportedMediaCommands: 274447, volume: Volume{level: 1.0, muted: false, increment: 0.05, stepInterval: 0.05000000074505806, controlType: null}, media: Media{url: http://br-br1-franken.cast.addradio.de/br/br1/franken/mp3/56/stream.mp3, contentType: audio/mpeg, duration: null}, repeatMode: REPEAT_OFF, idleReason: null}
2018-10-29 10:19:20.536 [DEBUG] [ast.internal.ChromecastStatusUpdater] - MEDIA_STATUS MediaStatus{activeTrackIds: [], mediaSessionId: 6, playbackRate: 1, playerState: BUFFERING, currentItemId: 6, currentTime: 0,000000, customData: <null>, loadingItemId: null, items: <null>, preloadedItemId: null, supportedMediaCommands: 274447, volume: Volume{level: 1.0, muted: false, increment: 0.05, stepInterval: 0.05000000074505806, controlType: null}, media: null, repeatMode: REPEAT_OFF, idleReason: null}
2018-10-29 10:19:20.536 [DEBUG] [ast.internal.ChromecastStatusUpdater] - MEDIA_STATUS MediaStatus{activeTrackIds: [], mediaSessionId: 6, playbackRate: 1, playerState: BUFFERING, currentItemId: 6, currentTime: 0,000000, customData: <null>, loadingItemId: null, items: <null>, preloadedItemId: null, supportedMediaCommands: 274447, volume: Volume{level: 1.0, muted: false, increment: 0.05, stepInterval: 0.05000000074505806, controlType: null}, media: null, repeatMode: REPEAT_OFF, idleReason: null}
2018-10-29 10:19:20.599 [DEBUG] [ast.internal.ChromecastStatusUpdater] - MEDIA_STATUS MediaStatus{activeTrackIds: [], mediaSessionId: 6, playbackRate: 1, playerState: BUFFERING, currentItemId: 6, currentTime: 0,000000, customData: <null>, loadingItemId: null, items: [Item{id: 6, media: Media{url: http://br-br1-franken.cast.addradio.de/br/br1/franken/mp3/56/stream.mp3, contentType: audio/mpeg, duration: null}}], preloadedItemId: null, supportedMediaCommands: 274447, volume: Volume{level: 1.0, muted: false, increment: 0.05, stepInterval: 0.05000000074505806, controlType: null}, media: Media{url: http://br-br1-franken.cast.addradio.de/br/br1/franken/mp3/56/stream.mp3, contentType: audio/mpeg, duration: null}, repeatMode: REPEAT_OFF, idleReason: null}
2018-10-29 10:19:22.946 [DEBUG] [ast.internal.ChromecastStatusUpdater] - MEDIA_STATUS MediaStatus{activeTrackIds: [], mediaSessionId: 1, playbackRate: 1, playerState: PAUSED, currentItemId: 1, currentTime: 33,875688, customData: <null>, loadingItemId: null, items: [Item{id: 1, media: Media{url: http://br-br1-franken.cast.addradio.de/br/br1/franken/mp3/56/stream.mp3, contentType: audio/mpeg, duration: null}}], preloadedItemId: null, supportedMediaCommands: 274447, volume: Volume{level: 1.0, muted: false, increment: 0.05, stepInterval: 0.05000000074505806, controlType: null}, media: Media{url: http://br-br1-franken.cast.addradio.de/br/br1/franken/mp3/56/stream.mp3, contentType: audio/mpeg, duration: null}, repeatMode: REPEAT_OFF, idleReason: null}