diff --git a/README.md b/README.md index e0c06d8..67c80a7 100644 --- a/README.md +++ b/README.md @@ -33,23 +33,27 @@ ATTENTION: This requires JDK 1.8 to run ATTENTION: Due to port 80 being the default, Linux restricts this to super user. Use the instructions below. ``` -java -jar ha-bridge-4.1.2.jar +java -jar ha-bridge-4.1.4.jar ``` ### Automation on Linux systems To have this configured and running automatically there are a few resources to use. One is using Docker and a docker container has been built for this and can be gotten here: https://github.com/aptalca/docker-ha-bridge Create the directory and make sure that ha-bridge-4.1.2.jar is in your /home/pi/habridge directory. +Create the directory and make sure that ha-bridge-4.1.4.jar is in your /home/pi/habridge directory. ``` pi@raspberrypi:~ $ mkdir habridge pi@raspberrypi:~ $ cd habridge pi@raspberrypi:~/habridge $ wget https://github.com/bwssytems/ha-bridge/releases/download/v4.1.2/ha-bridge-4.1.2.jar +pi@raspberrypi:~/habridge $ wget https://github.com/bwssytems/ha-bridge/releases/download/v4.1.4/ha-bridge-4.1.4.jar ``` Create the directory and make sure that ha-bridge-4.1.2.jar is in your /home/pi/habridge directory. +Create the directory and make sure that ha-bridge-4.1.4.jar is in your /home/pi/habridge directory. ``` pi@raspberrypi:~ $ mkdir habridge pi@raspberrypi:~ $ cd habridge pi@raspberrypi:~/habridge $ wget https://github.com/bwssytems/ha-bridge/releases/download/v4.1.2/ha-bridge-4.1.2.jar +pi@raspberrypi:~/habridge $ wget https://github.com/bwssytems/ha-bridge/releases/download/v4.1.4/ha-bridge-4.1.4.jar ``` #### System Control Setup on a pi (preferred) For next gen Linux systems (this includes the Raspberry Pi), here is a systemctl unit file that you can install. Here is a link on how to do this: https://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-systemd-services-and-units @@ -70,6 +74,7 @@ After=network.target Type=simple ExecStart=/usr/bin/java -jar -Dconfig.file=/home/pi/habridge/data/habridge.config /home/pi/habridge/ha-bridge-4.1.2.jar +ExecStart=/usr/bin/java -jar -Dconfig.file=/home/pi/habridge/data/habridge.config /home/pi/habridge/ha-bridge-4.1.4.jar [Install] WantedBy=multi-user.target @@ -105,6 +110,7 @@ Then cut and past this, modify any locations that are not correct cd /home/pi/habridge rm /home/pi/habridge/habridge-log.txt nohup java -jar -Dconfig.file=/home/pi/habridge/data/habridge.config /home/pi/habridge/ha-bridge-4.1.2.jar > /home/pi/habridge/habridge-log.txt 2>&1 & +nohup java -jar -Dconfig.file=/home/pi/habridge/data/habridge.config /home/pi/habridge/ha-bridge-4.1.4.jar > /home/pi/habridge/habridge-log.txt 2>&1 & chmod 777 /home/pi/habridge/habridge-log.txt ``` @@ -692,7 +698,7 @@ This call returns a null json "{}". ### Get HA Bridge Version Get current version of the HA bridge software. ``` -GET http://host:port/api/devices/habridge/version +GET http://host:port/system/habridge/version ``` #### Response Name | Type | Description diff --git a/pom.xml b/pom.xml index 9ee9ce6..95c0edc 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.bwssystems.HABridge ha-bridge - 4.1.2g + 4.1.4 jar HA Bridge diff --git a/src/main/java/com/bwssystems/HABridge/HABridge.java b/src/main/java/com/bwssystems/HABridge/HABridge.java index b6d23a1..81cb921 100644 --- a/src/main/java/com/bwssystems/HABridge/HABridge.java +++ b/src/main/java/com/bwssystems/HABridge/HABridge.java @@ -87,6 +87,7 @@ public class HABridge { bridgeSettings.save(bridgeSettings.getBridgeSettingsDescriptor()); homeManager.closeHomes(); udpSender.closeResponseSocket(); + udpSender = null; } bridgeSettings.getBridgeControl().setReinit(false); stop(); diff --git a/src/main/java/com/bwssystems/HABridge/HomeManager.java b/src/main/java/com/bwssystems/HABridge/HomeManager.java index ed51668..798fbc1 100644 --- a/src/main/java/com/bwssystems/HABridge/HomeManager.java +++ b/src/main/java/com/bwssystems/HABridge/HomeManager.java @@ -1,5 +1,6 @@ package com.bwssystems.HABridge; +import java.util.Collection; import java.util.HashMap; import java.util.Map; @@ -101,6 +102,11 @@ public class HomeManager { } public void closeHomes() { - + Collection theHomes = homeList.values(); + for(Home aHome : theHomes) { + aHome.closeHome(); + } + homeList.clear(); + homeList = null; } } diff --git a/src/main/java/com/bwssystems/HABridge/plugins/NestBridge/NestHome.java b/src/main/java/com/bwssystems/HABridge/plugins/NestBridge/NestHome.java index 3e4bc9d..0a66b1b 100644 --- a/src/main/java/com/bwssystems/HABridge/plugins/NestBridge/NestHome.java +++ b/src/main/java/com/bwssystems/HABridge/plugins/NestBridge/NestHome.java @@ -94,10 +94,10 @@ public class NestHome implements com.bwssystems.HABridge.Home { public void closeHome() { if(theSession != null) { theNest.endNestSession(); - theNest = null; - theSession = null; - nestItems = null; } + theNest = null; + theSession = null; + nestItems = null; } @Override diff --git a/src/main/java/com/bwssystems/HABridge/plugins/hal/HalInfo.java b/src/main/java/com/bwssystems/HABridge/plugins/hal/HalInfo.java index 4b8c693..7f13862 100644 --- a/src/main/java/com/bwssystems/HABridge/plugins/hal/HalInfo.java +++ b/src/main/java/com/bwssystems/HABridge/plugins/hal/HalInfo.java @@ -185,4 +185,11 @@ public class HalInfo { this.halAddress = halAddress; } + public void closeInfo() { + if(httpClient != null) + httpClient.closeHandler(); + httpClient = null; + halAddress = null; + theToken = null; + } } diff --git a/src/main/java/com/bwssystems/HABridge/plugins/hass/HassHome.java b/src/main/java/com/bwssystems/HABridge/plugins/hass/HassHome.java index fd73f33..adac4c3 100644 --- a/src/main/java/com/bwssystems/HABridge/plugins/hass/HassHome.java +++ b/src/main/java/com/bwssystems/HABridge/plugins/hass/HassHome.java @@ -151,10 +151,14 @@ public class HassHome implements Home { public void closeHome() { if(!validHass) return; + if(hassMap == null) + return; Iterator keys = hassMap.keySet().iterator(); while(keys.hasNext()) { String key = keys.next(); hassMap.get(key).closeClient(); } + + hassMap = null; } } diff --git a/src/main/java/com/bwssystems/HABridge/plugins/hass/HomeAssistant.java b/src/main/java/com/bwssystems/HABridge/plugins/hass/HomeAssistant.java index 0075181..9f6a702 100644 --- a/src/main/java/com/bwssystems/HABridge/plugins/hass/HomeAssistant.java +++ b/src/main/java/com/bwssystems/HABridge/plugins/hass/HomeAssistant.java @@ -104,5 +104,6 @@ public class HomeAssistant { protected void closeClient() { anHttpHandler.closeHandler(); + anHttpHandler = null; } } diff --git a/src/main/java/com/bwssystems/HABridge/plugins/http/HTTPHome.java b/src/main/java/com/bwssystems/HABridge/plugins/http/HTTPHome.java index 1e096f3..97cb753 100644 --- a/src/main/java/com/bwssystems/HABridge/plugins/http/HTTPHome.java +++ b/src/main/java/com/bwssystems/HABridge/plugins/http/HTTPHome.java @@ -81,7 +81,9 @@ public class HTTPHome implements Home { @Override public void closeHome() { - anHttpHandler.closeHandler(); + if(anHttpHandler != null) + anHttpHandler.closeHandler(); + anHttpHandler = null; } } diff --git a/src/main/java/com/bwssystems/HABridge/plugins/hue/HueHome.java b/src/main/java/com/bwssystems/HABridge/plugins/hue/HueHome.java index c032196..9aa0e2b 100644 --- a/src/main/java/com/bwssystems/HABridge/plugins/hue/HueHome.java +++ b/src/main/java/com/bwssystems/HABridge/plugins/hue/HueHome.java @@ -124,10 +124,13 @@ public class HueHome implements Home { public void closeHome() { if(!validHue) return; + if(hues == null) + return; Iterator keys = hues.keySet().iterator(); while(keys.hasNext()) { String key = keys.next(); hues.get(key).closeHue();; } + hues = null; } } diff --git a/src/main/java/com/bwssystems/HABridge/plugins/mqtt/MQTTHandler.java b/src/main/java/com/bwssystems/HABridge/plugins/mqtt/MQTTHandler.java index 1535e57..d96ab68 100644 --- a/src/main/java/com/bwssystems/HABridge/plugins/mqtt/MQTTHandler.java +++ b/src/main/java/com/bwssystems/HABridge/plugins/mqtt/MQTTHandler.java @@ -68,5 +68,6 @@ public class MQTTHandler { } catch (MqttException e) { log.warn("Could not disconnect MQTT client for name: " + myConfig.getName() + " and ip: " + myConfig.getIp()); } + myClient = null; } } diff --git a/src/main/java/com/bwssystems/HABridge/plugins/mqtt/MQTTHome.java b/src/main/java/com/bwssystems/HABridge/plugins/mqtt/MQTTHome.java index a3e331a..79212c1 100644 --- a/src/main/java/com/bwssystems/HABridge/plugins/mqtt/MQTTHome.java +++ b/src/main/java/com/bwssystems/HABridge/plugins/mqtt/MQTTHome.java @@ -42,6 +42,7 @@ public class MQTTHome implements Home { handlers.get(key).shutdown(); } } + handlers = null; } public MQTTHandler getMQTTHandler(String aName) { diff --git a/src/main/java/com/bwssystems/HABridge/plugins/tcp/TCPHome.java b/src/main/java/com/bwssystems/HABridge/plugins/tcp/TCPHome.java index 9fc10d8..52e94bc 100644 --- a/src/main/java/com/bwssystems/HABridge/plugins/tcp/TCPHome.java +++ b/src/main/java/com/bwssystems/HABridge/plugins/tcp/TCPHome.java @@ -49,11 +49,12 @@ public class TCPHome implements Home { // noop } - theUrlBody = BrightnessDecode.calculateReplaceIntensityValue(theUrlBody, intensity, targetBri, targetBriInc, true); theUrlBody = TimeDecode.replaceTimeValue(theUrlBody); if (theUrlBody.startsWith("0x")) { + theUrlBody = BrightnessDecode.calculateReplaceIntensityValue(theUrlBody, intensity, targetBri, targetBriInc, true); sendData = DatatypeConverter.parseHexBinary(theUrlBody.substring(2)); } else { + theUrlBody = BrightnessDecode.calculateReplaceIntensityValue(theUrlBody, intensity, targetBri, targetBriInc, false); sendData = theUrlBody.getBytes(); } diff --git a/src/main/java/com/bwssystems/HABridge/plugins/udp/UDPHome.java b/src/main/java/com/bwssystems/HABridge/plugins/udp/UDPHome.java index bec5f9e..3669081 100644 --- a/src/main/java/com/bwssystems/HABridge/plugins/udp/UDPHome.java +++ b/src/main/java/com/bwssystems/HABridge/plugins/udp/UDPHome.java @@ -51,11 +51,12 @@ public class UDPHome implements Home { return null; } - theUrlBody = BrightnessDecode.calculateReplaceIntensityValue(theUrlBody, intensity, targetBri, targetBriInc, true); theUrlBody = TimeDecode.replaceTimeValue(theUrlBody); if (theUrlBody.startsWith("0x")) { + theUrlBody = BrightnessDecode.calculateReplaceIntensityValue(theUrlBody, intensity, targetBri, targetBriInc, true); sendData = DatatypeConverter.parseHexBinary(theUrlBody.substring(2)); } else { + theUrlBody = BrightnessDecode.calculateReplaceIntensityValue(theUrlBody, intensity, targetBri, targetBriInc, false); sendData = theUrlBody.getBytes(); } try { diff --git a/src/main/java/com/bwssystems/HABridge/plugins/vera/VeraHome.java b/src/main/java/com/bwssystems/HABridge/plugins/vera/VeraHome.java index 23770d6..6effc88 100644 --- a/src/main/java/com/bwssystems/HABridge/plugins/vera/VeraHome.java +++ b/src/main/java/com/bwssystems/HABridge/plugins/vera/VeraHome.java @@ -106,7 +106,6 @@ public class VeraHome implements Home { @Override public void closeHome() { - // TODO Auto-generated method stub - + veras = null; } } diff --git a/src/main/resources/public/scripts/app.js b/src/main/resources/public/scripts/app.js index 9e0cbf6..a13642a 100644 --- a/src/main/resources/public/scripts/app.js +++ b/src/main/resources/public/scripts/app.js @@ -1167,7 +1167,7 @@ app.controller('ValueDialogCtrl', function ($scope, bridgeService, ngDialog) { $scope.slider = { value: 100, options: { - floor: 0, + floor: 1, ceil: 100, showSelectionBar: true } @@ -1176,8 +1176,8 @@ app.controller('ValueDialogCtrl', function ($scope, bridgeService, ngDialog) { $scope.valueType = "percentage"; $scope.changeScale = function () { if($scope.valueType === "raw") { - $scope.slider.options.ceil = 255; - $scope.slider.value = 255; + $scope.slider.options.ceil = 254; + $scope.slider.value = 254; } else { $scope.slider.options.ceil = 100; @@ -1186,7 +1186,7 @@ app.controller('ValueDialogCtrl', function ($scope, bridgeService, ngDialog) { }; $scope.setValue = function () { ngDialog.close('ngdialog1'); - var theValue = 0; + var theValue = 1; if($scope.valueType === "percentage") theValue = Math.round(($scope.slider.value * .01) * 255); else