[Help needed] Fibaro FGK-10x z-wave Door window sensor temperature reporting

I made a few changes in this version:

  • Logging enable/disable/level in preferences
  • Sensor settings in preferences
  • Added driver versioning
  • Getting/displaying sensor firmware version // Not sure about displayed format...
  • Initialize all the sensor parameters on first wake-up of the device
  • Cleaned-up unused code for Hubitat application

I hope I didn't break anything...

/**
 *  Fibaro Z-Wave FGK-101 Temperature & Door/Window Sensor Handler [v0.9.5.4, 3 December 2018]
 *		
 *  Copyright 2014 Jean-Jacques GUILLEMAUD
 *
 *  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 *  in compliance with the License. You may obtain a copy of the License at:
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
 *  on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
 *  for the specific language governing permissions and limitations under the License.
 *
 */
 
/******************************************************************************************************************************
 *	Fibaro Z-Wave FGK-101 Marketing Description is at :
 *		http://www.fibaro.com/en/the-fibaro-system/door-window-sensor
 *
 *  Fibaro FGK-10x Operating Manual can be downloaded at :
 *		http://www.fibaro.com/files/instrukcje/eng/DoorWindowSensor%20FGK-101-107%20ENG_v21-v23.pdf
 *
 *	The current version of this Handler is parameterized to force Device's wakeup :
 *		- on any open<->closed state change
 *		- in case of Tampering Alarm triggering
 *		- every 60mn (wakeUpIntervalSet(seconds:60*60), hard coded)
 *		- whenever Temperature delta change since last report is greater than 0.31°C (Parameter#12, hard coded)
 *		also :
 *		- Temperature is natively reported by sensor in Celsius (SensorMultilevelReport[scale:0]);
 *		  convertion is needed for Fahrenheit display 
 *
 *  A few specificities of this device that are relevant to better understand some parts of this Handler :
 *		- it is a battery operated device, so Commands can only be sent to it whenever it wakes up
 *		- it is a multi-channel Device, and the multi-level temperature sensor reports only from EndPoint#2
 *		- specific configurable parameters are documented in the above Operating Manual
 *		- some of those parameters must be modified to activate the anti-Tampering Alarm
 *		- some of the "scaffolding" has been left in place as comments, since it may help other people to understand/modify this Handler
 *		- BEWARE : the optional DS18B20 sensor must be connected BEFORE the Device is activated (otherwise, reset the Device)
 *		- IMPORTANT : for debugging purpose, it is much better to change the wake-up period from the default 60mn to 1mn or so;
 *					but unless you force the early wake up of the sensor (forcing open/closed for instance), you will have to
 *					wait up to 60mn for the new value to become effective.
 *
 * Z-Wave Device Class: GENERIC_TYPE_SENSOR_BINARY / SPECIFIC_TYPE_ROUTING_SENSOR_BINARY
 * FGK-101 Raw Description [EndPoint:0] : "0 0 0x2001 0 0 0 c 0x30 0x9C 0x60 0x85 0x72 0x70 0x86 0x80 0x84 0x7A 0xEF 0x2B"
 * Command Classes supported according to Z-Wave Certificate ZC08-14070004 for FGK-101\US :
 * 	Used in Handler :
 *		- 0x20 - 32  : BASIC					V1
 *		  0x30 - 48  : SENSOR_BINARY			!V1! V2
 *		- 0x31 - 49  : SENSOR_MULTILEVEL		V1 !V2! V3 V4 V5
 *		- 0x56 - 86  : CRC_16_ENCAP				V1
 *		  0x60 - 96  : MULTI_CHANNEL			V3
 *		  0x70 - 112 : CONFIGURATION			V1 !V2!
 *		  0x72 - 114 : MANUFACTURER_SPECIFIC 	V1 !V2!
 *		  0x80 - 128 : BATTERY					V1
 *		  0x84 - 132 : WAKE_UP					V1 !V2!
 *		  0x85 - 133 : ASSOCIATION				V1 !V2!
 *		  0x86 - 134 : VERSION					V1
 *		  0x98 - 152 : SECURITY					V1 [only latest versions of FGK-101]
 *		  0x9C - 156 : SENSOR_ALARM				V1
 *	NOT used in Handler :
 *		  0x2B - 43  : SCENE_ACTIVATION			V1	
 *
 *	 also found in FGK-101 Raw Description, in addition to Z-Wave Certificate for FGK-101\US [?!!] :
 *		+ 0x7A - 122 : FIRMWARE_UPDATE_MD		V1 V2
 *		+ 0xEF - 239 : MARK  					V1
 *
 * Version Control:
 *
 *     0.1 - 2022-09-21 - Initial port to Hubitat of @geejiit Github code for ST by christi999@hubitat
 *
 *
 *
 ******************************************************************************************************************************/
public static String version()      {  return "0.1"  }
metadata {
	definition (name: "JJ's Fibaro FGK-101 Handler", namespace: "JJG2014", author: "Jean-Jacques GUILLEMAUD") {
		capability "Contact Sensor"
		capability "Battery"
		capability "Configuration"
		capability "Temperature Measurement"
		capability "Sensor"
		capability "Alarm"
        
        command "reportNext", ["string"]
        command "test"

        
        attribute "reportASAP", "number"
        attribute "deviceTime", "number"
		attribute "driverVersion",  "string"   
        

        // FGK-101 Raw Description [EndPoint:0] : "0 0 0x2001 0 0 0 c 0x30 0x9C 0x60 0x85 0x72 0x70 0x86 0x80 0x84 0x7A 0xEF 0x2B"
		fingerprint deviceId: "0x2001", inClusters: "0x30, 0x60, 0x70, 0x72, 0x80, 0x84, 0x85, 0x9C"  // should include "0x20, 0x31" too ?!!
	}
	preferences {
   		input name:"wakeUpInterval", type:"number", title: "<b>Wake-up Interval?</b>", description:"seconds (default: 3600)", defaultValue:3600, range: "0..65535", required: true   //Actual min max???
        
   		input name:"param1", type:"number",  title: "<b>Param. 1 - Input IN alarm cancellation delay?</b>", description:"seconds (default: 0)", defaultValue:0, range: "0..65535", required: true
   		input "param2", "enum",              title: "<b>Param. 2 - Status change signalled by LED?</b>", description:"(default: 0 - OFF)", options: [0:"OFF",1:"ON"], defaultValue:0, required: true
   		input "param3", "enum",              title: "<b>Param. 3 - Type of IN input?</b>", description:"(default: 0 – INPUT_NC)", options: [0:"INPUT_NC (Normal Close)", 1:"INPUT_NO (Normal Open)", 2:"INPUT_MONOSTABLE", 3:"INPUT_BISTABLE"], defaultValue:0, required: true
   		input "param5", "enum",              title: "<b>Param. 5 - Type of control frame transmitted for association group 1?</b>", description:"(Default value: 255 – BASIC SET)", options: [0:"ALARM GENERIC frame", 1:"ALARM SMOKE frame", 2:"ALARM CO frame",3:"ALARM CO2 frame",4:"ALARM HEAT frame",5:"ALARM WATER frame",255:"Control frame BASIC_SET"], defaultValue:255, required: true
   		input name:"param7",type:"number",   title: "<b>Param. 7 - forced level of dimming/opening ?</b>", description:"1-99 or 255 (default: 255 - activate to previous level)", defaultValue:255, range: "1..255", required: true   // need changes to limit values to valid range...
   		input "param9", "enum",              title: "<b>Param. 9 - Deactivating transmission of the alarm cancelling frame or the control frame deactivating the device?</b>", description:"(default: 0, Sent)", options: [0:"Sent",1:"Not Sent"], defaultValue:0, required: true
   		input name:"param12", type:"number", title: "<b>Param. 12 - Sensitivity to temperature changes?</b>", description:"In 1/16 degC units, If the value is set to 0 and wake-up interval is set to 255 seconds, temperature report will be sent according to the interval. If the value is set to 0 and the wake-up interval is set to over 255, temperature report will be sent each ca. 4 minutes (default: 8 [0.5degC])", defaultValue:8, range: "0..255", required: true
   		input "param13", "enum",             title: "<b>Param. 13 - Sending an alarm or control frame (for IN input, depending on parameter no.5 value), and TMP button alarm frame?</b>", description:"(default: 0, IN and TMP Broadcast mode inactive)", options: [0:"IN and TMP Broadcast mode inactive", 1:"IN broadcast mode active, TMP broadcast mode inactive", 2:"IN broadcast mode inactive, TMP broadcast mode active", 3:"IN and TMP broadcast mode active"], defaultValue:0, required: true         
   		input "param14", "enum",             title: "<b>Param. 14 - Scene activation functionality?</b>", description:"(default: 0 - functionality deactivated)", options: [0:"functionality deactivated", 1:"functionality activated"], defaultValue:0, required: true
        
		input name:"sensorOffset", type:"decimal", title:"<b>Sensor Temperature Offset</b>", description:"degrees", defaultValue:0.0, range: "-20..20", required: true
        input name: "debugOutput",   type: "bool", title: "<b>Enable debug logging?</b>",   description: "<br>", defaultValue: true , required: true        
		input "debugLevel", "enum", title: "<b>Debug Level?</b>", options: [1:"1",2:"2",3:"3"], defaultValue: 1, required: true
    }
}

//---------------------------
//
//---------------------------
def test() {
    parse("zw device: 14, command: 8407, payload: , isMulticast: false")
    parse("zw device: 16, command: 600D, payload: 02 02 31 05 01 44 00 00 0B 79 , isMulticast: false")
    parse("zw device: 16, command: 2001, payload: 00 , isMulticast: false")                             // Basic set
    parse("zw device: 16, command: 3003, payload: 00 , isMulticast: false")                               //SensorBinaryReport
    parse("zw device: 16, command: 2001, payload: FF , isMulticast: false")
    parse("zw device: 16, command: 3003, payload: FF , isMulticast: false")
    parse("zw device: 14, command: 7006, payload: 0F 01 00 , isMulticast: false")
    parse("zw device: 14, command: 9C02, payload: 14 00 FF 00 00 , isMulticast: false")
    parse("zw device: 14, command: 9C02, payload: 14 00 00 00 00 , isMulticast: false")
    parse("zw device: 16, command: 600D, payload: 02 02 31 05 01 44 00 00 05 79 , isMulticast: false")    
}


//---------------------------
//
//---------------------------
def parse(String description) {
		state.parseCount=state.parseCount+1
		logDebug 1, "--------------------------Parsing... ; state.parseCount: ${state.parseCount}--------------------------"
    
		logDebug 2, "Parsing... '${description}'"
        def result = null
        def cmd = zwave.parse(description, [0x20:1, 0x30:1, 0x31:2, 0x56:1, 0x60:3, 0x70:2, 0x72:2, 0x80:1, 0x84:2, 0x85:2, 0x9C:1])
        if (cmd) {
                result = zwaveEvent(cmd)
                logDebug 1, "Parsed ${cmd} to ${result.inspect()}"
        } else {
                logDebug 3, "Non-parsed event: ${description}"
        }
        return result
}


//---------------------------
//
//---------------------------
def temperatureScaleFC(tempvalue) {
	//FGK-101 is natively °C; convert to °F if selected in settings
	def float tempFC = tempvalue
	if (location.temperatureScale == "F") {
		tempFC = tempvalue * 1.8 + 32
	}
	return tempFC
}

