diff --git a/pom.xml b/pom.xml index 5025943..26498f1 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.bwssystems.HABridge ha-bridge - 1.1.0d + 1.1.0e jar HA Bridge diff --git a/src/main/java/com/bwssystems/HABridge/BridgeSettings.java b/src/main/java/com/bwssystems/HABridge/BridgeSettings.java index 87f2c54..eeef17d 100644 --- a/src/main/java/com/bwssystems/HABridge/BridgeSettings.java +++ b/src/main/java/com/bwssystems/HABridge/BridgeSettings.java @@ -1,12 +1,14 @@ package com.bwssystems.HABridge; +import java.util.List; + public class BridgeSettings { private String upnpconfigaddress; private String serverport; private String upnpresponseport; private String upnpdevicedb; private String veraaddress; - private String harmonyaddress; + private IpList harmonyaddress; private String harmonyuser; private String harmonypwd; private Integer upnpresponsedevices; @@ -44,10 +46,10 @@ public class BridgeSettings { public void setVeraAddress(String veraAddress) { this.veraaddress = veraAddress; } - public String getHarmonyAddress() { + public IpList getHarmonyAddress() { return harmonyaddress; } - public void setHarmonyAddress(String harmonyaddress) { + public void setHarmonyAddress(IpList harmonyaddress) { this.harmonyaddress = harmonyaddress; } public String getHarmonyUser() { @@ -92,7 +94,8 @@ public class BridgeSettings { return true; } public Boolean isValidHarmony() { - if(this.harmonyaddress.contains(Configuration.DEFAULT_HARMONY_ADDRESS)) + List devicesList = this.harmonyaddress.getDevices(); + if(devicesList.get(0).getIp().contains(Configuration.DEFAULT_HARMONY_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 ec245e3..0bfeb3d 100644 --- a/src/main/java/com/bwssystems/HABridge/Configuration.java +++ b/src/main/java/com/bwssystems/HABridge/Configuration.java @@ -6,6 +6,7 @@ public class Configuration { 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_HARMONY_ADDRESS_LIST = "{devices:[{name:default,ip:1.1.1.1}]}"; public final static String DEFAULT_HARMONY_USER = ""; public final static String DEFAULT_HARMONY_PWD = ""; public final static String DFAULT_WEB_PORT = "8080"; diff --git a/src/main/java/com/bwssystems/HABridge/HABridge.java b/src/main/java/com/bwssystems/HABridge/HABridge.java index b803583..c2b1b59 100644 --- a/src/main/java/com/bwssystems/HABridge/HABridge.java +++ b/src/main/java/com/bwssystems/HABridge/HABridge.java @@ -13,6 +13,7 @@ import com.bwssystems.HABridge.hue.HueMulator; import com.bwssystems.HABridge.upnp.UpnpListener; import com.bwssystems.HABridge.upnp.UpnpSettingsResource; import com.bwssystems.harmony.HarmonyServer; +import com.google.gson.Gson; public class HABridge { @@ -61,14 +62,26 @@ public class HABridge { 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.setHarmonyAddress(System.getProperty("harmony.address", Configuration.DEFAULT_HARMONY_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); + } catch (Exception et) { + log.error("Cannot parse harmony.address, Exiting with message: " + e.getMessage(), e); + return; + } + } + bridgeSettings.setHarmonyAddress(theHarmonyList); bridgeSettings.setHarmonyUser(System.getProperty("harmony.user", Configuration.DEFAULT_HARMONY_USER)); bridgeSettings.setHarmonyPwd(System.getProperty("harmony.pwd", Configuration.DEFAULT_HARMONY_PWD)); bridgeSettings.setUpnpStrict(Boolean.parseBoolean(System.getProperty("upnp.strict", "true"))); bridgeSettings.setTraceupnp(Boolean.parseBoolean(System.getProperty("trace.upnp", "false"))); bridgeSettings.setDevMode(Boolean.parseBoolean(System.getProperty("dev.mode", "false"))); bridgeSettings.setUpnpResponseDevices(Integer.parseInt(System.getProperty("upnp.response.devices", Configuration.UPNP_RESPONSE_DEVICES))); - + // sparkjava config directive to set ip address for the web server to listen on // ipAddress("0.0.0.0"); // not used // sparkjava config directive to set port for the web server to listen on diff --git a/src/main/java/com/bwssystems/HABridge/IpList.java b/src/main/java/com/bwssystems/HABridge/IpList.java new file mode 100644 index 0000000..ce37dfd --- /dev/null +++ b/src/main/java/com/bwssystems/HABridge/IpList.java @@ -0,0 +1,16 @@ +package com.bwssystems.HABridge; + +import java.util.List; + +public class IpList { + private List devices; + + public List getDevices() { + return devices; + } + + public void setDevices(List devices) { + this.devices = devices; + } + +} diff --git a/src/main/java/com/bwssystems/HABridge/NamedIP.java b/src/main/java/com/bwssystems/HABridge/NamedIP.java new file mode 100644 index 0000000..4a59f82 --- /dev/null +++ b/src/main/java/com/bwssystems/HABridge/NamedIP.java @@ -0,0 +1,25 @@ +package com.bwssystems.HABridge; + +public class NamedIP { + private String name; + private String ip; + private String port; + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public String getIp() { + return ip; + } + public void setIp(String ip) { + this.ip = ip; + } + public String getPort() { + return port; + } + public void setPort(String port) { + this.port = port; + } +} diff --git a/src/main/java/com/bwssystems/harmony/HarmonyServer.java b/src/main/java/com/bwssystems/harmony/HarmonyServer.java index 8fd0bd4..1e1ec50 100644 --- a/src/main/java/com/bwssystems/harmony/HarmonyServer.java +++ b/src/main/java/com/bwssystems/harmony/HarmonyServer.java @@ -70,7 +70,7 @@ public class HarmonyServer { log.info(format("activity changed: [%d] %s", activity.getId(), activity.getLabel())); } }); - harmonyClient.connect(mySettings.getHarmonyAddress(), mySettings.getHarmonyUser(), mySettings.getHarmonyPwd()); + harmonyClient.connect(mySettings.getHarmonyAddress().getDevices().get(0).getIp(), mySettings.getHarmonyUser(), mySettings.getHarmonyPwd()); } myHarmony = new HarmonyHandler(harmonyClient, noopCalls, devResponse); } diff --git a/src/main/resources/public/scripts/app.js b/src/main/resources/public/scripts/app.js index a6aaa47..5a6428d 100644 --- a/src/main/resources/public/scripts/app.js +++ b/src/main/resources/public/scripts/app.js @@ -390,6 +390,9 @@ app.controller('ViewingController', function ($scope, $location, $http, $window, bridgeService.state.base = url; bridgeService.viewDevices(); }; + $scope.goBridgeUrl = function (url) { + window.open(url, "_blank"); + }; $scope.editDevice = function (device) { bridgeService.editDevice(device); $location.path('/editdevice'); diff --git a/src/main/resources/public/views/configuration.html b/src/main/resources/public/views/configuration.html index 2f8ff43..eaec437 100644 --- a/src/main/resources/public/views/configuration.html +++ b/src/main/resources/public/views/configuration.html @@ -76,7 +76,7 @@ + ng-click="goBridgeUrl(bridge.base)">Go