My first PIR Camera DTH is on the brink of failure (Climax VST-852EX)

Hi All,

The only smart outdoor PIR camera I could find on the market was the Climax VST-852EX. I bought one and a Aeotec SmartThings v3 hub. I’m software engineer, so writing a DTH wasn’t going to be a problem, or so I thought.

From the limited documentation, the PIR Camera supports basic, motion, and proprietary clusters (0000, 0500, and 0503) . I’ve created a DTH based on numerous templates and examples. The logs show a lot of communication including enrolment, but no motion detection. If I press the test button on the device, it sends a test motion. It is like the device isn’t armed to detect motion. Here’s the configuration

def configure() {
	// Device-Watch allows 2 check-in misses from device + ping (plus 1 min lag time)
	// enrolls with default periodic reporting until newer 5 min interval is confirmed
	sendEvent(name: "checkInterval", value: 2 * 60 * 60 + 1 * 60, displayed: false, data: [protocol: "zigbee", hubHardwareId: device.hub.hardwareID, offlinePingable: "1"])

	log.debug "Configuring Reporting, IAS CIE, and Bindings."
	def cmds = 	refresh() +
				zigbee.configureReporting(zigbee.IAS_ZONE_CLUSTER, zigbee.ATTRIBUTE_IAS_ZONE_STATUS, DataType.BITMAP16, 30, 60 * 5, null) +
				zigbee.batteryConfig() +
				zigbee.enrollResponse()
        
	log.debug "config commands: $cmds"
    
	return cmds
}

Here is a start up trace if it helps

23:07:56: debug Ignore: [raw:0104 0500 01 01 0000 00 27A2 00 00 0000 04 01 00, profileId:0104, clusterId:0500, sourceEndpoint:01, destinationEndpoint:01, options:0000, messageType:00, dni:27A2, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00], clusterInt:1280, commandInt:4]
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:56: debug description: catchall: 0104 0500 01 01 0000 00 27A2 00 00 0000 04 01 00
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:56: debug Parse None
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:56: debug Ignore: [raw:0104 0500 01 01 0000 00 27A2 00 00 0000 0B 01 0000, profileId:0104, clusterId:0500, sourceEndpoint:01, destinationEndpoint:01, options:0000, messageType:00, dni:27A2, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00], clusterInt:1280, commandInt:11]
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:56: debug description: catchall: 0104 0500 01 01 0000 00 27A2 00 00 0000 0B 01 0000
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:55: debug Parse None
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:55: debug description: catchall: 0104 0500 01 01 0000 00 27A2 01 00 0000 01 01 04040110
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:51: debug Parse None
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:51: debug Ignore: [raw:0104 0001 01 01 0000 00 27A2 00 00 0000 07 01 86002000, profileId:0104, clusterId:0001, sourceEndpoint:01, destinationEndpoint:01, options:0000, messageType:00, dni:27A2, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:07, direction:01, data:[86, 00, 20, 00], clusterInt:1, commandInt:7]
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:51: debug description: catchall: 0104 0001 01 01 0000 00 27A2 00 00 0000 07 01 86002000
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:51: debug Parse None
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:51: debug Ignore: [raw:0000 8021 00 00 0000 00 27A2 00 00 0000 00 00 2C00, profileId:0000, clusterId:8021, sourceEndpoint:00, destinationEndpoint:00, options:0000, messageType:00, dni:27A2, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[2C, 00], clusterInt:32801, commandInt:0]
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:51: debug description: catchall: 0000 8021 00 00 0000 00 27A2 00 00 0000 00 00 2C00
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:48: debug Parse None
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:48: debug IAS ZONE REPORTING CONFIG RESPONSE: [raw:0104 0500 01 01 0000 00 27A2 00 00 0000 07 01 00, profileId:0104, clusterId:0500, sourceEndpoint:01, destinationEndpoint:01, options:0000, messageType:00, dni:27A2, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:07, direction:01, data:[00], clusterInt:1280, commandInt:7]
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:48: debug description: catchall: 0104 0500 01 01 0000 00 27A2 00 00 0000 07 01 00
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:47: debug Parse None
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:47: debug Ignore: [raw:0000 8021 00 00 0000 00 27A2 00 00 0000 00 00 2B00, profileId:0000, clusterId:8021, sourceEndpoint:00, destinationEndpoint:00, options:0000, messageType:00, dni:27A2, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[2B, 00], clusterInt:32801, commandInt:0]
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:47: debug description: catchall: 0000 8021 00 00 0000 00 27A2 00 00 0000 00 00 2B00
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:44: debug Parse None
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:44: debug Ignore: [raw:0104 0500 01 01 0000 00 27A2 00 00 0000 0B 01 0000, profileId:0104, clusterId:0500, sourceEndpoint:01, destinationEndpoint:01, options:0000, messageType:00, dni:27A2, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00], clusterInt:1280, commandInt:11]
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:44: debug description: catchall: 0104 0500 01 01 0000 00 27A2 00 00 0000 0B 01 0000
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:44: debug Parse None
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:44: debug Ignore: [raw:0104 0500 01 01 0000 00 27A2 00 00 0000 04 01 00, profileId:0104, clusterId:0500, sourceEndpoint:01, destinationEndpoint:01, options:0000, messageType:00, dni:27A2, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00], clusterInt:1280, commandInt:4]
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:44: debug description: catchall: 0104 0500 01 01 0000 00 27A2 00 00 0000 04 01 00
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:43: debug Parse None
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:43: debug description: catchall: 0104 0500 01 01 0000 00 27A2 01 00 0000 01 01 04040110
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:40: debug Parse returned [name:motion, value:inactive, descriptionText:Motion Sensor all clear, translatable:true]
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:40: debug Motion Status
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:40: debug description: catchall: 0104 0500 01 01 0000 00 27A2 00 00 0000 01 01 020000190000
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:40: debug Parse None
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:40: debug Ignore: [raw:0104 0001 01 01 0000 00 27A2 00 00 0000 01 01 200086, profileId:0104, clusterId:0001, sourceEndpoint:01, destinationEndpoint:01, options:0000, messageType:00, dni:27A2, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:01, direction:01, attrId:0020, resultCode:86, data:[20, 00, 86], clusterInt:1, attrInt:32, commandInt:1]
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:40: debug description: catchall: 0104 0001 01 01 0000 00 27A2 00 00 0000 01 01 200086
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:36: debug config commands: [st rattr 0x27A2 0x01 0x0001 0x0020, delay 2000, st rattr 0x27A2 0x01 0x0500 0x0002, delay 2000, st wattr 0x27A2 0x01 0x0500 0x0010 0x00F0 {286D97000209D28E}, delay 2000, raw 1280 {01 23 00 00 00}, delay 200, send 0x27A2 0x1 0x1, delay 2000, zdo bind 0x27A2 0x01 0x01 0x0500 {00124B001B6B0ABB} {}, delay 2000, st cr 0x27A2 0x01 0x0500 0x0002 0x19 0x001E 0x012C {}, delay 2000, zdo bind 0x27A2 0x01 0x01 0x0001 {00124B001B6B0ABB} {}, delay 2000, st cr 0x27A2 0x01 0x0001 0x0020 0x20 0x001E 0x5460 {01}, delay 2000, st wattr 0x27A2 0x01 0x0500 0x0010 0x00F0 {286D97000209D28E}, delay 2000, raw 1280 {01 23 00 00 00}, delay 200, send 0x27A2 0x1 0x1, delay 2000]
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:36: debug Refreshing Battery
54dabc9e-be39-4725-ac0f-fa73722e0069 23:07:36: debug Configuring Reporting, IAS CIE, and Bindings.

