Aeotec Multisensor 6

Not really, the driver sends the values to the Multisensor. What it does with them is dependent on the firmware. It's entirely possible that differences between v1.09 and 1.10 and 1.12 and 1.13 alter how it interprets the value.

In other words, Aeotec could have 'listened' to customers and altered how they report. I haven't seen any specific v1.13 documentation.

I've altered a copy of the driver I'm using to test that patch.

Interesting. I was using 1.6.12. I just reimported it.

My line 723 did change. Previously it was this:

BigDecimal fw = cmd.applicationVersion + (cmd.applicationSubVersion / 100)

I'll give it a run and check. I tried the stock driver for 15 mins, and had the same issue. Now I'll try a reboot of the device - it's currently powered by DC.

Ok, it's just a bit baffling how this device does things.

Thanks for getting this driver out. I'm glad the Reporting Interval works, as it was killing my hub on the built-in driver without that change to slow this down while on USB power.

If you are doing some driver tweaking, any chance you can add ${device.displayName} at the front of all the log reporting lines? I hand edited the driver to do that, and that's how I got all those M6 O North Wall descriptions in the logs, which is very helpful in figuring out what is going on if you happen to have more than one of these things.

@christi999 also reports above a bug in the temp offset code because of integer handling:

I didn't make that change as I haven't set an offset, so can't validate that it has an issue without it...

The first column in logs is that...

Screen Shot 2020-05-27 at 9.59.39 PM

IF you click the "dev:845" OR click the name at the top, the logs filter to only what you've selected.

v1.6.13

Import URL:
https://raw.githubusercontent.com/HubitatCommunity/AeotecMultiSensor6/master/AeotecMultisensor6.groovy

As I was editing, I looked at the Change Log and wanted to note just how much of a Community effort is in this much used driver. Lotta names in there :slight_smile:

@csteele - I just updated to v1.6.13 and get the following error in my logs... any ideas? Thank you!!



re-import, please.

It's a 'cosmetic error' but it's easily removed. (I had started, months and months ago, to prepare a v1.6.13 and that improvement was added.)

If the field on the Device Info page is BLANK(null), you can get this error...
Line 506 should be detecting null and fixing it..
The second click of Save works because of line 506.. setting it to zero.

Will do, Thanks. Any idea how to change the driver to recognize that it's getting power from USB?

It's reporting: 2020-05-28 12:56:49.504 pm infoPower source is DC (mains)

powerSource : dc

dc means USB

Screen Shot 2020-05-28 at 12.03.45 PM Screen Shot 2020-05-28 at 12.03.52 PM

Battery = not usb but battery. :slight_smile:

Ahh- thank you! Also the errors are gone now too. :slight_smile:

@csteele

Hi, I've been using your Multisensor 6 driver for quite a while. Thank you very much :slight_smile: .
Lately I've been looking at hub EVENTS (Node-RED capture) and notice a lot of Lux messages. More than I would like.

The issue is my own doing.......

I use the Lux reading to control some accent lights that I would like to go on at a certain "brightness". In my case the Lux threshold is 400. Hence the issue. When bright out I would like the report threshold to be ...say 5000. However when dim I would like it to be ~ 100.

So I'm trying to decide if I should ask if you are interested in adding such a capability (which I guess I just did). Or add it to your driver myself.

I like both options. If you add this feature it will be easy me to keep you driver updated on my hub.

If I do it, the challenge would be interesting.

John

The features of the Multisensor can be found in the engineering specification provided by Aeon. It offers to send reports either on a timed schedule or on % change. The %change option is traditionally the best for battery life, assuming the % is high enough that there's very few reports per day.

On USB power, you can generate reports to your liking.. including using something like RM to alter the report thresholds multiple times a day. That kind of decision making is the realm of Apps not drivers, usually.

1 Like

Hi @csteele, I have been using the M6 built-in driver like a few other users but reading this thread it looks like your driver may be better. All my sensors (at the moment) are usb powered and I don't have any battery powered ones.
Reading this thread the cSteele driver seems to be most beneficial to battery powered devices to reduce the reporting and improve battery life but some more recent posts suggest that it's also better for usb powered devices - do you have a strong opinion on this (and sorry as you've probably answered this question loads of times already!)?

@Automatican - I have quite a few M6's as well but thought HE would be able to handle all the reporting from the in-built driver. My zwave network is crashing daily and I'm not sure if it's because of all the reporting from the M6's (although the zwave devices all disappearing daily would be a strange result from excess M6 reporting!). When you were using the built-in driver did your zwave devices ever disappear? Or did it just slow your system down?

