I recently started working on creating a new “Device Type” - A zigbee based rollershade solution. I was able to successfully pair the device with ST. Here is the raw description of the device :
Is there anything Im doing wrong ? The motor is based on ZigBee HA 1.2. Any pointers on how to proceed would be of great help! Also, is there an easy way to see all the supported “capabilities” and “attributes” for the device ?
I think I’ve figured out one step… The zigbee device is acting as a client. When I send client specific commands (referred to ZigBee HA 1.2 documentation) I can clearly see the Up, Down and Stop statuses… Now, I am trying to figure how to set the following:
Predefined points (10%, 50%, 70%)
Set lower limit
Set higher limit
Set device speed
ZigBee HA 1.2 (can be found here http://r.upe.sh/ZigBee_Home_Automation.pdf) lists a table with the title “Set Attribute” and the table is listed under the “Server” component (refer to Section 8.3 or page 179 in the above PDF). I tried zigbee.writeAttribute(0x0102, 0x0010, 0x0010, 0x0500) – Breakdown below
0x0102 -> windowCovering Cluster ID
0x0010 -> Window Covering Setting Attribute from Page 179 - Table 9.20
0x0012 -> InstalledOpenLimit from Page 183 - Table 9.24
0x0500 -> arbitrary value for the set attribute
This attribute is readOnly as per the table.
I also tried this: zigbee.writeAttribute(0x0102, 0x0010, 0x0015, 0x0500) //Set the device speed
None of these appear to work… Please tell me how to proceed.
Are you making the device and the Device Type Handler or writing the Device Type Handler for an existing device?
According to the ZigBee HA 1.2 spec the Window Covering cluster is provisional and not certifiable. If you are working with an existing device this means that it hasn’t been tested to validate it confirms to the spec. I would hope that it does but just something to be aware of.
In general you should be able to use any attributes or commands listed as Mandatory. Some or all of the optional attributes and commands may be implemented but it’s up to the device manufacturer. If the attribute is listed as Read only then you can read it with the zigbee.readAttribute command. If the attribute is listed as Read/Write then you can also write it with zigbee.writeAttribute.
I haven’t spent much time looking at the Window Covering cluster, but I think you may be able to configure predefined points with attribute 0x0018 (Intermediate Setpoints - Lift) and device speed with the attribute 0x0014 (Velocity). I don’t immediately see a way to set the lower and higher limit. Keep in mind that both of those attributes are optional so if you get an “unsupported attribute” status back that means that it isn’t implemented. I suggest trying to read those attributes first to see if they are implemented (zigbee.readAttribute(0x0102, 0x0018) and zigbee.readAttribute(0x0102, 0x0014). Then you can try writing them to see if you can change the behavior of the shades.
Thank you for your response. I am trying to create both the “Device Handler” and the “Device” itself. I just tried to read the attributes mentioned in your post and I got back the same response “Unsupported Attr”.
The device is currently being developed. Do you suggest any other profile / way to get this device certified and support the above discussed functionality ?
It’s strange because the ZigBee HA spec says the Window Covering cluster is not certifiable but the ZigBee HA test spec says that it is certifiable. If you search for “shade” on the ZigBee certified product page you’ll find products like this that include the Window Covering cluster in their conformance document.
I suggest talking to the ZigBee Alliance directly if you’re concerned about the ability to certify but it looks to me like you can keep using Window Covering.
You can look at the Conformance Document listed on the above link to see the details of the attributes and commands they supported in that particular product. Note that they support some of the optional attributes but they also implemented a number of manufacturer specific extensions to the cluster. You could do something similar for your device if you don’t find an existing attribute that works for what you need. I’d recommend avoiding that if you can if you want to achieve maximum compatibility with different systems.