I know there already is some community code for this device, but I had to add my little twist to it. Some time ago I got pretty frustrated with the configuration and battery life on this device. I went about heavily optimizing this handler to make things simpler and squeeze some extra juice out of this device. I am not sure by how much, but these settings should make a difference in battery life. It has been sitting in my IDE collecting dust but wanted to make it available in case some are interested. It has some remnants of the official handler as well as so thanks to @Robert_Vandervoort and others that have worked on it.
This device has 3 different firmware versions that act a little differently which made writing code for this thing a beast, but I think I have everything working for 1.06, 1.07, 1.08. Note: 1.08 currently has a bug in the firmware that makes it so you can’t get sensor reports in intervals smaller than 30 minutes WHEN USB POWERED. If you are using battery power on these then you should be fine.
Here are some of the improvements for this handler:
Wake interval is set to a respectable time based on the report interval you choose. I think other handlers set this to 5 minutes (or something small). So, even if the interval report is set to every 60 minutes, the device still wakes up 11 extra times even though it has nothing to do other than check with the hub to see if it has anything “queued”!
You can turn on selective reporting in the preferences. This will prevent the device from sending reports if small or no changes have occurred.
If there is no work to do when the device wakes up, the handler immediately tells the device to go back to sleep. Some Z-Wave handlers will send config parameters or get parameters every time the device wakes up which causes unnecessary network traffic and wake time.
Configuration syncing. Heavily inspired by @CyrilPeponnet Fibaro Motion Sensor device handler (love this handler). I have a lot of my MultiSensors in recessed ceiling mounts. I don’t want to pull them down and press the device button every time I make a config change. This system will wait for the device to wake up and send the config changes. It also requests the results and will keep trying every time the device wakes up until the config parameters are updated. Note: this device has a pretty short wake period. Because of the cloud dependency of SmartThings, sometimes the window is missed. Just wait a while and it should sync over. Sometimes you just have to check it in the morning. If you want, you can press the button on the back and it will sync them over immediately.
Software based Temp, Humidity, Luminance, and LUX offsets. This is great because you don’t have to wait for the config parameters for these offsets to be updated to see the offset difference. In fact, the change is instant. As soon as you hit “Done” on the preferences screen the values get updated because the true value of the sensor report is recorded in the handler and it just reads that, applies the offset, and sends the event.
Battery counter. Curious about how long the current set of batteries has lasted? Just check the handler. Don’t forget to reset the counter when you change the batteries by “double tapping” the tile. It is more of a “tap, wait a second, and then tap again” motion, but that should reset it.
Firmware report. You can see which firmware the sensor is on. Right now 1.06, 1.07, and 1.08 are out in the wild. I’m guessing most people will be at 1.06. It is possible to upgrade the firmware with an Aeon Z-Stick installed as a Secondary controller. I will probably post the details for this in another thread. Should work with any Aeon device with OTA firmware updates.
Disable LED. Only available with 1.08. Turn off the LEDs and be in stealth mode.
@erocm1231 this is a great code. Just installed and tested it. Working great on v1.07. Much appreciate your effort and thank you for sharing the code. The additional settings are just great, since I’ve been missing them in the other version I was running.
Awesome! I work pretty part time on my SmartThings code. Been working on handlers for zooZ products and some of the configuration stuff and interval stuff you’re talking about here I started doing in their handlers. I’ve been meaning to revisit my old code but it’s just so low priority. The software based sensor reading offsets is a great idea. It never seemed as those the configuration parameter based way of doing it (even if they set right) ever did what they were designed to do. Battery life was pretty bad in later code as everyone wanted right reporting intervals and faster changes to configuration. Also, and this may be what you’re seeing, if wakeip wasn’t set to 20 mins or less you couldn’t have reporting intervals below that either. I’d have to dig through some old emails that explain this. Wasn’t aware there were so many later firmware versions either.
Same here, IOS - 6s plus, Could not offset with a negative value. I tried copy and paste resulted in an error message stating that value must be greater then zero.
Also the labels, “Synced” and “Tamper active” are cut as the font size is larger then the circle. They did not format properly as shown above in the screen shots posted. By the way Im using firmware v1.08.
I also have noticed that once USB power is chosen in the configurator, the tile would show “USB Power 100% Battery”, A minute or two later once the tile refreshes’ and show “100% Battery” only.
Thank you Eric @erocm1231, I have done the update and still have the same result in attempting to offset with a negative value. after seeing your uploaded images I came to observation that with an IOS the call to enter a value is bringing up a phone dial-er not the alpha numeric or numeric keyboard so maybe that where the issue is.
as you can see from the images I uploaded , the power tile showing 100% battery though it is connected to USB Power and configured as USB.
@Mikee@brumster Alright, I think I have the issue fixed. Wish I had an iOS device to test it with. My preferred fix makes it so decimal values cannot be entered in Android (bug). My compromise is to change the input to whole numbers until SmartThings can fix the problem. So, you can’t put in decimal values for now, but hopefully you can do negative whole numbers.
I’ll look at the battery thing. As far as the font size issue, there isn’t anything that can be done about that. Font size isn’t something that SmartThings lets developers customize in the design of their SmartApps and Device Handlers.
I have noticed that every time the multisensor 6 wakes up to report in (every hour) it reports motion. This makes it a pretty useless motion sensor since it is triggered every hour. Has anyone else had this problem? Could this be a problem with the actual multisensor?
Definitely not a problem here with the 9 sensors I have. You might want to try a factory reset on it. If you hold down button on it for about 20 seconds, it will reset. After about 10 second it will start flashing red. The flashing red will get faster and faster until it stops. When it stops, that indicates the reset has been successful.
Thanks for the response Eric! I tried the factory reset and setting up the sensor again. Unfortunately I am still getting a report of motion everytime the device reports in. Even hitting the refresh button will cause a report of motion. I thought perhaps the LED was somehow triggering the motion and disabled it. Disabling the LED did not do the trick. Luckily I am currently only using this sensor for humidity but I’d like to get several more in the future. Absolutely awesome work on this code!
Thanks for sharing the code Eric! I installed it today and its working great.
I am seeing a couple of issues; none of those impact me much, but I thought I’d let you know
My sensor is powered by USB. I have selected such in the settings, but I see that the device screen in the app switches back to showing “100% battery” from “USB Powered USB Battery” after a few minutes. Once I enter settings and hit done again, it shows USB power for a few minutes.
The tamper status has been showing “Tamper Active”; hasn’t changed since I set the device handler. The sensor is mounted outside, and there no movement, so the tamper, I think, should be clear (like in the screenshot you posted)