The AeotecMultisensor6 driver is there to expose more of the options that the Multisensors (MS6) have within. The built-in driver has a nice set of fixed values for average use, especially battery driven. You, with a USB power decision, can use a more frequent reporting. However, as you're suggesting, it can come at a cost... too much reporting consumes mesh and potentially slows down other traffic.

You can always set the MS6 to be very high reporting values (reports rarely) for 2 days and verify your mesh doesn't crash. Then you'd have a firm grasp on the adjustment area needed.

I have 12 MS6 (a mix of USB and battery) and I can see (via Zniffer) that they are able to produce a lot of traffic in bursts. I can also see that it doesn't affect my mesh much. Z-Device packets are very very small with lots of gaps between for other traffic.

Even though mine are mostly USB powered, I've decided to set just about all of my M6's to selective reporting. Furthermore, I've set the reporting thresholds differently on the different devices. eg. In some rooms, I'm not particularly concerned about the lux levels (ie. I don't use them to trigger any automation), so I set a larger threshold for those.

Updated to latest driver I’m getting this error when I hit configure on all 4 devices I’m using.
13782020-06-09 04:03:26.810 pm errorjava.lang.NullPointerException: Cannot invoke method intValue() on null object on line 572 (configure)
In order to get any reports I have to refresh
Edit... this is weird I wonder if it has something to do with the latest hub update. Whatever setting I try to change on the driver page I get an error on that line when I look at the logs.

Can you do a Save Preferences once, please?

:slight_smile:

It might be my specific set up that was causing me to have issues, as I have ~30 of the GE Motion dimmers, and a number of other devices that also report motion, so there is quite a bit of reporting very frequently from those on my z-wave network already, and on top of that, the MS6 I have with the stock driver on USB power was sending messages almost continuously, and many times the same reported data ~10 times in bursts .

The hub came to a crawl making it difficult to load any pages in the settings etc, but the MS6 never vanished from the device list. I had rebooted etc, with no improvement.

As soon as I changed the diver, reduced the reporting times for the MS6, and rebooted, the hub became, and has remained, much more responsive.

Maybe that’s the issue

I just took a 'spare' MS6 that's been Excluded for several days and added it to one of my hubs. Naturally it Joins using the Built-in driver and I changed it to use the latest. (This hub hadn't had the driver previously, which is why I picked it.) In order to use the new driver I had to click Save Preferences and the logs show a completely normal output, no errors.

Additionally, all of my MultiSensors got updated to Aeon Firmware v1.13 about 10 days ago.

