diff --git a/plugins/hal-zigbee/src/se/hal/plugin/zigbee/HalZigbeeController.java b/plugins/hal-zigbee/src/se/hal/plugin/zigbee/HalZigbeeController.java index 7259af2d..f0a9ca03 100644 --- a/plugins/hal-zigbee/src/se/hal/plugin/zigbee/HalZigbeeController.java +++ b/plugins/hal-zigbee/src/se/hal/plugin/zigbee/HalZigbeeController.java @@ -42,8 +42,7 @@ public class HalZigbeeController implements HalSensorController, HalScannableController, ZigBeeAnnounceListener, ZigBeeNetworkNodeListener, - ZigBeeNetworkEndpointListener, - ZclAttributeListener { + ZigBeeNetworkEndpointListener { private static final Logger logger = LogUtil.getLogger(); @@ -226,7 +225,7 @@ public class HalZigbeeController implements HalSensorController, node.addNetworkEndpointListener(this); logger.fine("[Node: " + node.getIeeeAddress() + "]: Node has been registered: " + "Manufacturer=" + node.getNodeDescriptor().getManufacturerCode() + - "Type=" + node.getNodeDescriptor().getLogicalType()); + ", Type=" + node.getNodeDescriptor().getLogicalType()); } @Override @@ -251,8 +250,11 @@ public class HalZigbeeController implements HalSensorController, for (int inputClusterId : endpoint.getInputClusterIds()) { ZigbeeHalDeviceConfig config = createDeviceConfig(inputClusterId); - if (config != null) + if (config != null) { registerCluster(endpoint, config); + } else { + logger.finest("[Node: " + endpoint.getIeeeAddress() + "] Cluster ID '" + inputClusterId + "' is not supported."); + } } } @@ -267,11 +269,20 @@ public class HalZigbeeController implements HalSensorController, return null; } - private void registerCluster(ZigBeeEndpoint endpoint, ZigbeeHalDeviceConfig config) { - ZclCluster cluster = endpoint.getInputCluster(config.getZigbeeClusterId()); + private void registerCluster(final ZigBeeEndpoint endpoint, ZigbeeHalDeviceConfig config) { + final ZclCluster cluster = endpoint.getInputCluster(config.getZigbeeClusterId()); if (cluster != null) { config.setZigbeeNodeAddress(endpoint.getIeeeAddress()); - cluster.addAttributeListener(this); + + cluster.addAttributeListener(new ZclAttributeListener() { + @Override + public void attributeUpdated(ZclAttribute attribute, Object value) { + if (deviceListener != null) { + logger.finer("[Node: " + endpoint.getIeeeAddress() + ", Endpoint: " + endpoint.getEndpointId() + ", Cluster: " + attribute.getCluster().getId() + "] Attribute updated: attribute_name=" + attribute.getName() + ", value=" + attribute.getLastValue()); + deviceListener.reportReceived(config, config.getDeviceData(attribute)); + } + } + }); // // TODO: Notify listener that a device is online if (deviceListener != null) @@ -284,22 +295,6 @@ public class HalZigbeeController implements HalSensorController, logger.fine("[Node: " + endpoint.getIeeeAddress() + ", Endpoint: " + endpoint.getEndpointId() + "]: Endpoint removed: " + endpoint); } - // ------------------------------------------ - // Zigbee Cluster Attribute Methods - // ------------------------------------------ - - @Override - public void attributeUpdated(ZclAttribute attribute, Object value) { - if (deviceListener != null) { - ZigbeeHalDeviceConfig config = createDeviceConfig(attribute.getCluster().getId()); - - if (config != null) - deviceListener.reportReceived(config, config.getDeviceData(attribute)); - else - logger.severe("Cluster ID (" + attribute.getCluster().getId() + ") is not supported but a listener was added."); - } - } - // ------------------------------------------ // Hal Overrides // ------------------------------------------ diff --git a/plugins/hal-zigbee/src/se/hal/plugin/zigbee/ZigBeeDataStore.java b/plugins/hal-zigbee/src/se/hal/plugin/zigbee/ZigBeeDataStore.java index fd422c07..1257df52 100644 --- a/plugins/hal-zigbee/src/se/hal/plugin/zigbee/ZigBeeDataStore.java +++ b/plugins/hal-zigbee/src/se/hal/plugin/zigbee/ZigBeeDataStore.java @@ -27,14 +27,9 @@ package se.hal.plugin.zigbee; import com.zsmartsystems.zigbee.IeeeAddress; import com.zsmartsystems.zigbee.database.ZigBeeNetworkDataStore; import com.zsmartsystems.zigbee.database.ZigBeeNodeDao; -import com.zsmartsystems.zigbee.zdo.field.BindingTable; -import zutil.StringUtil; -import zutil.converter.Converter; import zutil.log.LogUtil; -import java.util.Collections; import java.util.HashMap; -import java.util.HashSet; import java.util.Set; import java.util.logging.Logger; @@ -52,28 +47,26 @@ public class ZigBeeDataStore implements ZigBeeNetworkDataStore { @Override public ZigBeeNodeDao readNode(IeeeAddress address) { - System.out.println("ZigBeeDataStore.readNetworkNodes(" + address + ")"); - return devices.get(address); } @Override public void writeNode(ZigBeeNodeDao node) { - System.out.println("ZigBeeDataStore.writeNode(" + + logger.fine("[Node: " + node.getIeeeAddress() + "] Storing Zigbee Node in DB: " + "IeeAddr: " + node.getIeeeAddress() + ", " + "NetAddr: " + node.getNetworkAddress() + ", " + "binding: " + node.getBindingTable() + ", " + "description: " + node.getNodeDescriptor() + ", " + "endpoints: " + node.getEndpoints() + ", " + - "Power: " + node.getPowerDescriptor() + ", " + - ")"); + "Power: " + node.getPowerDescriptor() + ); devices.put(node.getIeeeAddress(), node); } @Override public void removeNode(IeeeAddress address) { - System.out.println("ZigBeeDataStore.removeNode(" + address + ")"); + logger.fine("[Node: " + address + "] Removing Node from DB."); devices.remove(address); }