From dd0032a5677704503471a72767c0fb49d786c999 Mon Sep 17 00:00:00 2001 From: Admin Date: Tue, 7 Feb 2017 15:50:21 -0600 Subject: [PATCH] updatre lifx --- pom.xml | 4 +- .../HABridge/plugins/lifx/LifxHome.java | 65 ++++++++++++++++--- src/main/resources/public/scripts/app.js | 2 +- .../resources/public/views/lifxdevice.html | 2 +- 4 files changed, 60 insertions(+), 13 deletions(-) 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}}