New MS6 Logs
dev:99 2020-06-09 04:36:13.602 pm info  Humidity is 40%
dev:99 2020-06-09 04:36:13.599 pm debug raw humidity = 40
dev:99 2020-06-09 04:36:13.595 pm debug In multi level report cmd = SensorMultilevelReport(precision:0, scale:0, sensorType:5, sensorValue:[40], size:1, scaledSensorValue:40)
dev:99 2020-06-09 04:36:11.904 pm info  Ultraviolet index is 0
dev:99 2020-06-09 04:36:11.901 pm debug raw uv index = 0
dev:99 2020-06-09 04:36:11.898 pm debug In multi level report cmd = SensorMultilevelReport(precision:0, scale:0, sensorType:27, sensorValue:[0], size:1, scaledSensorValue:0)
dev:99 2020-06-09 04:36:11.860 pm info  Illuminance is 0 Lux
dev:99 2020-06-09 04:36:11.856 pm debug raw illuminance = 0
dev:99 2020-06-09 04:36:11.852 pm debug In multi level report cmd = SensorMultilevelReport(precision:0, scale:1, sensorType:3, sensorValue:[0, 0], size:2, scaledSensorValue:0)
dev:99 2020-06-09 04:36:08.616 pm info  Temperature is 82.4°F
dev:99 2020-06-09 04:36:08.613 pm debug finalval = 82.4
dev:99 2020-06-09 04:36:08.610 pm debug raw temp = 28.0
dev:99 2020-06-09 04:36:08.606 pm debug In multi level report cmd = SensorMultilevelReport(precision:1, scale:0, sensorType:1, sensorValue:[1, 24], size:2, scaledSensorValue:28.0)
dev:99 2020-06-09 04:36:07.476 pm debug In BatteryReport
dev:99 2020-06-09 04:36:07.219 pm info  Motion is inactive by SensorBinaryReport
dev:99 2020-06-09 04:36:05.537 pm info  You are using the current version of this driver
dev:99 2020-06-09 04:36:02.365 pm info  Temperature is 82.4°F
dev:99 2020-06-09 04:36:02.362 pm debug finalval = 82.4
dev:99 2020-06-09 04:36:02.359 pm debug raw temp = 82.4
dev:99 2020-06-09 04:36:02.356 pm debug In multi level report cmd = SensorMultilevelReport(precision:1, scale:1, sensorType:1, sensorValue:[3, 56], size:2, scaledSensorValue:82.4)
dev:99 2020-06-09 04:35:52.701 pm info  Ultraviolet index is 0
dev:99 2020-06-09 04:35:52.698 pm debug raw uv index = 0
dev:99 2020-06-09 04:35:52.695 pm debug In multi level report cmd = SensorMultilevelReport(precision:0, scale:0, sensorType:27, sensorValue:[0], size:1, scaledSensorValue:0)
dev:99 2020-06-09 04:35:52.617 pm info  Illuminance is 0 Lux
dev:99 2020-06-09 04:35:52.614 pm debug raw illuminance = 0
dev:99 2020-06-09 04:35:52.611 pm debug In multi level report cmd = SensorMultilevelReport(precision:0, scale:1, sensorType:3, sensorValue:[0, 0], size:2, scaledSensorValue:0)
dev:99 2020-06-09 04:35:52.601 pm debug In BatteryReport
dev:99 2020-06-09 04:35:51.762 pm info  Humidity is 40%
dev:99 2020-06-09 04:35:51.759 pm debug raw humidity = 40
dev:99 2020-06-09 04:35:51.756 pm debug In multi level report cmd = SensorMultilevelReport(precision:0, scale:0, sensorType:5, sensorValue:[40], size:1, scaledSensorValue:40)
dev:99 2020-06-09 04:35:51.686 pm info  Temperature is 82.3°F
dev:99 2020-06-09 04:35:51.682 pm debug finalval = 82.3
dev:99 2020-06-09 04:35:51.678 pm debug raw temp = 82.3
dev:99 2020-06-09 04:35:51.675 pm debug In multi level report cmd = SensorMultilevelReport(precision:1, scale:1, sensorType:1, sensorValue:[3, 55], size:2, scaledSensorValue:82.3)
dev:99 2020-06-09 04:35:47.333 pm debug productTypeId:    258
dev:99 2020-06-09 04:35:47.330 pm debug model:            US
dev:99 2020-06-09 04:35:47.326 pm debug productId:        100
dev:99 2020-06-09 04:35:47.323 pm debug manufacturerName: AEON Labs
dev:99 2020-06-09 04:35:47.023 pm debug manufacturerId:   134
dev:99 2020-06-09 04:35:47.019 pm debug ManufacturerSpecificReport cmd = ManufacturerSpecificReport(manufacturerId:134, productId:100, productTypeId:258)
dev:99 2020-06-09 04:35:45.881 pm debug ---VERSION REPORT V1--- MultiSensor6 is running firmware version: 1.13, Z-Wave version: 4.54
dev:99 2020-06-09 04:35:45.871 pm debug in version report
dev:99 2020-06-09 04:35:44.745 pm debug Sending Z-wave command: SensorMultilevelGet(sensorType:27, scale:0)
dev:99 2020-06-09 04:35:44.742 pm debug Sending Z-wave command: SensorMultilevelGet(sensorType:5, scale:0)
dev:99 2020-06-09 04:35:44.738 pm debug Sending Z-wave command: SensorMultilevelGet(sensorType:3, scale:0)
dev:99 2020-06-09 04:35:44.735 pm debug Sending Z-wave command: SensorMultilevelGet(sensorType:1, scale:0)
dev:99 2020-06-09 04:35:44.720 pm debug Sending Z-wave command: SensorBinaryGet()
dev:99 2020-06-09 04:35:44.710 pm debug Sending Z-wave command: BatteryGet()
dev:99 2020-06-09 04:35:44.702 pm debug Sending Z-wave command: ConfigurationSet(configurationValue:[0], defaultValue:false, parameterNumber:81, reserved11:0, size:1)
dev:99 2020-06-09 04:35:44.698 pm debug Sending Z-wave command: ConfigurationSet(configurationValue:[0, 0], defaultValue:false, parameterNumber:203, reserved11:0, size:2)
dev:99 2020-06-09 04:35:44.694 pm debug Sending Z-wave command: ConfigurationSet(configurationValue:[0], defaultValue:false, parameterNumber:202, reserved11:0, size:1)
dev:99 2020-06-09 04:35:44.690 pm debug Sending Z-wave command: ConfigurationSet(configurationValue:[0, 2], defaultValue:false, parameterNumber:201, reserved11:0, size:2)
dev:99 2020-06-09 04:35:44.686 pm debug Sending Z-wave command: ConfigurationSet(configurationValue:[2], defaultValue:false, parameterNumber:5, reserved11:0, size:1)
dev:99 2020-06-09 04:35:44.682 pm debug Sending Z-wave command: ConfigurationSet(configurationValue:[0, 100], defaultValue:false, parameterNumber:43, reserved11:0, size:2)
dev:99 2020-06-09 04:35:44.679 pm debug Sending Z-wave command: ConfigurationSet(configurationValue:[10], defaultValue:false, parameterNumber:42, reserved11:0, size:1)
dev:99 2020-06-09 04:35:44.672 pm debug Sending Z-wave command: ConfigurationSet(configurationValue:[0, 2, 2, 0], defaultValue:false, parameterNumber:41, reserved11:0, size:4)
dev:99 2020-06-09 04:35:44.669 pm debug Sending Z-wave command: ConfigurationSet(configurationValue:[2], defaultValue:false, parameterNumber:64, reserved11:0, size:1)
dev:99 2020-06-09 04:35:44.665 pm debug Sending Z-wave command: ConfigurationSet(configurationValue:[1], defaultValue:false, parameterNumber:40, reserved11:0, size:1)
dev:99 2020-06-09 04:35:44.661 pm debug Sending Z-wave command: ConfigurationSet(configurationValue:[0, 0, 28, 32], defaultValue:false, parameterNumber:112, reserved11:0, size:4)
dev:99 2020-06-09 04:35:44.657 pm debug Sending Z-wave command: ConfigurationSet(configurationValue:[0, 0, 1, 44], defaultValue:false, parameterNumber:111, reserved11:0, size:4)
dev:99 2020-06-09 04:35:44.654 pm debug Sending Z-wave command: ConfigurationSet(configurationValue:[5], defaultValue:false, parameterNumber:4, reserved11:0, size:1)
dev:99 2020-06-09 04:35:44.651 pm debug Sending Z-wave command: ConfigurationSet(configurationValue:[0, 60], defaultValue:false, parameterNumber:3, reserved11:0, size:2)
dev:99 2020-06-09 04:35:44.647 pm debug Sending Z-wave command: ConfigurationSet(configurationValue:[0, 0, 0, 1], defaultValue:false, parameterNumber:102, reserved11:0, size:4)
dev:99 2020-06-09 04:35:44.643 pm debug Sending Z-wave command: ConfigurationSet(configurationValue:[0, 0, 0, 241], defaultValue:false, parameterNumber:101, reserved11:0, size:4)
dev:99 2020-06-09 04:35:44.618 pm debug Sending Z-wave command: AssociationSet(groupingIdentifier:2, nodeId:1)
dev:99 2020-06-09 04:35:44.615 pm debug Sending Z-wave command: AssociationSet(groupingIdentifier:1, nodeId:1)
dev:99 2020-06-09 04:35:44.601 pm debug Sending Z-wave command: ManufacturerSpecificGet()
dev:99 2020-06-09 04:35:44.594 pm debug Sending Z-wave command: VersionGet()
dev:99 2020-06-09 04:35:44.586 pm debug Sending Z-wave command: WakeUpIntervalSet(nodeid:1, seconds:300)
dev:99 2020-06-09 04:35:44.450 pm debug Location temperature scale: F
dev:99 2020-06-09 04:35:44.446 pm debug Current firmware: 0.00
dev:99 2020-06-09 04:35:44.427 pm debug wake time reset to 300
dev:99 2020-06-09 04:35:44.411 pm debug LED Option = 0
dev:99 2020-06-09 04:35:44.408 pm debug Min Lux change for reporting = 100
dev:99 2020-06-09 04:35:44.405 pm debug Min Humidity change for reporting = 10
dev:99 2020-06-09 04:35:44.401 pm debug Min Temp change for reporting = 2
dev:99 2020-06-09 04:35:44.398 pm debug Humidity adjust = 0
dev:99 2020-06-09 04:35:44.395 pm debug Temperature adjust = 0 (0°)
dev:99 2020-06-09 04:35:44.391 pm debug Motion Sensitivity = 5
dev:99 2020-06-09 04:35:44.388 pm debug Motion Delay Time = 1 minute
dev:99 2020-06-09 04:35:44.384 pm debug Report Interval = 5 minutes
dev:99 2020-06-09 04:35:44.369 pm info  MultiSensor6 is configuring its settings
dev:99 2020-06-09 04:35:44.366 pm debug ccc: 1
dev:99 2020-06-09 04:35:44.357 pm debug Sending Z-wave command: ConfigurationGet(parameterNumber:101)
dev:99 2020-06-09 04:35:44.329 pm warn  power source is not identified, check that sensor is powered by USB, if so > configure()
dev:99 2020-06-09 04:35:44.130 pm debug MultiSensor6 is now on null power
dev:99 2020-06-09 04:35:44.114 pm debug In Updated with settings: [motionSens:5, luxThold:100, refTemp:null, logEnable:true, txtEnable:true, luxOffset:0, reportInterval:5 minutes, luxChangeAmount:100, ledOptions:0, debug Output:true, motionSensitivity:5, humidChangeAmount:10, descTextEnable:true, humidOffset:0, selectiveReporting:true, tempChangeAmount:2, motionDelayTime:1 minute, tempOffset:0, settingEnable:true]

