diff --git a/README.md b/README.md index ac4a0d87..d7a83fb0 100644 --- a/README.md +++ b/README.md @@ -33,23 +33,23 @@ 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.3.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.3.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.3/ha-bridge-4.1.3.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.3.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.3/ha-bridge-4.1.3.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 @@ -69,7 +69,7 @@ After=network.target [Service] Type=simple -ExecStart=/usr/bin/java -jar -Dconfig.file=/home/pi/habridge/data/habridge.config /home/pi/habridge/ha-bridge-4.1.3.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 @@ -104,7 +104,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.3.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 ``` diff --git a/pom.xml b/pom.xml index 7fbfdd64..07c2ae61 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.bwssystems.HABridge ha-bridge - 4.1.3 + 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 b6d23a1f..81cb9210 100644 --- a/src/main/java/com/bwssystems/HABridge/HABridge.java +++ b/src/main/java/com/bwssystems/HABridge/HABridge.java @@ -87,6 +87,7 @@ public static void main(String[] args) { 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 83b11186..a328dc5b 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; @@ -96,6 +97,11 @@ public ResourceHandler findResource(String type) { } 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 3e4bc9d0..0a66b1bb 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 Object getItems(String type) { 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 4b8c693e..7f138624 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 void setHalAddress(NamedIP halAddress) { 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 fd73f33a..adac4c39 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 String deviceHandler(CallItem anItem, MultiCommandUtil aMultiUtil, String 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 00751814..9f6a702a 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 List getDevices() { 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 1e096f3f..97cb7538 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 Object getItems(String type) { @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 c0321960..9aa0e2ba 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 Home createHome(BridgeSettingsDescriptor bridgeSettings) { 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 1535e57a..d96ab68d 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 void shutdown() { } 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 a3e331a2..79212c12 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 void closeHome() { handlers.get(key).shutdown(); } } + handlers = null; } public MQTTHandler getMQTTHandler(String aName) { 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 23770d65..6effc888 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 Home createHome(BridgeSettingsDescriptor bridgeSettings) { @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 e22505a3..e5ebc6c7 100644 --- a/src/main/resources/public/scripts/app.js +++ b/src/main/resources/public/scripts/app.js @@ -1145,7 +1145,7 @@ app.controller('ValueDialogCtrl', function ($scope, bridgeService, ngDialog) { $scope.slider = { value: 100, options: { - floor: 0, + floor: 1, ceil: 100, showSelectionBar: true } @@ -1154,8 +1154,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; @@ -1164,7 +1164,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