Pre-purchased question Philio PAT01 4-1 and PST02 3-1 sensor

Hello

Sorry if this is posted under the wrong category. Please move or remove if so. But as the topic says, is there support for these sensors ?. It's the only thing that keeps me from pushing the buy button. and moved away from my Vera gateway.

If it helps I have two different branded Philio 4 in 1 working here, one is in fact a 3 in 1. Both work with a custom driver ported over from ST.

This is the 4 in 1

 	/*
 * Philio PST02-1A 4-in-1 Multi Sensor Device Type
 *
 * Based on Philio PSM02 4-in-1 Multi Sensor Device Type by eyeonall
 * AND PSM01 Sensor created by SmartThings/Paul Spee
 * AND SmartThings' Aeon MultiSensor 6 Device Type
 */

metadata {

	definition (name: "Philio PST02-1A Sensor", namespace: "ertanden", author: "Ertan Deniz") {
		capability "Contact Sensor"
		capability "Motion Sensor"
		capability "Temperature Measurement"
		capability "Illuminance Measurement"
		capability "Configuration"
		capability "Sensor"
		capability "Battery"
		capability "Refresh"
		capability "Polling"

		fingerprint deviceId: "0x0701", inClusters: "0x5E,0x72,0x86,0x59,0x73,0x5A,0x8F,0x98,0x7A", outClusters: "0x20"
		fingerprint mfr:"013C", prod:"0002", model:"000C"
	}

	preferences {
		input description: "This feature allows you to correct any temperature variations by selecting an offset. Ex: If your sensor consistently reports a temp that's 5 degrees too warm, you'd enter \"-5\". If 3 degrees too cold, enter \"+3\".", displayDuringSetup: false, type: "paragraph", element: "paragraph"
		input "tempOffset", "number", title: "Temperature Offset", description: "Adjust temperature by this many degrees", range: "*..*", displayDuringSetup: false
	}
}

preferences {
}

def installed() {
	log.debug "Installed with settings: ${settings}"

	setConfigured("false") //wait until the next time device wakeup to send configure command after user change preference
}

def updated() {
	log.debug "Updated with settings: ${settings}"

	setConfigured("false") //wait until the next time device wakeup to send configure command after user change preference
}

def parse(String description) {
	log.debug "parse() >> description: $description"
	def result = null
	if (description.startsWith("Err 106")) {
		log.debug "parse() >> Err 106"
		result = createEvent( name: "secureInclusion", value: "failed", isStateChange: true,
				descriptionText: "This sensor failed to complete the network security key exchange. If you are unable to control it via SmartThings, you must remove it from your network and add it again.")
	} else if (description != "updated") {
		log.debug "parse() >> zwave.parse(description)"
		def cmd = zwave.parse(description, [0x20: 1, 0x30: 2, 0x31: 5, 0x70: 1, 0x72: 1, 0x80: 1, 0x84: 2, 0x85: 1, 0x86: 1])
		if (cmd) {
			result = zwaveEvent(cmd)
		}
	}
	log.debug "After zwaveEvent(cmd) >> Parsed '${description}' to ${result.inspect()}"
	return result
}

// Event Generation
//this notification will be sent only when device is battery powered
def zwaveEvent(hubitat.zwave.commands.wakeupv2.WakeUpNotification cmd) {
	def result = [createEvent(descriptionText: "${device.displayName} woke up", isStateChange: false)]
	def cmds = []

	// Only ask for battery if we haven't had a BatteryReport in a while
	if (!state.lastbatt || now() - state.lastbatt > 24*60*60*1000) {
		result << response(command(zwave.batteryV1.batteryGet()))
		result << response("delay 1200")  // leave time for device to respond to batteryGet
	}

	if (!isConfigured()) {
		log.debug("late configure")
		result << response(configure())
	} else {
		log.debug("Device has been configured sending >> wakeUpNoMoreInformation()")
		cmds << zwave.wakeUpV2.wakeUpNoMoreInformation().format()
		result << response(cmds)
	}
	result
}

def zwaveEvent(hubitat.zwave.commands.multicmdv1.MultiCmdEncap cmd) {

	log.debug "multicmdencap: ${cmd.payload}"


	//def encapsulatedCommand = cmd.encapsulatedCommand()
	//if (encapsulatedCommand) {
	//    zwaveEvent(encapsulatedCommand)
	//}
}

def zwaveEvent(hubitat.zwave.commands.securityv1.SecurityMessageEncapsulation cmd) {
	def encapsulatedCommand = cmd.encapsulatedCommand([0x20: 1, 0x30: 2, 0x31: 5, 0x70: 1, 0x72: 1, 0x80: 1, 0x84: 2, 0x85: 1, 0x86: 1])
	state.sec = 1
	log.debug "encapsulated: ${encapsulatedCommand}"
	if (encapsulatedCommand) {
		zwaveEvent(encapsulatedCommand)
	} else {
		log.warn "Unable to extract encapsulated cmd from $cmd"
		createEvent(descriptionText: cmd.toString())
	}
}

def zwaveEvent(hubitat.zwave.commands.securityv1.SecurityCommandsSupportedReport cmd) {
	log.info "Executing zwaveEvent 98 (SecurityV1): 03 (SecurityCommandsSupportedReport) with cmd: $cmd"
	state.sec = 1
}

def zwaveEvent(hubitat.zwave.commands.securityv1.NetworkKeyVerify cmd) {
	state.sec = 1
	log.info "Executing zwaveEvent 98 (SecurityV1): 07 (NetworkKeyVerify) with cmd: $cmd (node is securely included)"
	def result = [createEvent(name:"secureInclusion", value:"success", descriptionText:"Secure inclusion was successful", isStateChange: true)]
	result
}

def zwaveEvent(hubitat.zwave.commands.configurationv1.ConfigurationReport cmd) {
	log.debug "---CONFIGURATION REPORT V1--- ${device.displayName} parameter ${cmd.parameterNumber} with a byte size of ${cmd.size} is set to ${cmd.configurationValue}"
}

