[sonos] Add new channel heightlevel for Sonos ARC / ARC SL (#10759)
Fix #9874 Signed-off-by: Laurent Garnier <lg.hc@free.fr>
This commit is contained in:
parent
a736a2cafd
commit
9bf194ad39
|
@ -69,6 +69,7 @@ The devices support the following channels:
|
|||
| currenttrackuri | String | R | URI of the current track | all |
|
||||
| currenttransporturi | String | R | URI of the current AV transport | all |
|
||||
| favorite | String | W | Play the given favorite entry. The favorite entry has to be predefined in the Sonos Controller app | all |
|
||||
| heightlevel | Number | RW | Set or get the height level adjustment (value in range -10 / 10) | Arc, Arc SL |
|
||||
| led | Switch | RW | Set or get the status of the white LED on the front of the Zone Player | all |
|
||||
| linein | Switch | R | Indicator set to ON when the line-in of the Zone Player is connected | PLAY5, CONNECT, CONNECTAMP, PLAYBAR, PLAYBASE, Beam, Port |
|
||||
| analoglinein | Switch | R | Indicator set to ON when the analog line-in of the Zone Player is connected | Amp |
|
||||
|
|
|
@ -98,6 +98,7 @@ public class SonosBindingConstants {
|
|||
public static final String CURRENTTRACKURI = "currenttrackuri";
|
||||
public static final String CURRENTTRANSPORTURI = "currenttransporturi";
|
||||
public static final String FAVORITE = "favorite";
|
||||
public static final String HEIGHTLEVEL = "heightlevel";
|
||||
public static final String LED = "led";
|
||||
public static final String LINEIN = "linein";
|
||||
public static final String ANALOGLINEIN = "analoglinein";
|
||||
|
|
|
@ -877,6 +877,7 @@ public class SonosXMLParser {
|
|||
case "SurroundMode":
|
||||
case "SurroundLevel":
|
||||
case "MusicSurroundLevel":
|
||||
case "HeightChannelLevel":
|
||||
val = attributes == null ? null : attributes.getValue("val");
|
||||
if (val != null) {
|
||||
changes.put(qName, val);
|
||||
|
|
|
@ -162,6 +162,8 @@ public class ZonePlayerHandler extends BaseThingHandler implements UpnpIOPartici
|
|||
private static final int MAX_SUBWOOFER_GAIN = 15;
|
||||
private static final int MIN_SURROUND_LEVEL = -15;
|
||||
private static final int MAX_SURROUND_LEVEL = 15;
|
||||
private static final int MIN_HEIGHT_LEVEL = -10;
|
||||
private static final int MAX_HEIGHT_LEVEL = 10;
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(ZonePlayerHandler.class);
|
||||
|
||||
|
@ -338,6 +340,9 @@ public class ZonePlayerHandler extends BaseThingHandler implements UpnpIOPartici
|
|||
case SURROUNDTVLEVEL:
|
||||
setSurroundTvLevel(command);
|
||||
break;
|
||||
case HEIGHTLEVEL:
|
||||
setHeightLevel(command);
|
||||
break;
|
||||
case ADD:
|
||||
addMember(command);
|
||||
break;
|
||||
|
@ -596,6 +601,9 @@ public class ZonePlayerHandler extends BaseThingHandler implements UpnpIOPartici
|
|||
case "MusicSurroundLevel":
|
||||
updateChannel(SURROUNDMUSICLEVEL);
|
||||
break;
|
||||
case "HeightChannelLevel":
|
||||
updateChannel(HEIGHTLEVEL);
|
||||
break;
|
||||
case "NightMode":
|
||||
updateChannel(NIGHTMODE);
|
||||
break;
|
||||
|
@ -873,6 +881,12 @@ public class ZonePlayerHandler extends BaseThingHandler implements UpnpIOPartici
|
|||
newState = new DecimalType(value);
|
||||
}
|
||||
break;
|
||||
case HEIGHTLEVEL:
|
||||
value = getHeightLevel();
|
||||
if (value != null) {
|
||||
newState = new DecimalType(value);
|
||||
}
|
||||
break;
|
||||
case NIGHTMODE:
|
||||
value = getNightMode();
|
||||
if (value != null) {
|
||||
|
@ -1462,6 +1476,10 @@ public class ZonePlayerHandler extends BaseThingHandler implements UpnpIOPartici
|
|||
return stateMap.get("SubGain");
|
||||
}
|
||||
|
||||
public @Nullable String getHeightLevel() {
|
||||
return stateMap.get("HeightChannelLevel");
|
||||
}
|
||||
|
||||
public @Nullable String getTransportState() {
|
||||
return stateMap.get("TransportState");
|
||||
}
|
||||
|
@ -2079,6 +2097,10 @@ public class ZonePlayerHandler extends BaseThingHandler implements UpnpIOPartici
|
|||
MAX_SURROUND_LEVEL);
|
||||
}
|
||||
|
||||
public void setHeightLevel(Command command) {
|
||||
setEqualizerNumericSetting(command, "HeightChannelLevel", getHeightLevel(), MIN_HEIGHT_LEVEL, MAX_HEIGHT_LEVEL);
|
||||
}
|
||||
|
||||
public void setNightMode(Command command) {
|
||||
setEqualizerBooleanSetting(command, "NightMode");
|
||||
}
|
||||
|
|
|
@ -67,6 +67,7 @@
|
|||
<channel id="surroundmusicmode" typeId="surroundmusicmode"/>
|
||||
<channel id="surroundmusiclevel" typeId="surroundmusiclevel"/>
|
||||
<channel id="surroundtvlevel" typeId="surroundtvlevel"/>
|
||||
<channel id="heightlevel" typeId="heightlevel"/>
|
||||
</channels>
|
||||
|
||||
<properties>
|
||||
|
|
|
@ -66,6 +66,7 @@
|
|||
<channel id="surroundmusicmode" typeId="surroundmusicmode"/>
|
||||
<channel id="surroundmusiclevel" typeId="surroundmusiclevel"/>
|
||||
<channel id="surroundtvlevel" typeId="surroundtvlevel"/>
|
||||
<channel id="heightlevel" typeId="heightlevel"/>
|
||||
</channels>
|
||||
|
||||
<properties>
|
||||
|
|
|
@ -100,6 +100,13 @@
|
|||
<description>Play the given favorite entry. The favorite entry has to be predefined in the Sonos Controller app</description>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="heightlevel" advanced="true">
|
||||
<item-type>Number</item-type>
|
||||
<label>Height Level</label>
|
||||
<description>Set or get the height level adjustment</description>
|
||||
<state min="-10" max="10" step="1" readOnly="false" pattern="%d"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="led" advanced="true">
|
||||
<item-type>Switch</item-type>
|
||||
<label>Led</label>
|
||||
|
|
Loading…
Reference in New Issue