|
Trying to connect the _ZigBee Dongle_ __Texas Instruments CC2531__ to the smart plug __FlexGrid FlexPlug__ there were problems.
|
|
This page explains how zigbee4java works in relation with the hardware used to perform the communication in the ZigBee network.
|
|
All the tests were done with the zigbee-gateway-server console, version 3.1.0.
|
|
|
|
With permit join set to enable the smart plug join the network and is added to the device list.
|
|
|
|
The plug generates repeatedly a message of the IdentifyCluster containing an IdentifyQueryCommand and send it broadcast.
|
|
|
|
|
|
|
|
I found that the library does not explicitly manage broadcast messages, so the message is received to all endpoints (by default the program creates 3 endpoints for the dongle, with different clusters on each), but, because only endpoint 1 has the Identify Cluster, when the message reaches the other endpoints an exception is thrown. The exception let the console usable but the long message that prints on the screen is annoying, so see issue #4. This is also an efficiency issue.
|
|
ZigBee Alliance defines some packets in their format. In particular it specifies anything regarding the ZigBee Cluster Library (ZCL) and some packets of the ZigBee Device Object (ZDO, Zigbee Device Profile for BeeStack) (at least in contents).
|
|
|
|
The dongle vendor adds to these primitives the Test Library (ZigBee Test Client, ZTC, for BeeStack).
|
|
|
|
|
|
Also noticed that changing the permit join parameter generates an unknown package, then a warning. Analyzing the packages I think that the unknown one is only some form of notification that the status changed, in fact the unknown frame is not generated if the join command is used without changing the status (e.g. join enable when permit join is already enabled). I don't have the certainty because the command ID of the package is not on the "Z-Stack Monitor and Test API" document.
|
|
The library uses the Test Client to perform some actions on the dongle, like CPU reset or set/get channel, PAN-ID, and so.
|
|
|
|
The ZDO is used to perform actions mainly related to network management.
|
|
|
|
The packets defined by the ZigBee Alliance are defined in the *zigbee-common* package that is the higher level, hardware independent part of the library.
|
|
|
|
|
|
|
|
The parts that are dependent on dongle are inside the *zigbee-dongle-x* packages. Although not everything inside these packages is hardware dependent, in fact it is possible to isolate some classes that have a stronger dependency then others. I extracted a UML class diagram that highlights these parts.
|
|
|
|
![SimplifiedUMLClassesDiagram.svg](/uploads/3dda3058fa989cd1af4c0d9b6996084f/SimplifiedUMLClassesDiagram.svg)
|
|
|
|
|
|
Trying to send any command through the dongle goes on time-out.
|
|
|
|
The messages I tried to send are:
|
|
|
|
* write and read message
|
|
|
|
* on and off messages
|
|
|
|
* IdentifyCommand
|
|
|
|
* IdentifyQueryResponse |
|
|
|
\ No newline at end of file |
|
|