def zwaveEvent(hubitat.zwave.commands.sensormultilevelv5.SensorMultilevelReport cmd)
{
	log.debug "PST02: SensorMultilevel ${cmd.toString()}"
	def map = [:]
	switch (cmd.sensorType) {
		case 1:
			// temperature
			def cmdScale = cmd.scale == 1 ? "F" : "C"
			map.value = convertTemperatureIfNeeded(cmd.scaledSensorValue, cmdScale, cmd.precision)
			map.unit = getTemperatureScale()
			map.name = "temperature"
			if (tempOffset) {
				def offset = tempOffset as int
				def v = map.value as int
				map.value = v + offset
			}
			log.debug "Adjusted temp value ${map.value}"
			break;
		case 3:
			// luminance
			map.value = cmd.scaledSensorValue.toInteger().toString()
			map.unit = "lux"
			map.name = "illuminance"
			break;
	}
	//map
	createEvent(map)
}

def zwaveEvent(hubitat.zwave.commands.batteryv1.BatteryReport cmd) {
	log.debug "PST02: BatteryReport ${cmd.toString()}}"
	def map = [:]
	map.name = "battery"
	map.value = cmd.batteryLevel > 0 ? cmd.batteryLevel.toString() : 1
	map.unit = "%"
	map.displayed = false
	//map
	state.lastbatt = now()
	createEvent(map)
}

def zwaveEvent(hubitat.zwave.commands.sensorbinaryv2.SensorBinaryReport cmd) {
	log.debug "PST02: SensorBinaryReport ${cmd.toString()}}"
	def map = [:]
	switch (cmd.sensorType) {
		case 10: // contact sensor
			map.name = "contact"
			log.debug "PST02 cmd.sensorValue: ${cmd.sensorValue}"
			if (cmd.sensorValue.toInteger() > 0 ) {
				log.debug "PST02 DOOR OPEN"
				map.value = "open"
				map.descriptionText = "$device.displayName is open"
			} else {
				log.debug "PST02 DOOR CLOSED"
				map.value = "closed"
				map.descriptionText = "$device.displayName is closed"
			}
			break;
		case 12: // motion sensor
			map.name = "motion"
			log.debug "PST02 cmd.sensorValue: ${cmd.sensorValue}"
			if (cmd.sensorValue.toInteger() > 0 ) {
				log.debug "PST02 Motion Detected"
				map.value = "active"
				map.descriptionText = "$device.displayName is active"
			} else {
				log.debug "PST02 No Motion"
				map.value = "inactive"
				map.descriptionText = "$device.displayName no motion"
			}
			map.isStateChange = true
			break;
	}
	//map
	createEvent(map)
}

def zwaveEvent(hubitat.zwave.Command cmd) {
	log.debug "PST02: Catchall reached for cmd: ${cmd.toString()}}"
	[:]
}

def configure() {
	log.debug "PST02: configure() called"

	def request = []

	request << zwave.configurationV1.configurationSet(parameterNumber: 3, size: 1, scaledConfigurationValue: 80) // PIR Sensitivity 1-100
	request << zwave.configurationV1.configurationSet(parameterNumber: 4, size: 1, scaledConfigurationValue: 99) // Light threshold
	request << zwave.configurationV1.configurationSet(parameterNumber: 5, size: 1, scaledConfigurationValue: 0) // Operation Mode
	request << zwave.configurationV1.configurationSet(parameterNumber: 6, size: 1, scaledConfigurationValue: 4) // Multi-Sensor Function Switch
	request << zwave.configurationV1.configurationSet(parameterNumber: 7, size: 1, scaledConfigurationValue: 54) // Customer Function
	request << zwave.configurationV1.configurationSet(parameterNumber: 8, size: 1, scaledConfigurationValue: 3) // PIR re-detect interval time
	request << zwave.configurationV1.configurationSet(parameterNumber: 9, size: 1, scaledConfigurationValue: 4) // Turn Off Light Time
	request << zwave.configurationV1.configurationSet(parameterNumber: 9, size: 1, scaledConfigurationValue: 4) // Turn Off Light Time
	request << zwave.configurationV1.configurationSet(parameterNumber: 10, size: 1, scaledConfigurationValue: 12) // Auto report Battery time 1-127, default 12
	request << zwave.configurationV1.configurationSet(parameterNumber: 11, size: 1, scaledConfigurationValue: 12) // Auto report Door/Window state time 1-127, default 12
	request << zwave.configurationV1.configurationSet(parameterNumber: 12, size: 1, scaledConfigurationValue: 12) // Auto report Illumination time 1-127, default 12
	request << zwave.configurationV1.configurationSet(parameterNumber: 13, size: 1, scaledConfigurationValue: 12) // Auto report Temperature time 1-127, default 12

	request << zwave.wakeUpV2.wakeUpIntervalSet(seconds: 24 * 3600, nodeid:zwaveHubNodeId) // Wake up period

	//7. query sensor data
	request << zwave.batteryV1.batteryGet()
	request << zwave.sensorBinaryV2.sensorBinaryGet(sensorType: 10) //contact
	request << zwave.sensorBinaryV2.sensorBinaryGet(sensorType: 12) //motion
	request << zwave.sensorMultilevelV5.sensorMultilevelGet(sensorType: 1) //temperature
	request << zwave.sensorMultilevelV5.sensorMultilevelGet(sensorType: 3) //illuminance

	setConfigured("true")

	commands(request) + ["delay 20000", zwave.wakeUpV2.wakeUpNoMoreInformation().format()]
}

private setConfigured(configure) {
	log.debug "setConfigured: ${configure}"
	updateDataValue("configured", configure)
}

private isConfigured() {
	getDataValue("configured") == "true"
}

private command(hubitat.zwave.Command cmd) {
	if (state.sec) {
		zwave.securityV1.securityMessageEncapsulation().encapsulate(cmd).format()
	} else {
		cmd.format()
	}
}

private commands(commands, delay=200) {
	log.info "sending commands: ${commands}"
	delayBetween(commands.collect{ command(it) }, delay)
}

The 3 in 1 doesn't have motion on mine, not sure if yours is the same. I adapted this based on another version. Mine are branded Devolo for the 3 in 1, and Zipato for the 4 in 1. But they all seem to share the same innards,

	/*
 * Philio PST02-1A 4-in-1 Multi Sensor Device Type
 *
 * Based on Philio PSM02 4-in-1 Multi Sensor Device Type by eyeonall
 * AND PSM01 Sensor created by SmartThings/Paul Spee
 * AND SmartThings' Aeon MultiSensor 6 Device Type
 * Modified by Royski, from code supplied by ertanden (Ertan Deniz) for 
 * use with Devolo Contact Sensor, removed Motion and added more reports
 * Royski, removed sections for motion
 */

