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() {