[OBSOLETE] Original & Aqara Xiaomi Zigbee Sensors (contact, temp, motion, button, outlet, leak, etc)

Plenty of life still here!

Anyway here are some log errors from my vibration sensor - hope this helps:

84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 13:58:28: error groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method java.util.ArrayList#getAt.
Cannot resolve which method to invoke for [null] due to overlapping prototypes between:
[interface groovy.lang.Range]
[interface java.util.Collection] @line 269 (mapSensorEvent)
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 13:58:05: error groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method java.util.ArrayList#getAt.
Cannot resolve which method to invoke for [null] due to overlapping prototypes between:
[interface groovy.lang.Range]
[interface java.util.Collection] @line 269 (mapSensorEvent)
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 13:58:05: info Xiaomi Aqara Vibration Sensor: tilt angle changed by 82Ā°
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 13:58:05: error java.lang.NumberFormatException: For input string: ā€œ037ā€ @line 218 (parseReadAttrMessage)
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 13:53:45: error groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method java.util.ArrayList#getAt.
Cannot resolve which method to invoke for [null] due to overlapping prototypes between:
[interface groovy.lang.Range]
[interface java.util.Collection] @line 269 (mapSensorEvent)
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 13:53:07: error groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method java.util.ArrayList#getAt.
Cannot resolve which method to invoke for [null] due to overlapping prototypes between:
[interface groovy.lang.Range]
[interface java.util.Collection] @line 269 (mapSensorEvent)
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 13:52:45: info Xiaomi Aqara Vibration Sensor: Info message logging enabled
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 13:52:45: info Xiaomi Aqara Vibration Sensor: Set health checkInterval when preferences updated
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 13:52:45: info Xiaomi Aqara Vibration Sensor: Updating preference settings
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 13:52:45: info Xiaomi Aqara Vibration Sensor: Info message logging enabled
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 13:52:45: info Xiaomi Aqara Vibration Sensor: Set health checkInterval when preferences updated
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 13:52:45: info Xiaomi Aqara Vibration Sensor: Sensitivity level set to High
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 13:52:45: info Xiaomi Aqara Vibration Sensor: Updating preference settings
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 13:32:08: error groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method java.util.ArrayList#getAt.
Cannot resolve which method to invoke for [null] due to overlapping prototypes between:
[interface groovy.lang.Range]
[interface java.util.Collection] @line 269 (mapSensorEvent)
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 13:32:07: error java.lang.NumberFormatException: For input string: ā€œfe8ā€ @line 218 (parseReadAttrMessage)
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 13:31:58: error groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method java.util.ArrayList#getAt.
Cannot resolve which method to invoke for [null] due to overlapping prototypes between:
[interface groovy.lang.Range]
[interface java.util.Collection] @line 269 (mapSensorEvent)
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 13:31:43: info Xiaomi Aqara Vibration Sensor: Vibration level reported at 47
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 13:27:54: error java.lang.NumberFormatException: For input string: ā€œfc3ā€ @line 218 (parseReadAttrMessage)
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 13:27:31: error groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method java.util.ArrayList#getAt.
Cannot resolve which method to invoke for [null] due to overlapping prototypes between:
[interface groovy.lang.Range]
[interface java.util.Collection] @line 269 (mapSensorEvent)
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 13:25:05: info Xiaomi Aqara Vibration Sensor: Vibration level reported at 71
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 13:19:33: error java.lang.NumberFormatException: For input string: ā€œfe2ā€ @line 218 (parseReadAttrMessage)
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 13:19:32: error groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method java.util.ArrayList#getAt.
Cannot resolve which method to invoke for [null] due to overlapping prototypes between:
[interface groovy.lang.Range]
[interface java.util.Collection] @line 269 (mapSensorEvent)

@veeceeoh some more testing:

  • You map the 0055 value to event types. Array is 0 based, value incoming is 1 based :slight_smile:
  • in parseReadAttrMessage the eventType other than 2 is redefined in the else statement and then null when it is passed to mapSensorEvent.

