Device Status Stuck Online

Hi all,

Something bit strange, I signed into IDE for a hub that has been disconnected for a week now and see that two devices are showing a status of online.

The hub and the devices have been powered off since the 11th of November 2020, that was 8 days ago. Looking at the meters the last messages where received on that date

The check interval for the devices configuration is 1860 seconds as shown below.

I would have taught when I plugged the hub back in that it would have checked if the devices in the network where still communicating? Its been 20 minutes since I plugged the hub in and it is saying both devices are online… they haven’t been powered on for 8 days.

It depends on various things.

  • hub firmware, recently the device health went local with the latest firmware 32.x
  • device handler, depending on how it implements the device health feature (big role)
  • mesh status, the new firmware uses the zwave mesh status to report device health

Hi @RBoy,

The hub firmware is version 000.032.00012.

The device handler implements a check interval of 1860 seconds.

def installed() {
	log.debug "installed()..."
	sendEvent(name: "checkInterval", value: 1860, displayed: false, data: [protocol: "zwave", hubHardwareId: device.hub.hardwareID, offlinePingable: "0"])
	response(refresh())
}

This may be more what I am after for the boot up at least. I know from before working with OpenHAB I could set when the mesh would be configured and updated.
For example on boot up see the most optimal routes through the Z-Wave network and then at 01:00 am configure the mesh again to see if a new optimal route exists.

On boot up does the hub update its Z-Wave mesh? If it did I should see my devices go offline no?

This was also very helpful, credit @orangebucket - https://github.com/orangebucket/Anidea-for-SmartThings/blob/master/info/Health%20Check.md

Glad it is useful. I should stress I really have no particular insight into the subject, it is just a brain dump of my current understanding, or quite probably my lack of it. I live in hope that one day someone in ST will actually share the mysteries of it, preferably someone who really knows how it works and isn’t just guessing like the rest of us.

2 Likes

I don’t believe that the hub does a zwave repair on boot, but @Kianoosh_Karami could shed some light on this matter.

Have you checked how your DTH is handling the ping() method? If it’s sending events from there it may also explain why it’s online.

Hi @RBoy,

My ping method is just calling my refresh method which queries all the registers within my device. I added the queries for each of the scales but the first two inputs to delayBetween where there by default. Should I be updating a capability here however to tell if the device is offline?

def refresh() {
	log.debug "refresh()..."
	delayBetween([
			encap(zwave.associationV2.associationRemove(groupingIdentifier: 1, nodeId:[])), // Refresh Node ID in Group 1
   			encap(zwave.associationV2.associationSet(groupingIdentifier: 1, nodeId:zwaveHubNodeId)), //Assign Node ID of SmartThings to Group 1
			encap(zwave.meterV3.meterGet(scale: 0)),
            encap(zwave.meterV3.meterGet(scale: 1)),
            encap(zwave.meterV3.meterGet(scale: 2)),
            encap(zwave.meterV3.meterGet(scale: 3)),
			encap(zwave.meterV3.meterGet(scale: 4)),
            encap(zwave.meterV3.meterGet(scale: 5)),
            encap(zwave.meterV3.meterGet(scale: 6))      
	])
}

You need to indicate the checkInterval once. You’ve also indicated offlinePingable as 0. Since it’s a meter I would think it should be 1.

I indicate it in the installed method is that what you mean or something else?

def installed() {
	log.debug "installed()..."
	sendEvent(name: "checkInterval", value: 1860, displayed: false, data: [protocol: "zwave", hubHardwareId: device.hub.hardwareID, offlinePingable: "0"])
	response(refresh())
}

This was just in the default device handler for the device it is the Aeon Home Energy Meter Handler.
Can I ask what this offlinePingable means exactly?