It returns Event objects with implied Getter methods (not properties).
I do this:
def result = device.eventsBetween(start, end)?.collect{
[
"date": formatDate(it.date),
"deviceID": it.deviceId,
"name": it.name,
"displayName": it.displayName,
"description": it.description,
"descriptionText": it.descriptionText,
"unit": it.unit,
"source": it.source,
"value": it.value,
"isDigital": it.isDigital(),
"isPhysical": it.isPhysical(),
"isStateChange": it.isStateChange()
...
]