diff --git a/pom.xml b/pom.xml
index f3ea4a4..6a481ee 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
com.bwssystems.HABridge
ha-bridge
- 5.2.0RC13
+ 5.2.0RC14
jar
HA Bridge
diff --git a/src/main/java/com/bwssystems/HABridge/plugins/broadlink/BroadlinkHome.java b/src/main/java/com/bwssystems/HABridge/plugins/broadlink/BroadlinkHome.java
index 1003b6e..9a3808e 100644
--- a/src/main/java/com/bwssystems/HABridge/plugins/broadlink/BroadlinkHome.java
+++ b/src/main/java/com/bwssystems/HABridge/plugins/broadlink/BroadlinkHome.java
@@ -16,6 +16,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.bwssystems.HABridge.BridgeSettings;
+import com.bwssystems.HABridge.BridgeSettingsDescriptor;
import com.bwssystems.HABridge.Configuration;
import com.bwssystems.HABridge.Home;
import com.bwssystems.HABridge.api.CallItem;
@@ -44,6 +45,7 @@ public class BroadlinkHome implements Home {
private Boolean validBroadlink;
private boolean closed;
private Boolean isDevMode;
+ private BridgeSettingsDescriptor bridgeSettingsDesc;
public BroadlinkHome(BridgeSettings bridgeSettings) {
super();
@@ -55,62 +57,60 @@ public class BroadlinkHome implements Home {
@Override
public Home createHome(BridgeSettings bridgeSettings) {
broadlinkMap = null;
- BLDevice[] clients;
+ bridgeSettingsDesc = bridgeSettings.getBridgeSettingsDescriptor();
isDevMode = Boolean.parseBoolean(System.getProperty("dev.mode", "false"));
validBroadlink = bridgeSettings.getBridgeSettingsDescriptor().isValidBroadlink();
log.info("Broadlink Home created." + (validBroadlink ? "" : " No Broadlinks configured.") + (isDevMode ? " DevMode is set." : ""));
- if(validBroadlink) {
- broadlinkMap = new HashMap();
- int aDiscoverPort = Configuration.BROADLINK_DISCOVER_PORT;
- while(aDiscoverPort > 0) {
- try {
- log.info("Broadlink discover....");
- if(isDevMode) {
- clients = TestBLDevice.discoverDevices(InetAddress.getByName(bridgeSettings.getBridgeSettingsDescriptor().getUpnpConfigAddress()), aDiscoverPort, Configuration.BROADLINK_DISCONVER_TIMEOUT);
- }
- else
- clients = BLDevice.discoverDevices(InetAddress.getByName(bridgeSettings.getBridgeSettingsDescriptor().getUpnpConfigAddress()), aDiscoverPort, Configuration.BROADLINK_DISCONVER_TIMEOUT);
- if(clients.length <= 0) {
- log.warn("Did not discover any Broadlinks, try again with bridge reinitialization");
- broadlinkMap = null;
- validBroadlink = false;
- return this;
- }
- for(int i = 0; i < clients.length; i++) {
- if(clients[i].getDeviceType() != BLDevice.DEV_A1) {
- broadlinkMap.put(clients[i].getHost() + "-" + String.format("%04x", clients[i].getDeviceType()), clients[i]);
- log.debug("Adding Device to Map - host: " + clients[i].getHost() + ", device Type: " + clients[i].getDeviceDescription() + ", mac: " + (clients[i].getMac() == null ? "no Mac in client" : clients[i].getMac().getMacString()));
- } else {
- log.debug("Ignoring A1 Device - host: " + clients[i].getHost() + ", device Type: " + clients[i].getDeviceDescription() + ", mac: " + (clients[i].getMac() == null ? "no Mac in client" : clients[i].getMac().getMacString()));
- }
- }
- aDiscoverPort = 0;
- } catch (BindException e) {
- log.warn("Could not discover Broadlinks, Port in use, increasing by 11");
- aDiscoverPort += 11;
- if(aDiscoverPort > Configuration.BROADLINK_DISCOVER_PORT + 110)
- aDiscoverPort = 0;
- } catch (IOException e) {
- log.warn("Could not discover Broadlinks, with IO Exception", e);
- broadlinkMap = null;
- validBroadlink = false;
- aDiscoverPort = 0;
- }
- }
- }
return this;
}
@Override
public Object getItems(String type) {
+ BLDevice[] clients;
+ BroadlinkEntry theResponse = null;
+ List deviceList = new ArrayList();
log.debug("consolidating devices for Broadlink");
if(!validBroadlink)
return null;
- BroadlinkEntry theResponse = null;
+ broadlinkMap = new HashMap();
+ int aDiscoverPort = Configuration.BROADLINK_DISCOVER_PORT;
+ while(aDiscoverPort > 0) {
+ try {
+ log.info("Broadlink discover....");
+ if(isDevMode) {
+ clients = TestBLDevice.discoverDevices(InetAddress.getByName(bridgeSettingsDesc.getUpnpConfigAddress()), aDiscoverPort, Configuration.BROADLINK_DISCONVER_TIMEOUT);
+ }
+ else
+ clients = BLDevice.discoverDevices(InetAddress.getByName(bridgeSettingsDesc.getUpnpConfigAddress()), aDiscoverPort, Configuration.BROADLINK_DISCONVER_TIMEOUT);
+ if(clients.length <= 0) {
+ log.warn("Did not discover any Broadlinks.");
+ broadlinkMap = null;
+ return deviceList;
+ }
+ for(int i = 0; i < clients.length; i++) {
+ if(clients[i].getDeviceType() != BLDevice.DEV_A1) {
+ broadlinkMap.put(clients[i].getHost() + "-" + String.format("%04x", clients[i].getDeviceType()), clients[i]);
+ log.debug("Adding Device to Map - host: " + clients[i].getHost() + ", device Type: " + clients[i].getDeviceDescription() + ", mac: " + (clients[i].getMac() == null ? "no Mac in client" : clients[i].getMac().getMacString()));
+ } else {
+ log.debug("Ignoring A1 Device - host: " + clients[i].getHost() + ", device Type: " + clients[i].getDeviceDescription() + ", mac: " + (clients[i].getMac() == null ? "no Mac in client" : clients[i].getMac().getMacString()));
+ }
+ }
+ aDiscoverPort = 0;
+ } catch (BindException e) {
+ log.warn("Could not discover Broadlinks, Port in use, increasing by 11");
+ aDiscoverPort += 11;
+ if(aDiscoverPort > Configuration.BROADLINK_DISCOVER_PORT + 110)
+ aDiscoverPort = 0;
+ } catch (IOException e) {
+ log.warn("Could not discover Broadlinks, with IO Exception", e);
+ broadlinkMap = null;
+ validBroadlink = false;
+ aDiscoverPort = 0;
+ }
+ }
Iterator keys = broadlinkMap.keySet().iterator();
- List deviceList = new ArrayList();
while(keys.hasNext()) {
String key = keys.next();
theResponse = toEntry(broadlinkMap.get(key));
@@ -341,8 +341,10 @@ public class BroadlinkHome implements Home {
if(!validBroadlink)
return;
log.debug("Closing Home.");
- broadlinkMap.clear();
- broadlinkMap = null;
+ if(broadlinkMap != null) {
+ broadlinkMap.clear();
+ broadlinkMap = null;
+ }
if(closed) {
log.debug("Home is already closed....");
return;