Need help getting Child atomicState value in Parent

In a child app the following atomicState is set as follows
atomicState.field = ‘12345678’

Then in the parent at a later time I want to get the atomicState.field value, it shows the atomicState object but when I try using it, a null error is thrown.
def childapps=findAllChildAppsByName(‘SHM Delay Child’)
log.debug "$it.simkeypad $it?.atomicState.field
// def obj=it?.atomicState.field
// { k,v -> log.debug “$k $v”}

log.debug “$it.simkeypad $it?.atomicState.field”
generates this in live logging
log.debug “$it.simkeypad ${it?.atomicState.field}”
generates an error
error java.lang.NullPointerException: Cannot get property ‘field’ on null object @line -1 (doCall)

Anyone know how to get the value of the child’s atomicState.field in a parent app?

Solved this by adding a function in the child app that is called from the parent app

In childapp
def getAtomic(field_name)
{return atomicState[field_name]} //allow parent to get atomic data from child

In parent app
def simKeypadDevices=findAllChildAppsByName(‘SHM Delay Simkypd Child’)
log.debug “$it.simkeypad ${it.getAtomic(‘field’)}”

Tagging @Jim here.

AFAIK that when a parent app calls a child device handler the return value cannot be relied upon as the ST design.

Jim does this hold true to parent/child apps also or can parent/child apps return values from methods reliably? If so is there is any restrictions on the return type?

Thank you for the response.

The child app is a SmartApp, not a DTH, and it’s been reliably working as described in my earlier post. I have read about the restriction with atomicState in a DTH

I don’t know the answer. Maybe @gausnes knows?

@RBoy is right, when you call get childDevices or childApps it isn’t the SmartApp / Device Handler but instead a InstalledSmartApp / Device that has a subset of the functionality exposed.

See for documentation on what that object does support


This topic was automatically closed after 28 hours. New replies are no longer allowed.