Z-Wave Devices w/ Missing or Incomplete Drivers

Here you go

1 Like

@bill.d see PM

1 Like

Hey Bryan,

Pandora's Box here?!?!?

I would love to see an Enerwave ZW15RM/ZW20RM Driver that has the full parameter functionality. Note that the ZW15RM is the 15A Version of the Receptacle and the ZW20RM is the 20A Version. Also, there is another Z-Wave Plus version of this device as well which probably needs a different driver. If you are going to make a bunch more driver which I thank you very much for, can you consider something that I have needed in drivers since testing Hubitat? I would like to have an option for resolution for values. Some people like whole numbers only for Watts for example, I would like at least 10ths or 2-3 decimals or the max resolution of the values. I don't like that it is the developer that writes the driver that picks which way they want to represent those values. What do you think?

Documentation for device here:

Enerwave - ZW15RM - Installation Instructions

Thanks so much for everything you do!

-Travis

2 Likes

Nah.. Looking for a challenge anyway ..

Looking at the docs

A lot of this is based on established standards and / or what the device reports.. Not always a "decision" on the dev's part..

2 Likes

FWIW the smartthings DTH works just fine in hubitat after some simple changes to port it over. Iā€™ve been using one for about six months.

/**
 *  Copyright 2017 SmartThings
 *
 *  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.
 *
 *  Everspring ST815 Illuminance Sensor
 *
 *  Author: SmartThings
 *  Date: 2017-3-4
 */

metadata {
	definition (name: "Everspring Illuminance Sensor", namespace: "smartthings", author: "SmartThings") {
		capability "Illuminance Measurement"
		capability "Battery"
		capability "Configuration"
		capability "Sensor"
		capability "Health Check"

		fingerprint mfr:"0060", prod:"0007", model:"0001"
	}

}


def updated() {
	state.configured = false
}

def parse(String description) {
	def result = []

	def cmd = zwave.parse(description, [0x20: 1, 0x31: 2, 0x70: 1, 0x71: 1, 0x80: 1, 0x84: 2, 0x85: 2])

	if (cmd) {
		result = zwaveEvent(cmd)
	}

	if (result instanceof List) {
		log.debug "Parsed '$description' to ${result.collect { it.respondsTo("toHubAction") ? it.toHubAction() : it }}"
	} else {
		log.debug "Parsed '$description' to ${result}"
	}
	return result
}

def zwaveEvent(hubitat.zwave.commands.wakeupv2.WakeUpNotification cmd) {
	def result = [
		createEvent(descriptionText: "${device.displayName} woke up", isStateChange: false)
	]
	if (state.configured) {
		result << response(zwave.batteryV1.batteryGet())
	} else {
		result << response(configure())
	}
	return result
}

def zwaveEvent(hubitat.zwave.commands.alarmv1.AlarmReport cmd) {
	if (cmd.alarmType == 1 && cmd.alarmType == 0xFF) {
		return createEvent(descriptionText: "${device.displayName} battery is low", isStateChange: true)
	} else if (cmd.alarmType == 2 && cmd.alarmLevel == 1) {
		return createEvent(descriptionText: "${device.displayName} powered up", isStateChange: false)
	}
}

def zwaveEvent(hubitat.zwave.commands.sensormultilevelv2.SensorMultilevelReport cmd) {

	def map = [:]
	switch( cmd.sensorType ) {
		case 3:
			// luminance
			map.value = cmd.scaledSensorValue.toInteger().toString()
			map.unit = "lux"
			map.name = "illuminance"
			break;
	}
	
	return createEvent(map)
}

def zwaveEvent(hubitat.zwave.commands.batteryv1.BatteryReport cmd) {
	def map = [ name: "battery", unit: "%" ]
	if (cmd.batteryLevel == 0xFF) {
		map.value = 1
		map.descriptionText = "${device.displayName} has a low battery"
		map.isStateChange = true
	} else {
		map.value = cmd.batteryLevel
	}

	def response_cmds  = []
	if (!currentTemperature) {
		response_cmds << zwave.sensorMultilevelV2.sensorMultilevelGet().format()
		response_cmds << "delay 1000"
	}
	response_cmds << zwave.wakeUpV1.wakeUpNoMoreInformation().format()

	return [createEvent(map), response(response_cmds)]
}

def zwaveEvent(hubitat.zwave.Command cmd) {
	log.debug "Unhandled: ${cmd.toString()}"
	return [:]
}