dev:99 2020-06-09 04:34:54.949 pm debug NotificationReport: NotificationReport(v1AlarmType:0, v1AlarmLevel:0, reserved:0, notificationStatus:255, notificationType:7, event:0, sequence:false, eventParametersLength:0, eventParameter:[])
dev:99 2020-06-09 04:34:54.944 pm debug parse: zw device: 2B, command: 7105, payload: 00 00 00 FF 07 00 00 , isMulticast: false
dev:99 2020-06-09 04:34:54.652 pm info  MultiSensor6 motion is inactive
dev:99 2020-06-09 04:34:54.649 pm debug BasicSet: BasicSet(value:0)
dev:99 2020-06-09 04:34:54.646 pm debug parse: zw device: 2B, command: 2001, payload: 00 , isMulticast: false
dev:99 2020-06-09 04:34:31.338 pm info  MultiSensor6 UV index is 0
dev:99 2020-06-09 04:34:31.332 pm debug SensorMultilevelReport: SensorMultilevelReport(precision:0, scale:0, sensorType:27, sensorValue:[0], size:1, scaledSensorValue:0)
dev:99 2020-06-09 04:34:31.324 pm debug parse: zw device: 2B, command: 3105, payload: 1B 01 00 , isMulticast: false
dev:99 2020-06-09 04:34:31.269 pm info  MultiSensor6 illuminance is 0 Lux
dev:99 2020-06-09 04:34:31.264 pm debug SensorMultilevelReport: SensorMultilevelReport(precision:0, scale:1, sensorType:3, sensorValue:[0, 0], size:2, scaledSensorValue:0)
dev:99 2020-06-09 04:34:31.249 pm debug parse: zw device: 2B, command: 3105, payload: 03 0A 00 00 , isMulticast: false
dev:99 2020-06-09 04:34:31.178 pm info  MultiSensor6 battery level is 100%
dev:99 2020-06-09 04:34:31.173 pm debug BatteryReport: BatteryReport(batteryLevel:100)
dev:99 2020-06-09 04:34:31.166 pm debug parse: zw device: 2B, command: 8003, payload: 64 , isMulticast: false
dev:99 2020-06-09 04:34:30.396 pm info  MultiSensor6 humidity is 42%
dev:99 2020-06-09 04:34:30.391 pm debug SensorMultilevelReport: SensorMultilevelReport(precision:0, scale:0, sensorType:5, sensorValue:[42], size:1, scaledSensorValue:42)
dev:99 2020-06-09 04:34:30.383 pm debug parse: zw device: 2B, command: 3105, payload: 05 01 2A , isMulticast: false
dev:99 2020-06-09 04:34:30.275 pm info  MultiSensor6 temperature is 81.1°F
dev:99 2020-06-09 04:34:30.265 pm debug SensorMultilevelReport: SensorMultilevelReport(precision:1, scale:1, sensorType:1, sensorValue:[3, 43], size:2, scaledSensorValue:81.1)
dev:99 2020-06-09 04:34:30.247 pm debug parse: zw device: 2B, command: 3105, payload: 01 2A 03 2B , isMulticast: false
--- Live Log Started, waiting for events ---

The gap in the logs (Blank line) is the changeover from Built-in driver to 'mine.'