Page 1 of 2

Low Battery Notification script

PostPosted: Mon Jan 26, 2015 11:27 am
by jay (support)
Low Battery Nofication.py

Get it in the File Library

Version History

v1.0 - Initial release

Description

This script will loop through all indigo devices looking for devices that report battery levels. We do this by looking at the batteryLevel property that all devices have. If a device doesn't support battery reporting, that value will be 'None'. We also check to see if the device is enabled so that an easy way to shortcut getting notifications you don't want is to just disable the device.

When the script finds one, it will use the following heuristics to decide if a notifiction should be sent for the device:

- if the battery level is below the 'batteryThreshold' OR
- if the device hasn't been updated in more than 'timeThreshold' days

There are a couple of ways to set the thresholds. The default values are:

batteryThreshold = 5%
timeThreshold = 0 days (or anything over 24 hours)

These defaults can be overridden globally by creating Indigo variables named:

lbnBatteryThreshold
lbnTimeThreshold

If either of these are set, they will be used as the global thresholds. You may also use the Global Property Manager plugin to add some properties to specific devices that will override these thresholds:

lbnBatteryThreshold
lbnTimeThreshold
lbnSkipNotification

The latter tells the script to ignore this device (true/false or yes/no). You might want to use that for a battery powered device that can also be plugged into mains power. In that case, it may or may not show battery level and may not actually report status for long periods of time. This is a convenient way to just skip those devices.

Once we've determined that a device needs a notification, then we simply look for an action group named with the device name + " low battery notification". Here's some example names given the device name:

Code: Select all
      Device Name        | Action Group Name
      -------------------+------------------------------
      Front Door Lock    | Front Door Lock low battery notification
      Hall motion sensor | Hall motion sensor low battery notification


Note that the names are case sensitive so make sure they match. If the script finds a matching Action Group, it will execute it.

There are several ways you can run this script: once a day is probably the easiest. You can get clever however and run it every hour. Add some current time conditions to the schedule and it can notify you once an hour between, say, 6pm and 10pm. Lots of options.

I contributed this script because it does what I need it to do, no more or less. There are a lot more things that this script can be expanded to do and is a great start for other kinds of notifications. Feel free to modify it as you see fit. Note, however, that it's not an officially supported script and is not shipped with Indigo. I'll certainly try to answer any questions and will update this post to clarify anything that's unclear, but treat it like any other user-contributed script.

Re: Low Battery Notification script

PostPosted: Mon Feb 16, 2015 11:52 am
by davinci
Thanks for the script. Do I have to make an ActionGroup for every device I have or is there an easier way?

Re: Low Battery Notification script

PostPosted: Mon Feb 16, 2015 6:56 pm
by jay (support)
With this script it's a 1:1. Get one working like you want it then just duplicate it and rename.

Re: Low Battery Notification script

PostPosted: Wed Mar 04, 2015 1:24 am
by MarcoGT
Thanks a lot.

I have started yesterday to implement the low battery notification in my system :)

Re: Low Battery Notification script

PostPosted: Wed Mar 04, 2015 7:10 am
by howartp
If you want a mass catch-all script, have a look at viewtopic.php?t=12578#p88444

Re: Low Battery Notification script

PostPosted: Fri Jul 10, 2015 8:36 pm
by rycardo
Hey Jay,

Very Nice!

Should this report the battery level for Insteon battery powered door sensors, mini-remotes, motion sensors, and water leak detectors?

I didn't get any low battery notifications, even though I know the battery is low on one of my motion sensors, so I modified the script by adding an else block for your top most if block:
Code: Select all
else:
      indigo.server.log(device.name + " does not support batteryLevel",  "Low Battery Notification",  0)


Every enabled device in Indigo is logged as not supporting batteryLevel, including my device types above.

Rycardo

Re: Low Battery Notification script

PostPosted: Sun Jul 12, 2015 11:29 am
by jay (support)
I believe most (all?) Insteon battery-powered devices don't actually report the battery level, they only send commands to various groups to report when the battery is low.