metadata {

	definition (name: "Devolo Contact Sensor", namespace: "ertanden", author: "Ertan Deniz") {
		capability "Contact Sensor"
		// capability "Motion Sensor"
		capability "Temperature Measurement"
		capability "Illuminance Measurement"
		capability "Configuration"
		capability "Sensor"
		capability "Battery"
		capability "Refresh"
		capability "Polling"

		fingerprint deviceId: "0x0701", inClusters: "0x5E,0x72,0x86,0x59,0x73,0x5A,0x8F,0x98,0x7A", outClusters: "0x20"
		fingerprint mfr:"013C", prod:"0002", model:"000C"
	}

	preferences {
		input description: "This feature allows you to correct any temperature variations by selecting an offset. Ex: If your sensor consistently reports a temp that's 5 degrees too warm, you'd enter \"-5\". If 3 degrees too cold, enter \"+3\".", displayDuringSetup: false, type: "paragraph", element: "paragraph"
		input "tempOffset", "number", title: "Temperature Offset", description: "Adjust temperature by this many degrees", range: "*..*", displayDuringSetup: false
	}
}

preferences {
}

def installed() {
	log.debug "Installed with settings: ${settings}"

	setConfigured("false") //wait until the next time device wakeup to send configure command after user change preference
}

def updated() {
	log.debug "Updated with settings: ${settings}"

	setConfigured("false") //wait until the next time device wakeup to send configure command after user change preference
}

def parse(String description) {
	log.debug "parse() >> description: $description"
	def result = null
	if (description.startsWith("Err 106")) {
		log.debug "parse() >> Err 106"
		result = createEvent( name: "secureInclusion", value: "failed", isStateChange: true,
				descriptionText: "This sensor failed to complete the network security key exchange. If you are unable to control it via SmartThings, you must remove it from your network and add it again.")
	} else if (description != "updated") {
		log.debug "parse() >> zwave.parse(description)"
		def cmd = zwave.parse(description, [0x20: 1, 0x30: 2, 0x31: 5, 0x70: 1, 0x72: 1, 0x80: 1, 0x84: 2, 0x85: 1, 0x86: 1])
		if (cmd) {
			result = zwaveEvent(cmd)
		}
	}
	log.debug "After zwaveEvent(cmd) >> Parsed '${description}' to ${result.inspect()}"
	return result
}

// Event Generation
//this notification will be sent only when device is battery powered
def zwaveEvent(hubitat.zwave.commands.wakeupv2.WakeUpNotification cmd) {
	def result = [createEvent(descriptionText: "${device.displayName} woke up", isStateChange: false)]
	def cmds = []

	// Only ask for battery if we haven't had a BatteryReport in a while
	if (!state.lastbatt || now() - state.lastbatt > 24*60*60*1000) {
		result << response(command(zwave.batteryV1.batteryGet()))
		result << response("delay 1200")  // leave time for device to respond to batteryGet
	}

	if (!isConfigured()) {
		log.debug("late configure")
		result << response(configure())
	} else {
		log.debug("Device has been configured sending >> wakeUpNoMoreInformation()")
		cmds << zwave.wakeUpV2.wakeUpNoMoreInformation().format()
		result << response(cmds)
	}
	result
}

def zwaveEvent(hubitat.zwave.commands.multicmdv1.MultiCmdEncap cmd) {

	log.debug "multicmdencap: ${cmd.payload}"


	//def encapsulatedCommand = cmd.encapsulatedCommand()
	//if (encapsulatedCommand) {
	//    zwaveEvent(encapsulatedCommand)
	//}
}

def zwaveEvent(hubitat.zwave.commands.securityv1.SecurityMessageEncapsulation cmd) {
	def encapsulatedCommand = cmd.encapsulatedCommand([0x20: 1, 0x30: 2, 0x31: 5, 0x70: 1, 0x72: 1, 0x80: 1, 0x84: 2, 0x85: 1, 0x86: 1])
	state.sec = 1
	log.debug "encapsulated: ${encapsulatedCommand}"
	if (encapsulatedCommand) {
		zwaveEvent(encapsulatedCommand)
	} else {
		log.warn "Unable to extract encapsulated cmd from $cmd"
		createEvent(descriptionText: cmd.toString())
	}
}

def zwaveEvent(hubitat.zwave.commands.securityv1.SecurityCommandsSupportedReport cmd) {
	log.info "Executing zwaveEvent 98 (SecurityV1): 03 (SecurityCommandsSupportedReport) with cmd: $cmd"
	state.sec = 1
}

def zwaveEvent(hubitat.zwave.commands.securityv1.NetworkKeyVerify cmd) {
	state.sec = 1
	log.info "Executing zwaveEvent 98 (SecurityV1): 07 (NetworkKeyVerify) with cmd: $cmd (node is securely included)"
	def result = [createEvent(name:"secureInclusion", value:"success", descriptionText:"Secure inclusion was successful", isStateChange: true)]
	result
}

def zwaveEvent(hubitat.zwave.commands.configurationv1.ConfigurationReport cmd) {
	log.debug "---CONFIGURATION REPORT V1--- ${device.displayName} parameter ${cmd.parameterNumber} with a byte size of ${cmd.size} is set to ${cmd.configurationValue}"
}

def zwaveEvent(hubitat.zwave.commands.sensormultilevelv5.SensorMultilevelReport cmd)
{
	log.debug "Devolo: SensorMultilevel ${cmd.toString()}"
	def map = [:]
	switch (cmd.sensorType) {
		case 1:
			// temperature
			def cmdScale = cmd.scale == 1 ? "F" : "C"
			map.value = convertTemperatureIfNeeded(cmd.scaledSensorValue, cmdScale, cmd.precision)
			map.unit = getTemperatureScale()
			map.name = "temperature"
			if (tempOffset) {
				def offset = tempOffset as int
				def v = map.value as int
				map.value = v + offset
			}
			log.debug "Adjusted temp value ${map.value}"
			break;
		case 3:
			// luminance
			map.value = cmd.scaledSensorValue.toInteger().toString()
			map.unit = "lux"
			map.name = "illuminance"
			break;
	}
	//map
	createEvent(map)
}

