[openwebnet] Fixes #8524 and #8547, updated openwebnet4j lib to 0.3.1. Updated README (#8645)

Signed-off-by: Massimo Valla <mvcode00@gmail.com>
This commit is contained in:
M Valla
2020-10-05 17:50:38 +02:00
committed by GitHub
parent a857592f07
commit e32a262c30
4 changed files with 29 additions and 9 deletions

View File

@@ -314,16 +314,26 @@ public class OpenWebNetBridgeHandler extends ConfigStatusBridgeHandler implement
/**
* Un-register a device from this bridge handler
*
* @param oId the device OpenWebNet id
* @param ownId the device OpenWebNet id
*/
protected void unregisterDevice(String oId) {
if (registeredDevices.remove(oId) != null) {
logger.debug("un-registered device ownId={}", oId);
protected void unregisterDevice(String ownId) {
if (registeredDevices.remove(ownId) != null) {
logger.debug("un-registered device ownId={}", ownId);
} else {
logger.warn("could not un-register ownId={} (not found)", oId);
logger.warn("could not un-register ownId={} (not found)", ownId);
}
}
/**
* Get an already registered device on this bridge handler
*
* @param ownId the device OpenWebNet id
* @return the registered device Thing handler or null if the id cannot be found
*/
public @Nullable OpenWebNetThingHandler getRegisteredDevice(String ownId) {
return registeredDevices.get(ownId);
}
@Override
public void onEventMessage(@Nullable OpenMessage msg) {
logger.trace("RECEIVED <<<<< {}", msg);

View File

@@ -138,6 +138,15 @@ public class OpenWebNetDeviceDiscoveryService extends AbstractDiscoveryService
deviceWho = baseMsg.getWho();
}
}
String ownId = bridgeHandler.ownIdFromWhoWhere(where, deviceWho);
if (thingTypeUID == OpenWebNetBindingConstants.THING_TYPE_BUS_ON_OFF_SWITCH) {
if (bridgeHandler.getRegisteredDevice(ownId) != null) {
logger.debug("dimmer/switch with WHERE={} already registered, skipping this discovery result", where);
return;
}
}
String tId = bridgeHandler.thingIdFromWhere(where);
ThingUID thingUID = new ThingUID(thingTypeUID, bridgeUID, tId);
@@ -159,7 +168,7 @@ public class OpenWebNetDeviceDiscoveryService extends AbstractDiscoveryService
}
Map<String, Object> properties = new HashMap<>(2);
properties.put(OpenWebNetBindingConstants.CONFIG_PROPERTY_WHERE, bridgeHandler.normalizeWhere(where));
properties.put(OpenWebNetBindingConstants.PROPERTY_OWNID, bridgeHandler.ownIdFromWhoWhere(where, deviceWho));
properties.put(OpenWebNetBindingConstants.PROPERTY_OWNID, ownId);
if (thingTypeUID == OpenWebNetBindingConstants.THING_TYPE_GENERIC_DEVICE) {
thingLabel = thingLabel + " (WHO=" + deviceWho + ", WHERE=" + whereLabel + ")";
} else {