diff --git a/bundles/org.openhab.binding.sonos/README.md b/bundles/org.openhab.binding.sonos/README.md
index 081680c3d..b706f3260 100644
--- a/bundles/org.openhab.binding.sonos/README.md
+++ b/bundles/org.openhab.binding.sonos/README.md
@@ -55,6 +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 |
+| batterylevel | Number | R | Current battery level | Move |
| clearqueue | Switch | W | Suppress all songs from the current queue | all |
| control | Player | RW | Control the Zone Player, e.g. PLAY/PAUSE/NEXT/PREVIOUS | all |
| coordinator | String | R | UDN of the coordinator for the current group | all |
diff --git a/bundles/org.openhab.binding.sonos/src/main/java/org/openhab/binding/sonos/internal/SonosBindingConstants.java b/bundles/org.openhab.binding.sonos/src/main/java/org/openhab/binding/sonos/internal/SonosBindingConstants.java
index 5cb4daafd..b437c0715 100644
--- a/bundles/org.openhab.binding.sonos/src/main/java/org/openhab/binding/sonos/internal/SonosBindingConstants.java
+++ b/bundles/org.openhab.binding.sonos/src/main/java/org/openhab/binding/sonos/internal/SonosBindingConstants.java
@@ -83,6 +83,8 @@ public class SonosBindingConstants {
public static final String ALARMPROPERTIES = "alarmproperties";
public static final String ALARMRUNNING = "alarmrunning";
public static final String BASS = "bass";
+ public static final String BATTERYCHARGING = "batterycharging";
+ public static final String BATTERYLEVEL = "batterylevel";
public static final String CLEARQUEUE = "clearqueue";
public static final String CONTROL = "control";
public static final String COORDINATOR = "coordinator";
diff --git a/bundles/org.openhab.binding.sonos/src/main/java/org/openhab/binding/sonos/internal/handler/ZonePlayerHandler.java b/bundles/org.openhab.binding.sonos/src/main/java/org/openhab/binding/sonos/internal/handler/ZonePlayerHandler.java
index f335fc4cf..e4b59fbb4 100644
--- a/bundles/org.openhab.binding.sonos/src/main/java/org/openhab/binding/sonos/internal/handler/ZonePlayerHandler.java
+++ b/bundles/org.openhab.binding.sonos/src/main/java/org/openhab/binding/sonos/internal/handler/ZonePlayerHandler.java
@@ -689,6 +689,10 @@ public class ZonePlayerHandler extends BaseThingHandler implements UpnpIOPartici
stateDescriptionProvider.setStateOptions(new ChannelUID(getThing().getUID(), RADIO), options);
}
break;
+ case "MoreInfo":
+ updateChannel(BATTERYCHARGING);
+ updateChannel(BATTERYLEVEL);
+ break;
default:
break;
}
@@ -957,6 +961,18 @@ public class ZonePlayerHandler extends BaseThingHandler implements UpnpIOPartici
newState = new StringType(value);
}
break;
+ case BATTERYCHARGING:
+ value = extractInfoFromMoreInfo("BattChg");
+ if (value != null) {
+ newState = OnOffType.from("CHARGING".equalsIgnoreCase(value));
+ }
+ break;
+ case BATTERYLEVEL:
+ value = extractInfoFromMoreInfo("RawBattPct");
+ if (value != null) {
+ newState = new DecimalType(value);
+ }
+ break;
default:
newState = null;
break;
@@ -3225,4 +3241,18 @@ public class ZonePlayerHandler extends BaseThingHandler implements UpnpIOPartici
int seconds = Integer.parseInt(units[2]);
return 3600 * hours + 60 * minutes + seconds;
}
+
+ private @Nullable String extractInfoFromMoreInfo(String searchedInfo) {
+ String value = stateMap.get("MoreInfo");
+ if (value != null) {
+ String[] fields = value.split(",");
+ for (int i = 0; i < fields.length; i++) {
+ String[] pair = fields[i].trim().split(":");
+ if (pair.length == 2 && searchedInfo.equalsIgnoreCase(pair[0].trim())) {
+ return pair[1].trim();
+ }
+ }
+ }
+ return null;
+ }
}
diff --git a/bundles/org.openhab.binding.sonos/src/main/resources/OH-INF/thing/Move.xml b/bundles/org.openhab.binding.sonos/src/main/resources/OH-INF/thing/Move.xml
index e26a1c86c..1bca40910 100644
--- a/bundles/org.openhab.binding.sonos/src/main/resources/OH-INF/thing/Move.xml
+++ b/bundles/org.openhab.binding.sonos/src/main/resources/OH-INF/thing/Move.xml
@@ -53,6 +53,9 @@
+
+
+
diff --git a/bundles/org.openhab.binding.sonos/src/main/resources/OH-INF/thing/channels.xml b/bundles/org.openhab.binding.sonos/src/main/resources/OH-INF/thing/channels.xml
index eaaeaa44d..6fc4cd4e0 100644
--- a/bundles/org.openhab.binding.sonos/src/main/resources/OH-INF/thing/channels.xml
+++ b/bundles/org.openhab.binding.sonos/src/main/resources/OH-INF/thing/channels.xml
@@ -350,4 +350,12 @@
Play the line-in of the the Zone Player corresponding to the given UIN
+
+
+ Switch
+
+ Indicator set to ON when the battery is charging
+
+
+