diff --git a/extensions/binding/org.eclipse.smarthome.binding.sonos/ESH-INF/thing/CONNECT.xml b/extensions/binding/org.eclipse.smarthome.binding.sonos/ESH-INF/thing/CONNECT.xml
index f3d96130a08..d75f91b2245 100644
--- a/extensions/binding/org.eclipse.smarthome.binding.sonos/ESH-INF/thing/CONNECT.xml
+++ b/extensions/binding/org.eclipse.smarthome.binding.sonos/ESH-INF/thing/CONNECT.xml
@@ -59,7 +59,7 @@
SONOS
-
+ CONNECT
diff --git a/extensions/binding/org.eclipse.smarthome.binding.sonos/src/main/java/org/eclipse/smarthome/binding/sonos/SonosBindingConstants.java b/extensions/binding/org.eclipse.smarthome.binding.sonos/src/main/java/org/eclipse/smarthome/binding/sonos/SonosBindingConstants.java
index d82c9e3adc2..5193880eb97 100644
--- a/extensions/binding/org.eclipse.smarthome.binding.sonos/src/main/java/org/eclipse/smarthome/binding/sonos/SonosBindingConstants.java
+++ b/extensions/binding/org.eclipse.smarthome.binding.sonos/src/main/java/org/eclipse/smarthome/binding/sonos/SonosBindingConstants.java
@@ -97,5 +97,7 @@ public class SonosBindingConstants {
// List of properties
public static final String IDENTIFICATION = "identification";
+ public static final String MAC_ADDRESS = "macAddress";
+ public static final String IP_ADDRESS = "ipAddress";
}
diff --git a/extensions/binding/org.eclipse.smarthome.binding.sonos/src/main/java/org/eclipse/smarthome/binding/sonos/handler/ZonePlayerHandler.java b/extensions/binding/org.eclipse.smarthome.binding.sonos/src/main/java/org/eclipse/smarthome/binding/sonos/handler/ZonePlayerHandler.java
index 7ad3ec4c80f..c09d7059ae1 100644
--- a/extensions/binding/org.eclipse.smarthome.binding.sonos/src/main/java/org/eclipse/smarthome/binding/sonos/handler/ZonePlayerHandler.java
+++ b/extensions/binding/org.eclipse.smarthome.binding.sonos/src/main/java/org/eclipse/smarthome/binding/sonos/handler/ZonePlayerHandler.java
@@ -871,6 +871,37 @@ protected void updateZoneInfo() {
for (String variable : result.keySet()) {
this.onValueReceived(variable, result.get(variable), "DeviceProperties");
}
+
+ Map properties = editProperties();
+ boolean update = false;
+ if (StringUtils.isNotEmpty(this.stateMap.get("HardwareVersion"))
+ && !this.stateMap.get("HardwareVersion").equals(properties.get(Thing.PROPERTY_HARDWARE_VERSION))) {
+ update = true;
+ properties.put(Thing.PROPERTY_HARDWARE_VERSION, this.stateMap.get("HardwareVersion"));
+ }
+ if (StringUtils.isNotEmpty(this.stateMap.get("DisplaySoftwareVersion")) && !this.stateMap
+ .get("DisplaySoftwareVersion").equals(properties.get(Thing.PROPERTY_FIRMWARE_VERSION))) {
+ update = true;
+ properties.put(Thing.PROPERTY_FIRMWARE_VERSION, this.stateMap.get("DisplaySoftwareVersion"));
+ }
+ if (StringUtils.isNotEmpty(this.stateMap.get("SerialNumber"))
+ && !this.stateMap.get("SerialNumber").equals(properties.get(Thing.PROPERTY_SERIAL_NUMBER))) {
+ update = true;
+ properties.put(Thing.PROPERTY_SERIAL_NUMBER, this.stateMap.get("SerialNumber"));
+ }
+ if (StringUtils.isNotEmpty(this.stateMap.get("MACAddress"))
+ && !this.stateMap.get("MACAddress").equals(properties.get(MAC_ADDRESS))) {
+ update = true;
+ properties.put(MAC_ADDRESS, this.stateMap.get("MACAddress"));
+ }
+ if (StringUtils.isNotEmpty(this.stateMap.get("IPAddress"))
+ && !this.stateMap.get("IPAddress").equals(properties.get(IP_ADDRESS))) {
+ update = true;
+ properties.put(IP_ADDRESS, this.stateMap.get("IPAddress"));
+ }
+ if (update) {
+ updateProperties(properties);
+ }
}
public String getCoordinator() {
@@ -1064,7 +1095,9 @@ public SonosMetaData getEnqueuedTransportURIMetaData() {
}
public String getMACAddress() {
- updateZoneInfo();
+ if (StringUtils.isEmpty(stateMap.get("MACAddress"))) {
+ updateZoneInfo();
+ }
return stateMap.get("MACAddress");
}
@@ -1704,8 +1737,7 @@ public void setRepeat(Command command) {
public Boolean isShuffleActive() {
return ((stateMap.get("CurrentPlayMode") != null) && stateMap.get("CurrentPlayMode").startsWith("SHUFFLE"))
- ? true
- : false;
+ ? true : false;
}
public String getRepeatMode() {