def zwaveEvent(hubitat.zwave.commands.batteryv1.BatteryReport cmd) {
	log.debug "Devolo: BatteryReport ${cmd.toString()}}"
	def map = [:]
	map.name = "battery"
	map.value = cmd.batteryLevel > 0 ? cmd.batteryLevel.toString() : 1
	map.unit = "%"
	map.displayed = false
	//map
	state.lastbatt = now()
	createEvent(map)
}

def zwaveEvent(hubitat.zwave.commands.sensorbinaryv2.SensorBinaryReport cmd) {
	log.debug "Devolo: SensorBinaryReport ${cmd.toString()}}"
	def map = [:]
	switch (cmd.sensorType) {
		case 10: // contact sensor
			map.name = "contact"
			log.debug "Devolo cmd.sensorValue: ${cmd.sensorValue}"
			if (cmd.sensorValue.toInteger() > 0 ) {
				log.debug "Devolo DOOR OPEN"
				map.value = "open"
				map.descriptionText = "$device.displayName is open"
			} else {
				log.debug "Devolo DOOR CLOSED"
				map.value = "closed"
				map.descriptionText = "$device.displayName is closed"
			}
			break;
		case 12: // motion sensor
			map.name = "motion"
			log.debug "Devolo cmd.sensorValue: ${cmd.sensorValue}"
			if (cmd.sensorValue.toInteger() > 0 ) {
				log.debug "Devolo Motion Detected"
				map.value = "active"
				map.descriptionText = "$device.displayName is active"
			} else {
				log.debug "Devolo No Motion"
				map.value = "inactive"
				map.descriptionText = "$device.displayName no motion"
			}
			map.isStateChange = true
			break;
	}
	//map
	createEvent(map)
}

def zwaveEvent(hubitat.zwave.Command cmd) {
	log.debug "Devolo: Catchall reached for cmd: ${cmd.toString()}}"
	[:]
}

def configure() {
	log.debug "Devolo: configure() called"

	def request = []

	request << zwave.configurationV1.configurationSet(parameterNumber: 3, size: 1, scaledConfigurationValue: 0) // PIR Sensitivity 1-100 <RK> changed to 0 to turn off
	request << zwave.configurationV1.configurationSet(parameterNumber: 4, size: 1, scaledConfigurationValue: 99) // Light threshold
	request << zwave.configurationV1.configurationSet(parameterNumber: 5, size: 1, scaledConfigurationValue: 0) // Operation Mode
	request << zwave.configurationV1.configurationSet(parameterNumber: 6, size: 1, scaledConfigurationValue: 4) // Multi-Sensor Function Switch
	request << zwave.configurationV1.configurationSet(parameterNumber: 7, size: 1, scaledConfigurationValue: 54) // Customer Function
	request << zwave.configurationV1.configurationSet(parameterNumber: 8, size: 1, scaledConfigurationValue: 3) // PIR re-detect interval time
	request << zwave.configurationV1.configurationSet(parameterNumber: 9, size: 1, scaledConfigurationValue: 4) // Turn Off Light Time
	request << zwave.configurationV1.configurationSet(parameterNumber: 10, size: 1, scaledConfigurationValue: 12) // Auto report Battery time 1-127, default 12
	request << zwave.configurationV1.configurationSet(parameterNumber: 11, size: 1, scaledConfigurationValue: 12) // Auto report Door/Window state time 1-127, default 12
	request << zwave.configurationV1.configurationSet(parameterNumber: 12, size: 1, scaledConfigurationValue: 12) // Auto report Illumination time 1-127, default 12
	request << zwave.configurationV1.configurationSet(parameterNumber: 13, size: 1, scaledConfigurationValue: 12) // Auto report Temperature time 1-127, default 12
	// <RK> Added by me - Remove if it causes issues
	request << zwave.configurationV1.configurationSet(parameterNumber: 20, size: 1, scaledConfigurationValue: 30) // Auto report Tick Interval, default 30
	request << zwave.configurationV1.configurationSet(parameterNumber: 21, size: 1, scaledConfigurationValue: 0) // Temperature Differential Report, Default 1
	request << zwave.configurationV1.configurationSet(parameterNumber: 22, size: 1, scaledConfigurationValue: 0) // Illumination Differential Report, Default 0

	request << zwave.wakeUpV2.wakeUpIntervalSet(seconds: 24 * 3600, nodeid:zwaveHubNodeId) // Wake up period

	//7. query sensor data
	request << zwave.batteryV1.batteryGet()
	request << zwave.sensorBinaryV2.sensorBinaryGet(sensorType: 10) //contact
	request << zwave.sensorBinaryV2.sensorBinaryGet(sensorType: 12) //motion
	request << zwave.sensorMultilevelV5.sensorMultilevelGet(sensorType: 1) //temperature
	request << zwave.sensorMultilevelV5.sensorMultilevelGet(sensorType: 3) //illuminance

	setConfigured("true")

	commands(request) + ["delay 20000", zwave.wakeUpV2.wakeUpNoMoreInformation().format()]
}

private setConfigured(configure) {
	log.debug "setConfigured: ${configure}"
	updateDataValue("configured", configure)
}

private isConfigured() {
	getDataValue("configured") == "true"
}

private command(hubitat.zwave.Command cmd) {
	if (state.sec) {
		zwave.securityV1.securityMessageEncapsulation().encapsulate(cmd).format()
	} else {
		cmd.format()
	}
}

private commands(commands, delay=200) {
	log.info "sending commands: ${commands}"
	delayBetween(commands.collect{ command(it) }, delay)
}

Hope this helps.

Those where the exact models i have. Big thanks for a quick, informative and helpful answer !

bye bye Vera and welcome Hubitat with other words. =)

1 Like

@Royski
Thank you sir.
I purchased a couple of Zipato 4 in 1’s and the driver you provided above is working very well.
Then someone linked me to some 3 in 1’s that we’re on special, so back here I came.
Now I have some back ups to a couple of troublesome Fibaro’s.

