Updated with debug info.

This commit is contained in:
bsamuels
2018-02-05 15:14:40 -06:00
parent 1a8a6f7a6f
commit 1a936c631c
2 changed files with 47 additions and 45 deletions

View File

@@ -5,7 +5,7 @@
<groupId>com.bwssystems.HABridge</groupId>
<artifactId>ha-bridge</artifactId>
<version>5.2.0RC13</version>
<version>5.2.0RC14</version>
<packaging>jar</packaging>
<name>HA Bridge</name>

View File

@@ -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<String, BLDevice>();
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<BroadlinkEntry> deviceList = new ArrayList<BroadlinkEntry>();
log.debug("consolidating devices for Broadlink");
if(!validBroadlink)
return null;
BroadlinkEntry theResponse = null;
broadlinkMap = new HashMap<String, BLDevice>();
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<String> keys = broadlinkMap.keySet().iterator();
List<BroadlinkEntry> deviceList = new ArrayList<BroadlinkEntry>();
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;