//---------------------------
//
//---------------------------
def wakeUpResponse(cmdBlock) {
	//Initialization... (executed only once, when the Handler has been updated)
    //All untouched parameters are supposed to be DEFAULT (as factory-set)
     if (state.isInitialized == false) {
    	logDebug 2, "state.isInitialized : ${state.isInitialized}"
        cmdBlock << zwave.wakeUpV2.wakeUpIntervalSet(seconds:wakeUpInterval, nodeid:zwaveHubNodeId).format() // NB : may have to wait 60mn for that value to be refreshed !
        cmdBlock << "delay 1200"
        // NOTE : any asynchronous temperature query thru SensorMultilevelGet() does NOT reset the delta-Temp base value (managed by DS18B20 hardware)
        // Adjust temperature report sensitivity for outside thermometers whose displayName starts with "*"
        cmdBlock << zwave.configurationV2.configurationSet(parameterNumber: 1, size: 2, configurationValue: (1..0).collect { (param1.toInteger() >> (it * 8)) & 0xFF}).format()
        cmdBlock << "delay 1200"     
        cmdBlock << zwave.configurationV2.configurationSet(parameterNumber: 2, size: 1, configurationValue: [param2.toInteger()]).format()
        cmdBlock << "delay 1200"     
        cmdBlock << zwave.configurationV2.configurationSet(parameterNumber: 3, size: 1, configurationValue: [param3.toInteger()]).format()
        cmdBlock << "delay 1200"     
        cmdBlock << zwave.configurationV2.configurationSet(parameterNumber: 5, size: 1, configurationValue: [param5.toInteger()]).format()
        cmdBlock << "delay 1200"     
        cmdBlock << zwave.configurationV2.configurationSet(parameterNumber: 7, size: 1, configurationValue: [param7.toInteger()]).format()
        cmdBlock << "delay 1200"     
        cmdBlock << zwave.configurationV2.configurationSet(parameterNumber: 9, size: 1, configurationValue: [param9.toInteger()]).format()
        cmdBlock << "delay 1200"     
        cmdBlock << zwave.configurationV2.configurationSet(parameterNumber: 12, size: 1, configurationValue: [param12.toInteger()]).format()
        cmdBlock << "delay 1200"     
        cmdBlock << zwave.configurationV2.configurationSet(parameterNumber: 13, size: 1, configurationValue: [param13.toInteger()]).format()
        cmdBlock << "delay 1200"     
        cmdBlock << zwave.configurationV2.configurationSet(parameterNumber: 14, size: 1, configurationValue: [param14.toInteger()]).format()
        cmdBlock << "delay 1200"     
        // inclusion of Device in Association#3 is needed to get delta-Temperature notification messages [cf Parameter#12 above]
        cmdBlock << zwave.associationV2.associationSet(groupingIdentifier:3, nodeId:[zwaveHubNodeId]).format()
        cmdBlock << "delay 1200"
        // inclusion of Device in Association#2 is needed to enable SensorAlarmReport() Command [anti-Tampering protection]
        cmdBlock << zwave.associationV2.associationSet(groupingIdentifier:2, nodeId:[zwaveHubNodeId]).format()
        cmdBlock << "delay 1200"
        // inclusion of Device in Association#4 is needed for backward compatibility with non Z-Wave+ controlers
        cmdBlock << zwave.associationV2.associationSet(groupingIdentifier:4, nodeId:[zwaveHubNodeId]).format()
        cmdBlock << "delay 1200"
        // inclusion of Device in Association#5 is needed for backward compatibility with non Z-Wave+ controlers
        cmdBlock << zwave.associationV2.associationSet(groupingIdentifier:5, nodeId:[zwaveHubNodeId]).format()
        cmdBlock << "delay 1200"
        // Firmware Version
        cmdBlock << zwave.versionV1.versionGet().format()
        cmdBlock << "delay 1200"
        state.isInitialized = true
        logDebug 2, "state.isInitialized : ${state.isInitialized}"
    }
    
	//Regular Commands...
    def long nowTime = new Date().getTime()
    // Next line needed because "update()" does not seem to work anymore
    state.batteryInterval = (long) (24*60-45)*60*1000  // 1 day
    if (nowTime-state.lastReportBattery > state.batteryInterval) {
		cmdBlock << zwave.batteryV1.batteryGet().format()
        cmdBlock << "delay 1200"
        //next 2 lines redondant since any open/closed status change is asynchronously notified... but useful in case of missing basicSet notification
    	cmdBlock << zwave.basicV1.basicGet().format()
    	cmdBlock << "delay 1200"
    }

    cmdBlock << zwave.wakeUpV2.wakeUpIntervalGet().format() // NB : may have to wait 60mn for that value to be refreshed !
    cmdBlock << "delay 1200"
    cmdBlock << zwave.multiChannelV3.multiChannelCmdEncap(sourceEndPoint: 2, destinationEndPoint: 2, commandClass:0x31/*Sensor Multilevel*/, command:4/*Get*/).format()
    cmdBlock << "delay 1200"
    cmdBlock << zwave.wakeUpV2.wakeUpNoMoreInformation().format()
    cmdBlock << "delay 2000"
    
    logDebug 2, "wakeUpNoMoreInformation()"
    logDebug 2, "cmdBlock : ${cmdBlock}"
    
    return cmdBlock
}

//---------------------------
//
//---------------------------
def zwaveEvent(hubitat.zwave.commands.wakeupv2.WakeUpNotification cmd) {
		// IMPORTANT NOTE : when the batteryLevel becomes too low, Device reports become erratic, all periodic wakeUpNotifications stop
        // and consequently BATTERYLEVEL IS NOT UPDATED ANYMORE every 24 hours, continuing to display the last (and obsolete) reported value.
        // Curiously, asynchronous sensorMultilevelReports continue to arrive, for some time, making the Device look (partially) "alive"
    	logDebug 2, "wakeupv2.WakeUpNotification $cmd"
        def event = sendEvent(descriptionText: "${device.displayName} woke up", isStateChange: true, displayed: false)
        def cmdBlock = []
        cmdBlock=wakeUpResponse(cmdBlock)
        return [event, response(cmdBlock)]
}

//---------------------------
//
//---------------------------
def zwaveEvent(hubitat.zwave.commands.sensormultilevelv2.SensorMultilevelReport cmd) {
	// IMPORTANT NOTE : when the batteryLevel becomes too low, Device reports become erratic, all periodic wakeUpNotifications stop
	// and consequently BATTERYLEVEL IS NOT UPDATED ANYMORE every 24 hours, continuing to display the last (and obsolete) reported value.
	// Curiously, asynchronous sensorMultilevelReports continue to arrive, for some time, making the Device look (partially) "alive"
	// This section resets the displayed battery level to 1% when the battery level is obsolete by more than 48h.
    state.batteryInterval = (long) (24*60-45)*60*1000  // 1 day
    def long nowTime = new Date().getTime()
    if (nowTime-state.lastReportBattery > 3*state.batteryInterval) {  // reset batteryLevel to 1% if no update for 48-72 hours
    	logDebug 3, "obsolete (likely low) battery value : ${((nowTime-state.lastReportBattery)/3600000)} hours old"
        sendEvent(name: "battery", displayed: true, isStateChange:true, unit: "%", value: 1, descriptionText: "${device.displayName} has a low battery")
	    state.lastReportBattery = nowTime
	}
			//  Dirty temporary recovery fix for remote Devices which lost wakeUp capability but still get asynchromous SensorMultilevelReports
			//  Forcing with the magnet a close/open transition after replacing the battery should (in most cases...) restore wakeUps
                //def cmdBlock = []
        		//cmdBlock=wakeUpResponse(cmdBlock)
        		//return [response(cmdBlock)]
        		//configure()
        def float scaledSensorValue = cmd.scaledSensorValue
    
        scaledSensorValue = scaledSensorValue + 1.0*sensorOffset 
    
        //Round to nearest 1 decimal temperature value; convert to °F if needed
        def float ftempSign = temperatureScaleFC(scaledSensorValue) < 0 ? -1 : +1
		def float ftemp = ftempSign * ((((temperatureScaleFC(scaledSensorValue).abs()*100+5)/10).intValue()*1.0)/10)
        	logDebug 2, "ftempSign : ${ftempSign}"
        	logDebug 2, "ftemp : ${ftemp}"

    // Next line needed because "update()" does not seem to work anymore
    	state.maxEventInterval = (long) (4*60-10)*60*1000  // at least 1 Temperature Report event every 4 hours
        nowTime = new Date().getTime()
       	logDebug 2, "cmd.scaledSensorValue : ${cmd.scaledSensorValue}"
       	logDebug 2, "correction : ${scaledSensorValue-cmd.scaledSensorValue}"
   		logDebug 2, "device.displayName : ${device.displayName}"
   		logDebug 2, "'Date().getTime()' : ${new Date().getTime()}"
        logDebug 2, "state.forcedWakeUp : ${state.forcedWakeUp}"
        logDebug 2, "state.maxEventInterval : ${state.maxEventInterval}"
   		logDebug 2, "state.lastReportTime : ${state.lastReportTime}"
   		logDebug 2, "nowTime : ${nowTime}"
   		logDebug 2, "(nowTime-state.lastReportTime > state.maxEventInterval) : ${(nowTime-state.lastReportTime > state.maxEventInterval)}"
   		logDebug 2, "ftemp : ${ftemp}"
        logDebug 2, "state.lastReportedTemp: ${state.lastReportedTemp}"

        def float tempQuantum
        tempQuantum = temperatureScaleFC(param12.toFloat()/16.0)-temperatureScaleFC(0)
        logDebug 1, "((ftemp-state.lastReportedTemp).abs()>${tempQuantum}): ${(ftemp-state.lastReportedTemp).abs()>tempQuantum}"
        if (((ftemp-state.lastReportedTemp).abs()>tempQuantum) || ((nowTime-state.lastReportTime) > state.maxEventInterval) || state.forcedWakeUp) {
        	def map = [ displayed: true, value: ftemp.toString(), isStateChange:true, linkText:"${device.displayName}" ]
        	switch (cmd.sensorType) {
                case 1:
                        map.name = "temperature"
                        map.unit = cmd.scale == 1 ? "F" : "C"
                        //ignores Device's native temperature scale, ftemp already converted to °F if settings as such
                        map.unit = location.temperatureScale
                        logDebug 1, "map.value : ${map.value}"
                        logDebug 1, "map.unit : ${map.unit}"
                        break;
        	}
            logDebug 2, "temperature Command : ${map.inspect()}"
        	
        	state.lastReportedTemp = ftemp
            state.lastReportTime = nowTime
            state.forcedWakeUp = false
            // For Test purpose; redondant with reportNext() => state.forcedWakeUp=1
            if (device.currentValue('reportASAP')==1) {sendEvent(name: "reportASAP", value: 0, isStateChange: true)}
        	return sendEvent(map)
        }
}

//---------------------------
//
//---------------------------
def sensorValueEvent(value) {
	if (value) {
		sendEvent(name: "contact", value: "open", descriptionText: "$device.displayName is open")
	} else {
		sendEvent(name: "contact", value: "closed", descriptionText: "$device.displayName is closed")
	}
}

//---------------------------
// BasicReport should not be necessary since all status change notifications are asynchronous via BasicSet
// But useful as defensive programming, in case of missed notifications, to make sure latest change has been properly reported and registered
//---------------------------
def zwaveEvent(hubitat.zwave.commands.basicv1.BasicReport cmd) {
	sensorValueEvent(cmd.value)
    logDebug 2, "basicv1.BasicReport $cmd.value"
    def cmdValue = cmd.value
	return openClosed(cmd, cmdValue)
}

//---------------------------
// To check that WakeUpInterval does not revert to 1mn instead of 1h
//---------------------------

def zwaveEvent(hubitat.zwave.commands.wakeupv2.WakeUpIntervalReport cmd) {
    logDebug 2, "WakeUpIntervalReport $cmd"
    if (cmd.seconds!=wakeUpInterval) {
    	def result = sendEvent(name:"WakeUpIntervalReport", value:"${cmd.seconds}", descriptionText:"${device.displayName} had ${cmd.seconds} seconds wakeUp period", isStateChange:true, displayed:true, linkText:"${device.displayName}")
   		configure()
    }
    return result
}

//---------------------------
//
//---------------------------
def openClosed(cmd, cmdValue) {
    def theState = cmdValue == 0 ? "closed" : "open"
    logDebug 2, "openClosed $cmd"
    // Use closed/open sensor notification to trigger push of updated Temperature value and immediate setting of updated device parameters
    // Sometimes, Temperature forced refresh stops working : SensorMultilevelGet() Commands are stacked but not executed immediately;
    // will restart after some time, and stacked Commands will be executed !
    def event = sendEvent(name:"contact", value:"${theState}", descriptionText:"${device.displayName} is ${theState}", isStateChange:true, displayed:true, linkText:"${device.displayName}")
    state.forcedWakeUp = true
    def cmdBlock = []
    cmdBlock=wakeUpResponse(cmdBlock)
    return [event, response(cmdBlock)]
}
    
//---------------------------
//
//---------------------------
def zwaveEvent(hubitat.zwave.commands.basicv1.BasicSet cmd) {
    logDebug 2, "basicv1.BasicSet $cmd"
    def cmdValue = cmd.value
	return openClosed(cmd, cmdValue)
}

//---------------------------
// SensorBinaryReport should never occur since all status change notifications are asynchronous via BasicSet
//---------------------------
def zwaveEvent(hubitat.zwave.commands.sensorbinaryv1.SensorBinaryReport cmd) {
    logDebug 2, "sensorbinaryv1.SensorBinaryReport $cmd"
    def cmdValue = cmd.sensorValue
	return openClosed(cmd, cmdValue)
}

