From 69a2952ec40757f75ad95a4180d8e24d1481b896 Mon Sep 17 00:00:00 2001 From: Adetunji Dahunsi Date: Mon, 9 Nov 2020 22:39:21 -0500 Subject: [PATCH] Revert "Downgrade zigBee library to last working version (1.2.2)" --- build.gradle | 8 +-- .../zigbee/commands/ColorCommand.kt | 2 +- .../zigbee/commands/LevelCommand.kt | 2 +- .../zigbee/commands/MembershipAddCommand.kt | 5 +- .../zigbee/commands/MembershipListCommand.kt | 5 +- .../commands/MembershipRemoveCommand.kt | 3 +- .../zigbee/commands/MembershipViewCommand.kt | 3 +- .../zigbee/commands/OffCommand.kt | 2 +- .../zigbee/commands/OnCommand.kt | 2 +- .../zigbee/commands/StartupCommand.kt | 25 +++---- .../zigbee/protocol/LazyDiscoveryExtension.kt | 4 +- .../zigbee/protocol/ZigBeeProtocol.kt | 70 ++++++++++--------- 12 files changed, 59 insertions(+), 72 deletions(-) diff --git a/build.gradle b/build.gradle index 9fd388c8..b0b24128 100644 --- a/build.gradle +++ b/build.gradle @@ -67,10 +67,10 @@ buildscript { tunjiAndroidxCore = 'com.tunjid.androidx:core:1.2.1' tunjiAndroidxView = 'com.tunjid.androidx:view:1.1.0' - zigBeeCore = 'com.zsmartsystems.zigbee:com.zsmartsystems.zigbee:1.2.2' - zigBeeConsole = 'com.zsmartsystems.zigbee:com.zsmartsystems.zigbee.console:1.2.2' - zigBeeSerial = 'com.zsmartsystems.zigbee:com.zsmartsystems.zigbee.serial:1.2.2' - zigBeeDongle = 'com.zsmartsystems.zigbee:com.zsmartsystems.zigbee.dongle.cc2531:1.2.2' + zigBeeCore = 'com.zsmartsystems.zigbee:com.zsmartsystems.zigbee:1.3.9' + zigBeeConsole = 'com.zsmartsystems.zigbee:com.zsmartsystems.zigbee.console:1.3.9' + zigBeeSerial = 'com.zsmartsystems.zigbee:com.zsmartsystems.zigbee.serial:1.3.9' + zigBeeDongle = 'com.zsmartsystems.zigbee:com.zsmartsystems.zigbee.dongle.cc2531:1.3.9' junit = 'junit:junit:4.12' androidJunit = 'androidx.test.ext:junit:1.1.1' diff --git a/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/ColorCommand.kt b/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/ColorCommand.kt index 3b9b5acf..dda768f3 100644 --- a/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/ColorCommand.kt +++ b/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/ColorCommand.kt @@ -87,6 +87,6 @@ class ColorCommand : AbsZigBeeCommand() { val endpoint = getNode(destination.address).getEndpoint(destination.endpoint) ?: return null val cluster = endpoint.getInputCluster(ZclColorControlCluster.CLUSTER_ID) as ZclColorControlCluster - return cluster.moveToColorCommand(x, y, (time * 10).toInt()) + return cluster.sendCommand(MoveToColorCommand(x, y, (time * 10).toInt())) } } \ No newline at end of file diff --git a/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/LevelCommand.kt b/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/LevelCommand.kt index 9d7de67d..1f04ea84 100644 --- a/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/LevelCommand.kt +++ b/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/LevelCommand.kt @@ -78,6 +78,6 @@ class LevelCommand : AbsZigBeeCommand() { val cluster = endpoint.getInputCluster(ZclLevelControlCluster.CLUSTER_ID) as ZclLevelControlCluster - return cluster.moveToLevelWithOnOffCommand(l, (time * 10).toInt()) + return cluster.sendCommand(MoveToLevelWithOnOffCommand(l, (time * 10).toInt())) } } \ No newline at end of file diff --git a/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/MembershipAddCommand.kt b/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/MembershipAddCommand.kt index 84725021..9d00539c 100644 --- a/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/MembershipAddCommand.kt +++ b/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/MembershipAddCommand.kt @@ -42,10 +42,7 @@ class MembershipAddCommand : AbsZigBeeCommand() { * @return the command result future */ private fun ZigBeeNetworkManager.addMembership(device: ZigBeeEndpoint, groupId: Int, groupName: String): Future { - val command = AddGroupCommand() - command.groupId = groupId - command.groupName = groupName - + val command = AddGroupCommand(groupId, groupName) command.destinationAddress = device.endpointAddress return sendTransaction(command, ZclTransactionMatcher()) diff --git a/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/MembershipListCommand.kt b/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/MembershipListCommand.kt index 31a06710..4ff8b021 100644 --- a/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/MembershipListCommand.kt +++ b/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/MembershipListCommand.kt @@ -51,10 +51,7 @@ class MembershipListCommand : AbsZigBeeCommand() { * @return the command result future */ private fun ZigBeeNetworkManager.getGroupMemberships(device: ZigBeeEndpoint): Future { - val command = GetGroupMembershipCommand() - - command.groupCount = 0 - command.groupList = emptyList() + val command = GetGroupMembershipCommand(0, emptyList()) command.destinationAddress = device.endpointAddress return sendTransaction(command, ZclTransactionMatcher()) diff --git a/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/MembershipRemoveCommand.kt b/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/MembershipRemoveCommand.kt index f6b2d339..09a5539a 100644 --- a/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/MembershipRemoveCommand.kt +++ b/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/MembershipRemoveCommand.kt @@ -40,8 +40,7 @@ class MembershipRemoveCommand : AbsZigBeeCommand() { * @return the command result future */ private fun ZigBeeNetworkManager.removeMembership(device: ZigBeeEndpoint, groupId: Int): Future { - val command = RemoveGroupCommand() - command.groupId = groupId + val command = RemoveGroupCommand(groupId) command.destinationAddress = device.endpointAddress return sendTransaction(command, ZclTransactionMatcher()) diff --git a/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/MembershipViewCommand.kt b/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/MembershipViewCommand.kt index b84ac771..8fb9f425 100644 --- a/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/MembershipViewCommand.kt +++ b/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/MembershipViewCommand.kt @@ -52,8 +52,7 @@ class MembershipViewCommand : AbsZigBeeCommand() { * @return the command result future */ fun ZigBeeNetworkManager.viewMembership(device: ZigBeeEndpoint, groupId: Int): Future { - val command = ViewGroupCommand() - command.groupId = groupId + val command = ViewGroupCommand(groupId) command.destinationAddress = device.endpointAddress return sendTransaction(command, ZclTransactionMatcher()) diff --git a/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/OffCommand.kt b/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/OffCommand.kt index 62d2589b..fc16c547 100644 --- a/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/OffCommand.kt +++ b/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/OffCommand.kt @@ -68,6 +68,6 @@ class OffCommand : AbsZigBeeCommand() { val cluster = endpoint.getInputCluster(ZclOnOffCluster.CLUSTER_ID) as ZclOnOffCluster - return cluster.offCommand() + return cluster.sendCommand(OffCommand()) } } \ No newline at end of file diff --git a/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/OnCommand.kt b/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/OnCommand.kt index c55843fa..edc93238 100644 --- a/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/OnCommand.kt +++ b/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/OnCommand.kt @@ -62,6 +62,6 @@ class OnCommand : AbsZigBeeCommand() { val cluster = endpoint.getInputCluster(ZclOnOffCluster.CLUSTER_ID) as ZclOnOffCluster - return cluster.onCommand() + return cluster.sendCommand(OnCommand()) } } \ No newline at end of file diff --git a/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/StartupCommand.kt b/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/StartupCommand.kt index 3f499900..c7d97b6f 100644 --- a/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/StartupCommand.kt +++ b/zigbee/src/main/java/com/rcswitchcontrol/zigbee/commands/StartupCommand.kt @@ -26,7 +26,6 @@ package com.rcswitchcontrol.zigbee.commands import com.rcswitchcontrol.zigbee.R import com.tunjid.rcswitchcontrol.common.ContextProvider -import com.zsmartsystems.zigbee.ExtendedPanId import com.zsmartsystems.zigbee.ZigBeeNetworkManager import com.zsmartsystems.zigbee.transport.DeviceType import com.zsmartsystems.zigbee.transport.TransportConfig @@ -47,22 +46,14 @@ class StartupCommand : AbsZigBeeCommand() { @Throws(Exception::class) override fun process(networkManager: ZigBeeNetworkManager, args: Array, out: PrintStream) { args.expect(3) -// -// networkManager.zigBeeTransport.apply { -// updateTransportConfig(TransportConfig().apply { -// addOption(TransportConfigOption.DEVICE_TYPE, DeviceType.COORDINATOR) -// }) -//// out.println("ZigBees status is: ${startup(true)}") -// out.println("Reinitialize: ${networkManager.reinitialize()}") -// out.println("start up: ${networkManager.startup(true)}") -// } - val transportOptions = TransportConfig() - - networkManager.setZigBeePanId(args[1].toInt()) - networkManager.setZigBeeExtendedPanId(ExtendedPanId(args[2])) - transportOptions.addOption(TransportConfigOption.DEVICE_TYPE, DeviceType.COORDINATOR) - networkManager.getZigBeeTransport().updateTransportConfig(transportOptions) - out.println("start up: ${networkManager.startup(true)}") + networkManager.zigBeeTransport.apply { + updateTransportConfig(TransportConfig().apply { + addOption(TransportConfigOption.DEVICE_TYPE, DeviceType.COORDINATOR) + }) +// out.println("ZigBees status is: ${startup(true)}") + out.println("Reinitialize: ${networkManager.reinitialize()}") + out.println("start up: ${networkManager.startup(true)}") + } } } \ No newline at end of file diff --git a/zigbee/src/main/java/com/rcswitchcontrol/zigbee/protocol/LazyDiscoveryExtension.kt b/zigbee/src/main/java/com/rcswitchcontrol/zigbee/protocol/LazyDiscoveryExtension.kt index 5325adb7..0a0ff43f 100644 --- a/zigbee/src/main/java/com/rcswitchcontrol/zigbee/protocol/LazyDiscoveryExtension.kt +++ b/zigbee/src/main/java/com/rcswitchcontrol/zigbee/protocol/LazyDiscoveryExtension.kt @@ -23,11 +23,11 @@ class LazyDiscoveryExtension( val backing = networkManager?.getExtension(ZigBeeDiscoveryExtension::class.java) as? ZigBeeDiscoveryExtension - ?: return ZigBeeStatus.INVALID_STATE + ?: return ZigBeeStatus.NO_NETWORK Log.i("TEST", "CONFIGURED LAZY DISCOVERY") -// backing.setUpdateOnChange(true) + backing.setUpdateOnChange(true) backing.updatePeriod = ZigBeeProtocol.MESH_UPDATE_PERIOD backing.refresh() diff --git a/zigbee/src/main/java/com/rcswitchcontrol/zigbee/protocol/ZigBeeProtocol.kt b/zigbee/src/main/java/com/rcswitchcontrol/zigbee/protocol/ZigBeeProtocol.kt index caabde66..d44526b2 100644 --- a/zigbee/src/main/java/com/rcswitchcontrol/zigbee/protocol/ZigBeeProtocol.kt +++ b/zigbee/src/main/java/com/rcswitchcontrol/zigbee/protocol/ZigBeeProtocol.kt @@ -39,7 +39,13 @@ import com.tunjid.rcswitchcontrol.common.ContextProvider import com.tunjid.rcswitchcontrol.common.deserialize import com.tunjid.rcswitchcontrol.common.serialize import com.tunjid.rcswitchcontrol.common.serializeList -import com.zsmartsystems.zigbee.* +import com.zsmartsystems.zigbee.ExtendedPanId +import com.zsmartsystems.zigbee.ZigBeeChannel +import com.zsmartsystems.zigbee.ZigBeeNetworkManager +import com.zsmartsystems.zigbee.ZigBeeNetworkNodeListener +import com.zsmartsystems.zigbee.ZigBeeNode +import com.zsmartsystems.zigbee.ZigBeeProfileType +import com.zsmartsystems.zigbee.ZigBeeStatus import com.zsmartsystems.zigbee.app.basic.ZigBeeBasicServerExtension import com.zsmartsystems.zigbee.app.discovery.ZigBeeDiscoveryExtension import com.zsmartsystems.zigbee.app.iasclient.ZigBeeIasCieExtension @@ -186,7 +192,7 @@ class ZigBeeProtocol(driver: UsbSerialDriver, printWriter: PrintWriter) : CommsP if (resetNetwork) reset() -// networkManager.setDefaultProfileId(ZigBeeProfileType.ZIGBEE_HOME_AUTOMATION.key) + networkManager.setDefaultProfileId(ZigBeeProfileType.ZIGBEE_HOME_AUTOMATION.key) transportOptions.apply { addOption(TransportConfigOption.RADIO_TX_POWER, 3) @@ -197,37 +203,35 @@ class ZigBeeProtocol(driver: UsbSerialDriver, printWriter: PrintWriter) : CommsP dongle.updateTransportConfig(transportOptions) - networkManager.addSupportedCluster(ZclIasZoneCluster.CLUSTER_ID) - -// listOf( -// ZclIasZoneCluster.CLUSTER_ID, -// ZclBasicCluster.CLUSTER_ID, -// ZclIdentifyCluster.CLUSTER_ID, -// ZclGroupsCluster.CLUSTER_ID, -// ZclScenesCluster.CLUSTER_ID, -// ZclPollControlCluster.CLUSTER_ID, -// ZclOnOffCluster.CLUSTER_ID, -// ZclLevelControlCluster.CLUSTER_ID, -// ZclColorControlCluster.CLUSTER_ID, -// ZclPressureMeasurementCluster.CLUSTER_ID, -// ZclThermostatCluster.CLUSTER_ID, -// ZclWindowCoveringCluster.CLUSTER_ID, -// 1000 -// ).sorted().forEach(networkManager::addSupportedClientCluster) -// -// listOf( -// ZclBasicCluster.CLUSTER_ID, -// ZclIdentifyCluster.CLUSTER_ID, -// ZclGroupsCluster.CLUSTER_ID, -// ZclScenesCluster.CLUSTER_ID, -// ZclPollControlCluster.CLUSTER_ID, -// ZclOnOffCluster.CLUSTER_ID, -// ZclLevelControlCluster.CLUSTER_ID, -// ZclColorControlCluster.CLUSTER_ID, -// ZclPressureMeasurementCluster.CLUSTER_ID, -// ZclWindowCoveringCluster.CLUSTER_ID, -// 1000 -// ).sorted().forEach(networkManager::addSupportedServerCluster) + listOf( + ZclIasZoneCluster.CLUSTER_ID, + ZclBasicCluster.CLUSTER_ID, + ZclIdentifyCluster.CLUSTER_ID, + ZclGroupsCluster.CLUSTER_ID, + ZclScenesCluster.CLUSTER_ID, + ZclPollControlCluster.CLUSTER_ID, + ZclOnOffCluster.CLUSTER_ID, + ZclLevelControlCluster.CLUSTER_ID, + ZclColorControlCluster.CLUSTER_ID, + ZclPressureMeasurementCluster.CLUSTER_ID, + ZclThermostatCluster.CLUSTER_ID, + ZclWindowCoveringCluster.CLUSTER_ID, + 1000 + ).sorted().forEach(networkManager::addSupportedClientCluster) + + listOf( + ZclBasicCluster.CLUSTER_ID, + ZclIdentifyCluster.CLUSTER_ID, + ZclGroupsCluster.CLUSTER_ID, + ZclScenesCluster.CLUSTER_ID, + ZclPollControlCluster.CLUSTER_ID, + ZclOnOffCluster.CLUSTER_ID, + ZclLevelControlCluster.CLUSTER_ID, + ZclColorControlCluster.CLUSTER_ID, + ZclPressureMeasurementCluster.CLUSTER_ID, + ZclWindowCoveringCluster.CLUSTER_ID, + 1000 + ).sorted().forEach(networkManager::addSupportedServerCluster) post( if (networkManager.startup(resetNetwork) !== ZigBeeStatus.SUCCESS) "ZigBee console starting up ... [FAIL]"