]> git.basschouten.com Git - openhab-addons.git/commitdiff
[sonos] Add support for Move 2 (#15706)
authorJacob Laursen <jacob-github@vindvejr.dk>
Sat, 7 Oct 2023 14:45:52 +0000 (16:45 +0200)
committerGitHub <noreply@github.com>
Sat, 7 Oct 2023 14:45:52 +0000 (16:45 +0200)
* Add support for Move 2

Resolves #15702

---------

Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
bundles/org.openhab.binding.sonos/README.md
bundles/org.openhab.binding.sonos/src/main/java/org/openhab/binding/sonos/internal/SonosBindingConstants.java
bundles/org.openhab.binding.sonos/src/main/resources/OH-INF/i18n/sonos.properties
bundles/org.openhab.binding.sonos/src/main/resources/OH-INF/thing/Move2.xml [new file with mode: 0644]

index d2731c89b86d6ea7e4aa7851877e978c0c7d014f..1b532f11d82aeadb882257e0ecee893e9462d208 100644 (file)
@@ -11,11 +11,11 @@ This happens because of a TTL=1 for ALIVE packets send by Sonos devices, resulti
 ## Supported Things
 
 All available Sonos (playback) devices are supported by this binding.
-This includes the One, One SL, Move, Roam, Roam SL, Play:1, Play:3, Play:5, Five, Era 100, Era 300, Connect, Connect:Amp, Port, Amp, SYMFONISK, Playbar, Playbase, Beam, Arc, Arc SL and Sub.
+This includes the One, One SL, Move, Move 2, Roam, Roam SL, Play:1, Play:3, Play:5, Five, Era 100, Era 300, Connect, Connect:Amp, Port, Amp, SYMFONISK, Playbar, Playbase, Beam, Arc, Arc SL and Sub.
 The Bridge and Boost are not supported, but these devices do only have an auxiliary role in the Sonos network and do not have any playback capability.
 All supported Sonos devices are registered as an audio sink in the framework.
 
-When being defined in a \*.things file, the specific thing types One, OneSL, Move, Roam, RoamSL, PLAY1, PLAY3, PLAY5, Five, Era100, Era300, SYMFONISK, PLAYBAR, PLAYBASE, Beam, Arc, ArcSL, CONNECT, CONNECTAMP, Port and Amp should be used.
+When being defined in a \*.things file, the specific thing types One, OneSL, Move, Move2, Roam, RoamSL, PLAY1, PLAY3, PLAY5, Five, Era100, Era300, SYMFONISK, PLAYBAR, PLAYBASE, Beam, Arc, ArcSL, CONNECT, CONNECTAMP, Port and Amp should be used.
 
 Please note that these thing types are case sensitive (you need to define them **exactly as stated above**).
 
@@ -55,8 +55,8 @@ The devices support the following channels:
 | alarmproperties      | String    | R           | Properties of the alarm currently running                                                                                                                 | all                                                             |
 | alarmrunning         | Switch    | R           | Set to ON if the alarm was triggered                                                                                                                      | all                                                             |
 | bass                 | Number    | RW          | Set or get the bass level adjustment (value in range -10 / 10)                                                                                            | all                                                             |
-| batterycharging      | Switch    | R           | Indicator set to ON when the battery is charging                                                                                                          | Move, Roam, RoamSL                                              |
-| batterylevel         | Number    | R           | Current battery level                                                                                                                                     | Move, Roam, RoamSL                                              |
+| batterycharging      | Switch    | R           | Indicator set to ON when the battery is charging                                                                                                          | Move, Move2, Roam, RoamSL                                       |
+| batterylevel         | Number    | R           | Current battery level                                                                                                                                     | Move, Move2, Roam, RoamSL                                       |
 | clearqueue           | Switch    | W           | Suppress all songs from the current queue                                                                                                                 | all                                                             |
 | codec                | String    | R           | Name of codec currently being decoded                                                                                                                     | Arc, ArcSL, PLAYBAR, PLAYBASE, Beam, Amp                        |
 | control              | Player    | RW          | Control the Zone Player, e.g. PLAY/PAUSE/NEXT/PREVIOUS                                                                                                    | all                                                             |
@@ -72,12 +72,12 @@ The devices support the following channels:
 | 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, ArcSL                                                      |
 | 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, Five, Era100, Era300, CONNECT, CONNECTAMP, PLAYBAR, PLAYBASE, Beam, Port |
+| linein               | Switch    | R           | Indicator set to ON when the line-in of the Zone Player is connected                                                                                      | PLAY5, Five, Move 2, Era100, Era300, 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                                                             |
 | digitallinein        | Switch    | R           | Indicator set to ON when the digital line-in of the Zone Player is connected                                                                              | Amp                                                             |
 | localcoordinator     | Switch    | R           | Indicator set to ON if the this Zone Player is the Zone Group Coordinator                                                                                 | all                                                             |
 | loudness             | Switch    | RW          | Enable or disable the loudness                                                                                                                            | all                                                             |
-| microphone           | Switch    | R           | Indicator set to ON when the microphone is enabled                                                                                                        | Arc, Beam, Move, One, Roam, Era100, Era300                      |
+| microphone           | Switch    | R           | Indicator set to ON when the microphone is enabled                                                                                                        | Arc, Beam, Move, Move2, One, Roam, Era100, Era300               |
 | mute                 | Switch    | RW          | Set or get the mute state of the master volume of the Zone Player                                                                                         | all                                                             |
 | nightmode            | Switch    | RW          | Enable or disable the night mode feature                                                                                                                  | PLAYBAR, PLAYBASE, Beam, Amp                                    |
 | notificationsound    | String    | W           | Play a notification sound by a given URI                                                                                                                  | all                                                             |
index 4ef3615db5111903b9a63e93c5b1d28da1bff297..6035a9bb5f57badb42375f5a0ddb7160a338aba2 100644 (file)
@@ -51,6 +51,7 @@ public class SonosBindingConstants {
     public static final ThingTypeUID ARC_THING_TYPE_UID = new ThingTypeUID(BINDING_ID, "Arc");
     public static final ThingTypeUID ARC_SL_THING_TYPE_UID = new ThingTypeUID(BINDING_ID, "ArcSL");
     public static final ThingTypeUID MOVE_THING_TYPE_UID = new ThingTypeUID(BINDING_ID, "Move");
+    public static final ThingTypeUID MOVE2_THING_TYPE_UID = new ThingTypeUID(BINDING_ID, "Move2");
     public static final ThingTypeUID ROAM_THING_TYPE_UID = new ThingTypeUID(BINDING_ID, "Roam");
     public static final ThingTypeUID ROAM_SL_THING_TYPE_UID = new ThingTypeUID(BINDING_ID, "RoamSL");
     public static final ThingTypeUID ERA_100_THING_TYPE_UID = new ThingTypeUID(BINDING_ID, "Era100");
@@ -60,7 +61,7 @@ public class SonosBindingConstants {
     public static final Set<ThingTypeUID> WITH_LINEIN_THING_TYPES_UIDS = Set.of(PLAY5_THING_TYPE_UID,
             FIVE_THING_TYPE_UID, PLAYBAR_THING_TYPE_UID, PLAYBASE_THING_TYPE_UID, BEAM_THING_TYPE_UID,
             CONNECT_THING_TYPE_UID, CONNECTAMP_THING_TYPE_UID, PORT_THING_TYPE_UID, ARC_THING_TYPE_UID,
-            ARC_SL_THING_TYPE_UID, ERA_100_THING_TYPE_UID, ERA_300_THING_TYPE_UID);
+            ARC_SL_THING_TYPE_UID, MOVE2_THING_TYPE_UID, ERA_100_THING_TYPE_UID, ERA_300_THING_TYPE_UID);
 
     public static final Set<ThingTypeUID> WITH_ANALOG_LINEIN_THING_TYPES_UIDS = Set.of(AMP_THING_TYPE_UID);
 
@@ -71,7 +72,8 @@ public class SonosBindingConstants {
             FIVE_THING_TYPE_UID, PLAYBAR_THING_TYPE_UID, PLAYBASE_THING_TYPE_UID, BEAM_THING_TYPE_UID,
             CONNECT_THING_TYPE_UID, CONNECTAMP_THING_TYPE_UID, PORT_THING_TYPE_UID, AMP_THING_TYPE_UID,
             SYMFONISK_THING_TYPE_UID, ARC_THING_TYPE_UID, ARC_SL_THING_TYPE_UID, MOVE_THING_TYPE_UID,
-            ROAM_THING_TYPE_UID, ROAM_SL_THING_TYPE_UID, ERA_100_THING_TYPE_UID, ERA_300_THING_TYPE_UID);
+            MOVE2_THING_TYPE_UID, ROAM_THING_TYPE_UID, ROAM_SL_THING_TYPE_UID, ERA_100_THING_TYPE_UID,
+            ERA_300_THING_TYPE_UID);
 
     public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = new HashSet<>(SUPPORTED_KNOWN_THING_TYPES_UIDS);
     static {
index b30363615c436eeae70187bd0de624cb38dd67d9..0e9c06e8e73348695610922342b392b6be18ba5f 100644 (file)
@@ -32,6 +32,8 @@ thing-type.sonos.Five.label = Five
 thing-type.sonos.Five.description = Represents SONOS Five speaker
 thing-type.sonos.Move.label = Move
 thing-type.sonos.Move.description = Represents SONOS Move speaker
+thing-type.sonos.Move2.label = Move 2
+thing-type.sonos.Move2.description = Represents SONOS Move 2 speaker
 thing-type.sonos.One.label = One
 thing-type.sonos.One.description = Represents SONOS One speaker
 thing-type.sonos.OneSL.label = One SL
@@ -95,6 +97,7 @@ channel-type.sonos.codec.state.option.PCM20 = Dolby Multichannel PCM 2.0
 channel-type.sonos.codec.state.option.DD51 = Dolby Digital 5.1
 channel-type.sonos.codec.state.option.DDPlus51 = Dolby Digital Plus 5.1
 channel-type.sonos.codec.state.option.PCM51 = Dolby Multichannel PCM 5.1
+channel-type.sonos.codec.state.option.DTS51 = DTS Surround 5.1
 channel-type.sonos.coordinator.label = Coordinator
 channel-type.sonos.coordinator.description = UDN of the coordinator for the current group
 channel-type.sonos.currentalbum.label = Current Album
diff --git a/bundles/org.openhab.binding.sonos/src/main/resources/OH-INF/thing/Move2.xml b/bundles/org.openhab.binding.sonos/src/main/resources/OH-INF/thing/Move2.xml
new file mode 100644 (file)
index 0000000..7877c64
--- /dev/null
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<thing:thing-descriptions bindingId="sonos"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
+       xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
+
+       <!-- Sonos Move 2 Thing Type -->
+       <thing-type id="Move2" listed="false">
+               <label>Move 2</label>
+               <description>Represents SONOS Move 2 speaker</description>
+
+               <channels>
+                       <channel id="add" typeId="add"/>
+                       <channel id="alarm" typeId="alarm"/>
+                       <channel id="alarmproperties" typeId="alarmproperties"/>
+                       <channel id="alarmrunning" typeId="alarmrunning"/>
+                       <channel id="bass" typeId="bass"/>
+                       <channel id="control" typeId="system.media-control"/>
+                       <channel id="currentalbum" typeId="currentalbum"/>
+                       <channel id="currentalbumart" typeId="currentalbumart"/>
+                       <channel id="currentalbumarturl" typeId="currentalbumarturl"/>
+                       <channel id="currentartist" typeId="system.media-artist"/>
+                       <channel id="currenttitle" typeId="system.media-title"/>
+                       <channel id="currenttrack" typeId="currenttrack"/>
+                       <channel id="shuffle" typeId="shuffle"/>
+                       <channel id="repeat" typeId="repeat"/>
+                       <channel id="favorite" typeId="favorite"/>
+                       <channel id="led" typeId="led"/>
+                       <channel id="localcoordinator" typeId="localcoordinator"/>
+                       <channel id="loudness" typeId="loudness"/>
+                       <channel id="mute" typeId="system.mute"/>
+                       <channel id="notificationsound" typeId="notificationsound"/>
+                       <channel id="playlist" typeId="playlist"/>
+                       <channel id="clearqueue" typeId="clearqueue"/>
+                       <channel id="playlinein" typeId="playlinein"/>
+                       <channel id="playqueue" typeId="playqueue"/>
+                       <channel id="playtrack" typeId="playtrack"/>
+                       <channel id="playuri" typeId="playuri"/>
+                       <channel id="publicaddress" typeId="publicaddress"/>
+                       <channel id="radio" typeId="radio"/>
+                       <channel id="remove" typeId="remove"/>
+                       <channel id="restore" typeId="restore"/>
+                       <channel id="restoreall" typeId="restoreall"/>
+                       <channel id="save" typeId="save"/>
+                       <channel id="saveall" typeId="saveall"/>
+                       <channel id="snooze" typeId="snooze"/>
+                       <channel id="standalone" typeId="standalone"/>
+                       <channel id="state" typeId="state"/>
+                       <channel id="stop" typeId="stop"/>
+                       <channel id="treble" typeId="treble"/>
+                       <channel id="tuneinstationid" typeId="tuneinstationid"/>
+                       <channel id="volume" typeId="system.volume"/>
+                       <channel id="zonegroupid" typeId="zonegroupid"/>
+                       <channel id="zonename" typeId="zonename"/>
+                       <channel id="coordinator" typeId="coordinator"/>
+                       <channel id="sleeptimer" typeId="sleeptimer"/>
+                       <channel id="currenttransporturi" typeId="currenttransporturi"/>
+                       <channel id="currenttrackuri" typeId="currenttrackuri"/>
+                       <!-- Extended SONOS channels -->
+                       <channel id="batterycharging" typeId="batterycharging"/>
+                       <channel id="batterylevel" typeId="system.battery-level"/>
+                       <channel id="linein" typeId="linein"/>
+                       <channel id="microphone" typeId="microphone"/>
+               </channels>
+
+               <properties>
+                       <property name="vendor">SONOS</property>
+                       <property name="modelId">Move 2</property>
+               </properties>
+
+               <representation-property>udn</representation-property>
+
+               <config-description-ref uri="thing-type:sonos:zoneplayer"/>
+       </thing-type>
+</thing:thing-descriptions>