New Zooz ZEN20 Device Type published

Today SmartThings deployed a device handler for the Zooz ZEN20 Power Strip that uses the recently released Composite Devices feature of the SmartThings platform. The ZEN20 is a Z-Wave device with five separately switchable outlets. There was no published device handler for it before today, but Community members stepped up and created handlers that allowed the individual outlets to be controlled with custom commands (and we appreciate those contributions). The custom command approach worked great in allowing each outlet to be individually controlled from the device detail page, but it didn’t allow many SmartApps such as Smart Lighting to control individual outlets because those apps only work with the standard Switch capability. A custom SmartApp was required to control the individual outlets. At the time these handlers were written, there was no alternative to this approach.

Now that the platform allows devices to have child devices this limitation can be overcome. The ZEN20 device has five child devices – one for each switchable outlet. These child devices don’t appear in the Things and Rooms views, but they do appear in the list of devices when configuring the capability.switch input of a SmartApp. That lets you control individual switches from any SmartApp capable of controlling a switch. The child devices also appear in the device detail page of the parent device, allowing individual outlets to be controlled from the SmartThings mobile app.

More composite devices will be coming soon. We expect to release a composite version of the Aeon SmartStrip next week. It has four individually switchable outlets that will now appear as child devices of the strip. In general composite devices are useful when a device has multiple attributes or commands that fall under the same capability. For example, a refrigerator typically has two separate temperature sensors — one for the frozen foods compartment and the other for the main compartment. Using a child device for each of these compartments will allow generic temperature monitoring SmartApps to be used, since each child device has its own temperature attribute.

UPDATE:

There’s information here about how to create and manage the child devices of a composite device type. We’ll be adding to it to describe how to display child devices in the parent’s device detail page. In the meantime you can look at the Zooz ZEN20 source code for an example of displaying the child outlet devices as 1x6 tiles in the parent detail page and this simulated refrigerator device type as an example of how to display more than one child device in the parent’s detail page with different tile sizes.

21 Likes

That sounds great. Will this apply to in-wall dual relays that control two electrical loads? Currently they’re all kind of a pain to use with ST.

2 Likes

@tgauchat will these new child devices be viewable in AT as im sure they will roll out across many device types - such as multiple wall light switches which preciously required more complex smartapps etc

1 Like

If I understand @bflorian’s description and details correctly, and if they are implemented in conformance with SmartThing’s standards (e.g., include Capability “Sensor” and “Actuator”, “Switch”, etc.), then this is very good news and I’m very optimistic it will be seamless.

I must say, however, that I wish community developers were given more details and more advance notice, so that we could study, test, give feedback, etc., and then incorporate any possible tweaks or critical changes to our SmartApps and Apps much more proactively. The SmartApp deployment cycle takes a significant length of time, especially for us because we run everything through a thorough Beta soak before repeating the submission for Production.

So every second of official, detailed, and accurate advance notice and access helps.

1 Like

This sounds very much like the SmartApp device parent child relationship where the SmartApp can instantiate a number of child devices.

What would this look like and how can we customize this when writing custom DH’s?

This is great news!!

Yes, any device that has more than one component should be able to be handled with this approach

Yes, each switchable outlet is a device in its own right that implements the “Switch”, “Actuator”, and “Sensor” capabilities, so it should be selectable from any SmartApp asking for any of those capabilities, including AT.

2 Likes

So where/when are details coming out on how to modify custom device handlers to take advantage of this new platform capability?

http://docs.smartthings.com/en/latest/composite-devices/index.html is a good place to start.

1 Like

I updated the original post with links to documentation and examples. Thanks for the feedback

3 Likes

@bflorian

Bob,

First - THANK YOU! This is awesome!

Second - I think I may have found an issue in the new Composite Device feature. I am working on using the new Composite Device Parent/Child DH’s to work with my Arduino ST_Anything library. In general, things work well assuming one only adds Child Devices to a Parent Device. The issue I am having is when one removes a child device from a parent via the ST Phone App. In this case, the childDevices.size() is not properly decremented. Thus, when I try to find any remaining child in the collection with a matching deviceNetworkId, I get a null reference error using this code:

def childDevice = childDevices.find{it.deviceNetworkId == "${device.deviceNetworkId}-${name}"}

If I manually delete all child devices, and then re-add them, the collection’s size() is corrected.

Note: During the creation of these Child Devices, I am specifying “isComponent: false” which allows the devices to appear as normal things, and permits them to be deleted.

My long-term goal is for a user to simply configure their Arduino sketch, and then have the Parent Device Handler automagically create all of the necessary Child Devices as the Arduino updates flow into the Parent DH that do not match an existing Child Device Handler’s networkDeviceId. If a user later decides to add more devices to their Arduino, the additional children will simply appear in ST. However, I need to account for the case where a user decides to delete child devices as well.

Any help you can provide would be very helpful.

Again, thank you for creating the Composite Device Handler! This really should make many users very happy!

Dan

1 Like

What’s the diffrence between the Zooz Power Stip and Zooz Power Strip Outlet DH? Which one should we be using?

Thank you.

We’re looking into the device deletion issue @ogiewon . It seems to be some sort of race condition that’s occurring in our production environment but was not caught during QA testing in our test environment.

The Zooz Power Strip device type is the one used for the strip itself @Tolik . And instance of the Zooz Power Strip Outlet device type is created for each of the file outlets of the strip. They are hidden from the Things view but appear in the details page and when configuring SmartApps. If you already have a Zooz device using a custom DTH you should switch it to Zooz Power Strip. The five child devices for each outlet should be created when you save that change.

2 Likes

I’ve been using a custom DH with the following:

It has worked for me and provides me with 6 devices (1 overall on/off and 5 individual switches) that show in the Room List and Alexa sees them as individual switches.

If the devices doesn’t show up in the room list, will Alexa see the device as a switches and offer voice control for 6 separate switches as the current implementation allows?

2 Likes

Does the zooz or aeon smartstrip run local? And if not, is there a plan to?

Also, for the local list, what does the aeon outlet refer to? It does not seem to refer to the current aeon smart switches.

Does it refer to a discontinued item?

Bob,

Thanks for looking into the race condition. I was able to loop through the collection manually and trap the errors in a Try-Catch block to allow my code execution to continue without harm from the null values in the “deleted child devices.”

Thanks,

Dan

Did we get an answer to this?

My experience has been that every child device (whether visible on the Things page or not) is accessible from every SmartApp, including the Amazon Echo SmartApp.

Ok, Thanks… sounds like I would just make sure to relabel each of the Child Devices in the IDE so Alexa will control them by something other than the generic Channel CH1, etc. I didn’t see a way to relabel the child devices from the ST app.

I’m still not sure if I like that there’s not an option to also show a child device as an independent thing in a room. I tried assigning a room to a child device in the IDE, but it didn’t make it available in the room.