//---------------------------
//
//---------------------------
def zwaveEvent(hubitat.zwave.commands.sensoralarmv1.SensorAlarmReport cmd) {
	//def event = sensorValueEvent(cmd.sensorState)
    logDebug 2, "sensoralarmv1.SensorAlarmReport $cmd.sensorState"
    def event = sendEvent(name:"alarm", value:"$cmd.sensorState", descriptionText:"${device.displayName} is tampered with !", isStateChange:true, displayed:true, linkText:"${device.displayName}")
    def cmdBlock = []
    state.forcedWakeUp = true
    cmdBlock=wakeUpResponse(cmdBlock)
    return [event, response(cmdBlock)]
}


//---------------------------
//
//---------------------------
def zwaveEvent(hubitat.zwave.commands.batteryv1.BatteryReport cmd) {
    // Next line needed because "update()" does not seem to work anymore
    state.batteryInterval = (long) (24*60-45)*60*1000  // 1 day
    def long nowTime = new Date().getTime()
   	logDebug 2, "batteryv1.BatteryReport ${cmd.batteryLevel}"
   	logDebug 2, "nowTime : ${nowTime}"
   	logDebug 2, "state.lastReportBattery : ${state.lastReportBattery}"
   	logDebug 2, "state.batteryInterval : ${state.batteryInterval}"
    logDebug 2, "state.forcedWakeUp : ${state.forcedWakeUp}"

    if ((nowTime-state.lastReportBattery > state.batteryInterval) || state.forcedWakeUp) {
		def map = [ name: "battery", displayed: true, isStateChange:true, unit: "%" ]
		if (cmd.batteryLevel == 0xFF) {
			map.value = 1
			map.descriptionText = "${device.displayName} has a low battery"
			map.isStateChange = true
		} else {
			map.value = cmd.batteryLevel
		}
    	state.lastReportBattery = nowTime
        logDebug 1, "battery map : ${map}"
    	return [sendEvent(map)]
    }
}

//---------------------------
//
//---------------------------
def zwaveEvent(hubitat.zwave.commands.configurationv2.ConfigurationReport cmd) {
    logDebug 2, "ConfigurationReport - Parameter#${cmd.parameterNumber}: ${cmd.configurationValue}"
}

//---------------------------
//
//---------------------------
def zwaveEvent(hubitat.zwave.commands.multichannelv3.MultiChannelEndPointReport cmd) {
    logDebug 2, "multichannelv3.MultiChannelCapabilityReport: ${cmd}"
}

//---------------------------
//
//---------------------------
def zwaveEvent(hubitat.zwave.commands.multichannelv3.MultiChannelCapabilityReport cmd) {
    logDebug 2, "multichannelv3.MultiChannelCapabilityReport: ${cmd}"
}
 
//---------------------------
//
//---------------------------
def zwaveEvent(hubitat.zwave.commands.versionv1.VersionReport cmd) {
    logDebug 2, "versionv1.VersionReport: ${cmd}"
	BigDecimal fw = cmd.firmware0Version //applicationVersion
	fw = fw + cmd.firmware0SubVersion/10 // applicationSubVersion / 100
    
	state.firmware = fw
}


//---------------------------
// MultiChannelCmdEncap and MultiInstanceCmdEncap are ways that devices can indicate that a message
// is coming from one of multiple subdevices or "endpoints" that would otherwise be indistinguishable
//---------------------------
def zwaveEvent(hubitat.zwave.commands.multichannelv3.MultiChannelCmdEncap cmd) {
        def encapsulatedCommand = cmd.encapsulatedCommand([0x30: 1, 0x31: 2]) // can specify command class versions here like in zwave.parse
        logDebug 2, ("Command from endpoint ${cmd.sourceEndPoint}: ${encapsulatedCommand}")
        if (encapsulatedCommand) {
                return zwaveEvent(encapsulatedCommand)
        }
}

//---------------------------
//
//---------------------------
// Catch All command Handler in case of unexpected message
def zwaveEvent(hubitat.zwave.Command cmd) {
	sendEvent(descriptionText: "!!! $device.displayName: ${cmd}", displayed: false)
}

//---------------------------
// When a Temperature Event got lost in transit, the Watchdog requests a forced report at next wake up
// The "reportNext()" alarm command is used to signal back from the Watchdog SmartApp to the sleepy Device Handler
//---------------------------
def reportNext(commandMsg) {
	logDebug 3, "reportNext !"
    logDebug 3, "commandMsg : ${commandMsg}"
    state.forcedWakeUp = true
		// IMPORTANT NOTE : when the batteryLevel becomes too low, Device reports become erratic, all periodic wakeUpNotifications stop
        // and consequently BATTERYLEVEL IS NOT UPDATED ANYMORE every 24 hours, continuing to display the last (and obsolete) reported value.
        // Curiously, asynchronous sensorMultilevelReports continue to arrive, for some time, making the Device look (partially) "alive"
    	// This section resets the displayed battery level to 1% when the battery level is obsolete by more than 48h.
	// Next line may be needed because "update()" does not seem to work reliably anymore
    state.batteryInterval = (long) (24*60-45)*60*1000  // 1 day
    def long nowTime = new Date().getTime()
    if (nowTime-state.lastReportBattery > 3*state.batteryInterval) {  // reset batteryLevel to 1% if no update for 48-72 hours
    	logDebug 3, "obsolete (likely low) battery value : ${((nowTime-state.lastReportBattery)/3600000)} hours old"
        sendEvent(name: "battery", displayed: true, isStateChange:true, unit: "%", value: 1, descriptionText: "${device.displayName} has a low battery")
	    state.lastReportBattery = nowTime
	}
	return []
}

///////////////////
// For Tests Purpose
///////////////////

//---------------------------
// Executed each time the Handler is updated
//---------------------------
def updated() {
	logDebug 1, "Updated !"
    
    logDebug 1, "param1 = $param1"
    logDebug 1, "param2 = $param2"
    logDebug 1, "param3 = $param3"
    logDebug 1, "param5 = $param5"
    logDebug 1, "param7 = $param7"
    logDebug 1, "param9 = $param9"
    logDebug 1, "param12 = $param12"
    logDebug 1, "param13 = $param13"
    logDebug 1, "param14 = $param14"
    
    
    // All state.xxx attributes are Device-local, NOT Location-wide
    state.isInitialized = false
    state.lastReportedTemp = (float) -1000
    state.lastReportTime = (long) 0
    state.lastReportBattery = (long) 0
	// Real-time clock of sensors (ceramic resonator) is up to 3% inaccurate
    state.batteryInterval = (long) (24*60-45)*60*1000  // 1 Battery Report event every 24 hours, rounded up to the nearest hourly wakeup
    state.maxEventInterval = (long) (4*60-10)*60*1000  // at least 1 Temperature Report event every 3:50 hours
    state.parseCount=(int) 0
    state.forcedWakeUp = true
    if (!(state.deviceID)) {state.deviceID = device.name}
    logDebug 1, "state.deviceID: ${state.deviceID}"
    logDebug 1, "state.batteryInterval : ${state.batteryInterval}"
    logDebug 1, "state.maxEventInterval : ${state.maxEventInterval}"
    // For Test purpose; redondant with reportNext() => state.forcedWakeUp=1
    sendEvent(name: "reportASAP", value: 1, isStateChange: true)
    logDebug 1, "device.currentValue('reportASAP') : ${device.currentValue('reportASAP')}"

    infos()
}

//---------------------------
//
//---------------------------
def installed()
{
	logDebug 1, "installed"
	state.driverVersion = "${version()}"
}

//---------------------------
// If you add the Configuration capability to your device type, this command will be called right
// after the device joins to set device-specific configuration commands.
//---------------------------
def configure() {
	logDebug 1, "Configuring..."
    logDebug 1, "device.displayName.substring(0,1) : ${device.displayName.substring(0,1)}"
	delayBetween([
		// Make sure sleepy battery-powered sensors send their WakeUpNotifications to the hub
		zwave.wakeUpV2.wakeUpIntervalSet(seconds:wakeUpInterval, nodeid:zwaveHubNodeId).format(),
		// NOTE : any asynchronous temperature query thru SensorMultilevelGet() does NOT reset the delta-Temp base value (managed by DS18B20 hardware)
        zwave.configurationV2.configurationSet(parameterNumber: 1, size: 2, configurationValue: (1..0).collect { (param1.toInteger() >> (it * 8)) & 0xFF}).format(),
        zwave.configurationV2.configurationSet(parameterNumber: 2, size: 1, configurationValue: [param2.toInteger()]).format(),
        zwave.configurationV2.configurationSet(parameterNumber: 3, size: 1, configurationValue: [param3.toInteger()]).format(),
        zwave.configurationV2.configurationSet(parameterNumber: 5, size: 1, configurationValue: [param5.toInteger()]).format(),
        zwave.configurationV2.configurationSet(parameterNumber: 7, size: 1, configurationValue: [param7.toInteger()]).format(),
        zwave.configurationV2.configurationSet(parameterNumber: 9, size: 1, configurationValue: [param9.toInteger()]).format(),
        zwave.configurationV2.configurationSet(parameterNumber: 12, size: 1, configurationValue: [param12.toInteger()]).format(),
        zwave.configurationV2.configurationSet(parameterNumber: 13, size: 1, configurationValue: [param13.toInteger()]).format(),
        zwave.configurationV2.configurationSet(parameterNumber: 14, size: 1, configurationValue: [param14.toInteger()]).format(),
        
        // inclusion of Device in Association#3 is needed to get delta-Temperature notification messages [cf Parameter#12 above]
        zwave.associationV2.associationSet(groupingIdentifier:3, nodeId:[zwaveHubNodeId]).format(),
        // inclusion of Device in Association#2 is needed to enable SensorAlarmReport() Command [anti-Tampering protection]
        zwave.associationV2.associationSet(groupingIdentifier:2, nodeId:[zwaveHubNodeId]).format(),
        // get zwave version information
        zwave.versionV1.versionGet().format()
	],1200)
}

//---------------------------
//
//---------------------------
def infos() {
	if (!state.devices) { state.devices = [:] }
    logDebug 1, "zwaveHubNodeId: ${zwaveHubNodeId}"					// -> "1"
    logDebug 1, "device.displayName: ${device.displayName}"			// -> "JJG"
    logDebug 1, "device.id: ${device.id}"							// -> "75841488-ae76-4cac-b523-a2694e72c25a"
    logDebug 1, "device.name: ${device.name}"						// -> "T001"
    logDebug 1, "device.label: ${device.label}"						// -> "JJG"
    logDebug 1, "device.data: ${device.data}"   					// -> "[endpointId:0, version: 2.1, MSR:010F-0700-2000]"
    //logDebug 1, "'device.rawDescription': ${device.rawDescription}"	// -> "0 0 0x2001 0 0 0 c 0x30 0x9C 0x60 0x85 0x72 0x70 0x86 0x80 0x84 0x7A 0xEF 0x2B"
}

//---------------------------
//
//---------------------------
private logDebug(level, msg) {
	if ((level>=debugLevel.toInteger()) && (settings?.debugOutput || settings?.debugOutput == null)) {
		log.debug "$msg"
	}
}
1 Like

I'll test it out and let you know.

Saving defaults and clicking "Configure", it looks like nothing happened, no logs. I tried the three sensors waking them up and clicking "Configure" within 1-2 seconds.

I restarted the hub, powered on/off the sensors and then saved the previous version, so we're back in business.

You may want to start including a version number in the driver so we can reference them correctly :slight_smile: I just added a date to the description.

With the changes I made it is probably better to start from scratch (adding a device) and then "save preferences", You can then manually wake-up the device and it should automatically get configured at that time. Configure is not really part of the process for this driver.

Already there, see my previous post.

1 Like

Ok, will try that tomorrow with one of the sensors. Perhaps @jean.vancaloen , you can give it a go as well?

1 Like