I got the integer conversion to work:

		else if (attrId == "0508") {
			//def x = (short)Integer.parseInt(value[9..11],2)
			//def y = (short)Integer.parseInt(value[5..7],2)
			//def z = (short)Integer.parseInt(value[1..3],2)
            int x = Integer.valueOf(value[8..11],16).shortValue()
			int y = Integer.valueOf(value[4..7],16).shortValue()
			int z = Integer.valueOf(value[0..3],16).shortValue()

Is it ok if I build my own version off your code (with credits ofcourse)? I donā€™t need that many last xxx stats and am looking for fixed angle reports.

Hi all.

Just received my Aqara Contact/Door sensors, and following your instructions they are paired just fine. When I go into the device details on the IDE I can see the device reporting Open/Closed status just fine, but in the SmartThings app it just shows up as a blank device - it doesnā€™t report its status and when ā€˜tapped onā€™ the app says the device is disconnected?

Using the new app, with V2 hub.

Tried deleting and re-adding several times, tried different sensors, and redone the DH a couple times. Is there something Iā€™m doing wrong?

Thanks in advance for your help!!

Update A4refillpadā€™s code worked for me straight away. Not sure why the DH in this thread doesnā€™t?

I observe this:

Your SmartThings device xxxx is now hub disconnected 2:07

Your SmartThings device xxxx is now online 2:07

It happens only to Zigbee devices (mains and battery powered (a lot of Xiaomi Aqara) ).

Each device at a different time, the smoke detector at 1:54, the window sensor at 2:09, the Ikea Tradfri bulb at 2:12ā€¦

None of the Z-Wave devices show this behavior.

No messages, I see it in Recently Activity of each device.

Hello rocketwiz,

I have also seen this error and playing around in the DH, I removed the double def of eventType, initing it with null and then setting rather than defining and I have resolved this error.
Itā€™s due to the def eventType = Integer.parseInt(value, 16) setting eventType to null leading to the function mapSensorEvent looking up the array eventType[value] with index null and bailing out.

My snippet change of parseReadAttrMessage is:
private Map parseReadAttrMessage(String description) {
def cluster = description.split(",").find {it.split(":")[0].trim() == ā€œclusterā€}?.split(":")[1].trim()
def attrId = description.split(",").find {it.split(":")[0].trim() == ā€œattrIdā€}?.split(":")[1].trim()
def value = description.split(",").find {it.split(":")[0].trim() == ā€œvalueā€}?.split(":")[1].trim()
def eventType = null
Map resultMap = [:]

    		if (cluster == "0101") {
    			// Handles vibration (value 01), tilt (value 02), and drop (value 03) event messages
    			if (attrId == "0055") {
    				if (value?.endsWith('0002')) {
    					eventType = 2
    					parseTiltAngle(value[0..3])
    				} else {
    					eventType = Integer.parseInt(value,16)
    				}
    				resultMap = mapSensorEvent(eventType)
    			}

Hope this helps, I now have no errors in my live log and it processes tilts, drops, and taps. Big thanks to veeceeoh for developing this DH :slight_smile:

1 Like

Thanks ! Got some new errors though, although it does report instantly now.

84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 08:59:53: error java.lang.NumberFormatException: For input string: ā€œfdbā€ @line 219 (parseReadAttrMessage)
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 08:59:52: info Xiaomi Aqara Vibration Sensorwas dropped
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 08:59:52: info Xiaomi Aqara Vibration Sensor: tilt angle changed by 82Ā°
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 08:59:52: info Xiaomi Aqara Vibration Sensorwas tilted
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 08:58:10: info Xiaomi Aqara Vibration Sensor: Vibration level reported at 63
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 08:55:57: error java.lang.NumberFormatException: For input string: ā€œ02cā€ @line 219 (parseReadAttrMessage)
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 08:55:57: info Xiaomi Aqara Vibration Sensorwas dropped
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 08:55:57: info Xiaomi Aqara Vibration Sensor: tilt angle changed by 82Ā°
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 08:55:56: info Xiaomi Aqara Vibration Sensorwas tilted
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 08:54:52: error java.lang.NumberFormatException: For input string: ā€œfdeā€ @line 219 (parseReadAttrMessage)
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 08:54:51: info Xiaomi Aqara Vibration Sensoris stationary
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 08:54:24: error java.lang.NumberFormatException: For input string: ā€œfdfā€ @line 219 (parseReadAttrMessage)
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 08:54:20: info Xiaomi Aqara Vibration Sensoris stationary
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 08:54:16: error java.lang.NumberFormatException: For input string: ā€œ00cā€ @line 219 (parseReadAttrMessage)
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 08:54:16: info Xiaomi Aqara Vibration Sensorwas dropped
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 08:54:16: info Xiaomi Aqara Vibration Sensor: tilt angle changed by 97Ā°
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 08:54:14: error java.lang.NumberFormatException: For input string: ā€œfc3ā€ @line 219 (parseReadAttrMessage)
84d8f4c8-9c65-423b-97ff-7dcb51f2eb58 08:54:12: info Xiaomi Aqara Vibration Sensorwas dropped

OK I changed the base in lines 218 to 220 (the accelerometer values for x,y and z) from 2 to 16 which solved the errors:

def x = (short)Integer.parseInt(value[9ā€¦11],16)
def y = (short)Integer.parseInt(value[5ā€¦7],16)
def z = (short)Integer.parseInt(value[1ā€¦3],16)

ok I got mine running. I have it setup in Smart Lighting but it does not trigger the event when its moved or stopped moving. I know its the early moments for this DHā€¦ Im ecstatic that this is happening. But just letting you know I get angles showing up but nothing happens yetā€¦ And I know Im jumping the gun.
some Live logging info (I changed the 2ā€™s to 16ā€™s also)

First Live Log

abdc3788-11c7-4fd9-a767-49670a58dfd3 4:21:48 PM: error java.lang.NumberFormatException: For input string: ā€œ02cā€ @line 218 (parseReadAttrMessage)

abdc3788-11c7-4fd9-a767-49670a58dfd3 4:21:48 PM: debug Xiaomi Aqara Vibration Sensor: Parsing ā€˜read attr - raw: E983010101120805252C000500C204, dni: E983, endpoint: 01, cluster: 0101, size: 12, attrId: 0508, encoding: 25, value: 04c20005002cā€™

abdc3788-11c7-4fd9-a767-49670a58dfd3 4:21:40 PM: error groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method java.util.ArrayList#getAt.
Cannot resolve which method to invoke for [null] due to overlapping prototypes between:
[interface groovy.lang.Range]
[interface java.util.Collection] @line 269 (mapSensorEvent)

abdc3788-11c7-4fd9-a767-49670a58dfd3 4:21:40 PM: info Xiaomi Aqara Vibration Sensor: tilt angle changed by 34Ā°

abdc3788-11c7-4fd9-a767-49670a58dfd3 4:23:50 PM: error groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method java.util.ArrayList#getAt.
Cannot resolve which method to invoke for [null] due to overlapping prototypes between:
[interface groovy.lang.Range]
[interface java.util.Collection] @line 269 (mapSensorEvent)

abdc3788-11c7-4fd9-a767-49670a58dfd3 4:23:50 PM: debug Xiaomi Aqara Vibration Sensor: Parsing ā€˜read attr - raw: E9830101010A5500210100, dni: E983, endpoint: 01, cluster: 0101, size: 0A, attrId: 0055, encoding: 21, value: 0001ā€™

Hope this helps (it does this when ever I move it. )

this is what it did when it sit still

Sitting Still

abdc3788-11c7-4fd9-a767-49670a58dfd3 4:24:24 PM: debug Xiaomi Aqara Vibration Sensor: Creating event [name:vibrationLevel, value:288, descriptionText:Xiaomi Aqara Vibration Sensor: Vibration level reported at 288]

abdc3788-11c7-4fd9-a767-49670a58dfd3 4:24:24 PM: info Xiaomi Aqara Vibration Sensor: Vibration level reported at 288

abdc3788-11c7-4fd9-a767-49670a58dfd3 4:24:24 PM: debug Xiaomi Aqara Vibration Sensor: Parsing ā€˜read attr - raw: E9830101010E05052300002001, dni: E983, endpoint: 01, cluster: 0101, size: 0E, attrId: 0505, encoding: 23, value: 01200000ā€™

abdc3788-11c7-4fd9-a767-49670a58dfd3 4:24:24 PM: debug Xiaomi Aqara Vibration Sensor: Parsing ā€˜read attr - raw: E9830101010E05052300002001, dni: E983, endpoint: 01, cluster: 0101, size: 0E, attrId: 0505, encoding: 23, value: 01200000ā€™

As far as I know and from what I have read, custom DTH (device handler) and SmartApp code is still not supported in the new SmartThings app.

There are reports from some users that they are able to get some custom DTHs / SmartApps working in the new SmartThings mobile app if they started the setup with the old mobile app and installed code in IDE before moving over to the new app. But donā€™t be fooled buy this. As of today, SmartThings still has no official guidance for developing custom code for hub-connected devices on their new platform:

I have a theory why the A4refillpad code might be working, but Iā€™m not going to spend a single second on troubleshooting it until SmartThings has published developer tools for integrating hub-connected devices with their new platform.

Bottom line: If you want correct battery level reporting, my advice is to use the ā€œClassicā€ SmartThings mobile app and the bspranger/Xiaomi DTH. If using the new mobile app with any custom DTHs, there are zero guarantees they will work 100% at this time.

Thank you very much for the in-depth answer to this.

Currently A4refillpadā€™s code is working just fine - the old/classic SmartThings app has never accepted my Welcome/Hub code so I have only ever had access to the new app.

I will look into getting it to work now, so thanks for that.

I have had an ST muti placed next to my ringer for 2 years and it functions wonderfully. Bell rings and the vibration is picked up no issues.
I even added a AA battery pack.

1 Like

Whoopsy. Thatā€™s what happens when youā€™re building code without having the device available to test with! I would have caught that very quickly.

I have fixed it all - or at least Iā€™m pretty sure itā€™s fixed. So now array value 0 will be used when the sensor is ā€œstationaryā€, which for now can only be automatically set after a timer (I chose 61 seconds because people have said on constant vibration reports come every minute.) However, from @SuperMouseDVā€™s report (thanks!) it seems that attribute 0505 might provide a consistent value (or range of values) to indicate the sensor is actually stationary. But this needs more investigation!

I also realized I didnā€™t setup the lastXXX event returns correctly, and that should also be fixed now.

Great! Does this code provide the correct 12-but twoā€™s complement values ranging from -2048 to 2047?

Iā€™ve switched over to your code (thanks!) for now, but user @ oltman (on GitHub) has created code that will take the raw values, convert them to resting angle values, and even store open / close sets of angle values to be tied to the contact sensor capability. Iā€™ve asked him for his blessings to incorporate that code into the DTH Iā€™m working on for the bspranger/Xiaomi collection.

Absolutely! But I only put in the lastXXX event tiles for testing, and my plans were to just keep a general ā€œlast eventā€ tile (like with the other DTHs). As for the angle reports, my hope is to incorporate @ oltmanā€™s code mentioned above to map out open / close positions for use with doors where contact sensors may not make as much sense (garage doors, mailboxes, etc.) or other things that have a range of angle positions.

[BETA UPDATE] Xiaomi Aqara Vibration Sensor (Model DJR11LM) v0.65b

Updated code can be grabbed for testing from here.

Fixes

  • Main event type messages (attrID 0055) of Vibration (1), Tilt (2), or Drop (2) are now handled correctly, and the automatic reset to ā€œstationaryā€ status now uses eventType = 0 and should also work correctly
  • Events using custom attributes to store last vibration/tilt/drop/stationary event time/date stamps should now work correctly

Changes

  • Changed to @CopyCat73ā€™s suggested XYZ Accelerometer output conversion code for now (thanks!), but plan to incorporate @ oltmanā€™s (on GitHub) code to convert Accelerometer g values to relative position angles if he agrees
  • lastDropped / lastDroppedCoRE attributes renamed to lastDrop / lastDropCoRE

Since I still havenā€™t received delivery of my two vibration sensors, this code is still completely untested. Also, being a beta version, it will very likely change and more features added.

Letā€™s hope he does, that would make this DTH perfect for now. Basically vibration and the option to read angles from a predefined plane and attaching that to open/close is what we need in this device I guess. Still interested in the resting messages. With regards to the periodic updates: I have a sensor on the desk next to my computer, during the day when Iā€™m at work it does not send any updates, but whenever I am around it reports very small values (5-10) at somewhat regular intervals (10 minutes) so it does seem to be able to pick up some nearby activitiy which is great. It would mean that attaching it to a bed would be able to tell when someone is sleeping for a specific period. If the 0505 value keeps coming in at low levels you could tell someone is at a desk or in bed in a 10 minute window.

Also I implemented a faster reset of the vibration/tilt detection by using:

startTimer(10, clearsensorStatus)

def startTimer(seconds, function) {
def now = new Date()
def runTime = new Date(now.getTime() + (seconds * 1000))
runOnce(runTime, function) // runIn isnā€™t reliable under 60 seconds, use runOnce instead
}

This gives a more responsive device and you can make a preference setting for the timeout period in seconds.

Totally agree on your stance on the new app by the way. Its blatantly disrespectful how Smartthings is regarding the developers here who help further their product. But Iā€™m afraid their office is starting to look pretty empty these days.

Itā€™s interesting that youā€™re not seeing the same as @SuperMouseDV:

I almost exclusively use a Hubitat hub now, so I guess I forget how unpredictable runIn() is with SmartThingā€™s remote execution of custom DTH code. :wink:

I totally understand the need to add a user-configurable motion reset timer, which is exactly why the Xiaomi (PIR) motion sensor DTHs have that preference setting. But it needs to also allow for the use cases that would require continuous persistent motion - active. Soā€¦

Does runOnce() allow repeated calls to replace the previous one, like runIn() does?

The reason I ask is this: If someone wants to use the sensor in a washing machine (or similar) use case to notify them or take some kind of action when the vibration has stopped, then the motion - active event state needs to be persistent.

Because the Xiaomi sensor just sends repeat vibration detected messages every X seconds (you know better than I as to how often that comes) then youā€™d want to keep pushing back the execution of posting the ā€œstationaryā€ status event. runIn() works with this scenario, because each subsequent runIn() call for the same function replaces the previous (and thus extends the timer that much longer.)

EDIT:

Have you had a chance to try the sensitivity level setting code I came up with yet? Once working Iā€™m thinking to making a UI tile that the user can press to cycle through the different sensitivity levels, rather than having to go into the Preference Settings for the device.

EDIT 2:

I checked and answered my own question about repeat calls of runOnce() for the same function. From the SmartThings Developer Documentation:

Key Possible values Description
overwrite true or false Specify [overwrite: false] to not overwrite any existing pending schedule handler for the given method (the default behavior is to overwrite the pending schedule). Specifying [overwrite: false] can lead to multiple different schedules for the same handler method, so be sure your handler method can handle this.

If you want Ill run more testsā€¦ Do you want me to replace code or change the DH first ?

Sorry to raise this issue up again over a week later, but Iā€™ve been trying to hunt down some more information that helps explain things with the device Health Check ā€œOfflineā€ status of Xiaomi devices.

Health Check uses two methods to determine whether a device is online, as explained in this post from last year:

Xiaomi devices are unusual in that their check-in reporting interval is rather long (between 50-60 minutes depending on whether itā€™s an ā€œoriginalā€ Xiaomi or Aqara device), and more importantly, with a few exceptions, they donā€™t respond to ZigBee read commands, which is what the ā€œpingā€ method mentioned above uses as a last resort to check if the device is online.

The way the all the Xiaomi device handlers (both a4refillpadā€™s and in the bspranger/Xiaomi collection) are set up is this:

  • The Health Check time interval is set to 2 hours, 2 minutes. So if 2 hours and 2 minutes have passed since the last event was posted by a Xiaomi device, then the ST hub will attempt the ā€œpingā€ method, but no ping function is included in the DTH because it wonā€™t work anyhow, so the device will be marked as ā€œOFFLINEā€. The 2 hours, 2 minutes interval allows for one missed check-in.
  • When a Xiaomi device checks in every 50-60 minutes the message contains battery status, so a battery level event is generated for the ST hub. This satisfies the Health Check requirement of a device event to confirm that it is still online.

While testing DTHs and looking at the events list for Xiaomi devices, I have noticed that occasionally the ST hub misses a check-in with the battery status. I have no idea why this happens, but if it were to happen twice consecutively, then Health Check will mark the device as offline. I suspect this is what has happened to some people a few times in past, but with the recent Health Check problems that quite a few Xiaomi users have posted about, itā€™s more likely that either the Health Check time interval set-up wasnā€™t been honored, or some (or even all) battery status events were being ignored or missed.

If Health Check is working normally again, the only way that the number of false positives of Xiaomi devices being marked as offline can be reduced is to increase the Health Check time interval. Unfortunately, this does mean it will take that much longer to find out when a Xiaomi device has actually dropped its connection.

My suggestion is to bump the Health Check time interval up to a little over 6 hours. This will allow for 1-5 missed check-ins before the device is marked as offline. Another option is that a preference setting for the user to change the Health Check time interval could be added, say with a range of 2 to 24 hours (I donā€™t think itā€™s wise to allow 1 hour check intervals.)

Here is the Live logger of the Vibration Sensor being Rejoined to my Hubā€¦ The first part is ST Finding it (Also

Summary

b3fef883-e2e6-4e3a-835c-9509f14b4e38 9:53:49 AM: trace in discovery

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:53:45 AM: error java.lang.ArrayIndexOutOfBoundsException

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:53:43 AM: error java.lang.ArrayIndexOutOfBoundsException

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:53:42 AM: error groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method java.util.ArrayList#getAt.
Cannot resolve which method to invoke for [null] due to overlapping prototypes between:
[interface groovy.lang.Range]
[interface java.util.Collection] @line 269 (mapSensorEvent)

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:53:41 AM: info Xiaomi Aqara Vibration Sensor: Set health checkInterval when configured

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:53:41 AM: info Xiaomi Aqara Vibration Sensor: Configuring

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:53:41 AM: info Xiaomi Aqara Vibration Sensor: Setting Battery Changed to current date for newly paired sensor

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:53:41 AM: info Xiaomi Aqara Vibration Sensor: Installing

This is the Live Log of me hitting save

Summary

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:55:09 AM: info Xiaomi Aqara Vibration Sensor: Info message logging enabled

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:55:09 AM: info Xiaomi Aqara Vibration Sensor: Set health checkInterval when preferences updated

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:55:09 AM: info Xiaomi Aqara Vibration Sensor: Updating preference settings

15a7fece-7bd5-499a-9a62-9ffd98415e37 9:55:08 AM: info postEventToEndpoint: event successfully posted.

15a7fece-7bd5-499a-9a62-9ffd98415e37 9:55:07 AM: debug Property Change Event activity: online (source: DEVICE)

15a7fece-7bd5-499a-9a62-9ffd98415e37 9:55:07 AM: info postEventToEndpoint: event successfully posted.

And this is what it did when I bounced it aroundā€¦

Summary

8525ff07-87a5-4c1b-a38e-ed42858d26bb 9:56:36 AM: debug Parse returned [name:fanMode, value:04, isStateChange:false, displayed:false, linkText:Family Room Fan, descriptionText:Family Room Fan fan mode is 04]

8525ff07-87a5-4c1b-a38e-ed42858d26bb 9:56:36 AM: info Fan event detected on controller

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:56:35 AM: error java.lang.NumberFormatException: For input string: ā€œ05bā€ @line 218 (parseReadAttrMessage)

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:56:35 AM: debug Xiaomi Aqara Vibration Sensor: Parsing ā€˜read attr - raw: F981010101120805255B00230022FD, dni: F981, endpoint: 01, cluster: 0101, size: 12, attrId: 0508, encoding: 25, value: fd220023005bā€™

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:56:35 AM: debug Xiaomi Aqara Vibration Sensor: Parsing ā€˜read attr - raw: F981010101120805255B00230022FD, dni: F981, endpoint: 01, cluster: 0101, size: 12, attrId: 0508, encoding: 25, value: fd220023005bā€™

1687673e-e5f6-4c0d-846c-2b5c3137768e 9:56:32 AM: debug Creating battery event for voltage=1.8V: Car Keys battery is 30%

1687673e-e5f6-4c0d-846c-2b5c3137768e 9:56:32 AM: debug Creating presence event: Car Keys presence is present

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:56:29 AM: error groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method java.util.ArrayList#getAt.
Cannot resolve which method to invoke for [null] due to overlapping prototypes between:
[interface groovy.lang.Range]
[interface java.util.Collection] @line 269 (mapSensorEvent)

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:56:28 AM: debug Xiaomi Aqara Vibration Sensor: Parsing ā€˜read attr - raw: F9810101010A5500210300, dni: F981, endpoint: 01, cluster: 0101, size: 0A, attrId: 0055, encoding: 21, value: 0003ā€™

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:56:28 AM: debug Xiaomi Aqara Vibration Sensor: Parsing ā€˜read attr - raw: F9810101010A5500210300, dni: F981, endpoint: 01, cluster: 0101, size: 0A, attrId: 0055, encoding: 21, value: 0003ā€™

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:56:26 AM: error groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method java.util.ArrayList#getAt.
Cannot resolve which method to invoke for [null] due to overlapping prototypes between:
[interface groovy.lang.Range]
[interface java.util.Collection] @line 269 (mapSensorEvent)

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:56:26 AM: debug Xiaomi Aqara Vibration Sensor: Parsing ā€˜read attr - raw: F9810101010A5500210100, dni: F981, endpoint: 01, cluster: 0101, size: 0A, attrId: 0055, encoding: 21, value: 0001ā€™

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:56:18 AM: debug Xiaomi Aqara Vibration Sensor: Debug message logging enabled

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:56:18 AM: info Xiaomi Aqara Vibration Sensor: Info message logging enabled

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:56:18 AM: info Xiaomi Aqara Vibration Sensor: Set health checkInterval when preferences updated

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:56:18 AM: info Xiaomi Aqara Vibration Sensor: Updating preference settings

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:56:18 AM: debug Xiaomi Aqara Vibration Sensor: Debug message logging enabled

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:56:18 AM: info Xiaomi Aqara Vibration Sensor: Info message logging enabled

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:56:18 AM: info Xiaomi Aqara Vibration Sensor: Set health checkInterval when preferences updated

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:56:18 AM: info Xiaomi Aqara Vibration Sensor: Sensitivity level set to High

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:56:18 AM: info Xiaomi Aqara Vibration Sensor: Setting Battery Changed to current date

de265c50-9a74-45e9-b52d-6ac9a88d5eb2 9:56:18 AM: info Xiaomi Aqara Vibration Sensor: Updating preference settings

More errors :frowning:

This is the Events logā€¦ Odd it says number of buttons :slight_smile:

Summary

2018-09-20 9:48:48.705 AM EDT
9 minutes ago
DEVICE tiltAngle 97 Xiaomi Aqara Vibration Sensor: tilt angle changed by 97Ā°
2018-09-20 9:48:41.102 AM EDT
9 minutes ago
DEVICE accelSensitivity High : Sensitivity level set to High
2018-09-20 9:48:14.956 AM EDT
10 minutes ago
DEVICE tiltAngle 79 Xiaomi Aqara Vibration Sensor: tilt angle changed by 79Ā°
2018-09-20 9:47:56.912 AM EDT
10 minutes ago
HUB zwStatus ready Z-Wave include search ended
2018-09-20 9:47:41.522 AM EDT
10 minutes ago
DEVICE numberOfButtons 1 Xiaomi Aqara Vibration Sensor number of buttons is 1
2018-09-20 9:47:41.514 AM EDT
10 minutes ago
DEVICE batteryRuntime Sep 20 2018 Xiaomi Aqara Vibration Sensor battery runtime is Sep 20 2018
2018-09-20 9:46:49.029 AM EDT
11 minutes ago
HUB zwStatus include search Z-Wave include search started

Just FYI Besides changing changes noted in my previous LOG post Nothing else has been modifiedā€¦

Thanks for the log output.

I received the e-Packet from China with my two vibration sensors yesterday (that was relatively quick!) so I am already working on overhauling my DTH code, and have lots of log output of my own to work with. So after I publish the next DTH update, Iā€™ll probably need help on specific things (like what XYZ Accelerometer value you see with the sensor in certain positions) so I can make sure all sensors output roughly the same values.

While on the subject of sharing log output:

To spare people from having to scroll more through this thread, Iā€™d like to suggest to anyone posting log output to use the Hide Details feature of the forum post editor. Hereā€™s how to do it:

While composing or editing an already submitted post, first make sure your text cursor is in the place where you want to put the log output. Then up at the top of the text editor window, select the gear icon and then from the fly-out menu click Hide Details, like this:

That will give you this text:
34%20AM

Select the text ā€œThis text will be hiddenā€ and then paste in your log output. The word Summary could be replaced with something like ā€œLog output (click arrow to reveal):ā€ and hereā€™s an example) with realllllllly long log output from my new DTH code:

Log output (click arrow to reveal):
7:27:24 [info] Xiaomi Aqara Vibration Sensor: Installing
7:27:24 [info] Xiaomi Aqara Vibration Sensor is stationary
7:27:24 [info] Xiaomi Aqara Vibration Sensor: Setting Battery Changed to current date for newly paired sensor
7:27:24 [info] Xiaomi Aqara Vibration Sensor: Configuring
7:27:24 [info] Xiaomi Aqara Vibration Sensor is stationary
7:27:24 [info] Xiaomi Aqara Vibration Sensor: Set health checkInterval when configured
7:27:26 [info] Xiaomi Aqara Vibration Sensor was vibrating or moving
7:27:27 AM: error java.lang.ArrayIndexOutOfBoundsException
7:27:29 [info] Xiaomi Aqara Vibration Sensor: tilt angle changed by 11Ā°
7:27:29 [info] Xiaomi Aqara Vibration Sensor was tilted
7:27:29 [info] Xiaomi Aqara Vibration Sensor: Accelerometer axis values = 18,-12,1169
7:27:55 [info] AVS: Updating preference settings
7:27:55 [info] AVS is stationary
7:27:55 [info] AVS: Set health checkInterval when preferences updated
7:27:55 [info] AVS: Info message logging enabled
7:28:00 [info] AVS: Updating preference settings
7:28:00 [info] AVS is stationary
7:28:00 [info] AVS: Set health checkInterval when preferences updated
7:28:00 [info] AVS: Info message logging enabled
7:28:14 AM: error java.lang.ArrayIndexOutOfBoundsException
7:28:24 AM: error java.lang.ArrayIndexOutOfBoundsException
7:28:30 [info] AVS is stationary
7:28:33 [info] AVS was vibrating or moving
7:28:49 [info] AVS: tilt angle changed by 5Ā°
7:28:49 [info] AVS was tilted
7:28:49 [info] AVS: Accelerometer axis values = 83,393,1096
7:28:57 AM: error java.lang.ArrayIndexOutOfBoundsException
7:29:07 [info] AVS: Accelerometer axis values = 379,484,968
7:29:07 [info] AVS: tilt angle changed by 5Ā°
7:29:07 [info] AVS was tilted
7:29:09 [info] AVS: tilt angle changed by 5Ā°
7:29:09 [info] AVS was tilted
7:29:09 [info] AVS: Accelerometer axis values = 315,443,1021
7:29:29 [info] AVS: Updating preference settings
7:29:29 [debug] AVS: Setting Last Stationary to current date/time
7:29:29 [info] AVS is stationary
7:29:29 [info] AVS: Sensitivity level set to Low
7:29:29 [info] AVS: Set health checkInterval when preferences updated
7:29:29 [info] AVS: Info message logging enabled
7:29:29 [debug] AVS: Debug message logging enabled
7:29:29 [info] AVS: Updating preference settings
7:29:29 [debug] AVS: Setting Last Stationary to current date/time
7:29:29 [info] AVS is stationary
7:29:29 [info] AVS: Set health checkInterval when preferences updated
7:29:29 [info] AVS: Info message logging enabled
7:29:29 [debug] AVS: Debug message logging enabled
7:29:34 [debug] AVS: Parsing 'read attr - raw: 61D90101011455002102000305211C00, dni: 61D9, endpoint: 01, cluster: 0101, size: 14, attrId: 0055, encoding: 21, value: 001c2105030002'
7:29:34 [debug] AVS: Parsing 'read attr - raw: 61D90101010A5500210100, dni: 61D9, endpoint: 01, cluster: 0101, size: 0A, attrId: 0055, encoding: 21, value: 0001'
7:29:34 [debug] AVS: Setting Last Vibration to current date/time
7:29:34 [info] AVS was vibrating or moving
7:29:34 [debug] AVS: Creating event [name:motion, value:active, descriptionText:AVS was vibrating or moving, isStateChange:true]
7:29:34 [debug] AVS: Parsing 'read attr - raw: 61D90101011455002102000305211C00, dni: 61D9, endpoint: 01, cluster: 0101, size: 14, attrId: 0055, encoding: 21, value: 001c2105030002'
7:29:34 [info] AVS: tilt angle changed by 28Ā°
7:29:34 [debug] AVS: Setting Last Tilt to current date/time
7:29:34 [info] AVS was tilted
7:29:34 [debug] AVS: Creating event [name:acceleration, value:active, descriptionText:AVS was tilted, isStateChange:true]
7:29:34 [debug] AVS: Parsing 'read attr - raw: 61D9010101120805251E00F5FF9504, dni: 61D9, endpoint: 01, cluster: 0101, size: 12, attrId: 0508, encoding: 25, value: 0495fff5001e'
7:29:34 [info] AVS: Accelerometer axis values = 30,-11,1173
7:29:34 [debug] AVS: Creating event [name:threeAxis, value:30,-11,1173, linkText:AVS, handlerName:null, isStateChange:true, descriptionText:AVS: Accelerometer axis values = 30,-11,1173]
7:29:42 [debug] AVS: Parsing 'read attr - raw: 61D90101011455002102000305215200, dni: 61D9, endpoint: 01, cluster: 0101, size: 14, attrId: 0055, encoding: 21, value: 00522105030002'
7:29:42 [debug] AVS: Parsing 'read attr - raw: 61D9010101120805256800F2FB8A00, dni: 61D9, endpoint: 01, cluster: 0101, size: 12, attrId: 0508, encoding: 25, value: 008afbf20068'
7:29:42 [info] AVS: Accelerometer axis values = 104,-1038,138
7:29:42 [debug] AVS: Creating event [name:threeAxis, value:104,-1038,138, linkText:AVS, handlerName:null, isStateChange:true, descriptionText:AVS: Accelerometer axis values = 104,-1038,138]
7:29:42 [debug] AVS: Parsing 'read attr - raw: 61D90101011455002102000305215200, dni: 61D9, endpoint: 01, cluster: 0101, size: 14, attrId: 0055, encoding: 21, value: 00522105030002'
7:29:42 [info] AVS: tilt angle changed by 82Ā°
7:29:42 [debug] AVS: Setting Last Tilt to current date/time
7:29:42 [info] AVS was tilted
7:29:42 [debug] AVS: Creating event [name:acceleration, value:active, descriptionText:AVS was tilted, isStateChange:true]
7:30:03 [debug] AVS: Parsing 'read attr - raw: 61D90101011455002102000305215200, dni: 61D9, endpoint: 01, cluster: 0101, size: 14, attrId: 0055, encoding: 21, value: 00522105030002'
7:30:03 [debug] AVS: Parsing 'read attr - raw: 61D9010101120805251E00F6FF9604, dni: 61D9, endpoint: 01, cluster: 0101, size: 12, attrId: 0508, encoding: 25, value: 0496fff6001e'
7:30:03 [info] AVS: Accelerometer axis values = 30,-10,1174
7:30:03 [debug] AVS: Creating event [name:threeAxis, value:30,-10,1174, linkText:AVS, handlerName:null, isStateChange:true, descriptionText:AVS: Accelerometer axis values = 30,-10,1174]
7:30:03 [debug] AVS: Parsing 'read attr - raw: 61D90101011455002102000305215200, dni: 61D9, endpoint: 01, cluster: 0101, size: 14, attrId: 0055, encoding: 21, value: 00522105030002'
7:30:03 [info] AVS: tilt angle changed by 82Ā°
7:30:03 [debug] AVS: Setting Last Tilt to current date/time
7:30:03 [info] AVS was tilted
7:30:03 [debug] AVS: Creating event [name:acceleration, value:active, descriptionText:AVS was tilted, isStateChange:true]
7:30:17 [debug] AVS: Parsing 'read attr - raw: 61D9010101145500210200030521B000, dni: 61D9, endpoint: 01, cluster: 0101, size: 14, attrId: 0055, encoding: 21, value: 00b02105030002'
7:30:17 [info] AVS: tilt angle changed by 176Ā°
7:30:17 [debug] AVS: Setting Last Tilt to current date/time
7:30:17 [info] AVS was tilted
7:30:17 [debug] AVS: Creating event [name:acceleration, value:active, descriptionText:AVS was tilted, isStateChange:true]
7:30:17 [debug] AVS: Parsing 'read attr - raw: 61D90101011208052528000E00F1FC, dni: 61D9, endpoint: 01, cluster: 0101, size: 12, attrId: 0508, encoding: 25, value: fcf1000e0028'
7:30:17 [info] AVS: Accelerometer axis values = 40,14,-783
7:30:17 [debug] AVS: Creating event [name:threeAxis, value:40,14,-783, linkText:AVS, handlerName:null, isStateChange:true, descriptionText:AVS: Accelerometer axis values = 40,14,-783]
7:30:32 [debug] AVS: Parsing 'read attr - raw: 61D90101010A5500210100, dni: 61D9, endpoint: 01, cluster: 0101, size: 0A, attrId: 0055, encoding: 21, value: 0001'
7:30:32 [debug] AVS: Setting Last Vibration to current date/time
7:30:32 [info] AVS was vibrating or moving
7:30:32 [debug] AVS: Creating event [name:motion, value:active, descriptionText:AVS was vibrating or moving, isStateChange:true]
7:30:33 [debug] AVS: Parsing 'read attr - raw: 61D90101011208052564FCEAFF9200, dni: 61D9, endpoint: 01, cluster: 0101, size: 12, attrId: 0508, encoding: 25, value: 0092ffeafc64'
7:30:33 [info] AVS: Accelerometer axis values = -924,-22,146
7:30:33 [debug] AVS: Creating event [name:threeAxis, value:-924,-22,146, linkText:AVS, handlerName:null, isStateChange:true, descriptionText:AVS: Accelerometer axis values = -924,-22,146]
7:30:33 [debug] AVS: Parsing 'read attr - raw: 61D90101011455002102000305216600, dni: 61D9, endpoint: 01, cluster: 0101, size: 14, attrId: 0055, encoding: 21, value: 00662105030002'
7:30:33 [info] AVS: tilt angle changed by 102Ā°
7:30:33 [debug] AVS: Setting Last Tilt to current date/time
7:30:33 [info] AVS was tilted
7:30:33 [debug] AVS: Creating event [name:acceleration, value:active, descriptionText:AVS was tilted, isStateChange:true]
7:30:45 [debug] AVS: Parsing 'read attr - raw: 61D90101011455002102000305215D00, dni: 61D9, endpoint: 01, cluster: 0101, size: 14, attrId: 0055, encoding: 21, value: 005d2105030002'
7:30:45 [info] AVS: tilt angle changed by 93Ā°
7:30:45 [debug] AVS: Setting Last Tilt to current date/time
7:30:45 [info] AVS was tilted
7:30:45 [debug] AVS: Creating event [name:acceleration, value:active, descriptionText:AVS was tilted, isStateChange:true]
7:30:45 [debug] AVS: Parsing 'read attr - raw: 61D9010101120805256300F2FB9300, dni: 61D9, endpoint: 01, cluster: 0101, size: 12, attrId: 0508, encoding: 25, value: 0093fbf20063'
7:30:45 [info] AVS: Accelerometer axis values = 99,-1038,147
7:30:45 [debug] AVS: Creating event [name:threeAxis, value:99,-1038,147, linkText:AVS, handlerName:null, isStateChange:true, descriptionText:AVS: Accelerometer axis values = 99,-1038,147]
7:30:56 [debug] AVS: Parsing 'read attr - raw: 61D90101011455002102000305215500, dni: 61D9, endpoint: 01, cluster: 0101, size: 14, attrId: 0055, encoding: 21, value: 00552105030002'
7:30:56 [info] AVS: tilt angle changed by 85Ā°
7:30:56 [debug] AVS: Setting Last Tilt to current date/time
7:30:56 [info] AVS was tilted
7:30:56 [debug] AVS: Creating event [name:acceleration, value:active, descriptionText:AVS was tilted, isStateChange:true]
7:30:56 [debug] AVS: Parsing 'read attr - raw: 61D901010112080525E2031A009800, dni: 61D9, endpoint: 01, cluster: 0101, size: 12, attrId: 0508, encoding: 25, value: 0098001a03e2'
7:30:56 [info] AVS: Accelerometer axis values = 994,26,152
7:30:56 [debug] AVS: Creating event [name:threeAxis, value:994,26,152, linkText:AVS, handlerName:null, isStateChange:true, descriptionText:AVS: Accelerometer axis values = 994,26,152]
7:31:07 [debug] AVS: Parsing 'read attr - raw: 61D90101011455002102000305215900, dni: 61D9, endpoint: 01, cluster: 0101, size: 14, attrId: 0055, encoding: 21, value: 00592105030002'
7:31:07 [info] AVS: tilt angle changed by 89Ā°
7:31:07 [debug] AVS: Setting Last Tilt to current date/time
7:31:07 [info] AVS was tilted
7:31:07 [debug] AVS: Creating event [name:acceleration, value:active, descriptionText:AVS was tilted, isStateChange:true]
7:31:08 [debug] AVS: Parsing 'read attr - raw: 61D901010112080525E7FF13049500, dni: 61D9, endpoint: 01, cluster: 0101, size: 12, attrId: 0508, encoding: 25, value: 00950413ffe7'
7:31:08 [info] AVS: Accelerometer axis values = -25,1043,149
7:31:08 [debug] AVS: Creating event [name:threeAxis, value:-25,1043,149, linkText:AVS, handlerName:null, isStateChange:true, descriptionText:AVS: Accelerometer axis values = -25,1043,149]
7:31:27 [debug] AVS: Parsing 'read attr - raw: 61D90101011455002102000305215300, dni: 61D9, endpoint: 01, cluster: 0101, size: 14, attrId: 0055, encoding: 21, value: 00532105030002'
7:31:27 [info] AVS: tilt angle changed by 83Ā°
7:31:27 [debug] AVS: Setting Last Tilt to current date/time
7:31:27 [info] AVS was tilted
7:31:27 [debug] AVS: Creating event [name:acceleration, value:active, descriptionText:AVS was tilted, isStateChange:true]
7:31:27 [debug] AVS: Parsing 'read attr - raw: 61D9010101120805251200ECFF9704, dni: 61D9, endpoint: 01, cluster: 0101, size: 12, attrId: 0508, encoding: 25, value: 0497ffec0012'
7:31:27 [info] AVS: Accelerometer axis values = 18,-20,1175
7:31:27 [debug] AVS: Creating event [name:threeAxis, value:18,-20,1175, linkText:AVS, handlerName:null, isStateChange:true, descriptionText:AVS: Accelerometer axis values = 18,-20,1175]
7:31:56 [debug] AVS: Parsing 'read attr - raw: 61D90101010A5500210100, dni: 61D9, endpoint: 01, cluster: 0101, size: 0A, attrId: 0055, encoding: 21, value: 0001'
7:31:56 [debug] AVS: Setting Last Vibration to current date/time
7:31:56 [info] AVS was vibrating or moving
7:31:56 [debug] AVS: Creating event [name:motion, value:active, descriptionText:AVS was vibrating or moving, isStateChange:true]
7:32:57 [debug] AVS: Setting Last Stationary to current date/time
7:32:57 [info] AVS is stationary
7:36:17 [debug] AVS: Parsing 'read attr - raw: 61D90101010E05052300006F00, dni: 61D9, endpoint: 01, cluster: 0101, size: 0E, attrId: 0505, encoding: 23, value: 006f0000'
7:36:17 [debug] AVS: Parsing 'read attr - raw: 61D90101010E05052300006F00, dni: 61D9, endpoint: 01, cluster: 0101, size: 0E, attrId: 0505, encoding: 23, value: 006f0000'
7:36:17 [info] AVS: Vibration level reported at 111
7:36:17 [debug] AVS: Creating event [name:vibrationLevel, value:111, descriptionText:AVS: Vibration level reported at 111]
7:39:29 [debug] AVS: Parsing 'read attr - raw: 61D90101010A5500210100, dni: 61D9, endpoint: 01, cluster: 0101, size: 0A, attrId: 0055, encoding: 21, value: 0001'
7:39:30 [debug] AVS: Setting Last Vibration to current date/time
7:39:30 [info] AVS was vibrating or moving
7:39:30 [debug] AVS: Creating event [name:motion, value:active, descriptionText:AVS was vibrating or moving, isStateChange:true]
7:39:38 [debug] AVS: Parsing 'read attr - raw: 61D9010101145500210200030521AF00, dni: 61D9, endpoint: 01, cluster: 0101, size: 14, attrId: 0055, encoding: 21, value: 00af2105030002'
7:39:38 [info] AVS: tilt angle changed by 175Ā°
7:39:38 [debug] AVS: Setting Last Tilt to current date/time
7:39:38 [info] AVS was tilted
7:39:38 [debug] AVS: Creating event [name:acceleration, value:active, descriptionText:AVS was tilted, isStateChange:true]
7:39:40 [debug] AVS: Parsing 'read attr - raw: 61D90101011208052535001200F2FC, dni: 61D9, endpoint: 01, cluster: 0101, size: 12, attrId: 0508, encoding: 25, value: fcf200120035'
7:39:40 [info] AVS: Accelerometer axis values = 53,18,-782
7:39:40 [info] AVS: Accelerometer axis values (integer) = 53, 18, 64754
7:39:40 [debug] AVS: Creating event [name:threeAxis, value:53,18,-782, linkText:AVS, handlerName:null, isStateChange:true, descriptionText:AVS: Accelerometer axis values = 53,18,-782]
7:39:56 [debug] AVS: Parsing 'read attr - raw: 61D9010101120805250E00F8FF9904, dni: 61D9, endpoint: 01, cluster: 0101, size: 12, attrId: 0508, encoding: 25, value: 0499fff8000e'
7:39:56 [info] AVS: Accelerometer axis values = 14,-8,1177
7:39:56 [info] AVS: Accelerometer axis values (integer) = 14, 65528, 1177
7:39:56 [debug] AVS: Creating event [name:threeAxis, value:14,-8,1177, linkText:AVS, handlerName:null, isStateChange:true, descriptionText:AVS: Accelerometer axis values = 14,-8,1177]
7:39:57 [debug] AVS: Parsing 'read attr - raw: 61D9010101145500210200030521AF00, dni: 61D9, endpoint: 01, cluster: 0101, size: 14, attrId: 0055, encoding: 21, value: 00af2105030002'
7:39:57 [info] AVS: tilt angle changed by 175Ā°
7:39:57 [debug] AVS: Setting Last Tilt to current date/time
7:39:57 [info] AVS was tilted
7:39:57 [debug] AVS: Creating event [name:acceleration, value:active, descriptionText:AVS was tilted, isStateChange:true]
7:40:58 [debug] AVS: Setting Last Stationary to current date/time
7:40:58 [info] AVS is stationary
7:41:03 [debug] AVS: Parsing 'read attr - raw: 61D90101010A5500210100, dni: 61D9, endpoint: 01, cluster: 0101, size: 0A, attrId: 0055, encoding: 21, value: 0001'
7:41:03 [debug] AVS: Setting Last Vibration to current date/time
7:41:03 [info] AVS was vibrating or moving
7:41:03 [debug] AVS: Creating event [name:motion, value:active, descriptionText:AVS was vibrating or moving, isStateChange:true]
7:41:04 [debug] AVS: Parsing 'read attr - raw: 61D90101011455002102000305215300, dni: 61D9, endpoint: 01, cluster: 0101, size: 14, attrId: 0055, encoding: 21, value: 00532105030002'
7:41:04 [debug] AVS: Parsing 'read attr - raw: 61D901010112080525E0FF14048C00, dni: 61D9, endpoint: 01, cluster: 0101, size: 12, attrId: 0508, encoding: 25, value: 008c0414ffe0'
7:41:04 [info] AVS: Accelerometer axis values = -32,1044,140
7:41:04 [info] AVS: Accelerometer axis values (integer) = 65504, 1044, 140
7:41:04 [debug] AVS: Creating event [name:threeAxis, value:-32,1044,140, linkText:AVS, handlerName:null, isStateChange:true, descriptionText:AVS: Accelerometer axis values = -32,1044,140]
7:41:04 [debug] AVS: Parsing 'read attr - raw: 61D90101011455002102000305215300, dni: 61D9, endpoint: 01, cluster: 0101, size: 14, attrId: 0055, encoding: 21, value: 00532105030002'
7:41:04 [info] AVS: tilt angle changed by 83Ā°
7:41:04 [debug] AVS: Setting Last Tilt to current date/time
7:41:04 [info] AVS was tilted
7:41:04 [debug] AVS: Creating event [name:acceleration, value:active, descriptionText:AVS was tilted, isStateChange:true]
7:41:15 [debug] AVS: Parsing 'read attr - raw: 61D90101011208052563FCE5FF8900, dni: 61D9, endpoint: 01, cluster: 0101, size: 12, attrId: 0508, encoding: 25, value: 0089ffe5fc63'
7:41:15 [debug] AVS: Parsing 'read attr - raw: 61D90101011208052563FCE5FF8900, dni: 61D9, endpoint: 01, cluster: 0101, size: 12, attrId: 0508, encoding: 25, value: 0089ffe5fc63'
7:41:15 [info] AVS: Accelerometer axis values = -925,-27,137
7:41:15 [info] AVS: Accelerometer axis values (integer) = 64611, 65509, 137
7:41:15 [debug] AVS: Creating event [name:threeAxis, value:-925,-27,137, linkText:AVS, handlerName:null, isStateChange:true, descriptionText:AVS: Accelerometer axis values = -925,-27,137]
7:41:15 [debug] AVS: Parsing 'read attr - raw: 61D90101011455002102000305215900, dni: 61D9, endpoint: 01, cluster: 0101, size: 14, attrId: 0055, encoding: 21, value: 00592105030002'
7:41:15 [info] AVS: tilt angle changed by 89Ā°
7:41:15 [debug] AVS: Setting Last Tilt to current date/time
7:41:15 [info] AVS was tilted
7:41:15 [debug] AVS: Creating event [name:acceleration, value:active, descriptionText:AVS was tilted, isStateChange:true]
7:41:23 [debug] AVS: Parsing 'read attr - raw: 61D90101011455002102000305215D00, dni: 61D9, endpoint: 01, cluster: 0101, size: 14, attrId: 0055, encoding: 21, value: 005d2105030002'
7:41:23 [info] AVS: tilt angle changed by 93Ā°
7:41:23 [debug] AVS: Setting Last Tilt to current date/time
7:41:23 [info] AVS was tilted
7:41:23 [debug] AVS: Creating event [name:acceleration, value:active, descriptionText:AVS was tilted, isStateChange:true]
7:41:23 [debug] AVS: Parsing 'read attr - raw: 61D9010101120805256800F2FB8E00, dni: 61D9, endpoint: 01, cluster: 0101, size: 12, attrId: 0508, encoding: 25, value: 008efbf20068'
7:41:23 [info] AVS: Accelerometer axis values = 104,-1038,142
7:41:23 [info] AVS: Accelerometer axis values (integer) = 104, 64498, 142
7:41:23 [debug] AVS: Creating event [name:threeAxis, value:104,-1038,142, linkText:AVS, handlerName:null, isStateChange:true, descriptionText:AVS: Accelerometer axis values = 104,-1038,142]
7:41:36 [debug] AVS: Parsing 'read attr - raw: 61D90101011455002102000305215500, dni: 61D9, endpoint: 01, cluster: 0101, size: 14, attrId: 0055, encoding: 21, value: 00552105030002'
7:41:36 [info] AVS: tilt angle changed by 85Ā°
7:41:36 [debug] AVS: Setting Last Tilt to current date/time
7:41:36 [info] AVS was tilted
7:41:36 [debug] AVS: Creating event [name:acceleration, value:active, descriptionText:AVS was tilted, isStateChange:true]
7:41:36 [debug] AVS: Parsing 'read attr - raw: 61D901010112080525E1031F009500, dni: 61D9, endpoint: 01, cluster: 0101, size: 12, attrId: 0508, encoding: 25, value: 0095001f03e1'
7:41:36 [info] AVS: Accelerometer axis values = 993,31,149
7:41:36 [info] AVS: Accelerometer axis values (integer) = 993, 31, 149
7:41:36 [debug] AVS: Creating event [name:threeAxis, value:993,31,149, linkText:AVS, handlerName:null, isStateChange:true, descriptionText:AVS: Accelerometer axis values = 993,31,149]
7:41:47 [debug] AVS: Parsing 'read attr - raw: 61D90101011455002102000305215000, dni: 61D9, endpoint: 01, cluster: 0101, size: 14, attrId: 0055, encoding: 21, value: 00502105030002'
7:41:47 [info] AVS: tilt angle changed by 80Ā°
7:41:47 [debug] AVS: Setting Last Tilt to current date/time
7:41:47 [info] AVS was tilted
7:41:47 [debug] AVS: Creating event [name:acceleration, value:active, descriptionText:AVS was tilted, isStateChange:true]
7:41:47 [debug] AVS: Parsing 'read attr - raw: 61D9010101120805251A00FDFF9B04, dni: 61D9, endpoint: 01, cluster: 0101, size: 12, attrId: 0508, encoding: 25, value: 049bfffd001a'
7:41:47 [info] AVS: Accelerometer axis values = 26,-3,1179
7:41:47 [info] AVS: Accelerometer axis values (integer) = 26, 65533, 1179
7:41:47 [debug] AVS: Creating event [name:threeAxis, value:26,-3,1179, linkText:AVS, handlerName:null, isStateChange:true, descriptionText:AVS: Accelerometer axis values = 26,-3,1179]
7:42:20 [debug] AVS: Parsing 'read attr - raw: 61D90101010E05052300006900, dni: 61D9, endpoint: 01, cluster: 0101, size: 0E, attrId: 0505, encoding: 23, value: 00690000'
7:42:20 [info] AVS: Vibration level reported at 105
7:42:20 [debug] AVS: Creating event [name:vibrationLevel, value:105, descriptionText:AVS: Vibration level reported at 105]
7:42:49 [debug] AVS: Setting Last Stationary to current date/time
7:42:49 [info] AVS is stationary
8:15:07 [debug] AVS: Parsing 'catchall: 0104 0000 01 01 0100 00 61D9 00 01 115F 0A 01 01FF422E01215D0C0328170421A8130521090006240300040000082108030A21000098212800992167009A251A00FDFF9B04'
8:15:07 [debug] AVS: SmartShield(text: null, manufacturerId: 0x115f, direction: 0x01, data: [0x01, 0xff, 0x42, 0x2e, 0x01, 0x21, 0x5d, 0x0c, 0x03, 0x28, 0x17, 0x04, 0x21, 0xa8, 0x13, 0x05, 0x21, 0x09, 0x00, 0x06, 0x24, 0x03, 0x00, 0x04, 0x00, 0x00, 0x08, 0x21, 0x08, 0x03, 0x0a, 0x21, 0x00, 0x00, 0x98, 0x21, 0x28, 0x00, 0x99, 0x21, 0x67, 0x00, 0x9a, 0x25, 0x1a, 0x00, 0xfd, 0xff, 0x9b, 0x04], number: null, isManufacturerSpecific: true, messageType: 0x00, senderShortId: 0x61d9, isClusterSpecific: false, sourceEndpoint: 0x01, profileId: 0x0104, command: 0x0a, clusterId: 0x0000, destinationEndpoint: 0x01, options: 0x0100)
8:15:07 [debug] AVS: [name:battery, value:100, unit:%, isStateChange:true, descriptionText:AVS Battery at 100% (3.165 Volts)]
8:15:07 [debug] AVS: Creating event [name:battery, value:100, unit:%, isStateChange:true, descriptionText:AVS Battery at 100% (3.165 Volts)]

A cool way to shorten message length, eh?

You may have also noticed my log output was missing the long string of characters at the beginning of each line (like ā€œde265c50-9a74-45e9-b52d-6ac9a88d5eb2ā€). Thatā€™s thanks to find & replace in a text editor. And then I reversed the lines to be in the correct order for reading (putting the first log event at top, and last event at bottom) with a web page tool like this one.

Iā€™ll be posting some of my findings based on testing with my sensors very soonā€¦ :wink: