Low battery report from Aeon Labs Multisensor 6

The Aeon Labs Multisensor 6 (ZW100) has a configuration parameter (#39) labeled low battery report.

Is it possible in openHAB to receive these reports to trigger a rule? I don’t see any relevant channel in the device properties in paperUI. It would be great to have a rule that sent a notification when the battery level threshold is reached. I realise I could use the battery level channel and create a rule, but it seems like it would make for less code to write and maintain if a low battery warning from the device itself could be detected.

Stupid question, have you clicked ‘show more’ on the Paper UI thing page of the sensor? (I’ve spent many an hour scratching my head as to why a channel I know should be there isn’t for this very reason)

If it’s not listed as a channel I doubt it can be added as a channel. If it is in there and you can link it then it’s just an item so won’t alert you, you’ll just have to write a very quick rule for if batterylevel < 10% then do xyz…

There should be a battery level channel - if not, the database is incorrectly configured. This channel carries the low battery - it’s the same thing, and it is represented as 0%.

I have 8 of these; here’s the items I use for them. DateTime LoftSensor_Update is a self created item.

Switch   LoftSensor_Motion_Alarm		"Motion [%s]" 										(LoftMotion)					{ channel="zwave:device:ffffffd1ffffffb2ffffffdbffffffad:node8:alarm_motion" }
Number 	 LoftSensor_Temp 			"Temperature  [%.2f]" 								(LoftMotion, Temperatures)		{ channel="zwave:device:ffffffd1ffffffb2ffffffdbffffffad:node8:sensor_temperature" }
Number 	 LoftSensor_Humidity 			"Humidity     [%.0f %%]" 							(LoftMotion)					{ channel="zwave:device:ffffffd1ffffffb2ffffffdbffffffad:node8:sensor_relhumidity" }
Number 	 LoftSensor_Luminance 			"Luminance    [%.0f Lux]" 							(LoftMotion)					{ channel="zwave:device:ffffffd1ffffffb2ffffffdbffffffad:node8:sensor_luminance" }
Number   LoftSensor_Battery 			"Battery      [%s %%]" 								(LoftMotion)					{ channel="zwave:device:ffffffd1ffffffb2ffffffdbffffffad:node8:battery-level" }
DateTime LoftSensor_Update			"[%1$tm.%1$td.%1$tY %1$tH:%1$tM]"   <clock>			

Best, Jay

You probably want to do that for all of your battery devices so just created one rule to work on a group of battery devices ?
Oh, and the ZW100 eats batteries like hell. If there’s a chance to, put it on mains power.

1 Like

Not a stupid question. But no, there is no ‘show more’ for the sensor in paperUI.

Really? So if I have parameter 39 set to 20, as the battery discharges it will go 22%, 21%, 0% and I can just write a rule based on hitting 0%? Will the battery level stay at 0% until the battery is replaced? The reason I ask is that I have noticed the battery level tends to fluctuate up and down by a few percent (perhaps due to temperature changes?) so a simple rule tends to trigger repeatedly when the battery level approaches that threshold. Is this feature documented anywhere? I can’t find it in the manual or the technical reference information.

Yeah I’ve got a bunch of them so I will be writing a group-based rule. I know how to do that thanks to this forum.

I’ve had these sensors for a while and I don’t find them too bad on battery life. I usually get 4-6 months off a pair of batteries. I’d love to get mains power to them but that would be a fairly big expense (very old house with lath/plaster walls and limited access). I will be renovating in the future and hopefully will be able to get a low voltage circuit installed that I can tap into easily to power devices like this.

Yes, really :wink:

This is how the ZWave spec is defined - it provides EITHER a level, OR the low battery warning - not both.

Some newer devices may also provide an ALARM channel for low battery, but that’s not linked to this channel. If it is provided by a device, then it can be supported separately as an ALARM.

These sort of questions are ones that only the supplier can answer. Battery monitors in these sort of devices are notoriously bad - they will change with load, and temperature for starters.

What feature exactly do you mean? The fact that battery level will show 0% in alarm? This is not currently exported from the database so I will add it. If you mean something else, please let me know.

Thanks again Chris.

I’ve got a whole batch of fresh batteries in all of my sensors so it will be a few months until I can document what happens. I’ll try to set up some logging so I can give a definitive answer to this.

I have finally gotten around to looking at this properly, and have observed an interesting behaviour in these sensors around low battery warnings.

I have set up persistence using Mariadb and these are the changes seen in the battery levels over a few days when the battery is running out. I haven’t yet captured data over the complete life of a set of batteries. This is the data from an item linked to the battery-level channel of a Multisensor.

MariaDB [openhab]> Select * from item0048;
+-------------------------+-------+
| time                    | value |
+-------------------------+-------+
| 2020-01-24 22:03:39.829 |    73 |
| 2020-02-04 22:34:21.226 |    70 |
| 2020-02-04 23:33:21.147 |    73 |
| 2020-02-05 03:29:20.884 |    70 |
| 2020-02-05 04:28:20.824 |    73 |
| 2020-02-05 05:27:20.760 |    70 |
| 2020-02-05 08:24:20.542 |    69 |
| 2020-02-05 14:18:20.162 |    68 |
| 2020-02-05 16:16:20.033 |    69 |
| 2020-02-05 17:15:19.953 |    68 |
| 2020-02-05 21:11:19.676 |    69 |
| 2020-02-06 07:01:19.011 |    68 |
| 2020-02-06 08:59:18.873 |    67 |
| 2020-02-06 12:55:18.617 |    66 |
| 2020-02-06 16:51:18.329 |    65 |
| 2020-02-06 18:49:18.181 |    64 |
| 2020-02-06 19:48:18.464 |    63 |
| 2020-02-06 20:47:18.644 |    62 |
| 2020-02-06 21:46:18.301 |    59 |
| 2020-02-06 22:29:52.770 |    27 |
| 2020-02-06 23:28:51.220 |    28 |
| 2020-02-07 00:27:51.127 |    27 |
| 2020-02-07 02:25:51.232 |    26 |
| 2020-02-07 04:23:50.848 |    25 |
| 2020-02-07 06:21:50.661 |    23 |
| 2020-02-07 06:22:36.839 |     0 |
| 2020-02-07 07:20:50.584 |    21 |
| 2020-02-07 07:22:31.472 |     0 |
| 2020-02-07 08:19:50.531 |    21 |
| 2020-02-07 08:51:16.355 |     0 |
| 2020-02-07 09:18:50.461 |    21 |
| 2020-02-07 11:01:46.528 |     0 |
| 2020-02-07 11:16:50.438 |    20 |
| 2020-02-07 11:16:50.779 |     0 |
| 2020-02-07 12:15:50.290 |    20 |
| 2020-02-07 12:15:50.628 |     0 |
| 2020-02-07 13:14:50.170 |    20 |
| 2020-02-07 13:14:50.508 |     0 |
| 2020-02-07 14:13:50.157 |    19 |
| 2020-02-07 14:13:50.485 |     0 |
| 2020-02-07 15:12:50.090 |    20 |
| 2020-02-07 15:12:50.421 |     0 |
| 2020-02-07 16:11:49.962 |    19 |
| 2020-02-07 16:11:50.285 |     0 |
| 2020-02-07 17:10:49.941 |    17 |
| 2020-02-07 17:10:50.275 |     0 |
| 2020-02-07 18:09:49.836 |    17 |
| 2020-02-07 18:09:50.181 |     0 |
| 2020-02-07 19:08:49.800 |    16 |
| 2020-02-07 19:08:50.137 |     0 |
| 2020-02-07 20:07:49.714 |    15 |
| 2020-02-07 20:07:50.055 |     0 |
| 2020-02-07 21:06:49.611 |    16 |
| 2020-02-07 21:06:49.952 |     0 |
| 2020-02-07 22:05:49.594 |    15 |
| 2020-02-07 22:05:49.936 |     0 |
| 2020-02-07 23:04:49.515 |    14 |
| 2020-02-07 23:04:49.851 |     0 |
| 2020-02-08 00:03:49.451 |    15 |
| 2020-02-08 00:03:49.800 |     0 |
| 2020-02-08 01:02:49.373 |    15 |
| 2020-02-08 01:02:49.716 |     0 |
| 2020-02-08 02:01:49.306 |    14 |
| 2020-02-08 02:01:49.649 |     0 |
| 2020-02-08 03:00:49.200 |    14 |
| 2020-02-08 03:00:49.538 |     0 |
| 2020-02-08 03:59:49.165 |    14 |
| 2020-02-08 03:59:49.512 |     0 |
| 2020-02-08 04:58:49.093 |    13 |
| 2020-02-08 04:58:49.439 |     0 |
| 2020-02-08 05:57:49.390 |    12 |
| 2020-02-08 05:57:49.730 |     0 |
| 2020-02-08 06:56:48.927 |    11 |
| 2020-02-08 06:56:49.270 |     0 |
| 2020-02-08 07:55:48.853 |    10 |
| 2020-02-08 07:55:49.187 |     0 |
| 2020-02-08 08:54:48.823 |     9 |
| 2020-02-08 08:54:49.160 |     0 |
| 2020-02-08 09:53:48.713 |     9 |
| 2020-02-08 09:53:49.045 |     0 |
| 2020-02-08 10:52:48.674 |     8 |
| 2020-02-08 10:52:49.021 |     0 |
| 2020-02-08 11:51:48.619 |     9 |
| 2020-02-08 11:51:48.962 |     0 |
| 2020-02-08 12:50:48.512 |     9 |
| 2020-02-08 12:50:48.844 |     0 |
| 2020-02-08 13:49:48.485 |     5 |
| 2020-02-08 13:49:48.797 |     0 |
| 2020-02-08 14:48:48.499 |     5 |
| 2020-02-08 14:48:48.822 |     0 |
| 2020-02-08 15:47:48.338 |     5 |
| 2020-02-08 15:47:48.683 |     0 |
| 2020-02-08 16:46:48.222 |     5 |
| 2020-02-08 16:46:48.560 |     0 |
| 2020-02-08 17:45:48.187 |     5 |
| 2020-02-08 17:45:48.523 |     0 |
| 2020-02-08 19:43:48.058 |     2 |
| 2020-02-08 19:43:48.377 |     0 |
| 2020-02-08 20:42:47.980 |     2 |
| 2020-02-08 20:42:48.330 |     0 |
+-------------------------+-------+

This sensor has parameter 39 (low battery report) set to 20.

A few things stand out;

  • The battery level doesn’t fall smoothly over time. For example, there is a big jump from 59% to 28%.

  • When the battery level is low the device begins reporting the battery level on the channel, followed very soon after by a zero. The warnings actually begin at a battery level slightly higher than 20% for some reason.

  • This leads to an alternating pattern of decreasing numbers and zeroes. So a simple rule to send out a warning on the battery level changing to zero will be triggered repeatedly and could get annoying very quickly. A rule would have to be written to take this into account.

  • The battery was installed long before this data was recorded, so it seems that the reported battery level stays high for most of the batteries’ life and then falls fairly quickly.

Hopefully this information is of use to someone else using these devices.

This is very common with low cost devices - they often use battery voltage as a battery level indicator. This is only a first approximation of battery level - voltage will change with load and temperature and is non-linear (as you see).

This is the way the binding interprets the information. A device doesn’t have a separate flag for low battery - there is only one battery reading, and to flag low battery the device reports 0xFF. Since some devices will only report this, the binding sets the % to 0 since it doesn’t have any other way to know what it is. Since this device seems to send alternating reports, you see this manifest as 0, then a number.

Excellent documentation. I’ve been wondering the same thing for some time. I’m really glad you took the time to do this, and post the results! :+1:

And thanks to Chris for taking the time to come with an explenation.

To dissect it in even more detail:

COMMAND_CLASS_BATTERY provides an intrinsic ‘low battery “alarm”’ (0xFF) - IMHO, bad engineering on the side of the Z-Wave specification team.

Then there is the deprecated COMMAND_CLASS_ALARM - even worse engineering, as the alarm types are manufacturer specific.

The next try was the COMMAND_CLASS_NOTIFICATION which defines 20+ Notification Types and up to 255 Notifications for each Notification Type.

Rant off.

Let’s return to the ZW100:

There is no such thing as a ‘low battery alarm’ from the point of the Z-Wave Specification, there it is called ‘battery warning’ - probably to avoid confusion with the deprecated COMMAND_CLASS_ALARM.

The ZW100 doesn’t support the deprecated COMMAND_CLASS_ALARM, but does support the COMMAND_CLASS_NOTIFICATION. The manual lists the Notification Types supported by the ZW100 (COMMAND_CLASS_NOTIFICATION):

Don’t get irritated by the fact, that the Z-Wave Database lists COMMAND_CLASS_ALARM_V3:

The Z-Wave Binding maps the COMMAND_CLASS_NOTIFICATION to COMMAND_CLASS_ALARM V3, which doesn’t exist from the perspective of the Z-Wave specification (only COMMAND_CLASS_ALARM V1 and V2 are defined).

1 Like