Ok, reset one of the sensors and exclude/include etc. Here are the logs (had to remove some of the beginning due to post/character limit)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:02.061 am [debug](http://192.168.0.50/device/edit/387)Parsed MultiChannelCmdEncap(bitAddress:false, command:5, commandClass:49, destinationEndPoint:2, parameter:[1, 68, 0, 0, 17, 16], res01:false, sourceEndPoint:2) to null

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:02.058 am [debug](http://192.168.0.50/device/edit/387)temperature Command : ['displayed':true, 'value':'110.6', 'isStateChange':true, 'linkText':One, 'name':'temperature', 'unit':'F']

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:02.056 am [debug](http://192.168.0.50/device/edit/387)map.unit : F

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:02.055 am [debug](http://192.168.0.50/device/edit/387)map.value : 110.6

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:02.054 am [debug](http://192.168.0.50/device/edit/387)((ftemp-state.lastReportedTemp).abs()>0.5625): true

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:02.051 am [debug](http://192.168.0.50/device/edit/387)state.lastReportedTemp: 112.9

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:02.050 am [debug](http://192.168.0.50/device/edit/387)ftemp : 110.6

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:02.049 am [debug](http://192.168.0.50/device/edit/387)(nowTime-state.lastReportTime > state.maxEventInterval) : false

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:02.048 am [debug](http://192.168.0.50/device/edit/387)nowTime : 1663852562040

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:02.047 am [debug](http://192.168.0.50/device/edit/387)state.lastReportTime : 1663852500873

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:02.046 am [debug](http://192.168.0.50/device/edit/387)state.maxEventInterval : 13800000

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:02.045 am [debug](http://192.168.0.50/device/edit/387)state.forcedWakeUp : false

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:02.044 am [debug](http://192.168.0.50/device/edit/387)'Date().getTime()' : 1663852562043

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:02.043 am [debug](http://192.168.0.50/device/edit/387)device.displayName : One

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:02.042 am [debug](http://192.168.0.50/device/edit/387)correction : 3.051757815342171E-7

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:02.040 am [debug](http://192.168.0.50/device/edit/387)cmd.scaledSensorValue : 43.68

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:02.039 am [debug](http://192.168.0.50/device/edit/387)ftemp : 110.6

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:02.038 am [debug](http://192.168.0.50/device/edit/387)ftempSign : 1.0

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:02.035 am [debug](http://192.168.0.50/device/edit/387)Command from endpoint 2: SensorMultilevelReport(precision:2, scale:0, sensorType:1, sensorValue:[0, 0, 17, 16], size:4, scaledSensorValue:43.68)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:02.031 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 600D, payload: 02 02 31 05 01 44 00 00 11 10 , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:02.030 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 58--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:00.833 am [debug](http://192.168.0.50/device/edit/387)Parsed WakeUpIntervalReport(nodeid:1, seconds:60) to null

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:00.831 am [debug](http://192.168.0.50/device/edit/387)WakeUpIntervalReport WakeUpIntervalReport(nodeid:1, seconds:60)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:00.828 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 8406, payload: 00 00 3C 01 , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:00.827 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 57--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:00.782 am [debug](http://192.168.0.50/device/edit/387)Parsed WakeUpNotification() to [null, hubitat.device.HubMultiAction@9be12e]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:00.779 am [debug](http://192.168.0.50/device/edit/387)cmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:00.778 am [debug](http://192.168.0.50/device/edit/387)wakeUpNoMoreInformation()

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:00.775 am [debug](http://192.168.0.50/device/edit/387)wakeupv2.WakeUpNotification WakeUpNotification()

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:00.773 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 8407, payload: , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:16:00.772 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 56--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:15:00.894 am [debug](http://192.168.0.50/device/edit/387)Parsed MultiChannelCmdEncap(bitAddress:false, command:5, commandClass:49, destinationEndPoint:2, parameter:[1, 68, 0, 0, 17, 141], res01:false, sourceEndPoint:2) to null

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:15:00.891 am [debug](http://192.168.0.50/device/edit/387)temperature Command : ['displayed':true, 'value':'112.9', 'isStateChange':true, 'linkText':One, 'name':'temperature', 'unit':'F']

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:15:00.889 am [debug](http://192.168.0.50/device/edit/387)map.unit : F

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:15:00.888 am [debug](http://192.168.0.50/device/edit/387)map.value : 112.9

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:15:00.886 am [debug](http://192.168.0.50/device/edit/387)((ftemp-state.lastReportedTemp).abs()>0.5625): true

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:15:00.884 am [debug](http://192.168.0.50/device/edit/387)state.lastReportedTemp: 68.8

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:15:00.883 am [debug](http://192.168.0.50/device/edit/387)ftemp : 112.9

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:15:00.882 am [debug](http://192.168.0.50/device/edit/387)(nowTime-state.lastReportTime > state.maxEventInterval) : false

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:15:00.881 am [debug](http://192.168.0.50/device/edit/387)nowTime : 1663852500873

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:15:00.880 am [debug](http://192.168.0.50/device/edit/387)state.lastReportTime : 1663852377728

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:15:00.879 am [debug](http://192.168.0.50/device/edit/387)state.maxEventInterval : 13800000

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:15:00.878 am [debug](http://192.168.0.50/device/edit/387)state.forcedWakeUp : false

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:15:00.877 am [debug](http://192.168.0.50/device/edit/387)'Date().getTime()' : 1663852500876

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:15:00.876 am [debug](http://192.168.0.50/device/edit/387)device.displayName : One

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:15:00.875 am [debug](http://192.168.0.50/device/edit/387)correction : 3.051757815342171E-7

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:15:00.873 am [debug](http://192.168.0.50/device/edit/387)cmd.scaledSensorValue : 44.93

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:15:00.872 am [debug](http://192.168.0.50/device/edit/387)ftemp : 112.9

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:15:00.871 am [debug](http://192.168.0.50/device/edit/387)ftempSign : 1.0

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:15:00.869 am [debug](http://192.168.0.50/device/edit/387)Command from endpoint 2: SensorMultilevelReport(precision:2, scale:0, sensorType:1, sensorValue:[0, 0, 17, 141], size:4, scaledSensorValue:44.93)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:15:00.864 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 600D, payload: 02 02 31 05 01 44 00 00 11 8D , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:15:00.863 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 55--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:14:59.786 am [debug](http://192.168.0.50/device/edit/387)Parsed WakeUpIntervalReport(nodeid:1, seconds:60) to null

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:14:59.784 am [debug](http://192.168.0.50/device/edit/387)WakeUpIntervalReport WakeUpIntervalReport(nodeid:1, seconds:60)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:14:59.779 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 8406, payload: 00 00 3C 01 , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:14:59.778 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 54--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:14:59.614 am [debug](http://192.168.0.50/device/edit/387)Parsed WakeUpNotification() to [null, hubitat.device.HubMultiAction@186f17d]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:14:59.611 am [debug](http://192.168.0.50/device/edit/387)cmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:14:59.610 am [debug](http://192.168.0.50/device/edit/387)wakeUpNoMoreInformation()

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:14:59.607 am [debug](http://192.168.0.50/device/edit/387)wakeupv2.WakeUpNotification WakeUpNotification()

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:14:59.605 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 8407, payload: , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:14:59.604 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 53--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:59.313 am [debug](http://192.168.0.50/device/edit/387)Parsed MultiChannelCmdEncap(bitAddress:false, command:5, commandClass:49, destinationEndPoint:2, parameter:[1, 68, 0, 0, 7, 251], res01:false, sourceEndPoint:2) to null

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:59.312 am [debug](http://192.168.0.50/device/edit/387)((ftemp-state.lastReportedTemp).abs()>0.5625): false

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:59.310 am [debug](http://192.168.0.50/device/edit/387)state.lastReportedTemp: 68.8

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:59.309 am [debug](http://192.168.0.50/device/edit/387)ftemp : 68.8

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:59.308 am [debug](http://192.168.0.50/device/edit/387)(nowTime-state.lastReportTime > state.maxEventInterval) : false

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:59.307 am [debug](http://192.168.0.50/device/edit/387)nowTime : 1663852439299

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:59.306 am [debug](http://192.168.0.50/device/edit/387)state.lastReportTime : 1663852377728

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:59.305 am [debug](http://192.168.0.50/device/edit/387)state.maxEventInterval : 13800000

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:59.304 am [debug](http://192.168.0.50/device/edit/387)state.forcedWakeUp : false

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:59.303 am [debug](http://192.168.0.50/device/edit/387)'Date().getTime()' : 1663852439302

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:59.301 am [debug](http://192.168.0.50/device/edit/387)device.displayName : One

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:59.300 am [debug](http://192.168.0.50/device/edit/387)correction : 3.051757815342171E-7

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:59.299 am [debug](http://192.168.0.50/device/edit/387)cmd.scaledSensorValue : 20.43

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:59.298 am [debug](http://192.168.0.50/device/edit/387)ftemp : 68.8

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:59.297 am [debug](http://192.168.0.50/device/edit/387)ftempSign : 1.0

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:59.294 am [debug](http://192.168.0.50/device/edit/387)Command from endpoint 2: SensorMultilevelReport(precision:2, scale:0, sensorType:1, sensorValue:[0, 0, 7, 251], size:4, scaledSensorValue:20.43)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:59.290 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 600D, payload: 02 02 31 05 01 44 00 00 07 FB , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:59.289 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 52--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:58.075 am [debug](http://192.168.0.50/device/edit/387)Parsed WakeUpIntervalReport(nodeid:1, seconds:60) to null

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:58.073 am [debug](http://192.168.0.50/device/edit/387)WakeUpIntervalReport WakeUpIntervalReport(nodeid:1, seconds:60)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:58.071 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 8406, payload: 00 00 3C 01 , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:58.069 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 51--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:58.026 am [debug](http://192.168.0.50/device/edit/387)Parsed WakeUpNotification() to [null, hubitat.device.HubMultiAction@2b90a1]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:58.023 am [debug](http://192.168.0.50/device/edit/387)cmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:58.022 am [debug](http://192.168.0.50/device/edit/387)wakeUpNoMoreInformation()

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:58.020 am [debug](http://192.168.0.50/device/edit/387)wakeupv2.WakeUpNotification WakeUpNotification()

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:58.017 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 8407, payload: , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:13:58.016 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 50--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:57.748 am [debug](http://192.168.0.50/device/edit/387)Parsed MultiChannelCmdEncap(bitAddress:false, command:5, commandClass:49, destinationEndPoint:2, parameter:[1, 68, 0, 0, 7, 251], res01:false, sourceEndPoint:2) to null

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:57.746 am [debug](http://192.168.0.50/device/edit/387)temperature Command : ['displayed':true, 'value':'68.8', 'isStateChange':true, 'linkText':One, 'name':'temperature', 'unit':'F']

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:57.744 am [debug](http://192.168.0.50/device/edit/387)map.unit : F

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:57.743 am [debug](http://192.168.0.50/device/edit/387)map.value : 68.8

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:57.741 am [debug](http://192.168.0.50/device/edit/387)((ftemp-state.lastReportedTemp).abs()>0.5625): true

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:57.740 am [debug](http://192.168.0.50/device/edit/387)state.lastReportedTemp: 67.9

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:57.739 am [debug](http://192.168.0.50/device/edit/387)ftemp : 68.8

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:57.737 am [debug](http://192.168.0.50/device/edit/387)(nowTime-state.lastReportTime > state.maxEventInterval) : false

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:57.736 am [debug](http://192.168.0.50/device/edit/387)nowTime : 1663852377728

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:57.735 am [debug](http://192.168.0.50/device/edit/387)state.lastReportTime : 1663852318664

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:57.734 am [debug](http://192.168.0.50/device/edit/387)state.maxEventInterval : 13800000

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:57.733 am [debug](http://192.168.0.50/device/edit/387)state.forcedWakeUp : false

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:57.732 am [debug](http://192.168.0.50/device/edit/387)'Date().getTime()' : 1663852377732

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:57.731 am [debug](http://192.168.0.50/device/edit/387)device.displayName : One

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:57.730 am [debug](http://192.168.0.50/device/edit/387)correction : 3.051757815342171E-7

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:57.729 am [debug](http://192.168.0.50/device/edit/387)cmd.scaledSensorValue : 20.43

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:57.728 am [debug](http://192.168.0.50/device/edit/387)ftemp : 68.8

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:57.727 am [debug](http://192.168.0.50/device/edit/387)ftempSign : 1.0

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:57.724 am [debug](http://192.168.0.50/device/edit/387)Command from endpoint 2: SensorMultilevelReport(precision:2, scale:0, sensorType:1, sensorValue:[0, 0, 7, 251], size:4, scaledSensorValue:20.43)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:57.720 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 600D, payload: 02 02 31 05 01 44 00 00 07 FB , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:57.718 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 49--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:56.522 am [debug](http://192.168.0.50/device/edit/387)Parsed WakeUpIntervalReport(nodeid:1, seconds:60) to null

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:56.520 am [debug](http://192.168.0.50/device/edit/387)WakeUpIntervalReport WakeUpIntervalReport(nodeid:1, seconds:60)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:56.517 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 8406, payload: 00 00 3C 01 , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:56.516 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 48--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:56.472 am [debug](http://192.168.0.50/device/edit/387)Parsed WakeUpNotification() to [null, hubitat.device.HubMultiAction@8fa55a]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:56.469 am [debug](http://192.168.0.50/device/edit/387)cmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:56.468 am [debug](http://192.168.0.50/device/edit/387)wakeUpNoMoreInformation()

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:56.466 am [debug](http://192.168.0.50/device/edit/387)wakeupv2.WakeUpNotification WakeUpNotification()

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:56.464 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 8407, payload: , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:12:56.462 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 47--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:59.669 am [debug](http://192.168.0.50/device/edit/387)Parsed MultiChannelCmdEncap(bitAddress:false, command:5, commandClass:49, destinationEndPoint:2, parameter:[1, 68, 0, 0, 7, 201], res01:false, sourceEndPoint:2) to null

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:59.667 am [debug](http://192.168.0.50/device/edit/387)((ftemp-state.lastReportedTemp).abs()>0.5625): false

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:59.666 am [debug](http://192.168.0.50/device/edit/387)state.lastReportedTemp: 67.9

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:59.665 am [debug](http://192.168.0.50/device/edit/387)ftemp : 67.9

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:59.663 am [debug](http://192.168.0.50/device/edit/387)(nowTime-state.lastReportTime > state.maxEventInterval) : false

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:59.662 am [debug](http://192.168.0.50/device/edit/387)nowTime : 1663852319654

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:59.661 am [debug](http://192.168.0.50/device/edit/387)state.lastReportTime : 1663852318664

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:59.660 am [debug](http://192.168.0.50/device/edit/387)state.maxEventInterval : 13800000

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:59.659 am [debug](http://192.168.0.50/device/edit/387)state.forcedWakeUp : false

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:59.658 am [debug](http://192.168.0.50/device/edit/387)'Date().getTime()' : 1663852319658

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:59.657 am [debug](http://192.168.0.50/device/edit/387)device.displayName : One

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:59.656 am [debug](http://192.168.0.50/device/edit/387)correction : 3.051757815342171E-7

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:59.655 am [debug](http://192.168.0.50/device/edit/387)cmd.scaledSensorValue : 19.93

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:59.654 am [debug](http://192.168.0.50/device/edit/387)ftemp : 67.9

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:59.652 am [debug](http://192.168.0.50/device/edit/387)ftempSign : 1.0

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:59.650 am [debug](http://192.168.0.50/device/edit/387)Command from endpoint 2: SensorMultilevelReport(precision:2, scale:0, sensorType:1, sensorValue:[0, 0, 7, 201], size:4, scaledSensorValue:19.93)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:59.646 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 600D, payload: 02 02 31 05 01 44 00 00 07 C9 , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:59.644 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 46--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:59.076 am [debug](http://192.168.0.50/device/edit/387)Parsed WakeUpIntervalReport(nodeid:1, seconds:60) to null

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:59.074 am [debug](http://192.168.0.50/device/edit/387)WakeUpIntervalReport WakeUpIntervalReport(nodeid:1, seconds:60)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:59.072 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 8406, payload: 00 00 3C 01 , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:59.070 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 45--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.686 am [debug](http://192.168.0.50/device/edit/387)Parsed MultiChannelCmdEncap(bitAddress:false, command:5, commandClass:49, destinationEndPoint:2, parameter:[1, 68, 0, 0, 7, 201], res01:false, sourceEndPoint:2) to null

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.683 am [debug](http://192.168.0.50/device/edit/387)temperature Command : ['displayed':true, 'value':'67.9', 'isStateChange':true, 'linkText':One, 'name':'temperature', 'unit':'F']

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.681 am [debug](http://192.168.0.50/device/edit/387)map.unit : F

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.680 am [debug](http://192.168.0.50/device/edit/387)map.value : 67.9

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.678 am [debug](http://192.168.0.50/device/edit/387)((ftemp-state.lastReportedTemp).abs()>0.5625): false

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.676 am [debug](http://192.168.0.50/device/edit/387)state.lastReportedTemp: 67.9

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.675 am [debug](http://192.168.0.50/device/edit/387)ftemp : 67.9

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.674 am [debug](http://192.168.0.50/device/edit/387)(nowTime-state.lastReportTime > state.maxEventInterval) : false

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.673 am [debug](http://192.168.0.50/device/edit/387)nowTime : 1663852318664

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.672 am [debug](http://192.168.0.50/device/edit/387)state.lastReportTime : 1663852308689

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.671 am [debug](http://192.168.0.50/device/edit/387)state.maxEventInterval : 13800000

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.669 am [debug](http://192.168.0.50/device/edit/387)state.forcedWakeUp : true

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.668 am [debug](http://192.168.0.50/device/edit/387)'Date().getTime()' : 1663852318668

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.667 am [debug](http://192.168.0.50/device/edit/387)device.displayName : One

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.666 am [debug](http://192.168.0.50/device/edit/387)correction : 3.051757815342171E-7

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.664 am [debug](http://192.168.0.50/device/edit/387)cmd.scaledSensorValue : 19.93

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.663 am [debug](http://192.168.0.50/device/edit/387)ftemp : 67.9

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.662 am [debug](http://192.168.0.50/device/edit/387)ftempSign : 1.0

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.660 am [debug](http://192.168.0.50/device/edit/387)Command from endpoint 2: SensorMultilevelReport(precision:2, scale:0, sensorType:1, sensorValue:[0, 0, 7, 201], size:4, scaledSensorValue:19.93)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.655 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 600D, payload: 02 02 31 05 01 44 00 00 07 C9 , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.654 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 44--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.479 am [debug](http://192.168.0.50/device/edit/387)Parsed BasicSet(value:255) to [null, hubitat.device.HubMultiAction@21f1f8]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.476 am [debug](http://192.168.0.50/device/edit/387)cmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.475 am [debug](http://192.168.0.50/device/edit/387)wakeUpNoMoreInformation()

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.472 am [debug](http://192.168.0.50/device/edit/387)openClosed BasicSet(value:255)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.471 am [debug](http://192.168.0.50/device/edit/387)basicv1.BasicSet BasicSet(value:255)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.468 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 2001, payload: FF , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.467 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 43--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.396 am [debug](http://192.168.0.50/device/edit/387)Parsed SensorBinaryReport(sensorValue:255) to [null, hubitat.device.HubMultiAction@f4f83e]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.393 am [debug](http://192.168.0.50/device/edit/387)cmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.392 am [debug](http://192.168.0.50/device/edit/387)wakeUpNoMoreInformation()

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.389 am [debug](http://192.168.0.50/device/edit/387)openClosed SensorBinaryReport(sensorValue:255)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.388 am [debug](http://192.168.0.50/device/edit/387)sensorbinaryv1.SensorBinaryReport SensorBinaryReport(sensorValue:255)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.385 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 3003, payload: FF , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:58.384 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 42--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:50.258 am [debug](http://192.168.0.50/device/edit/387)Parsed BasicSet(value:0) to [null, hubitat.device.HubMultiAction@12b8a12]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:50.255 am [debug](http://192.168.0.50/device/edit/387)cmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:50.254 am [debug](http://192.168.0.50/device/edit/387)wakeUpNoMoreInformation()

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:50.251 am [debug](http://192.168.0.50/device/edit/387)openClosed BasicSet(value:0)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:50.250 am [debug](http://192.168.0.50/device/edit/387)basicv1.BasicSet BasicSet(value:0)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:50.247 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 2001, payload: 00 , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:50.246 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 41--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:50.240 am [debug](http://192.168.0.50/device/edit/387)Parsed SensorBinaryReport(sensorValue:0) to [null, hubitat.device.HubMultiAction@71e436]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:50.238 am [debug](http://192.168.0.50/device/edit/387)cmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:50.237 am [debug](http://192.168.0.50/device/edit/387)wakeUpNoMoreInformation()

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:50.234 am [debug](http://192.168.0.50/device/edit/387)openClosed SensorBinaryReport(sensorValue:0)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:50.233 am [debug](http://192.168.0.50/device/edit/387)sensorbinaryv1.SensorBinaryReport SensorBinaryReport(sensorValue:0)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:50.230 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 3003, payload: 00 , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:50.229 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 40--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:49.570 am [debug](http://192.168.0.50/device/edit/387)Parsed WakeUpIntervalReport(nodeid:1, seconds:60) to null

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:49.568 am [debug](http://192.168.0.50/device/edit/387)WakeUpIntervalReport WakeUpIntervalReport(nodeid:1, seconds:60)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:49.565 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 8406, payload: 00 00 3C 01 , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:49.563 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 39--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:49.536 am [debug](http://192.168.0.50/device/edit/387)Parsed BasicSet(value:255) to [null, hubitat.device.HubMultiAction@15e77aa]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:49.534 am [debug](http://192.168.0.50/device/edit/387)cmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:49.533 am [debug](http://192.168.0.50/device/edit/387)wakeUpNoMoreInformation()

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:49.530 am [debug](http://192.168.0.50/device/edit/387)openClosed BasicSet(value:255)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:49.528 am [debug](http://192.168.0.50/device/edit/387)basicv1.BasicSet BasicSet(value:255)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:49.526 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 2001, payload: FF , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:49.524 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 38--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:49.518 am [debug](http://192.168.0.50/device/edit/387)Parsed SensorBinaryReport(sensorValue:255) to [null, hubitat.device.HubMultiAction@ed5478]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:49.515 am [debug](http://192.168.0.50/device/edit/387)cmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:49.514 am [debug](http://192.168.0.50/device/edit/387)wakeUpNoMoreInformation()

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:49.511 am [debug](http://192.168.0.50/device/edit/387)openClosed SensorBinaryReport(sensorValue:255)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:49.510 am [debug](http://192.168.0.50/device/edit/387)sensorbinaryv1.SensorBinaryReport SensorBinaryReport(sensorValue:255)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:49.507 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 3003, payload: FF , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:49.505 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 37--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.710 am [debug](http://192.168.0.50/device/edit/387)Parsed MultiChannelCmdEncap(bitAddress:false, command:5, commandClass:49, destinationEndPoint:2, parameter:[1, 68, 0, 0, 7, 201], res01:false, sourceEndPoint:2) to null

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.707 am [debug](http://192.168.0.50/device/edit/387)temperature Command : ['displayed':true, 'value':'67.9', 'isStateChange':true, 'linkText':One, 'name':'temperature', 'unit':'F']

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.705 am [debug](http://192.168.0.50/device/edit/387)map.unit : F

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.704 am [debug](http://192.168.0.50/device/edit/387)map.value : 67.9

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.702 am [debug](http://192.168.0.50/device/edit/387)((ftemp-state.lastReportedTemp).abs()>0.5625): false

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.700 am [debug](http://192.168.0.50/device/edit/387)state.lastReportedTemp: 67.9

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.700 am [debug](http://192.168.0.50/device/edit/387)ftemp : 67.9

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.698 am [debug](http://192.168.0.50/device/edit/387)(nowTime-state.lastReportTime > state.maxEventInterval) : false

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.697 am [debug](http://192.168.0.50/device/edit/387)nowTime : 1663852308689

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.696 am [debug](http://192.168.0.50/device/edit/387)state.lastReportTime : 1663852302500

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.695 am [debug](http://192.168.0.50/device/edit/387)state.maxEventInterval : 13800000

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.694 am [debug](http://192.168.0.50/device/edit/387)state.forcedWakeUp : true

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.693 am [debug](http://192.168.0.50/device/edit/387)'Date().getTime()' : 1663852308693

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.692 am [debug](http://192.168.0.50/device/edit/387)device.displayName : One

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.691 am [debug](http://192.168.0.50/device/edit/387)correction : 3.051757815342171E-7

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.690 am [debug](http://192.168.0.50/device/edit/387)cmd.scaledSensorValue : 19.93

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.688 am [debug](http://192.168.0.50/device/edit/387)ftemp : 67.9

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.687 am [debug](http://192.168.0.50/device/edit/387)ftempSign : 1.0

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.685 am [debug](http://192.168.0.50/device/edit/387)Command from endpoint 2: SensorMultilevelReport(precision:2, scale:0, sensorType:1, sensorValue:[0, 0, 7, 201], size:4, scaledSensorValue:19.93)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.680 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 600D, payload: 02 02 31 05 01 44 00 00 07 C9 , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.679 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 36--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.148 am [debug](http://192.168.0.50/device/edit/387)Parsed WakeUpIntervalReport(nodeid:1, seconds:60) to null

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.146 am [debug](http://192.168.0.50/device/edit/387)WakeUpIntervalReport WakeUpIntervalReport(nodeid:1, seconds:60)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.143 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 8406, payload: 00 00 3C 01 , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.142 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 35--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.115 am [debug](http://192.168.0.50/device/edit/387)Parsed BasicSet(value:0) to [null, hubitat.device.HubMultiAction@51505e]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.113 am [debug](http://192.168.0.50/device/edit/387)cmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.111 am [debug](http://192.168.0.50/device/edit/387)wakeUpNoMoreInformation()

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.109 am [debug](http://192.168.0.50/device/edit/387)openClosed BasicSet(value:0)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.107 am [debug](http://192.168.0.50/device/edit/387)basicv1.BasicSet BasicSet(value:0)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.105 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 2001, payload: 00 , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.103 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 34--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.097 am [debug](http://192.168.0.50/device/edit/387)Parsed SensorBinaryReport(sensorValue:0) to [null, hubitat.device.HubMultiAction@e635b]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.094 am [debug](http://192.168.0.50/device/edit/387)cmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.093 am [debug](http://192.168.0.50/device/edit/387)wakeUpNoMoreInformation()

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.090 am [debug](http://192.168.0.50/device/edit/387)openClosed SensorBinaryReport(sensorValue:0)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.089 am [debug](http://192.168.0.50/device/edit/387)sensorbinaryv1.SensorBinaryReport SensorBinaryReport(sensorValue:0)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.086 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 3003, payload: 00 , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:48.085 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 33--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.714 am [debug](http://192.168.0.50/device/edit/387)Parsed WakeUpIntervalReport(nodeid:1, seconds:60) to null

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.712 am [debug](http://192.168.0.50/device/edit/387)WakeUpIntervalReport WakeUpIntervalReport(nodeid:1, seconds:60)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.710 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 8406, payload: 00 00 3C 01 , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.708 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 32--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.684 am [debug](http://192.168.0.50/device/edit/387)Parsed BasicSet(value:255) to [null, hubitat.device.HubMultiAction@14f82b4]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.682 am [debug](http://192.168.0.50/device/edit/387)cmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.681 am [debug](http://192.168.0.50/device/edit/387)wakeUpNoMoreInformation()

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.671 am [debug](http://192.168.0.50/device/edit/387)openClosed BasicSet(value:255)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.669 am [debug](http://192.168.0.50/device/edit/387)basicv1.BasicSet BasicSet(value:255)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.666 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 2001, payload: FF , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.665 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 31--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.660 am [debug](http://192.168.0.50/device/edit/387)Parsed SensorBinaryReport(sensorValue:255) to [null, hubitat.device.HubMultiAction@15e8576]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.657 am [debug](http://192.168.0.50/device/edit/387)cmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.656 am [debug](http://192.168.0.50/device/edit/387)wakeUpNoMoreInformation()

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.653 am [debug](http://192.168.0.50/device/edit/387)openClosed SensorBinaryReport(sensorValue:255)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.652 am [debug](http://192.168.0.50/device/edit/387)sensorbinaryv1.SensorBinaryReport SensorBinaryReport(sensorValue:255)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.649 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 3003, payload: FF , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.648 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 30--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.481 am [debug](http://192.168.0.50/device/edit/387)Parsed WakeUpIntervalReport(nodeid:1, seconds:60) to null

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.479 am [debug](http://192.168.0.50/device/edit/387)WakeUpIntervalReport WakeUpIntervalReport(nodeid:1, seconds:60)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.476 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 8406, payload: 00 00 3C 01 , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.475 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 29--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.450 am [debug](http://192.168.0.50/device/edit/387)Parsed BasicSet(value:0) to [null, hubitat.device.HubMultiAction@1f55f98]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.447 am [debug](http://192.168.0.50/device/edit/387)cmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.446 am [debug](http://192.168.0.50/device/edit/387)wakeUpNoMoreInformation()

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.443 am [debug](http://192.168.0.50/device/edit/387)openClosed BasicSet(value:0)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.442 am [debug](http://192.168.0.50/device/edit/387)basicv1.BasicSet BasicSet(value:0)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.439 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 2001, payload: 00 , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.438 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 28--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.430 am [debug](http://192.168.0.50/device/edit/387)Parsed SensorBinaryReport(sensorValue:0) to [null, hubitat.device.HubMultiAction@fcc2fe]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.427 am [debug](http://192.168.0.50/device/edit/387)cmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.426 am [debug](http://192.168.0.50/device/edit/387)wakeUpNoMoreInformation()

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.424 am [debug](http://192.168.0.50/device/edit/387)openClosed SensorBinaryReport(sensorValue:0)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.422 am [debug](http://192.168.0.50/device/edit/387)sensorbinaryv1.SensorBinaryReport SensorBinaryReport(sensorValue:0)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.420 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 3003, payload: 00 , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:47.418 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 27--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:42.524 am [debug](http://192.168.0.50/device/edit/387)Parsed MultiChannelCmdEncap(bitAddress:false, command:5, commandClass:49, destinationEndPoint:2, parameter:[1, 68, 0, 0, 7, 201], res01:false, sourceEndPoint:2) to null

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:42.521 am [debug](http://192.168.0.50/device/edit/387)temperature Command : ['displayed':true, 'value':'67.9', 'isStateChange':true, 'linkText':One, 'name':'temperature', 'unit':'F']

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:42.519 am [debug](http://192.168.0.50/device/edit/387)map.unit : F

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:42.519 am [debug](http://192.168.0.50/device/edit/387)map.value : 67.9

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:42.514 am [debug](http://192.168.0.50/device/edit/387)((ftemp-state.lastReportedTemp).abs()>0.5625): false

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:42.512 am [debug](http://192.168.0.50/device/edit/387)state.lastReportedTemp: 67.9

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:42.511 am [debug](http://192.168.0.50/device/edit/387)ftemp : 67.9

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:42.509 am [debug](http://192.168.0.50/device/edit/387)(nowTime-state.lastReportTime > state.maxEventInterval) : false

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:42.508 am [debug](http://192.168.0.50/device/edit/387)nowTime : 1663852302500

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:42.507 am [debug](http://192.168.0.50/device/edit/387)state.lastReportTime : 1663852242889

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:42.506 am [debug](http://192.168.0.50/device/edit/387)state.maxEventInterval : 13800000

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:42.505 am [debug](http://192.168.0.50/device/edit/387)state.forcedWakeUp : true

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:42.504 am [debug](http://192.168.0.50/device/edit/387)'Date().getTime()' : 1663852302503

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:42.503 am [debug](http://192.168.0.50/device/edit/387)device.displayName : One

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:42.501 am [debug](http://192.168.0.50/device/edit/387)correction : 3.051757815342171E-7

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:42.500 am [debug](http://192.168.0.50/device/edit/387)cmd.scaledSensorValue : 19.93

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:42.499 am [debug](http://192.168.0.50/device/edit/387)ftemp : 67.9

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:42.498 am [debug](http://192.168.0.50/device/edit/387)ftempSign : 1.0

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:42.495 am [debug](http://192.168.0.50/device/edit/387)Command from endpoint 2: SensorMultilevelReport(precision:2, scale:0, sensorType:1, sensorValue:[0, 0, 7, 201], size:4, scaledSensorValue:19.93)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:42.491 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 600D, payload: 02 02 31 05 01 44 00 00 07 C9 , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:42.490 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 26--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:41.294 am [debug](http://192.168.0.50/device/edit/387)Parsed WakeUpIntervalReport(nodeid:1, seconds:60) to null

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:41.292 am [debug](http://192.168.0.50/device/edit/387)WakeUpIntervalReport WakeUpIntervalReport(nodeid:1, seconds:60)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:41.289 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 8406, payload: 00 00 3C 01 , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:41.288 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 25--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:41.254 am [debug](http://192.168.0.50/device/edit/387)Parsed BasicSet(value:255) to [null, hubitat.device.HubMultiAction@1274328]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:41.252 am [debug](http://192.168.0.50/device/edit/387)cmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:41.251 am [debug](http://192.168.0.50/device/edit/387)wakeUpNoMoreInformation()

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:41.248 am [debug](http://192.168.0.50/device/edit/387)openClosed BasicSet(value:255)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:41.246 am [debug](http://192.168.0.50/device/edit/387)basicv1.BasicSet BasicSet(value:255)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:41.242 am [debug](http://192.168.0.50/device/edit/387)Parsed SensorBinaryReport(sensorValue:255) to [null, hubitat.device.HubMultiAction@1106a40]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:41.239 am [debug](http://192.168.0.50/device/edit/387)cmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:41.238 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 2001, payload: FF , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:41.238 am [debug](http://192.168.0.50/device/edit/387)wakeUpNoMoreInformation()

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:41.237 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 24--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:41.235 am [debug](http://192.168.0.50/device/edit/387)openClosed SensorBinaryReport(sensorValue:255)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:41.233 am [debug](http://192.168.0.50/device/edit/387)sensorbinaryv1.SensorBinaryReport SensorBinaryReport(sensorValue:255)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:41.224 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 3003, payload: FF , isMulticast: false'

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:41.223 am [debug](http://192.168.0.50/device/edit/387)--------------------------Parsing... ; state.parseCount: 24--------------------------

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:28.579 am [debug](http://192.168.0.50/device/edit/387)Parsed MultiChannelCmdEncap(bitAddress:false, command:5, commandClass:49, destinationEndPoint:2, parameter:[1, 68, 0, 0, 7, 201], res01:false, sourceEndPoint:2) to null

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:28.577 am [debug](http://192.168.0.50/device/edit/387)((ftemp-state.lastReportedTemp).abs()>0.5625): false

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:28.575 am [debug](http://192.168.0.50/device/edit/387)state.lastReportedTemp: 67.9

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:28.574 am [debug](http://192.168.0.50/device/edit/387)ftemp : 67.9

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:28.573 am [debug](http://192.168.0.50/device/edit/387)(nowTime-state.lastReportTime > state.maxEventInterval) : false

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:28.572 am [debug](http://192.168.0.50/device/edit/387)nowTime : 1663852288564

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:28.571 am [debug](http://192.168.0.50/device/edit/387)state.lastReportTime : 1663852242889

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:28.570 am [debug](http://192.168.0.50/device/edit/387)state.maxEventInterval : 13800000

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:28.569 am [debug](http://192.168.0.50/device/edit/387)state.forcedWakeUp : false

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:28.568 am [debug](http://192.168.0.50/device/edit/387)'Date().getTime()' : 1663852288567

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:28.567 am [debug](http://192.168.0.50/device/edit/387)device.displayName : One

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:28.565 am [debug](http://192.168.0.50/device/edit/387)correction : 3.051757815342171E-7

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:28.564 am [debug](http://192.168.0.50/device/edit/387)cmd.scaledSensorValue : 19.93

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:28.563 am [debug](http://192.168.0.50/device/edit/387)ftemp : 67.9

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:28.562 am [debug](http://192.168.0.50/device/edit/387)ftempSign : 1.0

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:28.559 am [debug](http://192.168.0.50/device/edit/387)Command from endpoint 2: SensorMultilevelReport(precision:2, scale:0, sensorType:1, sensorValue:[0, 0, 7, 201], size:4, scaledSensorValue:19.93)

[dev:387](http://192.168.0.50/logs?device=387#pastdev387)2022-09-22 09:11:28.555 am [debug](http://192.168.0.50/device/edit/387)Parsing... 'zw device: 18, command: 600D, payload: 02 02 31 05 01 44 00 00 07 C9 , isMulticast: false'

Here is the driver config screen:

It is logging temp every minute (cup of hot water test) as configured in that screen grab above which is the first time since we started playing :slight_smile:

Is Debug 1 more or less verbose than Debug 3?

What would be the option to just report when temp delta is at the set point? Or will it just do this when wakeup is set longer, but the temp changes?

Great, thanks for testing.

Level 1 has everything, 3 has "important" stuff. I used whatever levels were there before but made a few adjustments.

Your wake-up is set to 60 seconds, I changed the preferences from minutes to seconds in the latest version since this is what the parameter accepts. If you change the value to 3600, you should get exactly the same behavior as before.

Just a reminder to anyone reading this that once you "save preferences", the sensor will not get updated until it wakes-up either from the periodic wake up or manual (alarm or contact triggered).

Also thanks for the screen grab, I wasn't sure if the firmware version (2.5) would show-up correctly.

Strange that the driver version doesn't show. I will add it to the updated() function as I did for another driver...

Actually temp is updating based on my delta setting of 5, not on time so this is excellent. I'm going to change parameter 12 to 2 which should give me a delta T report when temperature change exceeds 0.125 C

I'm finding I need to give the rear TMP button a solid press/release, then click "Configure" in the driver a few seconds after. The sensor also needs to be relatively close to the hub when including initially. Moving it outside required a few Zwave repair cycles in the hub so they communicate correctly. I do like HE a lot better with respect to being able to sort Zwave topology issues.

With this sensor, you also need to make sure the internal TMP button is kept depressed either manually, or by keeping the cover on when including/excluding/resetting etc. It's a bit of a PITA, but they work so reliably after, I've found it "worth" the effort to sort them.

I did get the Fibaro Implant today and of course it's far easier to get working, but it's not designed for battery power. Doable with a larger battery/solar cell but I'll be using it for other projects.

1 Like

Yes, I can see that after looking more closely at the logs. The wake-up notifications still come out every minute as expected. I guess you would want to change that if you were only on battery...

Also, on every wake-up, there are a few commands always sent to the sensor, wakeUpIntervalGet, SensorMultilevelGet, so you will get extra temperature measurements.

I'll play around a bit with those settings. In any case, the sensor is working great now.

I've just set up a Fibaro Implant which is pretty slick and a lot easier to add into Hubitat! It's not quite so power efficient as these older FGK-10x sensors though...I believe the implant needs 20mA or so constant. I'll use that for another project(s)

@christi999 ,is there a release mechanism for the driver, or it is just left here for folks to find via google? You did a pretty amazing job of jumping in and sorting this out :slight_smile:

Everything has been good on the three 2.5 firmware sensors using the driver and the temp reporting makes sense now:

Wakeup period will determine the "potential" temperature reporting window, but the temp report won't be sent unless the temp delta is greater than what is set in option 12. I've got option12 set to 2, and a wakeup of 120 seconds for two of the sensors, but I don't get reports every 120 seconds...only if the temp difference is greater than about 0.3 F.

Option 12 as per the doc:

Parameter no. 12
Sensitivity to temperature changes. The maximum acceptable
difference between the last reported temperature and the current
temperature read from the sensor. If the temperatures differ by the
set value or more, a report with the current temperature value is
sent to the device assigned to association group no. 3.
Default value: 8 [0,5o
C]
Available parameter settings: 0 – 255 [0o
C to 16o
C] [32o
F – 60,8o
F]
To set an appropriate parameter value use the following formula:
x = delta T x 16 - for Celsius
x = delta T x 80 / 9 - for Fahrenheit
x = parameter value
delta T – maximum acceptable temperature gradient in Celsius or
Fahrenheit
If the value is set to 0:

  • if the wake-up interval is set to 255 seconds, temperature report
    will be sent according to the interval,
  • if the wake-up interval is set to over 255, temperature report will be
    sent each ca. 4 minutes.
    Parameter size: 1 [byte].

There is a custom driver forum (link) where it could be posted/discussed. In addition, it should be added to the custom driver page (link).

Ideally the driver should be put on github for easy access and once it is there, it should be added to the Hubitat Package Manager (link) for easy install.

Given how old this device is, I am not sure it is worth the effort but you are welcome to it...

The device works as described...However, for some reason the driver code actually asks the device for a temperature report on every wake-up and filters every report based on if it has changed enough. I left that in the code, maybe the author liked it that way or it solves problems when battery is low...

Ah, understood. There was a time just a few years back where there were a ton of these for sale out in the wild in weird colors etc.

The Fibaro Implant is definitely the way to go if you have access to mains power as it also serves as a next generation zWave repeater (was a bit of a mesh bully for some HE devices though) for your mesh. Not sure if there is a 2022 solution at all for battery powered devices using the DS18B20 temperature probes...so I'll hang onto this setup as long as I can.

1 Like

We have a mechanism for "abandoned code". The code can be added to the HubitatCommunity github repo. From there, HPM has a "Community Code" repo that can be updated to add the abandoned code. There are currently 3 packages in that repo. :smiley:

Edit:

If anyone here wants to take advantage of the Abandoned Code mechanism, I am only willing to offer my copy paste skills :smiley: I don't have this device and thus I can't 'take over' maintenance, but I can assist by getting the code easier to install (via HPM.)

If someone wants to identify the correct code, and to create the two HPM manifest files, I'll paste them in. But I can't be picking Tags and writing descriptions, etc. :smiley:

2 Likes

With the help of this driver, my solar heating automation setup is now fully ported from ST to HE.

The HundredGraphs plug-in to send capture data and graph it is working great too :slight_smile:

Live data from the system is here: HundredGraphs, visualize and smarten up your IoT data

Below is a screen grab of the Hundredgraphs page from my phone.. (output probe is just in a cup of hot water so that the Webcore code will update BTUcalc etc.)

BTU is calculated based on the temperature difference between pool water temp and solar output along with the measured gallons/minute pump output. Webcore updates a virtual temp sensor BTUCALC with the calculated energy output anytime a sensor reports a temp change.

1 Like

Hi
I finally managed to test the last update. I just updated the driver - didn't remove and reconnect. Temp reports seem to work fine now (no longer stuck at the initial value).
Few observations:

  • I had to Save parameters once to remove Groovy multiply() by null errors.
  • WakeUp set to 3600s works correctly.
  • Still get multiple events per Open/Close, I attached some logs below if you feel like having a look. I guess both basicv1.BasicSet and sensorbinaryv1.SensorBinaryReport are creating an event.

@christi999 thanks again for putting in the effort! I have edited drivers in the past but the zwave stack is still hard for me thus troubleshooting is very timeconsuming.

dev:5762022-09-24 17:11:23.829 debugParsed MultiChannelCmdEncap(bitAddress:false, command:5, commandClass:49, destinationEndPoint:2, parameter:[1, 68, 0, 0, 7, 195], res01:false, sourceEndPoint:2) to null
dev:5762022-09-24 17:11:23.827 debug((ftemp-state.lastReportedTemp).abs()>0.5): false
dev:5762022-09-24 17:11:23.825 debugstate.lastReportedTemp: 19.9
dev:5762022-09-24 17:11:23.823 debugftemp : 19.9
dev:5762022-09-24 17:11:23.821 debug(nowTime-state.lastReportTime > state.maxEventInterval) : false
dev:5762022-09-24 17:11:23.819 debugnowTime : 1664032283803
dev:5762022-09-24 17:11:23.817 debugstate.lastReportTime : 1664032282690
dev:5762022-09-24 17:11:23.815 debugstate.maxEventInterval : 13800000
dev:5762022-09-24 17:11:23.813 debugstate.forcedWakeUp : false
dev:5762022-09-24 17:11:23.811 debug'Date().getTime()' : 1664032283806
dev:5762022-09-24 17:11:23.809 debugdevice.displayName : Zwembad temperatuur
dev:5762022-09-24 17:11:23.808 debugcorrection : 8.392333974427402E-7
dev:5762022-09-24 17:11:23.806 debugcmd.scaledSensorValue : 19.87
dev:5762022-09-24 17:11:23.804 debugftemp : 19.9
dev:5762022-09-24 17:11:23.802 debugftempSign : 1.0
dev:5762022-09-24 17:11:23.800 debugCommand from endpoint 2: SensorMultilevelReport(precision:2, scale:0, sensorType:1, sensorValue:[0, 0, 7, 195], size:4, scaledSensorValue:19.87)
dev:5762022-09-24 17:11:23.796 debugParsing... 'zw device: 67, command: 600D, payload: 02 02 31 05 01 44 00 00 07 C3 , isMulticast: false'
dev:5762022-09-24 17:11:23.794 debug--------------------------Parsing... ; state.parseCount: 25--------------------------
dev:5762022-09-24 17:11:23.575 debugParsed WakeUpIntervalReport(nodeid:1, seconds:3600) to null
dev:5762022-09-24 17:11:23.573 debugWakeUpIntervalReport WakeUpIntervalReport(nodeid:1, seconds:3600)
dev:5762022-09-24 17:11:23.571 debugParsing... 'zw device: 67, command: 8406, payload: 00 0E 10 01 , isMulticast: false'
dev:5762022-09-24 17:11:23.569 debug--------------------------Parsing... ; state.parseCount: 24--------------------------
dev:5762022-09-24 17:11:23.384 debugParsed MultiChannelCmdEncap(bitAddress:false, command:5, commandClass:49, destinationEndPoint:2, parameter:[1, 68, 0, 0, 7, 195], res01:false, sourceEndPoint:2) to null
dev:5762022-09-24 17:11:23.382 debug((ftemp-state.lastReportedTemp).abs()>0.5): false
dev:5762022-09-24 17:11:23.380 debugstate.lastReportedTemp: 19.9
dev:5762022-09-24 17:11:23.378 debugftemp : 19.9
dev:5762022-09-24 17:11:23.376 debug(nowTime-state.lastReportTime > state.maxEventInterval) : false
dev:5762022-09-24 17:11:23.374 debugnowTime : 1664032283358
dev:5762022-09-24 17:11:23.372 debugstate.lastReportTime : 1664032282690
dev:5762022-09-24 17:11:23.370 debugstate.maxEventInterval : 13800000
dev:5762022-09-24 17:11:23.368 debugstate.forcedWakeUp : false
dev:5762022-09-24 17:11:23.366 debug'Date().getTime()' : 1664032283361
dev:5762022-09-24 17:11:23.365 debugdevice.displayName : Zwembad temperatuur
dev:5762022-09-24 17:11:23.363 debugcorrection : 8.392333974427402E-7
dev:5762022-09-24 17:11:23.361 debugcmd.scaledSensorValue : 19.87
dev:5762022-09-24 17:11:23.359 debugftemp : 19.9
dev:5762022-09-24 17:11:23.357 debugftempSign : 1.0
dev:5762022-09-24 17:11:23.355 debugCommand from endpoint 2: SensorMultilevelReport(precision:2, scale:0, sensorType:1, sensorValue:[0, 0, 7, 195], size:4, scaledSensorValue:19.87)
dev:5762022-09-24 17:11:23.351 debugParsing... 'zw device: 67, command: 600D, payload: 02 02 31 05 01 44 00 00 07 C3 , isMulticast: false'
dev:5762022-09-24 17:11:23.349 debug--------------------------Parsing... ; state.parseCount: 23--------------------------
dev:5762022-09-24 17:11:23.083 debugParsed WakeUpIntervalReport(nodeid:1, seconds:3600) to null
dev:5762022-09-24 17:11:23.081 debugWakeUpIntervalReport WakeUpIntervalReport(nodeid:1, seconds:3600)
dev:5762022-09-24 17:11:23.079 debugParsing... 'zw device: 67, command: 8406, payload: 00 0E 10 01 , isMulticast: false'
dev:5762022-09-24 17:11:23.077 debug--------------------------Parsing... ; state.parseCount: 22--------------------------
dev:5762022-09-24 17:11:22.723 debugParsed MultiChannelCmdEncap(bitAddress:false, command:5, commandClass:49, destinationEndPoint:2, parameter:[1, 68, 0, 0, 7, 195], res01:false, sourceEndPoint:2) to null
dev:5762022-09-24 17:11:22.721 debugtemperature Command : ['displayed':true, 'value':'19.9', 'isStateChange':true, 'linkText':Zwembad temperatuur, 'name':'temperature', 'unit':'C']
dev:5762022-09-24 17:11:22.719 debugmap.unit : C
dev:5762022-09-24 17:11:22.717 debugmap.value : 19.9
dev:5762022-09-24 17:11:22.715 debug((ftemp-state.lastReportedTemp).abs()>0.5): false
dev:5762022-09-24 17:11:22.713 debugstate.lastReportedTemp: 19.9
dev:5762022-09-24 17:11:22.711 debugftemp : 19.9
dev:5762022-09-24 17:11:22.709 debug(nowTime-state.lastReportTime > state.maxEventInterval) : false
dev:5762022-09-24 17:11:22.707 debugnowTime : 1664032282690
dev:5762022-09-24 17:11:22.705 debugstate.lastReportTime : 1664032270575
dev:5762022-09-24 17:11:22.703 debugstate.maxEventInterval : 13800000
dev:5762022-09-24 17:11:22.701 debugstate.forcedWakeUp : true
dev:5762022-09-24 17:11:22.699 debug'Date().getTime()' : 1664032282694
dev:5762022-09-24 17:11:22.697 debugdevice.displayName : Zwembad temperatuur
dev:5762022-09-24 17:11:22.696 debugcorrection : 8.392333974427402E-7
dev:5762022-09-24 17:11:22.694 debugcmd.scaledSensorValue : 19.87
dev:5762022-09-24 17:11:22.692 debugftemp : 19.9
dev:5762022-09-24 17:11:22.690 debugftempSign : 1.0
dev:5762022-09-24 17:11:22.688 debugCommand from endpoint 2: SensorMultilevelReport(precision:2, scale:0, sensorType:1, sensorValue:[0, 0, 7, 195], size:4, scaledSensorValue:19.87)
dev:5762022-09-24 17:11:22.683 debugParsing... 'zw device: 67, command: 600D, payload: 02 02 31 05 01 44 00 00 07 C3 , isMulticast: false'
dev:5762022-09-24 17:11:22.681 debug--------------------------Parsing... ; state.parseCount: 21--------------------------
dev:5762022-09-24 17:11:22.454 debugParsed WakeUpIntervalReport(nodeid:1, seconds:3600) to null
dev:5762022-09-24 17:11:22.453 debugWakeUpIntervalReport WakeUpIntervalReport(nodeid:1, seconds:3600)
dev:5762022-09-24 17:11:22.451 debugParsing... 'zw device: 67, command: 8406, payload: 00 0E 10 01 , isMulticast: false'
dev:5762022-09-24 17:11:22.449 debug--------------------------Parsing... ; state.parseCount: 20--------------------------
dev:5762022-09-24 17:11:21.852 debugParsed BasicSet(value:0) to [null, hubitat.device.HubMultiAction@1718b9c]
dev:5762022-09-24 17:11:21.850 debugcmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]
dev:5762022-09-24 17:11:21.848 debugwakeUpNoMoreInformation()
dev:5762022-09-24 17:11:21.846 debugopenClosed BasicSet(value:0)
dev:5762022-09-24 17:11:21.844 debugbasicv1.BasicSet BasicSet(value:0)
dev:5762022-09-24 17:11:21.842 debugParsing... 'zw device: 67, command: 2001, payload: 00 , isMulticast: false'
dev:5762022-09-24 17:11:21.840 debug--------------------------Parsing... ; state.parseCount: 19--------------------------
dev:5762022-09-24 17:11:17.792 debugParsed BasicSet(value:0) to [null, hubitat.device.HubMultiAction@d64f4]
dev:5762022-09-24 17:11:17.790 debugcmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]
dev:5762022-09-24 17:11:17.788 debugwakeUpNoMoreInformation()
dev:5762022-09-24 17:11:17.786 debugopenClosed BasicSet(value:0)
dev:5762022-09-24 17:11:17.784 debugbasicv1.BasicSet BasicSet(value:0)
dev:5762022-09-24 17:11:17.782 debugParsing... 'zw device: 67, command: 2001, payload: 00 , isMulticast: false'
dev:5762022-09-24 17:11:17.780 debug--------------------------Parsing... ; state.parseCount: 18--------------------------
dev:5762022-09-24 17:11:16.320 debugParsed BasicSet(value:0) to [null, hubitat.device.HubMultiAction@1f3bd26]
dev:5762022-09-24 17:11:16.318 debugcmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]
dev:5762022-09-24 17:11:16.316 debugwakeUpNoMoreInformation()
dev:5762022-09-24 17:11:16.314 debugopenClosed BasicSet(value:0)
dev:5762022-09-24 17:11:16.312 debugbasicv1.BasicSet BasicSet(value:0)
dev:5762022-09-24 17:11:16.310 debugParsing... 'zw device: 67, command: 2001, payload: 00 , isMulticast: false'
dev:5762022-09-24 17:11:16.308 debug--------------------------Parsing... ; state.parseCount: 17--------------------------
dev:5762022-09-24 17:11:16.247 debugParsed SensorBinaryReport(sensorValue:0) to [null, hubitat.device.HubMultiAction@1276afc]
dev:5762022-09-24 17:11:16.243 debugcmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]
dev:5762022-09-24 17:11:16.241 debugwakeUpNoMoreInformation()
dev:5762022-09-24 17:11:16.239 debugopenClosed SensorBinaryReport(sensorValue:0)
dev:5762022-09-24 17:11:16.237 debugsensorbinaryv1.SensorBinaryReport SensorBinaryReport(sensorValue:0)
dev:5762022-09-24 17:11:16.235 debugParsing... 'zw device: 67, command: 3003, payload: 00 , isMulticast: false'
dev:5762022-09-24 17:11:16.233 debug--------------------------Parsing... ; state.parseCount: 16--------------------------
dev:5762022-09-24 17:11:10.629 debugParsed MultiChannelCmdEncap(bitAddress:false, command:5, commandClass:49, destinationEndPoint:2, parameter:[1, 68, 0, 0, 7, 195], res01:false, sourceEndPoint:2) to null
dev:5762022-09-24 17:11:10.606 debugtemperature Command : ['displayed':true, 'value':'19.9', 'isStateChange':true, 'linkText':Zwembad temperatuur, 'name':'temperature', 'unit':'C']
dev:5762022-09-24 17:11:10.604 debugmap.unit : C
dev:5762022-09-24 17:11:10.602 debugmap.value : 19.9
dev:5762022-09-24 17:11:10.600 debug((ftemp-state.lastReportedTemp).abs()>0.5): true
dev:5762022-09-24 17:11:10.597 debugstate.lastReportedTemp: 20.4
dev:5762022-09-24 17:11:10.596 debugftemp : 19.9
dev:5762022-09-24 17:11:10.593 debug(nowTime-state.lastReportTime > state.maxEventInterval) : false
dev:5762022-09-24 17:11:10.591 debugnowTime : 1664032270575
dev:5762022-09-24 17:11:10.589 debugstate.lastReportTime : 1664029325411
dev:5762022-09-24 17:11:10.587 debugstate.maxEventInterval : 13800000
dev:5762022-09-24 17:11:10.586 debugstate.forcedWakeUp : true
dev:5762022-09-24 17:11:10.584 debug'Date().getTime()' : 1664032270579
dev:5762022-09-24 17:11:10.582 debugdevice.displayName : Zwembad temperatuur
dev:5762022-09-24 17:11:10.580 debugcorrection : 8.392333974427402E-7
dev:5762022-09-24 17:11:10.578 debugcmd.scaledSensorValue : 19.87
dev:5762022-09-24 17:11:10.576 debugftemp : 19.9
dev:5762022-09-24 17:11:10.574 debugftempSign : 1.0
dev:5762022-09-24 17:11:10.555 debugCommand from endpoint 2: SensorMultilevelReport(precision:2, scale:0, sensorType:1, sensorValue:[0, 0, 7, 195], size:4, scaledSensorValue:19.87)
dev:5762022-09-24 17:11:10.466 debugParsing... 'zw device: 67, command: 600D, payload: 02 02 31 05 01 44 00 00 07 C3 , isMulticast: false'
dev:5762022-09-24 17:11:10.463 debug--------------------------Parsing... ; state.parseCount: 15--------------------------
dev:5762022-09-24 17:11:09.315 debugParsed WakeUpIntervalReport(nodeid:1, seconds:3600) to null
dev:5762022-09-24 17:11:09.312 debugWakeUpIntervalReport WakeUpIntervalReport(nodeid:1, seconds:3600)
dev:5762022-09-24 17:11:09.289 debugParsing... 'zw device: 67, command: 8406, payload: 00 0E 10 01 , isMulticast: false'
dev:5762022-09-24 17:11:09.287 debug--------------------------Parsing... ; state.parseCount: 14--------------------------
dev:5762022-09-24 17:11:09.113 debugParsed BasicSet(value:255) to [null, hubitat.device.HubMultiAction@15487af]
dev:5762022-09-24 17:11:09.111 debugParsed SensorBinaryReport(sensorValue:255) to [null, hubitat.device.HubMultiAction@37d19d]
dev:5762022-09-24 17:11:09.109 debugcmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]
dev:5762022-09-24 17:11:09.106 debugcmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]
dev:5762022-09-24 17:11:09.104 debugwakeUpNoMoreInformation()
dev:5762022-09-24 17:11:09.102 debugwakeUpNoMoreInformation()
dev:5762022-09-24 17:11:09.087 debugopenClosed BasicSet(value:255)
dev:5762022-09-24 17:11:09.085 debugbasicv1.BasicSet BasicSet(value:255)
dev:5762022-09-24 17:11:09.078 debugParsing... 'zw device: 67, command: 2001, payload: FF , isMulticast: false'
dev:5762022-09-24 17:11:09.076 debug--------------------------Parsing... ; state.parseCount: 13--------------------------
dev:5762022-09-24 17:11:09.030 debugopenClosed SensorBinaryReport(sensorValue:255)
dev:5762022-09-24 17:11:09.025 debugsensorbinaryv1.SensorBinaryReport SensorBinaryReport(sensorValue:255)
dev:5762022-09-24 17:11:09.006 debugParsing... 'zw device: 67, command: 3003, payload: FF , isMulticast: false'
dev:5762022-09-24 17:11:09.004 debug--------------------------Parsing... ; state.parseCount: 13--------------------------
dev:5762022-09-24 16:22:05.548 debugParsed MultiChannelCmdEncap(bitAddress:false, command:5, commandClass:49, destinationEndPoint:2, parameter:[1, 68, 0, 0, 7, 245], res01:false, sourceEndPoint:2) to null
dev:5762022-09-24 16:22:05.444 debugtemperature Command : ['displayed':true, 'value':'20.4', 'isStateChange':true, 'linkText':Zwembad temperatuur, 'name':'temperature', 'unit':'C']
dev:5762022-09-24 16:22:05.442 debugmap.unit : C
dev:5762022-09-24 16:22:05.440 debugmap.value : 20.4
dev:5762022-09-24 16:22:05.438 debug((ftemp-state.lastReportedTemp).abs()>0.5): true
dev:5762022-09-24 16:22:05.435 debugstate.lastReportedTemp: 18.3
dev:5762022-09-24 16:22:05.433 debugftemp : 20.4
dev:5762022-09-24 16:22:05.431 debug(nowTime-state.lastReportTime > state.maxEventInterval) : false
dev:5762022-09-24 16:22:05.429 debugnowTime : 1664029325411
dev:5762022-09-24 16:22:05.427 debugstate.lastReportTime : 1664025770790
dev:5762022-09-24 16:22:05.425 debugstate.maxEventInterval : 13800000
dev:5762022-09-24 16:22:05.423 debugstate.forcedWakeUp : false
dev:5762022-09-24 16:22:05.421 debug'Date().getTime()' : 1664029325415
dev:5762022-09-24 16:22:05.419 debugdevice.displayName : Zwembad temperatuur
dev:5762022-09-24 16:22:05.416 debugcorrection : 8.392333974427402E-7
dev:5762022-09-24 16:22:05.414 debugcmd.scaledSensorValue : 20.37
dev:5762022-09-24 16:22:05.412 debugftemp : 20.4
dev:5762022-09-24 16:22:05.410 debugftempSign : 1.0
dev:5762022-09-24 16:22:05.391 debugCommand from endpoint 2: SensorMultilevelReport(precision:2, scale:0, sensorType:1, sensorValue:[0, 0, 7, 245], size:4, scaledSensorValue:20.37)
dev:5762022-09-24 16:22:05.342 debugParsing... 'zw device: 67, command: 600D, payload: 02 02 31 05 01 44 00 00 07 F5 , isMulticast: false'
dev:5762022-09-24 16:22:05.339 debug--------------------------Parsing... ; state.parseCount: 12--------------------------
dev:5762022-09-24 16:22:04.157 debugParsed WakeUpIntervalReport(nodeid:1, seconds:3600) to null
dev:5762022-09-24 16:22:04.155 debugWakeUpIntervalReport WakeUpIntervalReport(nodeid:1, seconds:3600)
dev:5762022-09-24 16:22:04.131 debugParsing... 'zw device: 67, command: 8406, payload: 00 0E 10 01 , isMulticast: false'
dev:5762022-09-24 16:22:04.129 debug--------------------------Parsing... ; state.parseCount: 11--------------------------
dev:5762022-09-24 16:22:03.986 debugParsed WakeUpNotification() to [null, hubitat.device.HubMultiAction@286daa]
dev:5762022-09-24 16:22:03.982 debugcmdBlock : [8405, delay 1200, 600D02023104, delay 1200, 8408, delay 2000]
dev:5762022-09-24 16:22:03.980 debugwakeUpNoMoreInformation()
dev:5762022-09-24 16:22:03.910 debugwakeupv2.WakeUpNotification WakeUpNotification()
dev:5762022-09-24 16:22:03.896 debugParsing... 'zw device: 67, command: 8407, payload: , isMulticast: false'
dev:5762022-09-24 16:22:03.894 debug--------------------------Parsing... ; state.parseCount: 10--------------------------
dev:5762022-09-24 15:22:51.813 debugParsed MultiChannelCmdEncap(bitAddress:false, command:5, commandClass:49, destinationEndPoint:2, parameter:[1, 68, 0, 0, 7, 39], res01:false, sourceEndPoint:2) to null
1 Like

Thanks for testing...

Yes, both reports means the same thing but they have different purposes. I think the basic set is sent to association group 1 to directly control/warn other devices (e.g. a sensor controlling a light).

From reading the code comments, it seems that some reports might sometimes be missing so having some redundancy might be good. You could always change the code to only update the open/close state if it changed from it's last value...

[EDIT] You could also try to remove the hub from association group 1

1 Like

Download the Hubitat app