[Release] Samsung WiFi Audio


#1

A Hubitat Integration for Samsung WiFi Multiroom Speakers; including TTS, Audio Notification, and basic player control functions.

06-01-2018. Finished integration with the Group Functions.

01.12.2015. Update to version 2.0. Added internal Button implementation that will allow dashboard control of Speaker Functions as well as Speaker control functions. Button Assignments below.

Button Assignments:

0 - Trigger. Used to set true / false the trigger. If trigger is true, then if you press a preset button, it will update the preset name to the currently playing.

1 through 8 - Channel Player presets.
9 through 11 - Group presets 1 - 3.
12 - Input source toggle
13 - Equalizer preset toggle
14 - Repeat toggle (applies to certain Content Players playing Tracks)
15 - Shuggle toggle (applies to certain Content Players playing Tracks)
16 - GroupStop - stops the currently running Group speakers and return all to solo speaker mode.

Sample Speaker Dashboard. I created a sample Dashboard that works great and provides data necessary to actually control. Code:

"clockMode":null,"tiles":[{"rowSpan":1,"template":"dashboard","col":6,"colSpan":1,"id":1,"row":1,"device":"0","templateExtra":"385"},{"rowSpan":1,"template":"button","col":5,"colSpan":1,"id":2,"row":2,"device":"1891","templateExtra":"0"},{"rowSpan":1,"template":"button","col":1,"colSpan":1,"id":3,"row":2,"device":"1891","templateExtra":"1"},{"rowSpan":1,"template":"attribute","col":1,"colSpan":1,"id":4,"row":1,"device":"1891","templateExtra":"Preset_1"},{"rowSpan":1,"template":"button","col":2,"colSpan":1,"id":5,"row":2,"device":"1891","templateExtra":"2"},{"rowSpan":1,"template":"attribute","col":2,"colSpan":1,"id":6,"row":1,"device":"1891","templateExtra":"Preset_2"},{"rowSpan":1,"template":"attribute","col":3,"colSpan":1,"id":7,"row":1,"device":"1891","templateExtra":"Preset_3"},{"rowSpan":1,"template":"button","col":3,"colSpan":1,"id":8,"row":2,"device":"1891","templateExtra":"3"},{"rowSpan":1,"template":"button","col":4,"colSpan":1,"id":9,"row":2,"device":"1891","templateExtra":"4"},{"rowSpan":1,"template":"attribute","col":4,"colSpan":1,"id":10,"row":1,"device":"1891","templateExtra":"Preset_4"},{"rowSpan":1,"template":"attribute","col":1,"colSpan":1,"id":11,"row":3,"device":"1891","templateExtra":"Preset_5"},{"rowSpan":1,"template":"button","col":1,"colSpan":1,"id":12,"row":4,"device":"1891","templateExtra":"5"},{"rowSpan":1,"template":"attribute","col":2,"colSpan":1,"id":13,"row":3,"device":"1891","templateExtra":"Preset_6"},{"rowSpan":1,"template":"attribute","col":3,"colSpan":1,"id":14,"row":3,"device":"1891","templateExtra":"Preset_7"},{"rowSpan":1,"template":"attribute","col":4,"colSpan":1,"id":15,"row":3,"device":"1891","templateExtra":"Preset_8"},{"rowSpan":1,"template":"button","col":2,"colSpan":1,"id":16,"row":4,"device":"1891","templateExtra":"6"},{"rowSpan":1,"template":"button","col":3,"colSpan":1,"id":17,"row":4,"device":"1891","templateExtra":"7"},{"rowSpan":1,"template":"button","col":4,"colSpan":1,"id":18,"row":4,"device":"1891","templateExtra":"8"},{"rowSpan":1,"template":"attribute","col":1,"colSpan":1,"id":19,"row":6,"device":"1891","templateExtra":"Group_1"},{"rowSpan":1,"template":"attribute","col":2,"colSpan":1,"id":20,"row":6,"device":"1891","templateExtra":"Group_2"},{"rowSpan":1,"template":"attribute","col":3,"colSpan":1,"id":21,"row":6,"device":"1891","templateExtra":"Group_3"},{"rowSpan":1,"template":"button","col":1,"colSpan":1,"id":22,"row":7,"device":"1891","templateExtra":"9"},{"rowSpan":1,"template":"button","col":2,"colSpan":1,"id":23,"row":7,"device":"1891","templateExtra":"10"},{"rowSpan":1,"template":"button","col":3,"colSpan":1,"id":24,"row":7,"device":"1891","templateExtra":"11"},{"rowSpan":1,"template":"attribute","col":6,"colSpan":1,"id":27,"row":2,"device":"1891","templateExtra":"inputSource"},{"rowSpan":1,"template":"button","col":6,"colSpan":1,"id":28,"row":3,"device":"1891","templateExtra":"12"},{"rowSpan":1,"template":"attribute","col":6,"colSpan":1,"id":29,"row":4,"device":"1891","templateExtra":"eqPreset"},{"rowSpan":1,"template":"button","col":6,"colSpan":1,"id":30,"row":5,"device":"1891","templateExtra":"13"},{"rowSpan":1,"template":"attribute","col":5,"colSpan":1,"id":31,"row":6,"device":"1891","templateExtra":"shuffle"},{"rowSpan":1,"template":"attribute","col":6,"colSpan":1,"id":32,"row":6,"device":"1891","templateExtra":"repeat"},{"rowSpan":1,"template":"button","col":5,"colSpan":1,"id":33,"row":7,"device":"1891","templateExtra":"15"},{"rowSpan":1,"template":"button","col":6,"colSpan":1,"id":34,"row":7,"device":"1891","templateExtra":"14"},{"rowSpan":1,"template":"attribute","col":4,"colSpan":1,"id":35,"row":6,"device":"1891","templateExtra":"activeGroup"},{"rowSpan":1,"template":"button","col":4,"colSpan":1,"id":36,"row":7,"device":"1891","templateExtra":"16"},{"rowSpan":1,"template":"attribute","col":5,"colSpan":1,"id":37,"row":1,"device":"1891","templateExtra":"Trigger"}],"bgColor":"Black","lanRefresh":2,"background":"","customColors":[{"template":"attribute","bgColor":"rgba(18,157,255,1)","iconColor":"rgba(14,14,14,1)","state":"Default"},{"template":"dashboard","bgColor":"rgba(179,39,18,0.93)","iconColor":"","state":"Default"}],"name":"Speaker Right","readOnly":false,"fontSize":"8","cloudRefresh":5,"rows":"7","cols":"6"}


