diff --git a/bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/MieleBindingConstants.java b/bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/MieleBindingConstants.java index 718291825..e624be465 100644 --- a/bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/MieleBindingConstants.java +++ b/bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/MieleBindingConstants.java @@ -28,13 +28,14 @@ public class MieleBindingConstants { public static final String BINDING_ID = "miele"; public static final String APPLIANCE_ID = "uid"; - public static final String DEVICE_CLASS = "deviceClass"; - public static final String MODEL_PROPERTY_NAME = "model"; - public static final String PROTOCOL_ADAPTER_PROPERTY_NAME = "protocolAdapter"; - public static final String CONNECTION_TYPE_PROPERTY_NAME = "connectionType"; + + // Properties + public static final String PROPERTY_DEVICE_CLASS = "deviceClass"; + public static final String PROPERTY_PROTOCOL_ADAPTER = "protocolAdapter"; + public static final String PROPERTY_CONNECTION_TYPE = "connectionType"; + public static final String PROPERTY_CONNECTION_BAUD_RATE = "connectionBaudRate"; // JSON-RPC property names - public static final String SERIAL_NUMBER_PROPERTY_NAME = "serialNumber"; public static final String EXTENDED_DEVICE_STATE_PROPERTY_NAME = "extendedDeviceState"; public static final String STATE_PROPERTY_NAME = "state"; public static final String PROGRAM_ID_PROPERTY_NAME = "programId"; diff --git a/bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/discovery/MieleApplianceDiscoveryService.java b/bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/discovery/MieleApplianceDiscoveryService.java index 1bf413c60..f1a22d63d 100644 --- a/bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/discovery/MieleApplianceDiscoveryService.java +++ b/bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/discovery/MieleApplianceDiscoveryService.java @@ -30,6 +30,7 @@ import org.openhab.binding.miele.internal.handler.MieleBridgeHandler.HomeDevice; import org.openhab.core.config.discovery.AbstractDiscoveryService; import org.openhab.core.config.discovery.DiscoveryResult; import org.openhab.core.config.discovery.DiscoveryResultBuilder; +import org.openhab.core.thing.Thing; import org.openhab.core.thing.ThingTypeUID; import org.openhab.core.thing.ThingUID; import org.slf4j.Logger; @@ -96,24 +97,30 @@ public class MieleApplianceDiscoveryService extends AbstractDiscoveryService imp ThingUID thingUID = getThingUID(appliance); if (thingUID != null) { ThingUID bridgeUID = mieleBridgeHandler.getThing().getUID(); - Map<String, Object> properties = new HashMap<>(2); + Map<String, Object> properties = new HashMap<>(9); FullyQualifiedApplianceIdentifier applianceIdentifier = appliance.getApplianceIdentifier(); - properties.put(MODEL_PROPERTY_NAME, appliance.getApplianceModel()); + properties.put(Thing.PROPERTY_VENDOR, appliance.Vendor); + properties.put(Thing.PROPERTY_MODEL_ID, appliance.getApplianceModel()); + properties.put(Thing.PROPERTY_SERIAL_NUMBER, appliance.getSerialNumber()); + properties.put(Thing.PROPERTY_FIRMWARE_VERSION, appliance.getFirmwareVersion()); + properties.put(PROPERTY_PROTOCOL_ADAPTER, appliance.ProtocolAdapterName); + properties.put(APPLIANCE_ID, applianceIdentifier.getApplianceId()); String deviceClass = appliance.getDeviceClass(); if (deviceClass != null) { - properties.put(DEVICE_CLASS, deviceClass); + properties.put(PROPERTY_DEVICE_CLASS, deviceClass); } - properties.put(PROTOCOL_ADAPTER_PROPERTY_NAME, appliance.ProtocolAdapterName); - properties.put(APPLIANCE_ID, applianceIdentifier.getApplianceId()); - properties.put(SERIAL_NUMBER_PROPERTY_NAME, appliance.getSerialNumber()); String connectionType = appliance.getConnectionType(); if (connectionType != null) { - properties.put(CONNECTION_TYPE_PROPERTY_NAME, connectionType); + properties.put(PROPERTY_CONNECTION_TYPE, connectionType); + } + String connectionBaudRate = appliance.getConnectionBaudRate(); + if (connectionBaudRate != null) { + properties.put(PROPERTY_CONNECTION_BAUD_RATE, connectionBaudRate); } DiscoveryResult discoveryResult = DiscoveryResultBuilder.create(thingUID).withProperties(properties) - .withBridge(bridgeUID).withLabel((String) properties.get(DEVICE_CLASS)) + .withBridge(bridgeUID).withLabel(deviceClass != null ? deviceClass : appliance.getApplianceModel()) .withRepresentationProperty(APPLIANCE_ID).build(); thingDiscovered(discoveryResult); diff --git a/bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/MieleApplianceHandler.java b/bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/MieleApplianceHandler.java index 4b454e6c8..fa6553983 100644 --- a/bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/MieleApplianceHandler.java +++ b/bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/MieleApplianceHandler.java @@ -244,7 +244,7 @@ public abstract class MieleApplianceHandler<E extends Enum<E> & ApplianceChannel metaDataCache.put(new StringBuilder().append(dp.Name).toString().trim(), metadata); } - if (dp.Name.equals(EXTENDED_DEVICE_STATE_PROPERTY_NAME)) { + if (EXTENDED_DEVICE_STATE_PROPERTY_NAME.equals(dp.Name)) { if (!dp.Value.isEmpty()) { byte[] extendedStateBytes = DeviceUtil.stringToBytes(dp.Value); logger.trace("Extended device state for {}: {}", getThing().getUID(), @@ -350,16 +350,22 @@ public abstract class MieleApplianceHandler<E extends Enum<E> & ApplianceChannel if (applianceId.equals(applianceIdentifier.getApplianceId())) { @NonNull Map<@NonNull String, @NonNull String> properties = editProperties(); - properties.put(MODEL_PROPERTY_NAME, appliance.getApplianceModel()); + properties.put(Thing.PROPERTY_VENDOR, appliance.Vendor); + properties.put(Thing.PROPERTY_MODEL_ID, appliance.getApplianceModel()); + properties.put(Thing.PROPERTY_SERIAL_NUMBER, appliance.getSerialNumber()); + properties.put(Thing.PROPERTY_FIRMWARE_VERSION, appliance.getFirmwareVersion()); + properties.put(PROPERTY_PROTOCOL_ADAPTER, appliance.ProtocolAdapterName); String deviceClass = appliance.getDeviceClass(); if (deviceClass != null) { - properties.put(DEVICE_CLASS, deviceClass); + properties.put(PROPERTY_DEVICE_CLASS, deviceClass); } - properties.put(PROTOCOL_ADAPTER_PROPERTY_NAME, appliance.ProtocolAdapterName); - properties.put(SERIAL_NUMBER_PROPERTY_NAME, appliance.getSerialNumber()); String connectionType = appliance.getConnectionType(); if (connectionType != null) { - properties.put(CONNECTION_TYPE_PROPERTY_NAME, connectionType); + properties.put(PROPERTY_CONNECTION_TYPE, connectionType); + } + String connectionBaudRate = appliance.getConnectionBaudRate(); + if (connectionBaudRate != null) { + properties.put(PROPERTY_CONNECTION_BAUD_RATE, connectionBaudRate); } updateProperties(properties); updateStatus(ThingStatus.ONLINE); diff --git a/bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/MieleBridgeHandler.java b/bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/MieleBridgeHandler.java index a10efeb43..464a43398 100644 --- a/bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/MieleBridgeHandler.java +++ b/bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/MieleBridgeHandler.java @@ -143,6 +143,11 @@ public class MieleBridgeHandler extends BaseBridgeHandler { return Properties.get("serial.number").getAsString(); } + @NonNull + public String getFirmwareVersion() { + return Properties.get("firmware.version").getAsString(); + } + @NonNull public String getRemoteUid() { JsonElement remoteUid = Properties.get("remote.uid"); @@ -163,6 +168,14 @@ public class MieleBridgeHandler extends BaseBridgeHandler { return connectionType.getAsString(); } + public String getConnectionBaudRate() { + JsonElement baudRate = Properties.get("connection.baud.rate"); + if (baudRate == null) { + return null; + } + return baudRate.getAsString(); + } + @NonNull public String getApplianceModel() { JsonElement model = Properties.get("miele.model");