[ST Edge] How to create child devices with edge?

Was this ever resolved? Is multi-component devices working on the edge platform? I have multiple devices I bought specifically for the capabilities it came with that used child devices on the groovy platform.

1 Like

The concept of “child devices” no longer exists on Edge. For devices that have multiple components like LED strips, you can do the following:

  1. Create a device profile with multiple components and map them with the corresponding endpoints (if necessary) as described in this doc (Zigbee)
    • In this option, only the main component is exposed to some third-party integrations like Alexa.
  2. Create separate devices in the same driver using try_create_device (Only for LAN drivers). Despite all being created with the same driver, they won’t be related as parent/child.
    • Here you can use persistent storage to keep control of the devices created
    • Also, be careful of creating several devices at once, you might have to avoid the device’s thread using cosock.spawn (please, take a look at this post)
1 Like

@nayelyz ,

I think I’ve seen somewhere a limitation that try_create_device can be used only for LAN drivers. Has this limitation beed removed and it now can be used from Zigbee drivers?
Thanks

3 Likes

Yes, that’s included in the doc link I shared above:
image
I already included it in the text, sorry for the confusion.

1 Like

Secondary switch gangs are not available in routines (and there is no Child), but they appear in Smart Lighting as switch “2/3”. Than with a “virtual Child switch” third-party voice integration could control these devices again.

If no Child Device can be created, than could I use a Virtual Device (switch) to control a secondary switch in a 2 or 3 gangs switch (Zigbee)?

I use @Mariano_Colmenarejo virtual mirror switches for this purpose.

What do you mean by “secondary”? Do you mean that in the routines, only the main switch appears?
I have a multi-component device and I see the switch capability appears for each component

Or, do you mean in a third-party app?

As a side note, please remember that the Smart Lighting app is part of the legacy platform. The team mentioned the automation there will be migrated (only the active ones) but be careful creating new.

I’ve seen that’s the solution applied from many users. Thanks, @Paul_Oliver, for suggesting a solution! :smiley:

Applied by some power users, sure. But way too complicated for most people who just buy a typical inexpensive two gang light switch and expect it to work out of the box with SmartThings. :thinking:

While we’re talking about it…there will be Matter-compatible multi gang light switches soon. I hope those will be “plug and play” with the new SmartThings architecture because they will be on other Matter-compatible platforms.

1 Like

They should work directly on SmartThings, the multi-component devices are fully supported there, we can create Routines for those devices. I understood the issue is with third-party apps, like Alexa (that’s already been reported).

I checked the Smart Lighting app, and yeah, it doesn’t allow you to select actions for each component and it only performs the action in “main”.
I’ll confirm with the team they’re considering the cases of multi-component devices in the new version of the app.

If I’m missing something, please provide more details :smiley:

1 Like

Smartlighting can select actions in all components, but you don’t know which device this component belongs to since the names are identical in all

Update: sorry can select but does not work for components, only for main

2 Likes

This is exactly what I tried to explain. Thanks @Mariano_Colmenarejo !
With that extra situation… only available in Smart Lighting, not in Routines. Why?

It should be ok in Routines, please share a screen capture of the device’s detailed view and how it looks in the Routines tool.

I have an Edge driver that creates a device with three components, each with a momentary capability. In ActionTiles, which has a Groovy based connector SmartApp, the components are presented in the device selection lists as if they are separate devices and momentary tiles can be created using them. They just don’t work.

So… there is not much to show in Routines. I have only a single switch with the Main´s name.
And for Smart Lighting I have the same image that @Mariano_Colmenarejo did post.

This device “Banheiro Banheiro” os a 2 ganha switch with @Mariano_Colmenarejo mukti-awirch edge driver.

However, in Routines I have only the Main available to select.

SharpTools has a version in beta testing which is using the new architecture. I wonder if it has the same problem. (Multi component devices only being able to use some components.)

@joshua_lyon

Before the Groovy platform is shutdown, we plan to enable multi-component device support in the ‘next-gen’ integration.

We’ve tested it in our local development instance, but have placed a temporary artificial limit to not sync over additional components in our current release. The challenge is that hybrid devices which are both Parent-Child and Multi Component (MCD) show up differently in Groovy compared to the Next Gen API which leaves no way cross-identify between the legacy and the new… which poses challenges when you want to be able to seamlessly migrate things. :slight_smile:

We’ve brought this up with the SmartThings engineering teams, but may end up just providing the option to manually select the migration target for the subset of impacted devices. :smiley:

2 Likes

What driver is that? That’s interesting that it shows up as individual devices in the Groovy API. As @nayelyz mentioned, I was under the impression that child devices aren’t a concept in Edge Drivers - things were purely Multi Component (MCD). I wonder if something with the translation layer between the ‘next gen’ platform (which Edge drivers get exposed in) and the legacy groovy platform reinterprets these into a device construct.


I suspect that the SmartThings team will have the same challenge with translating between components that were exposed as devices in the Groovy platform and how they translate those to device+component references. Looking forward to those tools for cross-identification being better exposed. :slight_smile:

2 Likes

I’ve always found that components show up in the capability based device selection lists in legacy SmartApps. It was true for DTHs (e.g. my Ikea dimmers exposed the top and bottom buttons as well as the main device), it is true for whatever integration the mobile presence is (it exposes the linked places as presence sensors), and it is true for the only Edge driver I’ve created (a simple single virtual device).

The only difference with Edge is that it doesn’t work. The push command doesn’t work for the Edge components from ActionTiles. It was OK for a previous DTH based device along the same lines.

In automations You must select the multicomponent device and then it shows you all its components with the conditions or actions

IF part:

Then part:

2 Likes

That’s what I meant by smart lighting app, you can select the components as if they were separate devices and create the automation, but it doesn’t run.

On the other hand, as in multicomponent switches you can only change the name of the Main component, all the secondary components have the same names, switch1, switch2… and you don’t know which device each one belongs to.