@Override
public void onApplianceStateChanged(String UID, DeviceClassObject dco) {
- String myUID = (getThing().getProperties().get(PROTOCOL_PROPERTY_NAME))
- + (String) getThing().getConfiguration().getProperties().get(APPLIANCE_ID);
+ String myUID = (String) getThing().getConfiguration().getProperties().get(APPLIANCE_ID);
String modelID = StringUtils.right(dco.DeviceClass,
dco.DeviceClass.length() - new String("com.miele.xgw3000.gateway.hdm.deviceclasses.Miele").length());
@Override
public void onAppliancePropertyChanged(String UID, DeviceProperty dp) {
- String myUID = (getThing().getProperties().get(PROTOCOL_PROPERTY_NAME))
- + (String) getThing().getConfiguration().getProperties().get(APPLIANCE_ID);
+ String myUID = (String) getThing().getConfiguration().getProperties().get(APPLIANCE_ID);
if (myUID.equals(UID)) {
try {
@Override
public void onApplianceRemoved(HomeDevice appliance) {
if (uid != null) {
- if (uid.equals(appliance.UID)) {
+ if (uid.equals(appliance.getApplianceId())) {
updateStatus(ThingStatus.OFFLINE);
}
}
@Override
public void onApplianceAdded(HomeDevice appliance) {
if (uid != null) {
- if (uid.equals(appliance.UID)) {
+ if (uid.equals(appliance.getApplianceId())) {
+ Map<String, String> properties = editProperties();
+ properties.put(PROTOCOL_PROPERTY_NAME, appliance.getProtocol());
+ updateProperties(properties);
+
updateStatus(ThingStatus.ONLINE);
}
}
for (Thing appliance : getThing().getThings()) {
if (appliance.getStatus() == ThingStatus.ONLINE) {
- String UID = appliance.getProperties().get(PROTOCOL_PROPERTY_NAME)
- + (String) appliance.getConfiguration().getProperties().get(APPLIANCE_ID);
+ String applianceId = (String) appliance.getConfiguration().getProperties()
+ .get(APPLIANCE_ID);
+ String protocol = appliance.getProperties().get(PROTOCOL_PROPERTY_NAME);
+ if (protocol == null) {
+ logger.error("Protocol property is missing for {}", applianceId);
+ continue;
+ }
+ String UID = protocol + applianceId;
Object[] args = new Object[2];
args[0] = UID;
DeviceClassObject dco = gson.fromJson(obj, DeviceClassObject.class);
for (ApplianceStatusListener listener : applianceStatusListeners) {
- listener.onApplianceStateChanged(UID, dco);
+ listener.onApplianceStateChanged(applianceId, dco);
}
} catch (Exception e) {
logger.debug("An exception occurred while quering an appliance : '{}'",