Programmatically change component driver of child devices

Is there any way to programmatically change the driver of a component child device from the parent app?

I have been playing with minimizing driver features, and came to the realization that what I really need is a way to change the child device drivers based on the features available on the child device (which can change).

Checking in to see if anyone know of a way to do this...

I'm pretty sure I've seen this done in ST DTHs or SmartApps, but I cannot remember the name of the method that was used. I also don't know if this was implemented in Hubitat. But this memory is pretty useless since I can't remember the name, and a search is failing me...sorry. :smiley: But maybe someone else will remember, or you could try scouring the SmartThingsPublic repos or other popular sources to see if you're able to find anything...

Think you would need to deleteChildDevice and then addChildDevice with the new driver.

That would sort of work, but it would create an entirely new device (and so any apps using the device will be affected). I do remember that ST had a way to do this--just wish I could remember what it was (or if it works here)....

This creates a new Device ID, and forcefully removes the device from any apps that are subscribed to it. I just want to change a dimmable bulb to a ColorTemp bulb, to an RGB bulb. In this direction, I don't break automations, and can provision devices minimally, and only expand them as their capabilities grow. This is for an integration, so such a scenario could happen.

Exactly why I ask. Thanks for understanding my concern here. I will see if I can find anything in the ST documentation.

SmartThings has "setDeviceType" but I don't think HE supports that.

I ran into a use case when writing a driver for some ZigBee devices where their fingerprints were problematic. So being able to change the driver once the device had been correctly identified would have been helpful.

1 Like

I donโ€™t see it in the documentation. I suspect itโ€™s not supported.