diff --git a/pom.xml b/pom.xml
index e45878c..d016a14 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
com.bwssystems.HABridge
ha-bridge
- 4.1.2c
+ 4.1.2e
jar
HA Bridge
@@ -124,7 +124,7 @@
com.github.bwssytems
lifx-sdk-java
- 2.1.1
+ 2.1.5
diff --git a/src/main/java/com/bwssystems/HABridge/plugins/lifx/LifxHome.java b/src/main/java/com/bwssystems/HABridge/plugins/lifx/LifxHome.java
index 1a03b88..924f8de 100644
--- a/src/main/java/com/bwssystems/HABridge/plugins/lifx/LifxHome.java
+++ b/src/main/java/com/bwssystems/HABridge/plugins/lifx/LifxHome.java
@@ -19,15 +19,17 @@ import com.bwssystems.HABridge.hue.MultiCommandUtil;
import com.github.besherman.lifx.LFXClient;
import com.github.besherman.lifx.LFXGroup;
import com.github.besherman.lifx.LFXGroupCollection;
+import com.github.besherman.lifx.LFXGroupCollectionListener;
import com.github.besherman.lifx.LFXLight;
import com.github.besherman.lifx.LFXLightCollection;
+import com.github.besherman.lifx.LFXLightCollectionListener;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class LifxHome implements Home {
private static final Logger log = LoggerFactory.getLogger(LifxHome.class);
private Map lifxMap;
- private LFXClient client = new LFXClient();
+ private LFXClient client;
private Boolean validLifx;
private Gson aGsonHandler;
@@ -45,20 +47,23 @@ public class LifxHome implements Home {
if(validLifx) {
try {
log.info("Open Lifx client....");
- client.open(true);
+ lifxMap = new HashMap();
+ client = new LFXClient();
+ client.getLights().addLightCollectionListener(new MyLightListener(lifxMap));
+ client.getGroups().addGroupCollectionListener(new MyGroupListener(lifxMap));
+ client.open(false);
} catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ log.warn("Could not open LIFX, with IO Exception", e);
+ client = null;
+ return this;
} catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ log.warn("Could not open LIFX, with Interruprted Exception", e);
+ client = null;
+ return this;
}
aGsonHandler =
new GsonBuilder()
.create();
- lifxMap = new HashMap();
- this.addLifxLights(client.getLights());
- this.addLifxGroups(client.getGroups());
}
return this;
}
@@ -174,4 +179,46 @@ public class LifxHome implements Home {
return;
client.close();
}
+ private static class MyLightListener implements LFXLightCollectionListener {
+ private static final Logger log = LoggerFactory.getLogger(MyLightListener.class);
+ private Map aLifxMap;
+ public MyLightListener(Map theMap) {
+ aLifxMap = theMap;
+ }
+ @Override
+ public void lightAdded(LFXLight light) {
+ log.debug("Light added, label: " + light.getLabel() + " and id: " + light.getID());
+ LifxDevice aNewLifxDevice = new LifxDevice(light, LifxDevice.LIGHT_TYPE);
+ aLifxMap.put(aNewLifxDevice.toEntry().getName(), aNewLifxDevice);
+ }
+
+ @Override
+ public void lightRemoved(LFXLight light) {
+ log.debug("Light removed, label: " + light.getLabel() + " and id: " + light.getID());
+ aLifxMap.remove(light.getLabel());
+ }
+
+
+ }
+ private static class MyGroupListener implements LFXGroupCollectionListener {
+ private static final Logger log = LoggerFactory.getLogger(MyLightListener.class);
+ private Map aLifxMap;
+ public MyGroupListener(Map theMap) {
+ aLifxMap = theMap;
+ }
+
+ @Override
+ public void groupAdded(LFXGroup group) {
+ log.debug("Group: " + group.getLabel() + " added: " + group.size());
+ LifxDevice aNewLifxDevice = new LifxDevice(group, LifxDevice.GROUP_TYPE);
+ aLifxMap.put(aNewLifxDevice.toEntry().getName(), aNewLifxDevice);
+ }
+
+ @Override
+ public void groupRemoved(LFXGroup group) {
+ log.debug("Group: " + group.getLabel() + " removed");
+ aLifxMap.remove(group.getLabel());
+ }
+
+ }
}
diff --git a/src/main/resources/public/scripts/app.js b/src/main/resources/public/scripts/app.js
index a6cf1b2..9e0cbf6 100644
--- a/src/main/resources/public/scripts/app.js
+++ b/src/main/resources/public/scripts/app.js
@@ -2374,7 +2374,7 @@ app.controller('LifxController', function ($scope, $location, $http, bridgeServi
bridgeService.viewHalDevices();
},
function (error) {
- bridgeService.displayWarn("Error adding HAL devices in bulk.", error)
+ bridgeService.displayWarn("Error adding LIFX devices in bulk.", error)
}
);
$scope.bulk = { devices: [] };
diff --git a/src/main/resources/public/views/lifxdevice.html b/src/main/resources/public/views/lifxdevice.html
index 9383e3a..6278cea 100644
--- a/src/main/resources/public/views/lifxdevice.html
+++ b/src/main/resources/public/views/lifxdevice.html
@@ -92,7 +92,7 @@
+ ng-repeat="device in bridge.devices | configuredLifxItems | orderBy:predicate:reverse">
| {{$index+1}} |
{{device.name}} |
{{device.targetDevice}} |