Compatible Speakers
Samsung Speakers
#2

I have R1 speaker. Seems to work well with your test app, but does not appear as TTS device for rule machine.


#3

Look for capability Audio Notification. If you find that, then you can hook to the speaker and send the exposed TTS commands (i.e., speaker.sendTextAndResume(text, vol), speaker.sendTextAndRestore(text.vol), speaker.sendText(text, vol). I use this in my audio test app on GitHub.


#4

Thanks for this.

Installation was a breeze and it picked up my Samsung R1 quickly.

Works perfect in both webCoRE and RM for TTS

Great job
:joy:


TTS to a Echo dot or Google mini
#5

Thanks, Next I am adding presets. It will work by running the station/player on the multiroom app, then creating the preset on the device. Then next time you press it, it will call up the channel. (I already do this in SmartThings and it has been working for the players I have accounts on!


#6

UPDATED

05-18-2018 - Incremental update adding define and play preset functions. Requires replacing Driver only!

See top post!


#7

UPDATED. Final Beta incorporating all available functions:
Music Player
Audio Notification
Text-to-Speech
Preset (for channels first created in the Multiroom App)
Groups (for groups first created in the Multiroom App)

Tested all functions; but not all possible conditions.

Thanks to all for the help.

Dave


#8

Stunning Dave. Taking me a little to get my head around the differences between ST and Hubitat, but getting there. Great work, many thanks! :+1:


#9

Hi Dave @djgutheinz,

Are there plans to add any Play track and resume functionality, if that's possible?

Or maybe I could make a request for Presets could be supported in Rule Machine, just thinking of a way for my Remotec controller to execute the presets without the need for webCoRE :slight_smile:

At least using presets does work via webCoRE, and works great (apart from some lag and random stopping of play sometime after, which I haven't caught in logs as yet). I can now port a massive part of what I love, the ability to press a button, and stream to whichever room I'm in :+1: from ST.

**Update - Managed to get RM to see "Presets" using the Custom Commands

Cheers

Roy


#10

Sorry for the delay. Caught consulting 12hrs a day.

Will look at play track and resume and get back in a week or so.


Samsung M3 Speakers
#11

Dave - THANK YOU for doing this!! I was able to get my M3 up and running because of your code. LOVE IT!


#12

@djgutheinz

Dave - not sure what might be happening but I am now having issues with my M3. Every once in a while (like 1 out of 5 times) I have the TTS announce through either Message Central or BigTalker2 I hear the Samsung M3 "The connection was successfully paired" right after an announcement. My thought is this could be the "resumeplay" feature. Thoughts on this? Logs below with the latest log having this phantom voice.

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:50.900 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_PlayStatus

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:50.736 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /CPM?cmd=%3Cname%3EGetPlayStatus%3C/name%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:45.776 pm [info](http://10.0.2.38/device/edit/346)generalResponse_RadioInfo: Track Description is .

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:45.774 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_RadioInfo

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:45.683 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /CPM?cmd=%3Cname%3EGetRadioInfo%3C/name%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:43.449 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_VolumeLevel

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:43.440 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_VolumeLevel

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:43.337 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetFunc%3C/name%3E%3Cp%20type=%22str%22%20name=%22function%22%20val=%22wifi%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:43.321 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetVolume%3C/name%3E%3Cp%20type=%22dec%22%20name=%22volume%22%20val=%2224%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:43.318 pm [info](http://10.0.2.38/device/edit/346)restorePlayer: Restoring play to [level:80, inputsource:wifi]

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:35.601 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_PausePlaybackEvent

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:35.589 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_PausePlaybackEvent

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:35.587 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_PausePlaybackEvent

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:31.513 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetUrlPlayback%3C/name%3E%3Cp%20type=%22cdata%22%20name=%22url%22%20val=%22empty%22%3E%3C![CDATA[http://10.0.2.38:8080/tts/28d26da56f9ab0ec00f4f2d12dde068d.mp3]]%3E%3C/p%3E%3Cp%20type=%22dec%22%20name=%22buffersize%22%20val=%220%22/%3E%3Cp%20type=%22dec%22%20name=%22seektime%22%20val=%220%22/%3E%3Cp%20type=%22dec%22%20name=%22resume%22%20val=%221%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:31.507 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetVolume%3C/name%3E%3Cp%20type=%22dec%22%20name=%22volume%22%20val=%2224%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:31.294 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /CPM?cmd=%3Cname%3ESetPlaybackControl%3C/name%3E%3Cp%20type=%22str%22%20name=%22playbackcontrol%22%20val=%22stop%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:31.293 pm [info](http://10.0.2.38/device/edit/346)playTrackAndResume: Resume = 0, Track = [uri:http://10.0.2.38:8080/tts/28d26da56f9ab0ec00f4f2d12dde068d.mp3, duration:6], Volume = 80

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:12.319 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_CurrentFunc

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:12.317 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_VolumeLevel

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:12.185 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetFunc%3C/name%3E%3Cp%20type=%22str%22%20name=%22function%22%20val=%22wifi%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:12.174 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetVolume%3C/name%3E%3Cp%20type=%22dec%22%20name=%22volume%22%20val=%2224%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:12.172 pm [info](http://10.0.2.38/device/edit/346)restorePlayer: Restoring play to [level:80, inputsource:wifi]

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:06.710 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_PlayStatus

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:06.591 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /CPM?cmd=%3Cname%3EGetPlayStatus%3C/name%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:01.689 pm [info](http://10.0.2.38/device/edit/346)generalResponse_RadioInfo: Track Description is .

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:01.686 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_RadioInfo

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:01.535 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /CPM?cmd=%3Cname%3EGetRadioInfo%3C/name%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:00.559 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_VolumeLevel

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:00.555 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_VolumeLevel

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:00.400 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetUrlPlayback%3C/name%3E%3Cp%20type=%22cdata%22%20name=%22url%22%20val=%22empty%22%3E%3C![CDATA[http://10.0.2.38:8080/tts/40524ec7b14c9ed37804864fe61ebdeb.mp3]]%3E%3C/p%3E%3Cp%20type=%22dec%22%20name=%22buffersize%22%20val=%220%22/%3E%3Cp%20type=%22dec%22%20name=%22seektime%22%20val=%220%22/%3E%3Cp%20type=%22dec%22%20name=%22resume%22%20val=%221%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:00.393 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetVolume%3C/name%3E%3Cp%20type=%22dec%22%20name=%22volume%22%20val=%2224%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:00.333 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_PlaybackStatus

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:00.179 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /CPM?cmd=%3Cname%3ESetPlaybackControl%3C/name%3E%3Cp%20type=%22str%22%20name=%22playbackcontrol%22%20val=%22stop%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:23:00.178 pm [info](http://10.0.2.38/device/edit/346)playTrackAndResume: Resume = 0, Track = [uri:http://10.0.2.38:8080/tts/40524ec7b14c9ed37804864fe61ebdeb.mp3, duration:6], Volume = 80

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:22:51.499 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_PausePlaybackEvent

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:22:51.496 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_VolumeLevel

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:22:51.340 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetUrlPlayback%3C/name%3E%3Cp%20type=%22cdata%22%20name=%22url%22%20val=%22empty%22%3E%3C![CDATA[http://10.0.2.38:8080/tts/40524ec7b14c9ed37804864fe61ebdeb.mp3]]%3E%3C/p%3E%3Cp%20type=%22dec%22%20name=%22buffersize%22%20val=%220%22/%3E%3Cp%20type=%22dec%22%20name=%22seektime%22%20val=%220%22/%3E%3Cp%20type=%22dec%22%20name=%22resume%22%20val=%221%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:22:51.330 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetVolume%3C/name%3E%3Cp%20type=%22dec%22%20name=%22volume%22%20val=%2224%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:22:51.277 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_PlaybackStatus

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:22:51.112 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /CPM?cmd=%3Cname%3ESetPlaybackControl%3C/name%3E%3Cp%20type=%22str%22%20name=%22playbackcontrol%22%20val=%22stop%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:22:51.108 pm [info](http://10.0.2.38/device/edit/346)playTrackAndResume: Resume = 0, Track = [uri:http://10.0.2.38:8080/tts/40524ec7b14c9ed37804864fe61ebdeb.mp3, duration:6], Volume = 80

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:21:12.319 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_PlayStatus

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:21:12.200 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /CPM?cmd=%3Cname%3EGetPlayStatus%3C/name%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:21:10.726 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_MuteStatus

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:21:10.002 pm [info](http://10.0.2.38/device/edit/346)generalResponse_RadioInfo: Track Description is .

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:21:09.997 pm [info](http://10.0.2.38/device/edit/346)generalResponse_RadioInfo: Track Description is .

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:21:09.996 pm [info](http://10.0.2.38/device/edit/346)generalResponse_RadioInfo: Track Description is .

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:21:09.975 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_RadioInfo

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:21:09.971 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_RadioInfo

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:21:09.968 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_RadioInfo

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:21:07.173 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /CPM?cmd=%3Cname%3EGetRadioInfo%3C/name%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:21:05.147 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cname%3EGetAcmMode%3C/name%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:21:04.640 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cname%3EGetVolume%3C/name%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:21:04.084 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cname%3EGetFunc%3C/name%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:21:03.551 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cname%3EGetMute%3C/name%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:16:12.315 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_PlayStatus

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:16:12.134 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /CPM?cmd=%3Cname%3EGetPlayStatus%3C/name%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:16:07.190 pm [info](http://10.0.2.38/device/edit/346)generalResponse_RadioInfo: Track Description is .

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:16:07.187 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_RadioInfo

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:16:07.101 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /CPM?cmd=%3Cname%3EGetRadioInfo%3C/name%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:16:05.173 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_AcmMode

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:16:05.081 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cname%3EGetAcmMode%3C/name%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:16:04.670 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_VolumeLevel

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:16:04.569 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cname%3EGetVolume%3C/name%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:16:04.129 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_CurrentFunc

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:16:04.061 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cname%3EGetFunc%3C/name%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:16:03.734 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_MuteStatus

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:16:03.538 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cname%3EGetMute%3C/name%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:11:12.334 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_PlayStatus

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:11:12.136 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /CPM?cmd=%3Cname%3EGetPlayStatus%3C/name%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:11:09.524 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_CurrentFunc

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:11:09.524 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_CurrentFunc

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:11:09.510 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_CurrentFunc

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:11:09.499 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_CurrentFunc

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:11:07.107 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /CPM?cmd=%3Cname%3EGetRadioInfo%3C/name%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:11:05.081 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cname%3EGetAcmMode%3C/name%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:11:04.570 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cname%3EGetVolume%3C/name%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:11:04.063 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cname%3EGetFunc%3C/name%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:11:03.542 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cname%3EGetMute%3C/name%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:08:07.544 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_VolumeLevel

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:08:07.540 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_CurrentFunc

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:08:00.356 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetFunc%3C/name%3E%3Cp%20type=%22str%22%20name=%22function%22%20val=%22wifi%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:08:00.345 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetVolume%3C/name%3E%3Cp%20type=%22dec%22%20name=%22volume%22%20val=%2224%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:08:00.343 pm [info](http://10.0.2.38/device/edit/346)restorePlayer: Restoring play to [level:80, inputsource:wifi]

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:48.760 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_VolumeLevel

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:48.755 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_VolumeLevel

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:48.556 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetUrlPlayback%3C/name%3E%3Cp%20type=%22cdata%22%20name=%22url%22%20val=%22empty%22%3E%3C![CDATA[http://10.0.2.38:8080/tts/9a15271d4d94dd8f6851bf10813cad53.mp3]]%3E%3C/p%3E%3Cp%20type=%22dec%22%20name=%22buffersize%22%20val=%220%22/%3E%3Cp%20type=%22dec%22%20name=%22seektime%22%20val=%220%22/%3E%3Cp%20type=%22dec%22%20name=%22resume%22%20val=%221%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:48.550 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetVolume%3C/name%3E%3Cp%20type=%22dec%22%20name=%22volume%22%20val=%2224%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:48.416 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_PlaybackStatus

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:48.334 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /CPM?cmd=%3Cname%3ESetPlaybackControl%3C/name%3E%3Cp%20type=%22str%22%20name=%22playbackcontrol%22%20val=%22stop%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:48.333 pm [info](http://10.0.2.38/device/edit/346)playTrackAndResume: Resume = 0, Track = [uri:http://10.0.2.38:8080/tts/9a15271d4d94dd8f6851bf10813cad53.mp3, duration:6], Volume = 80

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:47.570 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_VolumeLevel

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:47.568 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_VolumeLevel

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:44.901 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetFunc%3C/name%3E%3Cp%20type=%22str%22%20name=%22function%22%20val=%22wifi%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:44.880 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetVolume%3C/name%3E%3Cp%20type=%22dec%22%20name=%22volume%22%20val=%2224%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:44.876 pm [info](http://10.0.2.38/device/edit/346)restorePlayer: Restoring play to [level:80, inputsource:wifi]

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:33.231 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_MuteStatus

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:33.231 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_VolumeLevel

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:33.119 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetUrlPlayback%3C/name%3E%3Cp%20type=%22cdata%22%20name=%22url%22%20val=%22empty%22%3E%3C![CDATA[http://10.0.2.38:8080/tts/9a15271d4d94dd8f6851bf10813cad53.mp3]]%3E%3C/p%3E%3Cp%20type=%22dec%22%20name=%22buffersize%22%20val=%220%22/%3E%3Cp%20type=%22dec%22%20name=%22seektime%22%20val=%220%22/%3E%3Cp%20type=%22dec%22%20name=%22resume%22%20val=%221%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:33.112 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetVolume%3C/name%3E%3Cp%20type=%22dec%22%20name=%22volume%22%20val=%2224%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:33.016 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_PlaybackStatus

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:32.896 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_VolumeLevel

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:32.891 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_VolumeLevel

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:32.888 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /CPM?cmd=%3Cname%3ESetPlaybackControl%3C/name%3E%3Cp%20type=%22str%22%20name=%22playbackcontrol%22%20val=%22stop%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:32.887 pm [info](http://10.0.2.38/device/edit/346)playTrackAndResume: Resume = 0, Track = [uri:http://10.0.2.38:8080/tts/9a15271d4d94dd8f6851bf10813cad53.mp3, duration:6], Volume = 80

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:32.762 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetUrlPlayback%3C/name%3E%3Cp%20type=%22cdata%22%20name=%22url%22%20val=%22empty%22%3E%3C![CDATA[http://10.0.2.38:8080/tts/9a15271d4d94dd8f6851bf10813cad53.mp3]]%3E%3C/p%3E%3Cp%20type=%22dec%22%20name=%22buffersize%22%20val=%220%22/%3E%3Cp%20type=%22dec%22%20name=%22seektime%22%20val=%220%22/%3E%3Cp%20type=%22dec%22%20name=%22resume%22%20val=%221%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:32.749 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /UIC?cmd=%3Cpwron%3Eon%3C/pwron%3E%3Cname%3ESetVolume%3C/name%3E%3Cp%20type=%22dec%22%20name=%22volume%22%20val=%2224%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:32.665 pm [debug](http://10.0.2.38/device/edit/346)generalResponse_PlaybackStatus

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:32.533 pm [debug](http://10.0.2.38/device/edit/346)sendCmd: Command= /CPM?cmd=%3Cname%3ESetPlaybackControl%3C/name%3E%3Cp%20type=%22str%22%20name=%22playbackcontrol%22%20val=%22stop%22/%3E, Action = generalResponse

[dev:346](http://10.0.2.38/logs/past#dev346)2018-11-30 04:07:32.532 pm [info](http://10.0.2.38/device/edit/346)playTrackAndResume: Resume = 0, Track = [uri:http://10.0.2.38:8080/tts/9a15271d4d94dd8f6851bf10813cad53.mp3, duration:6], Volume = 80

#13

Give me a week or so. Embroiled in fixing TP-Link devices. (There were extensive updates and some issues to resolve in them. Finished with Hubitat, now SmartThings.)


#14

Appreciate it Dave!


#15

Thoughts:

For my R1 speakers and soundbars, the speaker generates a "the connection is complete" when completing a connection (i.e., bluetooth). Somewhere the unit is disconnecting from a source and reconnecting when the sound plays.

What connection (wifi, bluetooth, etc.) is being used when playing the text-to-speech. If not wifi, this may be normal as the connection is re-established.

Dave


#16

Dave - good question! What does the Bluetooth look like in your devices? I do not have the device setup with anything besides WiFi. BUT, that doesn't mean someone didn't add their device to the M3.


#17

When you power on the device ((unplug and plug back in) mine (R7) comes back with an audio message (device connected for wifi, bluetooth ready for bluetooth. When bluetooth connects, get a connected message.


#18

What about on your device itself such as your iOS or Droid? What does it show up as? Samsung?


#19

I've never played with wireless speakers (รก la Sonos) but I couldn't resist the refurbed R1 at $40. So, two of them have arrived and I'm trying to understand their capabilities and limitations. All the foregoing to explain that I don't know what I'm doing. :blush:.

But I have been able to 1) use the Samsung app to get them connected in surround sound mode to my Samsung TV; 2) install this driver to get TTS from Hubitat.

But I can't do both. Is it possible to keep them connected to the TV and be interrupted by a Hubitat TTS announcement?

Thanks @djgutheinz for your expertise and contribution to the community.


#20

I also got an R1 at the refurb sale, and am using it only for TTS notifications. Thanks Dave for the driver and app!! I did have a question, how do I change the voice to something else? It is currently a male voice, and would like to try something else.

Thanks again @djgutheinz!

Edit: Never mind, found it under the Hubitat settings.