Having issues with child devices and child/parent communication

I have a switch that also has an endpoint that I’d like to break out as a child device. I can create the child device but then it all goes sideways. For one thing, the child device shows up as “unavailable” after a bit of time. I’m not quite positive how to address that but I think it’s related to the parent device issues I’m having. The child device will call parent routines and such, but the parent won’t actually send any commands to the device, either the root or the child.

Are there any good docs on this anywhere? Or anyone have any suggestions?

Note that all of the above is the classic app so far.

This may be related to the following thread:

I fixed it but doing the following:

PARENT


CHILD

It resolves the unavailability thing, but for some reason, it also temporarily updates the attribute of the parent.

Thanks JD, but I don’t think that’s quite the same thing. I’m seeing my issue device types, not apps. And I’m strictly in classic right now.

1 Like

@krlaframboise is seeing the same problem.

@tpmanley not sure if you’re aware yet, but there seems to be issues with the ST default Child Switch handler and the new app

Just to reiterate though, I haven’t even sniffed the new app with this yet. This is all classic app so far.

1 Like

I use the new app, but this problem was also happening on the old one.
It is working now on both after these workarounds.

You fixed the child device becoming unavailable, right? Did you experience any of the issue with the parent device not issuing commands to the child device (or, rather, to the endpoint)?

Yes, that is right. Both problems was fixed. I also needed to define runLocally: false

So…important things I learned in this endeavor…

  1. Child devices (for zwave at least) must call a routine that sends commands direct to the hub, ie “hubaction”
  2. You have to have the parent send events to the child in order to update the child status
  3. There’s precious little documentation around child types and, were it not for this community, I’m not sure how much would ever get done.
1 Like

Interesting read here. I’ve had to do something like this, except I had to have hubaction calls in the parent in order to receive a response. Parent is a music server and handles all the children player activity.

So in my situation I have the child call a parent command requesting an action using
parent.actionCommand(childId,action)

Parent then takes that and builds the appropriate hubaction. It then parses the response. Since I can determine the child involved in the response I can then send status updates through
childDevice.updateChild(map StatusInfo)

I’m pretty sure I had to explicitly define updateChild command for this to work. The child device then does it’s updating from the info received.

These aren’t the exact names I used, can’t remember off the top of my head. There was almost no documentation on how to do this, it took a lot of trial and error due to the async nature of hubaction responses.

Here’s the link to actual code if you want to see exactly what I did. The Server is the parent and the player is the child.

https://github.com/Mellit7/Smartthings-SqueezeBox-Control

1 Like

That’s actually exactly what I had to do as well. The child device does nothing except send requests to the parent that then does the real work. Thanks for sharing and confirming!!