diff --git a/pom.xml b/pom.xml
index ee35e00..467016c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
com.bwssystems.HABridge
ha-bridge
- 1.2.3d
+ 1.2.3e
jar
HA Bridge
diff --git a/src/main/java/com/bwssystems/HABridge/BridgeSettings.java b/src/main/java/com/bwssystems/HABridge/BridgeSettings.java
index 7ee6b46..41d0d8d 100644
--- a/src/main/java/com/bwssystems/HABridge/BridgeSettings.java
+++ b/src/main/java/com/bwssystems/HABridge/BridgeSettings.java
@@ -110,13 +110,13 @@ public class BridgeSettings {
this.nestconfigured = isNestConfigured;
}
public Boolean isValidVera() {
- if(this.veraaddress.contains(Configuration.DEFAULT_VERA_ADDRESS))
+ if(this.veraaddress.contains(Configuration.DEFAULT_ADDRESS))
return false;
return true;
}
public Boolean isValidHarmony() {
List devicesList = this.harmonyaddress.getDevices();
- if(devicesList.get(0).getIp().contains(Configuration.DEFAULT_HARMONY_ADDRESS))
+ if(devicesList.get(0).getIp().contains(Configuration.DEFAULT_ADDRESS))
return false;
if(this.harmonypwd == null || this.harmonypwd == "")
return false;
diff --git a/src/main/java/com/bwssystems/HABridge/Configuration.java b/src/main/java/com/bwssystems/HABridge/Configuration.java
index 11d43b8..504a9f6 100644
--- a/src/main/java/com/bwssystems/HABridge/Configuration.java
+++ b/src/main/java/com/bwssystems/HABridge/Configuration.java
@@ -4,8 +4,9 @@ public class Configuration {
public final static String DEVICE_DB_DIRECTORY = "data/device.db";
public final static String UPNP_RESPONSE_PORT = "50000";
public final static String UPNP_RESPONSE_DEVICES = "30";
- public final static String DEFAULT_VERA_ADDRESS = "1.1.1.1";
- public final static String DEFAULT_HARMONY_ADDRESS = "1.1.1.1";
+ public final static String DEFAULT_ADDRESS = "1.1.1.1";
+ public final static String LOOP_BACK_ADDRESS = "127.0.0.1";
+ public final static String LOOP_BACK_INTERFACE = "lo";
public final static String DEFAULT_HARMONY_ADDRESS_LIST = "{devices:[{name:default,ip:1.1.1.1}]}";
public final static String DEFAULT_USER = "";
public final static String DEFAULT_PWD = "";
diff --git a/src/main/java/com/bwssystems/HABridge/HABridge.java b/src/main/java/com/bwssystems/HABridge/HABridge.java
index 119a011..23292be 100644
--- a/src/main/java/com/bwssystems/HABridge/HABridge.java
+++ b/src/main/java/com/bwssystems/HABridge/HABridge.java
@@ -3,8 +3,11 @@ package com.bwssystems.HABridge;
import static spark.Spark.*;
import java.net.InetAddress;
-import java.net.UnknownHostException;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.util.Enumeration;
+import org.apache.http.conn.util.InetAddressUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -41,36 +44,59 @@ public class HABridge {
HueMulator theHueMulator;
UpnpSettingsResource theSettingResponder;
UpnpListener theUpnpListener;
- InetAddress address;
- String addressString;
+ InetAddress address = null;
+ String addressString = null;
BridgeSettings bridgeSettings;
Version theVersion;
theVersion = new Version();
log.info("HA Bridge (v" + theVersion.getVersion() + ") starting setup....");
- //get ip address for upnp requests
- try {
- address = InetAddress.getLocalHost();
- addressString = address.getHostAddress();
- } catch (UnknownHostException e) {
- log.error("Cannot get ip address of this host, Exiting with message: " + e.getMessage(), e);
- return;
- }
bridgeSettings = new BridgeSettings();
bridgeSettings.setServerPort(System.getProperty("server.port", Configuration.DFAULT_WEB_PORT));
- bridgeSettings.setUpnpConfigAddress(System.getProperty("upnp.config.address", addressString));
+ bridgeSettings.setUpnpConfigAddress(System.getProperty("upnp.config.address", Configuration.DEFAULT_ADDRESS));
+ if(bridgeSettings.getUpnpConfigAddress().equalsIgnoreCase(Configuration.DEFAULT_ADDRESS)) {
+ try {
+ log.info("Getting an IP address for this host....");
+ Enumeration ifs = NetworkInterface.getNetworkInterfaces();
+
+ while (ifs.hasMoreElements() && addressString == null) {
+ NetworkInterface xface = ifs.nextElement();
+ Enumeration addrs = xface.getInetAddresses();
+ String name = xface.getName();
+ int IPsPerNic = 0;
+
+ while (addrs.hasMoreElements() && IPsPerNic == 0) {
+ address = addrs.nextElement();
+ if (InetAddressUtils.isIPv4Address(address.getHostAddress())) {
+ log.debug(name + " ... has IPV4 addr " + address);
+ if(!name.equalsIgnoreCase(Configuration.LOOP_BACK_INTERFACE)|| !address.getHostAddress().equalsIgnoreCase(Configuration.LOOP_BACK_ADDRESS)) {
+ IPsPerNic++;
+ addressString = address.getHostAddress();
+ log.info("Adding " + addressString + " from interface " + name + " as our default upnp config address.");
+ }
+ }
+ }
+ }
+ } catch (SocketException e) {
+ log.error("Cannot get ip address of this host, Exiting with message: " + e.getMessage(), e);
+ return;
+ }
+
+ bridgeSettings.setUpnpConfigAddress(addressString);
+ }
+
bridgeSettings.setUpnpDeviceDb(System.getProperty("upnp.device.db", Configuration.DEVICE_DB_DIRECTORY));
bridgeSettings.setUpnpResponsePort(System.getProperty("upnp.response.port", Configuration.UPNP_RESPONSE_PORT));
- bridgeSettings.setVeraAddress(System.getProperty("vera.address", Configuration.DEFAULT_VERA_ADDRESS));
+ bridgeSettings.setVeraAddress(System.getProperty("vera.address", Configuration.DEFAULT_ADDRESS));
IpList theHarmonyList;
try {
theHarmonyList = new Gson().fromJson(System.getProperty("harmony.address", Configuration.DEFAULT_HARMONY_ADDRESS_LIST), IpList.class);
} catch (Exception e) {
try {
- theHarmonyList = new Gson().fromJson("{devices:[{name:default,ip:" + System.getProperty("harmony.address", Configuration.DEFAULT_HARMONY_ADDRESS) + "}]}", IpList.class);
+ theHarmonyList = new Gson().fromJson("{devices:[{name:default,ip:" + System.getProperty("harmony.address", Configuration.DEFAULT_ADDRESS) + "}]}", IpList.class);
} catch (Exception et) {
log.error("Cannot parse harmony.address, Exiting with message: " + e.getMessage(), e);
return;