def configure() {
	state.configured = true
	sendEvent(name: "checkInterval", value: 8 * 60 * 60 + 2 * 60, displayed: false, data: [protocol: "zwave", hubHardwareId: device.hub.hardwareID])
	delayBetween([
		// Auto report time interval in minutes
		zwave.configurationV1.configurationSet(parameterNumber: 5, size: 2, scaledConfigurationValue: 20).format(),

		// Auto report lux change threshold
		zwave.configurationV1.configurationSet(parameterNumber: 6, size: 2, scaledConfigurationValue: 30).format(),

		// Get battery ā€“ report triggers WakeUpNMI
		zwave.batteryV1.batteryGet().format()
	]) 
}
2 Likes

Now there is a non-ported HE original version :man_shrugging:

4 Likes

Sorry was at work for most of the day today. Couldā€™ve saved you some time, though it looks like it didnā€™t take you much :rofl:.

2 Likes

It was pretty quick..

2 Likes

How about an Inovelli LZW30 driver that exposes the startNotification function?

1 Like

I already bugged Mike in another thread, and know he has his hands full
Thanks Bryan

1 Like

@bcopeland hereā€™s one for you.

The Remotec ZXT-120 is kind of an oddball device and a little out of date, but it still does its job well enough: itā€™s an IR to z-wave bridge for mini-split and window a/cā€™s. Several parameters that can be set, such as a/c manufacturer for IR codes, and even has a learning mode for brands that it doesnā€™t already have IR codes for.

There were a couple community DTHs for ST, and even a couple here too. I tried porting one of the ST handlers myself, and it worked for the most part, but it was a PITA to change some parameters (good thing for the basic z-wave tweaker), and sometimes it seems to randomly ignore commands from the hub with a z-wave message in the logs that I donā€™t understand :upside_down_face:.

@aaiyar sent one of his to @mike.maxwell last year but Iā€™m not sure if a built-in driver will end up being released.

Think you can release one before Mike does, without even having the device to test on? :sunglasses:

Edit: I could send you one of mine if needed. But itā€™s gonna get warm here soon so Iā€™ll need it back :hot_face:.

3 Likes

Bryan,

I see you released some Zooz drivers. Did you have any thoughts to doing some drivers for the Zen 22, 23, and 24?

With the newer firmwares not all the options are exposed unless you use the Basic Zwave tool. Also, with the Zen23, I am getting an error using the built-in (stock Hubitat) driver when I try to do a configure or set parameters. It looks like it is trying to write information to an incorrect parameter or something.

1 Like

I'll look into it..

1 Like

Taking a look..

2 Likes

Interesting device.. It emulates a z-wave thermostat

1 Like

My thermostat is a Trane XL850. I'm pretty much locked into it because it's proprietary. I would love to switch to Ecobee, but I digress. I am new to the Zwave world (only have 5 devices so far) so I don't know much about it, but apparently the thermostat has a built-in Nexia Hub.

I actually have the thermostat added to HE, but it just shows as a device and doesn't seem to do much or respond to anything. I tried the Generic Z-Wave Thermostat driver with no success. This is what shows in the data field for the device in case that's helpful.

  • deviceType: 21560
  • inClusters: 0x86,0x98,0x21,0x72
  • deviceId: 13616
  • manufacturer: 139

fingerprint mfr:"008B", prod:"5438", deviceId:"3530", inClusters:"0x86,0x98,0x21,0x72"

@bcopeland:
Had a thought about a driver that could use a little work if possible. Then Zen31 RGBW LED Strip controller. The piece that has been bothering me deals with the light effects the controller is capable of (the fading, storm, etc...). The biggest issue is that if an effect was in operation when the device is turned off, it would be nice if it could be set to come on again when the device is turned on. As it stands now, when you turn the Zen31 back on, it comes back to the last color that was in operation at the time.

So... if possible, can you add a preference to "Restart Light Effects With Power On"? Since there is a "Disabled" light effect I would think it is possible to just say something like the below in the On section:
if( state.LightEffect != "0" ){
setEffect( state.LightEffect )
}

On a related note... Do you know if it is possible to add additional light effects in (the code is integrated, not visible, so I cannot check myself) or are they built into the controller itself? I made a fading effect in code (it worked but I bet it would be considered pretty sloppy) for a ZigBee bulb for Halloween... but I have not had much chance to figure out Z-Wave yet.

1 Like

Hey Bryan,

I hope all is well. Any idea if you are interested in taking this one on? I have about 10 of them in production right now.

Thanks again for the consideration.

-Travis

Hey Bryan,

Another one, surprisingly not on your To-Do list...

Zooz ZEN15 Power Switch

No option to disable the physical button in the latest firmware via the Built-In Device Driver. I use these to monitor my Fridge/Freezer and another chest Freezer. The power button can be disabled but isnā€™t in the device driver at this time.

Missing Parameter 30

-Travis