1 Like

Great to hear :+1: they seem super stable, I’ve not had any issues with mine at all on HE.

I cleaned up the driver a little since and added debug options, filtering out all the chatter and logging. Let me know if you’d like it, and I send the links.

Cheers
Roy

Hi Roy,
Sure, updated drivers would be awesome.
Thx
Nic

1 Like

Hi @Royski
Would be weary appreciated =)
thx

1 Like

Here you go @chrbratt, @njanda, just cleaned up the logging a little, hated all the chatter in the logs :slight_smile:

Devolo 3in1

Philio PST02-1A 4in1

Cheers
Roy

Thanks Roy,
I installed one of the Zipato 3 in 1's that I have onto the Hub on Sunday and boy I saw how "chatty" it was. had me looking for the Debug OFF switch after about 10 minutes !.
You've saved me. LOL
Cheers,
Nic

1 Like

@Royski I have some problem with the driver when I try to use it together with pst02-1a 4 in 1. The driver doesn't show door/window values and it dosen't work with PIR. Value don't change on motion, it always report inactive. Can you help adapting the driver?.

PST02-1A

pst02-1a

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:11:18.512 [debug](http://10.0.0.70/device/edit/22)After zwaveEvent(cmd) &gt;&gt; Parsed 'zw device: 04, command: 8407, payload: C7 00 ' to [['descriptionText':Halldörr woke up, 'isStateChange':false], hubitat.device.HubMultiAction@7360e72f]

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:11:18.478 [debug](http://10.0.0.70/device/edit/22)sending commands: [ConfigurationSet(configurationValue:[80], defaultValue:false, parameterNumber:3, reserved11:0, size:1), ConfigurationSet(configurationValue:[99], defaultValue:false, parameterNumber:4, reserved11:0, size:1), ConfigurationSet(configurationValue:[0], defaultValue:false, parameterNumber:5, reserved11:0, size:1), ConfigurationSet(configurationValue:[4], defaultValue:false, parameterNumber:6, reserved11:0, size:1), ConfigurationSet(configurationValue:[54], defaultValue:false, parameterNumber:7, reserved11:0, size:1), ConfigurationSet(configurationValue:[3], defaultValue:false, parameterNumber:8, reserved11:0, size:1), ConfigurationSet(configurationValue:[4], defaultValue:false, parameterNumber:9, reserved11:0, size:1), ConfigurationSet(configurationValue:[4], defaultValue:false, parameterNumber:9, reserved11:0, size:1), ConfigurationSet(configurationValue:[12], defaultValue:false, parameterNumber:10, reserved11:0, size:1), ConfigurationSet(configurationValue:[12], defaultValue:false, parameterNumber:11, reserved11:0, size:1), ConfigurationSet(configurationValue:[12], defaultValue:false, parameterNumber:12, reserved11:0, size:1), ConfigurationSet(configurationValue:[12], defaultValue:false, parameterNumber:13, reserved11:0, size:1), WakeUpIntervalSet(nodeid:1, seconds:86400), BatteryGet(), SensorBinaryGet(sensorType:10), SensorBinaryGet(sensorType:12), SensorMultilevelGet(sensorType:1, scale:0), SensorMultilevelGet(sensorType:3, scale:0)]

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:11:18.449 [debug](http://10.0.0.70/device/edit/22)setConfigured: true

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:11:18.442 [debug](http://10.0.0.70/device/edit/22)PST02: configure() called

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:11:18.439 [debug](http://10.0.0.70/device/edit/22)late configure

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:11:18.427 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; zwave.parse(description)

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:11:18.424 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; description: zw device: 04, command: 8407, payload: C7 00

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:54.955 [debug](http://10.0.0.70/device/edit/22)After zwaveEvent(cmd) &gt;&gt; Parsed 'zw device: 04, command: 3105, payload: 01 0A 00 44 C7 00 ' to ['value':'20', 'unit':'C', 'name':'temperature']

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:54.953 [debug](http://10.0.0.70/device/edit/22)Adjusted temp value 20

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:54.947 [debug](http://10.0.0.70/device/edit/22)PST02: SensorMultilevel SensorMultilevelReport(precision:0, scale:1, sensorType:1, sensorValue:[0, 68], size:2, scaledSensorValue:68)

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:54.945 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; zwave.parse(description)

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:54.934 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; description: zw device: 04, command: 3105, payload: 01 0A 00 44 C7 00

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:54.921 [debug](http://10.0.0.70/device/edit/22)After zwaveEvent(cmd) &gt;&gt; Parsed 'zw device: 04, command: 3105, payload: 03 01 16 C7 00 ' to ['value':'22', 'unit':'lux', 'name':'illuminance']

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:54.915 [debug](http://10.0.0.70/device/edit/22)PST02: SensorMultilevel SensorMultilevelReport(precision:0, scale:0, sensorType:3, sensorValue:[22], size:1, scaledSensorValue:22)

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:54.908 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; zwave.parse(description)

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:54.907 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; description: zw device: 04, command: 3105, payload: 03 01 16 C7 00

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:54.895 [debug](http://10.0.0.70/device/edit/22)After zwaveEvent(cmd) &gt;&gt; Parsed 'zw device: 04, command: 3003, payload: 00 0A C7 00 ' to null

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:54.893 [debug](http://10.0.0.70/device/edit/22)PST02: SensorBinaryReport SensorBinaryReport(sensorValue:null, sensorType:null)}

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:54.890 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; zwave.parse(description)

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:54.888 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; description: zw device: 04, command: 3003, payload: 00 0A C7 00

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:54.869 [debug](http://10.0.0.70/device/edit/22)After zwaveEvent(cmd) &gt;&gt; Parsed 'zw device: 04, command: 8003, payload: 64 C7 00 ' to ['name':'battery', 'value':'100', 'unit':'%', 'displayed':false]

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:54.865 [debug](http://10.0.0.70/device/edit/22)PST02: BatteryReport BatteryReport(batteryLevel:100)}

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:54.862 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; zwave.parse(description)

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:54.860 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; description: zw device: 04, command: 8003, payload: 64 C7 00

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:54.367 [debug](http://10.0.0.70/device/edit/22)After zwaveEvent(cmd) &gt;&gt; Parsed 'zw device: 04, command: 3003, payload: 00 0C C3 00 ' to null

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:54.364 [debug](http://10.0.0.70/device/edit/22)PST02: SensorBinaryReport SensorBinaryReport(sensorValue:null, sensorType:null)}

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:54.362 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; zwave.parse(description)

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:54.359 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; description: zw device: 04, command: 3003, payload: 00 0C C3 00

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:41.602 [debug](http://10.0.0.70/device/edit/22)After zwaveEvent(cmd) &gt;&gt; Parsed 'zw device: 04, command: 3105, payload: 01 0A 00 44 CA 00 ' to ['value':'20', 'unit':'C', 'name':'temperature']

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:41.588 [debug](http://10.0.0.70/device/edit/22)Adjusted temp value 20

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:41.586 [debug](http://10.0.0.70/device/edit/22)PST02: SensorMultilevel SensorMultilevelReport(precision:0, scale:1, sensorType:1, sensorValue:[0, 68], size:2, scaledSensorValue:68)

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:41.584 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; zwave.parse(description)

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:41.549 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; description: zw device: 04, command: 3105, payload: 01 0A 00 44 CA 00

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:41.538 [debug](http://10.0.0.70/device/edit/22)After zwaveEvent(cmd) &gt;&gt; Parsed 'zw device: 04, command: 3105, payload: 03 01 0E CA 00 ' to ['value':'14', 'unit':'lux', 'name':'illuminance']

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:41.536 [debug](http://10.0.0.70/device/edit/22)PST02: SensorMultilevel SensorMultilevelReport(precision:0, scale:0, sensorType:3, sensorValue:[14], size:1, scaledSensorValue:14)

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:41.527 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; zwave.parse(description)

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:41.525 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; description: zw device: 04, command: 3105, payload: 03 01 0E CA 00

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:41.512 [debug](http://10.0.0.70/device/edit/22)After zwaveEvent(cmd) &gt;&gt; Parsed 'zw device: 04, command: 3003, payload: FF 0A CA 00 ' to null

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:41.511 [debug](http://10.0.0.70/device/edit/22)PST02: SensorBinaryReport SensorBinaryReport(sensorValue:null, sensorType:null)}

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:41.507 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; zwave.parse(description)

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:41.503 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; description: zw device: 04, command: 3003, payload: FF 0A CA 00

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:41.485 [debug](http://10.0.0.70/device/edit/22)After zwaveEvent(cmd) &gt;&gt; Parsed 'zw device: 04, command: 8003, payload: 64 C7 00 ' to ['name':'battery', 'value':'100', 'unit':'%', 'displayed':false]

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:41.483 [debug](http://10.0.0.70/device/edit/22)PST02: BatteryReport BatteryReport(batteryLevel:100)}

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:41.481 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; zwave.parse(description)

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:41.479 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; description: zw device: 04, command: 8003, payload: 64 C7 00

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:36.424 [debug](http://10.0.0.70/device/edit/22)After zwaveEvent(cmd) &gt;&gt; Parsed 'zw device: 04, command: 3105, payload: 01 0A 00 44 C7 00 ' to ['value':'20', 'unit':'C', 'name':'temperature']

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:36.417 [debug](http://10.0.0.70/device/edit/22)Adjusted temp value 20

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:36.410 [debug](http://10.0.0.70/device/edit/22)PST02: SensorMultilevel SensorMultilevelReport(precision:0, scale:1, sensorType:1, sensorValue:[0, 68], size:2, scaledSensorValue:68)

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:36.406 [debug](http://10.0.0.70/device/edit/22)After zwaveEvent(cmd) &gt;&gt; Parsed 'zw device: 04, command: 3105, payload: 03 01 02 C7 00 ' to ['value':'2', 'unit':'lux', 'name':'illuminance']

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:36.403 [debug](http://10.0.0.70/device/edit/22)PST02: SensorMultilevel SensorMultilevelReport(precision:0, scale:0, sensorType:3, sensorValue:[2], size:1, scaledSensorValue:2)

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:36.399 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; zwave.parse(description)

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:36.397 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; description: zw device: 04, command: 3105, payload: 01 0A 00 44 C7 00

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:36.394 [debug](http://10.0.0.70/device/edit/22)After zwaveEvent(cmd) &gt;&gt; Parsed 'zw device: 04, command: 3003, payload: FF 0C C7 00 ' to null

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:36.391 [debug](http://10.0.0.70/device/edit/22)PST02: SensorBinaryReport SensorBinaryReport(sensorValue:null, sensorType:null)}

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:36.388 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; zwave.parse(description)

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:36.386 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; description: zw device: 04, command: 3105, payload: 03 01 02 C7 00

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:36.383 [debug](http://10.0.0.70/device/edit/22)After zwaveEvent(cmd) &gt;&gt; Parsed 'zw device: 04, command: 8003, payload: 64 C7 00 ' to ['name':'battery', 'value':'100', 'unit':'%', 'displayed':false]

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:36.380 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; zwave.parse(description)

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:36.377 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; description: zw device: 04, command: 3003, payload: FF 0C C7 00

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:36.375 [debug](http://10.0.0.70/device/edit/22)PST02: BatteryReport BatteryReport(batteryLevel:100)}

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:36.372 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; zwave.parse(description)

[dev:22](http://10.0.0.70/logs#dev22)2019-03-30 16:10:36.331 [debug](http://10.0.0.70/device/edit/22)parse() &gt;&gt; description: zw device: 04, command: 8003, payload: 64 C7 00

This log should show when first motion is triggered and then door/window directly after.

Hmm, not sure on this type maybe it’s a little different. I’d try checking the fingerprint and maybe updating the driver?

Mines working fine here.

It would be very appreciated if you have the opportunity to help. I lack the knowledge to get a working driver together.

With your driver, I get this answer in the log when I press Configure, Poll and Refresh.

dev:662019-03-31 14:25:07.532 errorgroovy.lang.MissingMethodException: No signature of method: user_driver_ertanden_Philio_PST02_1A_Sensor_257.refresh() is applicable for argument types: () values: []
Possible solutions: every(), parse(java.lang.String), every(groovy.lang.Closure), grep() (refresh)
dev:662019-03-31 14:24:56.242 errorgroovy.lang.MissingMethodException: No signature of method: user_driver_ertanden_Philio_PST02_1A_Sensor_257.poll() is applicable for argument types: () values: []
Possible solutions: wait(), run(), run(), grep(), find(), collect() (poll)
dev:662019-03-31 14:24:43.817 debugsending commands: [ConfigurationSet(configurationValue:[80], defaultValue:false, parameterNumber:3, reserved11:0, size:1), ConfigurationSet(configurationValue:[99], defaultValue:false, parameterNumber:4, reserved11:0, size:1), ConfigurationSet(configurationValue:[0], defaultValue:false, parameterNumber:5, reserved11:0, size:1), ConfigurationSet(configurationValue:[4], defaultValue:false, parameterNumber:6, reserved11:0, size:1), ConfigurationSet(configurationValue:[54], defaultValue:false, parameterNumber:7, reserved11:0, size:1), ConfigurationSet(configurationValue:[3], defaultValue:false, parameterNumber:8, reserved11:0, size:1), ConfigurationSet(configurationValue:[4], defaultValue:false, parameterNumber:9, reserved11:0, size:1), ConfigurationSet(configurationValue:[4], defaultValue:false, parameterNumber:9, reserved11:0, size:1), ConfigurationSet(configurationValue:[12], defaultValue:false, parameterNumber:10, reserved11:0, size:1), ConfigurationSet(configurationValue:[12], defaultValue:false, parameterNumber:11, reserved11:0, size:1), ConfigurationSet(configurationValue:[12], defaultValue:false, parameterNumber:12, reserved11:0, size:1), ConfigurationSet(configurationValue:[12], defaultValue:false, parameterNumber:13, reserved11:0, size:1), WakeUpIntervalSet(nodeid:1, seconds:86400), BatteryGet(), SensorBinaryGet(sensorType:10), SensorBinaryGet(sensorType:12), SensorMultilevelGet(sensorType:1, scale:0), SensorMultilevelGet(sensorType:3, scale:0)]
dev:662019-03-31 14:24:43.810 debugsetConfigured: true
dev:662019-03-31 14:24:43.790 debugPST02: configure() called

This is the states it reports under devices.
1

This log show when door open and close

dev:3212019-03-31 16:21:50.621 debugAfter zwaveEvent(cmd) >> Parsed 'zw device: 0E, command: 3105, payload: 01 0A 00 50 C9 00 ' to ['value':'27', 'unit':'C', 'name':'temperature']
dev:3212019-03-31 16:21:50.620 debugAdjusted temp value 27
dev:3212019-03-31 16:21:50.611 debugPST02: SensorMultilevel SensorMultilevelReport(precision:0, scale:1, sensorType:1, sensorValue:[0, 80], size:2, scaledSensorValue:80)
dev:3212019-03-31 16:21:50.610 debugparse() >> zwave.parse(description)
dev:3212019-03-31 16:21:50.609 debugparse() >> description: zw device: 0E, command: 3105, payload: 01 0A 00 50 C9 00 
dev:3212019-03-31 16:21:50.607 debugAfter zwaveEvent(cmd) >> Parsed 'zw device: 0E, command: 3105, payload: 03 01 29 C9 00 ' to ['value':'41', 'unit':'lux', 'name':'illuminance']
dev:3212019-03-31 16:21:50.606 debugPST02: SensorMultilevel SensorMultilevelReport(precision:0, scale:0, sensorType:3, sensorValue:[41], size:1, scaledSensorValue:41)
dev:3212019-03-31 16:21:50.585 debugparse() >> zwave.parse(description)
dev:3212019-03-31 16:21:50.582 debugparse() >> description: zw device: 0E, command: 3105, payload: 03 01 29 C9 00 
dev:3212019-03-31 16:21:50.580 debugAfter zwaveEvent(cmd) >> Parsed 'zw device: 0E, command: 3003, payload: 00 0A C9 00 ' to null
dev:3212019-03-31 16:21:50.578 debugPST02: SensorBinaryReport SensorBinaryReport(sensorValue:null, sensorType:null)}
dev:3212019-03-31 16:21:50.571 debugparse() >> zwave.parse(description)
dev:3212019-03-31 16:21:50.569 debugparse() >> description: zw device: 0E, command: 3003, payload: 00 0A C9 00 
dev:3212019-03-31 16:21:50.566 debugAfter zwaveEvent(cmd) >> Parsed 'zw device: 0E, command: 8003, payload: 64 C9 00 ' to ['name':'battery', 'value':'100', 'unit':'%', 'displayed':false]
dev:3212019-03-31 16:21:50.552 debugPST02: BatteryReport BatteryReport(batteryLevel:100)}
dev:3212019-03-31 16:21:50.550 debugparse() >> zwave.parse(description)
dev:3212019-03-31 16:21:50.548 debugparse() >> description: zw device: 0E, command: 8003, payload: 64 C9 00 
dev:3212019-03-31 16:21:48.347 debugAfter zwaveEvent(cmd) >> Parsed 'zw device: 0E, command: 3105, payload: 01 0A 00 50 C7 00 ' to ['value':'27', 'unit':'C', 'name':'temperature']
dev:3212019-03-31 16:21:48.344 debugAdjusted temp value 27
dev:3212019-03-31 16:21:48.337 debugPST02: SensorMultilevel SensorMultilevelReport(precision:0, scale:1, sensorType:1, sensorValue:[0, 80], size:2, scaledSensorValue:80)
dev:3212019-03-31 16:21:48.336 debugparse() >> zwave.parse(description)
dev:3212019-03-31 16:21:48.334 debugparse() >> description: zw device: 0E, command: 3105, payload: 01 0A 00 50 C7 00 
dev:3212019-03-31 16:21:48.318 debugAfter zwaveEvent(cmd) >> Parsed 'zw device: 0E, command: 3105, payload: 03 01 29 C7 00 ' to ['value':'41', 'unit':'lux', 'name':'illuminance']
dev:3212019-03-31 16:21:48.260 debugPST02: SensorMultilevel SensorMultilevelReport(precision:0, scale:0, sensorType:3, sensorValue:[41], size:1, scaledSensorValue:41)
dev:3212019-03-31 16:21:48.258 debugparse() >> zwave.parse(description)
dev:3212019-03-31 16:21:48.253 debugparse() >> description: zw device: 0E, command: 3105, payload: 03 01 29 C7 00 
dev:3212019-03-31 16:21:48.240 debugAfter zwaveEvent(cmd) >> Parsed 'zw device: 0E, command: 8003, payload: 64 C7 00 ' to ['name':'battery', 'value':'100', 'unit':'%', 'displayed':false]
dev:3212019-03-31 16:21:48.238 debugAfter zwaveEvent(cmd) >> Parsed 'zw device: 0E, command: 3003, payload: FF 0A C7 00 ' to null
dev:3212019-03-31 16:21:48.236 debugPST02: BatteryReport BatteryReport(batteryLevel:100)}
dev:3212019-03-31 16:21:48.234 debugPST02: SensorBinaryReport SensorBinaryReport(sensorValue:null, sensorType:null)}
dev:3212019-03-31 16:21:48.229 debugparse() >> zwave.parse(description)
dev:3212019-03-31 16:21:48.227 debugparse() >> description: zw device: 0E, command: 3003, payload: FF 0A C7 00 
dev:3212019-03-31 16:21:48.213 debugparse() >> zwave.parse(description)
dev:3212019-03-31 16:21:48.210 debugparse() >> description: zw device: 0E, command: 8003, payload: 64 C7 00 

And this when motion is detected.

dev:3212019-03-31 16:22:28.768 debugAfter zwaveEvent(cmd) >> Parsed 'zw device: 0E, command: 3003, payload: 00 0C C3 00 ' to null
dev:3212019-03-31 16:22:28.766 debugPST02: SensorBinaryReport SensorBinaryReport(sensorValue:null, sensorType:null)}
dev:3212019-03-31 16:22:28.764 debugparse() >> zwave.parse(description)
dev:3212019-03-31 16:22:28.762 debugparse() >> description: zw device: 0E, command: 3003, payload: 00 0C C3 00 
dev:3212019-03-31 16:22:22.503 debugAfter zwaveEvent(cmd) >> Parsed 'zw device: 0E, command: 3105, payload: 01 0A 00 50 C3 00 ' to ['value':'27', 'unit':'C', 'name':'temperature']
dev:3212019-03-31 16:22:22.501 debugAdjusted temp value 27
dev:3212019-03-31 16:22:22.488 debugPST02: SensorMultilevel SensorMultilevelReport(precision:0, scale:1, sensorType:1, sensorValue:[0, 80], size:2, scaledSensorValue:80)
dev:3212019-03-31 16:22:22.481 debugparse() >> zwave.parse(description)
dev:3212019-03-31 16:22:22.476 debugparse() >> description: zw device: 0E, command: 3105, payload: 01 0A 00 50 C3 00 
dev:3212019-03-31 16:22:22.468 debugAfter zwaveEvent(cmd) >> Parsed 'zw device: 0E, command: 3105, payload: 03 01 18 C3 00 ' to ['value':'24', 'unit':'lux', 'name':'illuminance']
dev:3212019-03-31 16:22:22.460 debugPST02: SensorMultilevel SensorMultilevelReport(precision:0, scale:0, sensorType:3, sensorValue:[24], size:1, scaledSensorValue:24)
dev:3212019-03-31 16:22:22.458 debugparse() >> zwave.parse(description)
dev:3212019-03-31 16:22:22.456 debugparse() >> description: zw device: 0E, command: 3105, payload: 03 01 18 C3 00 
dev:3212019-03-31 16:22:22.447 debugAfter zwaveEvent(cmd) >> Parsed 'zw device: 0E, command: 3003, payload: FF 0C C4 00 ' to null
dev:3212019-03-31 16:22:22.445 debugPST02: SensorBinaryReport SensorBinaryReport(sensorValue:null, sensorType:null)}
dev:3212019-03-31 16:22:22.442 debugparse() >> zwave.parse(description)
dev:3212019-03-31 16:22:22.440 debugparse() >> description: zw device: 0E, command: 3003, payload: FF 0C C4 00 
dev:3212019-03-31 16:22:22.425 debugAfter zwaveEvent(cmd) >> Parsed 'zw device: 0E, command: 8003, payload: 64 C3 00 ' to ['name':'battery', 'value':'100', 'unit':'%', 'displayed':false]
dev:3212019-03-31 16:22:22.419 debugPST02: BatteryReport BatteryReport(batteryLevel:100)}
dev:3212019-03-31 16:22:22.417 debugparse() >> zwave.parse(description)
dev:3212019-03-31 16:22:22.415 debugparse() >> description: zw device: 0E, command: 8003, payload: 64 C3 00 

And this is when i add the device. deviceType and manufacturer and deviceId seam to match.

Hopefully have a look tomorrow with the extra info you provided, as I’m out and about today :+1:

2 Likes

After some more copy paste testing with the driver update you posted as Philio PST02-1A Sensor V1.1 i'am dead eye stuck and feeling even more incompetent. Lacking so much ground knowledge making it hard to even understand the most obvious thing's in the driver code.

But i dit test the Generic Z-Wave Contact Sensor driver and Generic Z-Wave Motion/Temperature driver. And they work great =)
When contact driver active it reports fast and exact door open and close. And the same with motion/temperature when those are active. Can that maybe help ? Is there a source for the generic drivers to make a generic motion/temperature/contact driver =)

have you trier the zooz 4 in 1 driver?
that may work

It doesn't work :frowning:

It seems there is two versions of this. Dunno how to see the difference if it affects the driver.


Z-Wave version: 6.51.06
Firmware Update MD V2


Z-Wave version: 6.51.02
Firmware Update MD V1

Maybe can @mike.maxwell check if he see whats wrong ?

I have a couple of 3-in-1's that I got recently with the same issue, it was showing null in the sensorbinary. I ended up adjusting royski's driver to use v1 of sensorybinary rather than v2 and it started reporting a 0 and 255 value for contact sensor. So I adjusted the code a bit to read that value for contact.

That wouldn't work in the case of a 4-in-1 though I think, because motion and contact are part of the v2 sensorbinary data, but I can share the adjustments with you if you'd like at least the contact part working.

1 Like