Try using the cmdsupported
and attsupported
commands to get a list of what the clusters support. Once you know what attributes are supported, you can try reading/writing them with the read/write commands to see if you can make it do something.
Could use some help getting cmdsupported and attsupported working. I see the args are ENDPOINT and CLUSTER, not sure where to get those from.
Output of nodes
:
0 0000 000D6F000AEC331C COORDINATOR 1 C091
16678 4126 4467550000004ADC END_DEVICE 1 ZIGBEE_HOME_AUTOMATION ON_OFF_SWITCH
Output of node 4467550000004ADC
:
Network Addr IEEE Address Logical Type EP Profile Device Type Manufacturer Model
>> node 4467550000004ADC
IEEE Address : 4467550000004ADC
Network Address : 57441
Node Descriptor : NodeDescriptor [apsFlags=0, bufferSize=61, complexDescriptorAvailable=false, manufacturerCode=22811, logicalType=END_DEVICE, serverCapabilities=[], incomingTransferSize=0, outgoingTransferSize=0, userDescriptorAvailable=true, frequencyBands=[FREQ_2400_MHZ], macCapabilities=[REDUCED_FUNCTION_DEVICE], extendedEndpointListAvailable=false, extendedSimpleDescriptorListAvailable=false, stackCompliance=30]
Power Descriptor : RECEIVER_ON_PERIODICALLY, [DISPOSABLE_BATTERY, MAINS, RECHARGABLE_BATTERY], DISPOSABLE_BATTERY, FULL
Associations : []
Endpoints :
1 : Profile 0104 ZIGBEE_HOME_AUTOMATION
: Device Type 0000 ON_OFF_SWITCH
-> BASIC
-> POLL_CONTROL
-> POWER_CONFIGURATION
-> THERMOSTAT
-> IDENTIFY
-> ON_OFF
<- OTA_UPGRADE
<- TIME
Neighbors:
Routes:
Thanks
Based on the nodes list the endpoint would be 16678/1
and the cluster is the thermostat cluster (I forget the number).
However, I’m a bit confused since the NWK address in the node summary seems to be different to that displayed in the nodes list and I’m not sure how that’s possible unless these were taken at different times (since NWK address can change).
If you now do a endpoint 16678/1
(or whatever the address really is) you will get a detailed list of attributes etc, and also the cluster numbers so you will see the thermostat cluster ID.
Yeah, I think they were from different times. The NWK address seems to be changing a lot, like multiple times a minute. Many times, by the time I type my command in, it’s already changed. Does that seem normal?
Yep, I got it:
IEEE Address : 4467550000004ADC
Network Address : 25229
Endpoint : 1
Device Profile : 0x0104, ZIGBEE_HOME_AUTOMATION
Device Type : 0x0000, ON_OFF_SWITCH
Device Version : 0
Input Clusters : (Server)
0000 Basic
S 0 r-- UNSIGNED_8_BIT_INTEGER ZCLVersion
S 1 r-- UNSIGNED_8_BIT_INTEGER ApplicationVersion
S 2 r-- UNSIGNED_8_BIT_INTEGER StackVersion
S 3 r-- UNSIGNED_8_BIT_INTEGER HWVersion
S 4 r-- CHARACTER_STRING ManufacturerName
S 5 r-- CHARACTER_STRING ModelIdentifier
S 6 r-- CHARACTER_STRING DateCode
S 7 r-- ENUMERATION_8_BIT PowerSource
S 16 rw- CHARACTER_STRING LocationDescription
S 17 rw- ENUMERATION_8_BIT PhysicalEnvironment
S 18 rw- BOOLEAN DeviceEnabled
S 19 rw- BITMAP_8_BIT AlarmMask
S 20 rw- BITMAP_8_BIT DisableLocalConfig
S 16384 r-- CHARACTER_STRING SWBuildID
0001 Power configuration
S 0 r-- UNSIGNED_16_BIT_INTEGER MainsVoltage
S 1 r-- UNSIGNED_16_BIT_INTEGER MainsFrequency
S 16 rw- BITMAP_8_BIT MainsAlarmMask
S 17 rw- UNSIGNED_16_BIT_INTEGER MainsVoltageMinThreshold
S 18 rw- UNSIGNED_16_BIT_INTEGER MainsVoltageMaxThreshold
S 19 rw- UNSIGNED_16_BIT_INTEGER MainsVoltageDwellTripPoint
S 32 r-- UNSIGNED_8_BIT_INTEGER BatteryVoltage
S 33 r-s UNSIGNED_8_BIT_INTEGER BatteryPercentageRemaining
S 48 rw- CHARACTER_STRING BatteryManufacturer
S 49 rw- ENUMERATION_8_BIT BatterySize
S 50 rw- UNSIGNED_16_BIT_INTEGER BatteryAHrRating
S 51 rw- UNSIGNED_8_BIT_INTEGER BatteryQuantity
S 52 rw- UNSIGNED_8_BIT_INTEGER BatteryRatedVoltage
S 53 rw- BITMAP_8_BIT BatteryAlarmMask
S 54 rw- UNSIGNED_8_BIT_INTEGER BatteryVoltageMinThreshold
S 55 rw- UNSIGNED_8_BIT_INTEGER BatteryVoltageThreshold1
S 56 rw- UNSIGNED_8_BIT_INTEGER BatteryVoltageThreshold2
S 57 rw- UNSIGNED_8_BIT_INTEGER BatteryVoltageThreshold3
S 58 rw- UNSIGNED_8_BIT_INTEGER BatteryPercentageMinThreshold
S 59 rw- UNSIGNED_8_BIT_INTEGER BatteryPercentageThreshold1
S 60 rw- UNSIGNED_8_BIT_INTEGER BatteryPercentageThreshold2
S 61 rw- UNSIGNED_8_BIT_INTEGER BatteryPercentageThreshold3
S 62 r-- BITMAP_32_BIT BatteryAlarmState
0003 Identify
S 0 rw- UNSIGNED_16_BIT_INTEGER IdentifyTime
0006 On/Off
S 0 r-s BOOLEAN OnOff
S 16384 r-- BOOLEAN GlobalSceneControl
S 16385 rw- UNSIGNED_16_BIT_INTEGER OffTime
S 16386 rw- UNSIGNED_16_BIT_INTEGER OffWaitTime
0020 Poll Control
S 0 rws UNSIGNED_32_BIT_INTEGER CheckinInterval
S 1 r-s UNSIGNED_32_BIT_INTEGER LongPollInterval
S 2 r-s UNSIGNED_16_BIT_INTEGER ShortPollInterval
S 3 r-s UNSIGNED_16_BIT_INTEGER FastPollTimeout
S 4 r-- UNSIGNED_32_BIT_INTEGER CheckinIntervalMin
S 5 r-- UNSIGNED_32_BIT_INTEGER LongPollIntervalMin
S 6 r-- UNSIGNED_32_BIT_INTEGER FastPollTimeoutMin
0201 Thermostat
S 0 r-s UNSIGNED_16_BIT_INTEGER LocalTemperature
S 1 r-- UNSIGNED_16_BIT_INTEGER OutdoorTemperature
S 2 r-- BITMAP_8_BIT Occupancy
S 3 r-- UNSIGNED_16_BIT_INTEGER AbsMinHeatSetpointLimit
S 4 r-- UNSIGNED_16_BIT_INTEGER AbsMaxHeatSetpointLimit
S 5 r-- UNSIGNED_16_BIT_INTEGER AbsMinCoolSetpointLimit
S 6 r-- UNSIGNED_16_BIT_INTEGER AbsMaxCoolSetpointLimit
S 7 r-s UNSIGNED_8_BIT_INTEGER PICoolingDemand
S 8 r-s UNSIGNED_8_BIT_INTEGER PIHeatingDemand
S 9 r-- BITMAP_8_BIT HVACSystemTypeConfiguration
S 16 r-- UNSIGNED_8_BIT_INTEGER LocalTemperatureCalibration
S 17 r-- UNSIGNED_16_BIT_INTEGER OccupiedCoolingSetpoint
S 18 r-- UNSIGNED_16_BIT_INTEGER OccupiedHeatingSetpoint
S 19 r-- UNSIGNED_16_BIT_INTEGER UnoccupiedCoolingSetpoint
S 20 r-- UNSIGNED_16_BIT_INTEGER UnoccupiedHeatingSetpoint
S 21 r-- UNSIGNED_16_BIT_INTEGER MinHeatSetpointLimit
S 22 r-- UNSIGNED_16_BIT_INTEGER MaxHeatSetpointLimit
S 23 r-- UNSIGNED_16_BIT_INTEGER MinCoolSetpointLimit
S 24 r-- UNSIGNED_16_BIT_INTEGER MaxCoolSetpointLimit
S 25 r-- UNSIGNED_8_BIT_INTEGER MinSetpointDeadBand
S 26 r-- BITMAP_8_BIT RemoteSensing
S 27 r-- ENUMERATION_8_BIT ControlSequenceOfOperation
S 28 r-- ENUMERATION_8_BIT SystemMode
S 29 r-- ENUMERATION_8_BIT AlarmMask
S 30 r-- ENUMERATION_8_BIT ThermostatRunningMode
S 68 r-- BITMAP_32_BIT ACErrorCode
Output Clusters : (Client)
000A Time
S 0 rw- UTCTIME Time
S 1 rw- UNSIGNED_16_BIT_INTEGER TimeStatus
S 2 rw- SIGNED_32_BIT_INTEGER TimeZone
S 3 rw- UNSIGNED_32_BIT_INTEGER DstStart
S 4 rw- UNSIGNED_32_BIT_INTEGER DstEnd
S 5 rw- SIGNED_32_BIT_INTEGER DstShift
S 6 r-- SIGNED_32_BIT_INTEGER StandardTime
S 7 r-- SIGNED_32_BIT_INTEGER LocalTime
0019 OTA Upgrade
S 0 r-- IEEE_ADDRESS UpgradeServerID
S 1 r-- UNSIGNED_32_BIT_INTEGER FileOffset
S 2 r-- UNSIGNED_32_BIT_INTEGER CurrentFileVersion
S 3 r-- UNSIGNED_16_BIT_INTEGER CurrentZigBeeStackVersion
S 4 r-- UNSIGNED_32_BIT_INTEGER DownloadedFileVersion
S 5 r-- UNSIGNED_16_BIT_INTEGER DownloadedZigBeeStackVersion
S 6 r-- UNSIGNED_8_BIT_INTEGER ImageUpgradeStatus
S 7 r-- UNSIGNED_16_BIT_INTEGER ManufacturerID
S 8 r-- UNSIGNED_16_BIT_INTEGER ImageTypeID
S 9 r-- UNSIGNED_16_BIT_INTEGER MinimumBlockRequestDelay
S 10 r-- UNSIGNED_32_BIT_INTEGER ImageStamp
The On/Off cluster looks promising for the timer, especially OffTime and OffWaitTime
I’ve been running read tests like this:
On/Off → OnOff
read 13501/1 0006 0Off Wait Time
read 13501/1 0006 16386
A few gave good responses and returned data, but most fail with a TIMEOUT. I see TIMEOUTs even if I run a duplicate read for the same cluster/attribute right after a successful read.
Also tried a few writes:
write 19314/1 0006 16386 1
but those are timing out too.
Here is my nodes output:
Network Addr IEEE Address Logical Type EP Profile Device Type Manufacturer Model
0 0000 000D6F000AEC331C COORDINATOR 1 C091 0000
13501 34BD 4467550000004ADC END_DEVICE 1 ZIGBEE_HOME_AUTOMATION ON_OFF_SWITCH
22248 56E8 4467550000004E65 END_DEVICE 1 ZIGBEE_HOME_AUTOMATION ON_OFF_SWITCH
25928 6548 804467550000004E UNKNOWN
56544 DCE0 804467550000004A UNKNOWN
I have 2 hose timers paired to the stick from when I was experimenting with the OH zigbee binding. Maybe I should remove them and repair them?
Here is my log file in case it’s helpful
Thanks
Dave
No - it should only normally change it it leaves and rejoins the network, or changes parents.
Probably, this is an issue with battery devices. By default, ZigBee end devices are required to poll their parents every 7.6 seconds to check for messages. Many end devices don’t do this, and this is the result. I note that this device supports the poll control cluster, so it may be possible to control this, but at the moment application support for this is only partly implemented.
Did the attsupported
and cmdsupported
commands work?
In an attempt to make this easier to troubelshoot, I unplugged/removed the batteries from all of my zigbee devices except for one host timer. Also put fresh batteries in it just in case.
Makes sense. I suspect another reason for the timeouts is due to the network address changing after I issue the command. I see these entries in the console, which seem to coincide with the network change (realize I am likely stating the obvious to you ):
Node Updated ZigBeeNode [state=ONLINE, IEEE=4467550000004E65, NWK=2A70, Type=END_DEVICE]
Node Updated ZigBeeNode [state=ONLINE, IEEE=4467550000004E65, NWK=2A70, Type=END_DEVICE]
They always seem to come in pairs.
Got distracted by the other stuff and forgot to execute these last time
attsupported
worked for some clusters, but not others:
attsupported 3806/1 0000
Supported attributes for server cluster Basic (0000)
AttrId Data Type Name
0 UNSIGNED_8_BIT_INTEGER ZCLVersion
1 UNSIGNED_8_BIT_INTEGER ApplicationVersion
2 UNSIGNED_8_BIT_INTEGER StackVersion
3 UNSIGNED_8_BIT_INTEGER HWVersion
4 CHARACTER_STRING ManufacturerName
5 CHARACTER_STRING ModelIdentifier
6 CHARACTER_STRING DateCode
7 ENUMERATION_8_BIT PowerSource
attsupported 18410/1 0001
Supported attributes for server cluster Power configuration (0001)
AttrId Data Type Name
32 UNSIGNED_8_BIT_INTEGER BatteryVoltage
52 UNSIGNED_8_BIT_INTEGER BatteryRatedVoltage
53 BITMAP_8_BIT BatteryAlarmMask
54 UNSIGNED_8_BIT_INTEGER BatteryVoltageMinThreshold
I was a little suprised to see BatteryPercentageRemaining missing from this list, as I seem to remember the Lowes Iris hub showing battery %. I’ll will bring it up sometime this weekend and verify.
attsupported 30375/1 0006
Supported attributes for server cluster On/Off (0006)
AttrId Data Type Name
0 BOOLEAN OnOff
attsupported 40050/1 0020
Error executing command: A cluster specified by 0020 is not found for endpoint 1
attsupported 40262/1 0201
Error executing command: A cluster specified by 0201 is not found for endpoint 1
The not found for endpoint 1
messages come back very quickly, so it appears that the library is throwing those errors directly as opposed to sending a message to the device. The endpoint
command output only showed Endpoint : 1
so I’m not sure what else to do for those clusters.
I assume the library caches the results of attsupported
? I ask because once I got good output, the command worked every single time I tried it. I haven’t seen that type of consistency with the read commands.
cmdsupported
failed for all clusters with the following
cmdsupported 63030/1 0000
Failed to retrieve supported generated commands
~10 second pause
Failed to retrieve supported generated commands
I’ll keep trying to see if I can get a good result back
Since OnOff showed as supported by attsupported
, I tried doing some writes. Most timed out but one came back with
write 46795/1 0006 0 1
Attribute value write error: UNKNOWN
Is there anything I should check for in the logs on this one?