Hi,
You can turn the sub on and off in the Sonos app but cannot turn it on and off with HA.
Is this a feature we can add? Can the sub also be added as a separate unit so you can also control its volume separate from the other speakers like you can in the Sonos app?
Thanks so much!
I support this feature to be implemented. Very useful to me!
This seems like it should be straightforward but I do not have a sub to test against. Would anyone be willing to test with some basic python scripts to help me understand the protocol? Can someone share a screenshot of how this is exposed in the native Sonos app?
I’d be happy to try if you direct me how.
Here’s how you get into the sun audio settings:
I see. I’m not seeing the controls to enabled/disable the sub in my system, so maybe it’s only exposed when there’s one included in the system.
Can you grab an XML file from your Beam’s IP and attach here?
http://<YOUR_BEAM_IP>:1400/xml/RenderingControl1.xml
That’s correct - If I turn off the sub from the wall it disappears in the app.
The xlm is:
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<scpd xmlns="urn:schemas-upnp-org:service-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<serviceStateTable>
<stateVariable sendEvents="yes">
<name>LastChange</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>Mute</name>
<dataType>boolean</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>Volume</name>
<dataType>ui2</dataType>
<allowedValueRange>
<minimum>0</minimum>
<maximum>100</maximum>
<step>1</step>
</allowedValueRange>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_LeftVolume</name>
<dataType>ui2</dataType>
<allowedValueRange>
<minimum>0</minimum>
<maximum>100</maximum>
<step>1</step>
</allowedValueRange>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_RightVolume</name>
<dataType>ui2</dataType>
<allowedValueRange>
<minimum>0</minimum>
<maximum>100</maximum>
<step>1</step>
</allowedValueRange>
</stateVariable>
<stateVariable sendEvents="no">
<name>VolumeDB</name>
<dataType>i2</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>Bass</name>
<dataType>i2</dataType>
<allowedValueRange>
<minimum>-10</minimum>
<maximum>10</maximum>
<step>1</step>
</allowedValueRange>
</stateVariable>
<stateVariable sendEvents="no">
<name>Treble</name>
<dataType>i2</dataType>
<allowedValueRange>
<minimum>-10</minimum>
<maximum>10</maximum>
<step>1</step>
</allowedValueRange>
</stateVariable>
<stateVariable sendEvents="no">
<name>EQValue</name>
<dataType>i2</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_EQType</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>Loudness</name>
<dataType>boolean</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>SupportsOutputFixed</name>
<dataType>boolean</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>OutputFixed</name>
<dataType>boolean</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>HeadphoneConnected</name>
<dataType>boolean</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_Channel</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>Master</allowedValue>
<allowedValue>LF</allowedValue>
<allowedValue>RF</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_MuteChannel</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>Master</allowedValue>
<allowedValue>LF</allowedValue>
<allowedValue>RF</allowedValue>
<allowedValue>SpeakerOnly</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_InstanceID</name>
<dataType>ui4</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_VolumeAdjustment</name>
<dataType>i4</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_RampType</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>SLEEP_TIMER_RAMP_TYPE</allowedValue>
<allowedValue>ALARM_RAMP_TYPE</allowedValue>
<allowedValue>AUTOPLAY_RAMP_TYPE</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_RampTimeSeconds</name>
<dataType>ui4</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_ResetVolumeAfter</name>
<dataType>boolean</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_ProgramURI</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_ChannelMap</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>AudioDelay</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>AudioDelayLeftRear</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>AudioDelayRightRear</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>DialogLevel</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>SpeakerSize</name>
<dataType>ui4</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>SubCrossover</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>SubEnabled</name>
<dataType>boolean</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>SubGain</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>SubPolarity</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>SurroundLevel</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>MusicSurroundLevel</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>NightMode</name>
<dataType>boolean</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>SurroundEnabled</name>
<dataType>boolean</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>SurroundMode</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>PresetNameList</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>RoomCalibrationID</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>RoomCalibrationCoefficients</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>RoomCalibrationCalibrationMode</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>RoomCalibrationEnabled</name>
<dataType>boolean</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>RoomCalibrationAvailable</name>
<dataType>boolean</dataType>
</stateVariable>
</serviceStateTable>
<actionList>
<action>
<name>GetMute</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Channel</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_MuteChannel</relatedStateVariable>
</argument>
<argument>
<name>CurrentMute</name>
<direction>out</direction>
<relatedStateVariable>Mute</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>SetMute</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Channel</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_MuteChannel</relatedStateVariable>
</argument>
<argument>
<name>DesiredMute</name>
<direction>in</direction>
<relatedStateVariable>Mute</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>ResetBasicEQ</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Bass</name>
<direction>out</direction>
<relatedStateVariable>Bass</relatedStateVariable>
</argument>
<argument>
<name>Treble</name>
<direction>out</direction>
<relatedStateVariable>Treble</relatedStateVariable>
</argument>
<argument>
<name>Loudness</name>
<direction>out</direction>
<relatedStateVariable>Loudness</relatedStateVariable>
</argument>
<argument>
<name>LeftVolume</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_LeftVolume</relatedStateVariable>
</argument>
<argument>
<name>RightVolume</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_RightVolume</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>ResetExtEQ</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>EQType</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_EQType</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetVolume</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Channel</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Channel</relatedStateVariable>
</argument>
<argument>
<name>CurrentVolume</name>
<direction>out</direction>
<relatedStateVariable>Volume</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>SetVolume</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Channel</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Channel</relatedStateVariable>
</argument>
<argument>
<name>DesiredVolume</name>
<direction>in</direction>
<relatedStateVariable>Volume</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>SetRelativeVolume</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Channel</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Channel</relatedStateVariable>
</argument>
<argument>
<name>Adjustment</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_VolumeAdjustment</relatedStateVariable>
</argument>
<argument>
<name>NewVolume</name>
<direction>out</direction>
<relatedStateVariable>Volume</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetVolumeDB</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Channel</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Channel</relatedStateVariable>
</argument>
<argument>
<name>CurrentVolume</name>
<direction>out</direction>
<relatedStateVariable>VolumeDB</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>SetVolumeDB</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Channel</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Channel</relatedStateVariable>
</argument>
<argument>
<name>DesiredVolume</name>
<direction>in</direction>
<relatedStateVariable>VolumeDB</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetVolumeDBRange</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Channel</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Channel</relatedStateVariable>
</argument>
<argument>
<name>MinValue</name>
<direction>out</direction>
<relatedStateVariable>VolumeDB</relatedStateVariable>
</argument>
<argument>
<name>MaxValue</name>
<direction>out</direction>
<relatedStateVariable>VolumeDB</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetBass</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>CurrentBass</name>
<direction>out</direction>
<relatedStateVariable>Bass</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>SetBass</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>DesiredBass</name>
<direction>in</direction>
<relatedStateVariable>Bass</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetTreble</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>CurrentTreble</name>
<direction>out</direction>
<relatedStateVariable>Treble</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>SetTreble</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>DesiredTreble</name>
<direction>in</direction>
<relatedStateVariable>Treble</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetEQ</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>EQType</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_EQType</relatedStateVariable>
</argument>
<argument>
<name>CurrentValue</name>
<direction>out</direction>
<relatedStateVariable>EQValue</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>SetEQ</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>EQType</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_EQType</relatedStateVariable>
</argument>
<argument>
<name>DesiredValue</name>
<direction>in</direction>
<relatedStateVariable>EQValue</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetLoudness</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Channel</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Channel</relatedStateVariable>
</argument>
<argument>
<name>CurrentLoudness</name>
<direction>out</direction>
<relatedStateVariable>Loudness</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>SetLoudness</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Channel</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Channel</relatedStateVariable>
</argument>
<argument>
<name>DesiredLoudness</name>
<direction>in</direction>
<relatedStateVariable>Loudness</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetSupportsOutputFixed</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>CurrentSupportsFixed</name>
<direction>out</direction>
<relatedStateVariable>SupportsOutputFixed</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetOutputFixed</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>CurrentFixed</name>
<direction>out</direction>
<relatedStateVariable>OutputFixed</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>SetOutputFixed</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>DesiredFixed</name>
<direction>in</direction>
<relatedStateVariable>OutputFixed</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetHeadphoneConnected</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>CurrentHeadphoneConnected</name>
<direction>out</direction>
<relatedStateVariable>HeadphoneConnected</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>RampToVolume</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Channel</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Channel</relatedStateVariable>
</argument>
<argument>
<name>RampType</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_RampType</relatedStateVariable>
</argument>
<argument>
<name>DesiredVolume</name>
<direction>in</direction>
<relatedStateVariable>Volume</relatedStateVariable>
</argument>
<argument>
<name>ResetVolumeAfter</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_ResetVolumeAfter</relatedStateVariable>
</argument>
<argument>
<name>ProgramURI</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_ProgramURI</relatedStateVariable>
</argument>
<argument>
<name>RampTime</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_RampTimeSeconds</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>RestoreVolumePriorToRamp</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Channel</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Channel</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>SetChannelMap</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>ChannelMap</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_ChannelMap</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>SetRoomCalibrationX</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>CalibrationID</name>
<direction>in</direction>
<relatedStateVariable>RoomCalibrationID</relatedStateVariable>
</argument>
<argument>
<name>Coefficients</name>
<direction>in</direction>
<relatedStateVariable>RoomCalibrationCoefficients</relatedStateVariable>
</argument>
<argument>
<name>CalibrationMode</name>
<direction>in</direction>
<relatedStateVariable>RoomCalibrationCalibrationMode</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetRoomCalibrationStatus</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>RoomCalibrationEnabled</name>
<direction>out</direction>
<relatedStateVariable>RoomCalibrationEnabled</relatedStateVariable>
</argument>
<argument>
<name>RoomCalibrationAvailable</name>
<direction>out</direction>
<relatedStateVariable>RoomCalibrationAvailable</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>SetRoomCalibrationStatus</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>RoomCalibrationEnabled</name>
<direction>in</direction>
<relatedStateVariable>RoomCalibrationEnabled</relatedStateVariable>
</argument>
</argumentList>
</action>
</actionList>
</scpd>
let me know if I can help with anything else. and thanks for trying to make this work
You are an absolute legend! Thank you so much. Can’t wait to see it in action
It’s now live!
Thanks for your help. I have found a problem and unsure to post it here or on the github but:
When I turn off the sub - it turns off then 2 seconds later the state switches back to ON but the sub stays off. Unsure why it’s turning the state back on. I have to double tap the switch on/off to turn it back on or off as it shows the wrong state.
The history of the entity shows that the sub never turned off:
also is there a entity to control the Sub Audio - I can only control the overall treble and bass and not the sub level or phase:
Thanks again
oneseventhree:
When I turn off the sub - it turns off then 2 seconds later the state switches back to ON but the sub stays off. Unsure why it’s turning the state back on. I have to double tap the switch on/off to turn it back on or off as it shows the wrong state.
The history of the entity shows that the sub never turned off:
Do changes to the sub switch in the Sonos app reflect properly in HA? What about in the other direction? I’m unclear from your description if the feature is actually being enabled/disabled on the sub and/or if the state reporting in HA is incorrect.
Just as a sanity check, do you ever see warnings that say “… falling back to polling, functionality may be limited ” in your HA logs?
Those will need to be a future feature request. I’m doing this a bit in the dark as I don’t have a sub locally to test with and wanted to keep it simple to start.
When I turn the sub off in HA the phone app shows it as off straight away - HA then turns the state back to ON but it stays OFF in the app.
Nothing in the logs - I don’t think I have it in my debug - how do I add it? I currently have:
# Logger (For Debugging)
logger:
default: info
logs:
aiohue: debug # Hue
custom_components.alexa_media: debug
# for API debugging (verbose and intended for service debugging)
alexapy: debug
# for proxy debugging
authcaptureproxy: debug
I was able to reproduce with the surround switch. It wasn’t handling the subscription event callbacks properly, so it would never update the state. I swear I had this code during development but I must have lost it along the way.
Either way, Fix Sonos sub & surround switch state reporting by jjlawren · Pull Request #61531 · home-assistant/core · GitHub should fix it. Will try to get it into the next point release.
1 Like
Great thanks!
Let me know if you need a hand with the Sub Audio settings
Can you confirm that it behaves better in 2021.12.1?
seems to be working perfectly after your fix
1 Like
Hi, just wanted to say your latest updates have been so great!
Thank you so much
Any chance you will update the Sub Audio settings? I would love to control the sub level
Sub Gain controls have also already been added if that’s what you’re asking for.
it works perfectly! thanks so much
1 Like