2017-06-08 - Update: Added support for new Ask Alexa features: Message Queue, message expiration, and message overwriting.
2017-03-11 - Update: Added the ability to be notified if your Hub goes offline / online.
2017-03-08 - Update: Added support for SmartThings “Health Check” capability. If the device supports it, Device Monitor will look at the online/offline status of the device. This can be more accurate than looking at events sent by the device.
2016-08-22 - Update: I have made a few changes. I am using a more accurate event detection, battery levels can be checked, and you can be notified when devices come back online. Check post 63 for more info.
This app checks the selected devices to determine if they are communicating with the SmartThings Hub. It checks events from the devices to determine which devices are in a particular state. It works best with sensors, and devices that are supposed to report to SmartThings on an occasional basis. It may not work well on devices that are sent commands in Routines and SmartApps (i.e. lights - if the devices send events based on a command rather than on a parse). I will look into improving this process as time goes on.
I used some of the code from Quick Device Check by @johnconstantelo. Thank You!
Also, thank you @craig for some code inspiration as well. You’re the one that got me thinking about this project.
How long (in hours) before a device is considered inactive.
Schedule a check either once a day or at certain intervals (5,10,15,30 minutes or 1,3 hours). The SmartThings platform will only allow one of these at a time so if you switch from one to another make sure you disable the other one.
Run a check each time one of the devices sends an event. This can be resource intensive if you have a lot of devices. If you do, make sure you set the next option.
Minimum time between checks. If you have a lot of devices and the above option is true, set this to prevent checks from occurring too often. For example, if device A sends an event and 2 seconds later device B sends an event, you don’t want to run the app each time. I find that 15 minutes or more is more than sufficient for the app.
Battery checks. Check the battery level of devices as well.
Be notified if devices come back online.
To prevent the app from sending notifications when you don’t want to get them (4am for example) make sure to use the restriction options.
Only during a certain time.
Only on certain days of the week.
Only when mode is . . .
Receive SMS or Push notifications when devices are “offline” as well as notifications when they come back “online”.
Send reminder notifications each day at a certain time.
Send notifications to Ask Alexa (with Message Queue support).
Expire Ask Alexa notifications after a certain number of hours.
Have Ask Alexa reminder notifications overwrite each other so they do not build up over time.
Send a notification of your hub goes offline (I know that SmartThings has this capability built in, but it stopped working for some time, maybe even still?). So I added it.
Use Online / Offline status. If the device uses the new Health Check capability, the app will use that status to determine if the device is offline. This is usually more accurate.
I’ve wondered if there was just a way to see the last time all the devices communicated with the hub without polling them. E.g., just record the last timestamp of any event. But, this might be a good enough replacement on the once-a-day setting. Thanks!
I just tried to install this directly from your GitHub page, but when I add it via the Android App, I get “You are not authorized to perform the requested operation”. If I try to start it in the simulator, clicking ‘Set Location’ gives me “physicalgraph.exception.NotFoundException: Page Not Found”. I suspect some sort of outage, but I see nothing at the status page
Great idea. This app might benefit from a few more group definitions with different supervision times. I often wonder if the smoke-co detectors are still reporting in my house, because their battery report ages out of the phone-app 7day log. Seems like they need a supervision time of 2-3 weeks, which is too long for most other devices.
I had a defective ST multi sensor, support did an exchange on it, very good support on that account. Your app notified me the device wasn’t responding, honestly I don’t check that one often as it’s on a door under my stairs. Went and noticed it wasn’t reporting.
Here’s what I saw when I popped the battery to reset it:
@erocm1231 awesome app! I noticed any of my devices that use pollster are showing events every minute. Just because pollster is running on a device it doesn’t mean that it’s working properly. Should we remove devices that use pollster since they can be a false positive? For example, I’ve seen situations where my Nest devices stop working but pollster continues to run.
Also @625alex/@tgauchat, how difficult would it be to use this data for Smartiles? I think it would be great to have a dashboard that shows last time events reported to add to a health dashboard along with battery status.
(ActionTiles.com co-founder Terry @ActionTiles; GitHub: @cosmicpuppy)
SmartTiles is designed primarily to support official Capabilities of Device instances
Stale status should be a standard Capability like Battery, but so should a lot of stuff!
Interesting thing happened this weekend. First off, I have several dozen Z-wave devices, and maybe 10 - 15 zigbee devices. I rarely ever have issues with these devices, and for the most part, they just work. Well, I had maybe 2 dozen people over this weekend for a gathering. Maybe 10 of them connected to my Wifi Access Point, but the rest I’m sure had smart phones that weren’t connected. The following day I got several alerts from this app that my devices had not responded. Probably about 6 of them had stopped and they were all Zigbee based. All of them had to be “rebooted” to start working again. Z-Wave devices all continued to work normally. I have read several times about the interference between Wifi and Zigbee wireless bands, but had never really seen it in person. Seems like I was subject to an accidental Denial of Service. Wonder how much damage could be done with an intentional one.
Anyway, I just thought that was interesting. Good news is that this app caught the faulty devices and allowed me to correct the issue rather quickly.
Is there any way to tell this app to monitor everything except what I explicitly exclude? I have a lot more zwave devices to add in the coming months, and I’d rather not have to manually add each and every one of those to this app.
The Battery app does this somehow, but I don’t know if it’s something community code can do or not.
@justintime I looked into a better way to select or exclude devices, but could not find one. I also could not find other SmartApps that don’t select devices based on capability. I don’t know what the Battery app is. Is it just called “Battery”. Do you happen to have a link to the source code?
On Android, if you are subscribing to a lot of devices, the app will often timeout before it can finish. It does not happen on iOS. So, you can try setting it up on iOS, or try with just a couple devices at first to see if that is the issue. Let me know how it goes.