I’ve really hit a brick wall so any help to get the device to report/push motion detection would be appreciated.

Cheers
David

That’s a very unusual device. Interesting. But I don’t think it’s going to work the way you were expecting.

Normally there aren’t any zigbee or Z wave cameras because it would use up too much battery life. So almost all the cameras you can buy that work with SmartThings, including Arlo, Ring, etc. use Wi-Fi. Many of those also report as motion sensors, but they don’t have to.

The Climax device is pure Zigbee, but in order to do that it does not report as a motion sensor at all. What happens is when the built-in sensor is triggered, then immediately sends one to three snapshots from the camera using that proprietary cluster. As far as I can tell it never sends any motion reports and it’s not intended to. It just sends these security snapshots. Your controller is supposed to know what to do with that, which smartthings does not. But I suppose you might be able to write custom code that could do something with the snapshots. But I don’t even know what format they come in, something super compressed obviously. :thinking:

But as far as I can see that’s the only report this device makes other than a periodic check in every 30 minutes. It doesn’t report battery level, it doesn’t report motion events, nothing. just when it locally detects a PIR event, it sends the snapshots. Basically the motion sensor is just for the device’s own internal use. You do see that on some other devices as well, such as some occupancy switches. Just because an event is used by the device doesn’t mean it’s reported to the hub.

https://fccid.io/GX9852/User-Manual/Users-Manual-2743851

https://www.climax.com.tw/new/downloads/VST-852EX%20Product%20News_05.12.2016.pdf

I don’t see a PICS on the Zigbee alliance site for this device, although there is one for an older model.

@johnconstantelo has done a lot with Zigbee devices on the smartthings platform. I’m not sure he’ll have any more to add, but I thought he’d be interested in seeing this device anyway.

Also note the really strange test mode for this device. You’re supposed to press the test button and then let the device warm up for 30 seconds while not having any other events occur. After the 30 seconds you can use a test event for the purpose of determining detection range, but not network communication. You test the range by observing the LED on the device blink. To test network communication you just push the button once rather than push and hold. So again, just unusual.

1 Like

BTW, i’m just curious where you purchased this. Most Climax Devices are only sold wholesale, typically to security companies. Mostly I was wondering what Zigbee hub the seller recommended for this and if we could get any more information from that. Also if there were any individual customer reviews. :thinking:

Hi JDRoberts, thanks for your quick reply. It is an unusual device, but fits my requirements perfectly. In both of the test modes you mention, the device does send a ‘zone status’ message to the DTH parse() function. However, the status has the test mode bit set, instead of the alarm bit. If it does that in test mode, I would expect it would do the same for normal operation, but I could be wrong.

Zigbee supports image capture capabilities, but I think you’re right about the transfer being proprietary.

The company is here:
https://smarthomedirect.com.au/product/zigbee-outdoor-pir-sensor-camera/

It looks like it has it’s own hub/gateway. I was hoping zigbee and zwave would provide a better connectivity than this.

I’ll have a look for a separate motion detector and camera, but I haven’t seen any outdoor ones.

Cheers
David

1 Like

Ring is available in Australia and has a smartthings integration, but check the forum to make sure that the features you want are exposed for the specific model you are interested in, there have been a lot of changes in the integration over the years.

All of the following links are for Australia. :sunglasses:

Same thing with Arlo. Again, the model number matters.

Both of these brands have manufacturer-provided integrations with smartthings, but I don’t know if just motion is reported or not.

That is a very interesting device for sure. Climax has other devices I wish I could get my hands on, like their CLMT-1ZBS energy monitor. Unfortunately like you said, these are impossible to find unless found through very specific channels.

1 Like

Thanks for the advice people. I don’t understand why we can’t get universal connectivity when the z-wave and zigbee standards are quite comprehensive. Oh well, we can always hope.