Recent Platform Update Broke Parse Method Response/Result (April 2017)

How did you trigger an upgrade? I’m still on 17.12?

The “Parse Method Response/Result” hot fix is not related to any Hub upgrade, it is a SmartThings cloud correction, as explained above by Tom Manley.

1 Like

This is still not working for me… :frowning: I’m quite new to this, so my device handler might be kind of funky, but it did work for many months before the update. I’d appreciate if anyone can have a look at it and see what’s not working.

I guess it’s the returns from the methods that are in question. I’ve found a way to modify the WakeUpNotification method so commands are sent out. But when the MeterReport is received and interpreted no events are generated.

This is the version that has been working for months:

Put a delay between your commands, if response() is working now you are putting your device to sleep with wakeUpNoMoreInformation() before it can respond.

(to be on a safe side I recommend 1000ms between Get commands and 5000ms before wakeUpNoMoreInformation())

Thanks, I’ll try that. But the MeterReport actually comes back (the one requesten in the WakeUpCommand). But I’m not getting the values to SmarttThings through the return on the MeterReport… Any idea?

I also had issues returning multiple events from zwaveEvent() and parse() recently. Maybe someone can confirm that there is an issue with that?

Try replacing ‘events << createEvent(’ with ‘sendEvent(’

Thanks. Tried that, and still no action with sendEvent . Super annoying, and I lack the depth of knowledge to really understand what’s going on.

I would start from putting log.debug messages in front of every event to check if even the code is executed. Maybe some if statement is not behaving like you expect - for example you have if (state.previousValue) - if state.previousValue is 0 it will also return false, not only on null, you really should use if (state.previousValue != null). Put log.debug at every step of the event flow and check when it stops :wink:

Thanks for the tips, but I’ve done that. And it all fires correctly. It would be weird if that was wrong though, as it has been working for months.

@geeji right sorry I see that now, I was confusing his note and the one from @SquattingHen regarding the 17.13 release.

Yep the issue was there and I think it was causing unintended effects on device handlers.

Try changing:

	return [
		createEvent(descriptionText: "${device.displayName} woke up", isStateChange: false),
		response(allCommands)
	]

To this:

sendEvent(descriptionText: "${device.displayName} woke up", isStateChange: false)
return response(allCommands)

Thanks, that works. But I actually have to make a list around the response for it to work, like this:

sendEvent(descriptionText: "${device.displayName} woke up", isStateChange: false)
return [response(delayBetween(allCommands, 1000))]

So this fixes the problem where commands are sent to the device. But still not able to send events as a result of the meter report coming back… Any idea?

I see a fix for this has been released, yet I still cannot see any zigbee contact/motion sensors. Any thoughts?

I’m still having problems, so everything can not have been put back to the way it was. :frowning:

Did you try it the way I posted it?

I’m pretty sure when you pass a list into response it returns a list so I think putting that list into another list is the reason it’s not working.

Doh! I think a loose wire was the reason for the latest problems. Sorry about that. It’s working now.

Does events get ignored silently if the values aren’t updated? If that’s so, that might be the reason I thought sendEvent wasn’t working.

I’ve changed the code basically back to what it was before the problems started, and I can confirm it’s working as it used to now.

1 Like

I see the problem was solved, never mind :stuck_out_tongue:

Sorry for the naiveté on the subject, but the hot fix was released a day ago. Yet all of my smartthings smart sense devices show as unavailable.

Is there something required on my end to resolve this matter?

I am not too sure it is the exact same problem, but I did have a similar one, and fixed it by appending one list to another before passing it to response() :

def cmdBlock1 = []
cmdBlock1 << zwave.versionV1.versionGet().format() 
def cmdBlock2 = []
cmdBlock2 << zwave.batteryV1.batteryGet().format()
cmdBlock1 += cmdBlock2
return [createEvent(map), response(cmdBlock1)]

is equivalent to :

def theList = [createEvent(map)]
theList += response(cmdBlock1)
return theList