You could certainly modify the script to only look at a time threshold and ignore any battery specific stuff.

Re: Low Battery Notification script

PostPosted: Sun Jul 12, 2015 11:36 am
by rycardo
Thanks for the reply. Since I have an all Insteon set up, I tend to forget your software supports other brands.

I was anxious to try your method as I used to use a python script I found in the forums for checking battery levels on motion sensors when motion detection turned off. That script stopped working. In debugging it, I discovered that I can no longer use Indigo to send Raw Commands to Insteon devices. Whether through the menu, a script (AppleScript or Python), or manually.

Do you know if something changed?

Thanks,

Rycardo

Re: Low Battery Notification script

PostPosted: Sun Jul 12, 2015 11:51 am
by jay (support)
Nope - I have quite a few scripts sending raw Insteon commands that are working fine. What do you get/see in the event log when you try to run one?

Re: Low Battery Notification script

PostPosted: Sun Jul 12, 2015 11:57 am
by rycardo
I just used Indigo > Interfaces > Insteon > Set Motion Sensor Timeout...
and received this:
12 Jul, 2015, 13:52:59
Error "Front Porch Motion Sensor" raw insteon command; send failed (no acknowledgment)


That is what I always get from the menu.

If I try to run the python script to check battery levels:
12 Jul, 2015, 13:55:40
Test Raw Command 1 address is:31.D6.62
id : 1084528646
name : basementMotionSensorBatteryLevel
value : 0
Test Raw Command 3 Checking battery level.
Error "Basement Motion Sensor" raw insteon command; send failed (no acknowledgment)
Test Raw Command 3.1 0
Test Raw Command 3.2 No response, stopping


These all used to work, just one day they stopped working. Not sure what changed (if anything), or why.

Re: Low Battery Notification script

PostPosted: Sun Jul 12, 2015 1:09 pm
by matt (support)
Is the motion sensor awake? Battery operated modules can only receive commands when they are awake, so the "no ack" error you are seeing would be expected if it were asleep.

Re: Low Battery Notification script

PostPosted: Sun Jul 12, 2015 6:04 pm
by rycardo
I'm not sure what you mean by "awake", the devices are active, and responding to open / close for door sensors, and motion started / stopped for motion sensors. Is this what you meant?

The python script I used before, was triggered by the motion sensor sending a Group 1 Off, per it's author's documentation.

Here is some new debugging, I sent the Menu Item "Set Motion Sensor LED Brightness", but the same happens on any of the menu items, for any of my motion sensors.
12 Jul, 2015, 19:59:05
Error "Family Room Motion Sensor" raw insteon command; send failed (no acknowledgment)

12 Jul, 2015, 19:59:38
Received INSTEON "Family Room Motion Sensor" on (button 1)
Trigger Family Room Sensor - Motion Started
Error "Family Room Motion Sensor" raw insteon command; send failed (no acknowledgment)

12 Jul, 2015, 20:00:48
Received INSTEON "Family Room Motion Sensor" off (button 1)
Trigger Family Room Sensor - Motion Stopped

12 Jul, 2015, 20:01:09
Error "Family Room Motion Sensor" raw insteon command; send failed (no acknowledgment)

Re: Low Battery Notification script

PostPosted: Mon Jul 13, 2015 2:20 am
by howartp
rycardo wrote:
I'm not sure what you mean by "awake"

Have a look at my reply in this thread re 'awake':

viewtopic.php?t=14297


Sent from my iPhone using Tapatalk

Re: Low Battery Notification script

PostPosted: Mon Nov 02, 2015 11:07 am
by wideglidejrp
Can non-Insteon devices be part of this? I have Kwikset door locks with batteries controlled by Vera and a Multisensor controlled by z-stick. I would love to include them.

Re: Low Battery Notification script

PostPosted: Mon Nov 02, 2015 12:40 pm
by jay (support)
Sure.