Has anyone actually got the Qubino Thermostat (ZMNHID3) working successfully?

I’ve got it wired to 120 and am using the handler that thesmartesthouse points to. First thing I see is that there is nothing in that handler to use anything with the sensors on it, ie putting a door sensor on one of the contacts, even after you “enable” it.

To be perfectly honest, it seems like a hot mess. Anyone have any recommendations? I’d like to use the flush 1d relay handler, but it doesn’t quite seem to work.

I’ll answer my own question…the handler linked from thesmartesthouse and posted in these forums does not work.

Have you contacted The Smartest House support?

Tagging @TheSmartestHouse

Only to tell them the handler from GOAP doesn’t work. It throws errors in the IDE. What handler are you using for it?

Qubino just released a new version of the device (the On Off Thermostat 2) and it’s supposed to be officially integrated with ST so they no longer maintain the handlers for the previous versions unfortunately. We’re doing our best to have custom handlers created anyway to get access to advanced features but it’s hard to say how far we can get here.

I picked one of these up the other day to use only as a temperature sensor on an outdoor boiler pipe so I know when I have to go out and put more wood in the boiler. With the device handler from here: https://www.thesmartesthouse.com/collections/thermostats-1/products/qubino-z-wave-plus-on-off-thermostat-module-zmnhid3 I am having trouble as well. The device pairs just fine however the temperature from the does not update. I have found if you unplug the device for a while or change the device handler to a generic device handler and back the reported temperature will update but it then it does not update again. If anyone happens to figure out how to get the temperature to report in every few minutes I would appreciate it.

Try this…

Find this routine:

def zwaveEvent(physicalgraph.zwave.commands.sensormultilevelv5.SensorMultilevelReport cmd){
	log.debug "Qubino Flush On Off Thermostat:physicalgraph.zwave.commands.sensormultilevelv5.SensorMultilevelReport"
	def resultEvents = []
	resultEvents << createEvent(name:"temperature", value: convertDegrees(location.temperatureScale,cmd), unit:"°"+location.temperatureScale, descriptionText: "Temperature: "+convertDegrees(location.temperatureScale,cmd)+"°"+location.temperatureScale)
	return resultEvents
}

And replace it with this:

def zwaveEvent(physicalgraph.zwave.commands.sensormultilevelv5.SensorMultilevelReport cmd){
convertDegrees(location.temperatureScale,cmd), unit:"°"+location.temperatureScale, descriptionText: "Temperature: "+convertDegrees(location.temperatureScale,cmd)+"°"+location.temperatureScale)
	def map = [:]
	switch (cmd.sensorType) {
	case 1:
		map.name = "temperature"
		def cmdScale = cmd.scale == 1 ? "F" : "C"
		map.value = convertDegrees(location.temperatureScale,cmd)
		map.unit = location.temperatureScale
		log.debug "Temperature Report: $map.value"
	break
	default:
		map.descriptionText = cmd.toString()
	break
  }
	[createEvent(map)]
}

Now, find this routine:

def zwaveEvent(physicalgraph.zwave.commands.multichannelv3.MultiChannelCmdEncap cmd){
	log.debug "Qubino Flush On Off Thermostat:physicalgraph.zwave.commands.multichannelv3.MultiChannelCmdEncap"
	def encapsulatedCommand = cmd.encapsulatedCommand()
	//log.debug ("Command from endpoint ${cmd.sourceEndPoint}: ${encapsulatedCommand}")
	if (encapsulatedCommand) {
			return zwaveEvent(encapsulatedCommand, cmd)
	}
}

And replace it with this:

def zwaveEvent(physicalgraph.zwave.commands.multichannelv3.MultiChannelCmdEncap cmd){
	log.debug "Qubino Flush On Off Thermostat:physicalgraph.zwave.commands.multichannelv3.MultiChannelCmdEncap"
    def formatCmd = ([cmd.commandClass, cmd.command] + cmd.parameter).collect{ String.format("%02X", it) }.join()
	def encapsulatedCommand = cmd.encapsulatedCommand([0x31: 5, 0x32: 3, 0x25: 1, 0x20: 1, 0x30: 1])
	if (encapsulatedCommand && cmd.sourceEndPoint != 3) {
			return zwaveEvent(encapsulatedCommand)
	}
}

@Madpup - Please let me know if that works for you.

I hope this helps someone out, but my experience is as follows:

I purchased the Qubino Flush 1D Thermostat and just could not get it to work despite emails to the supplier, Qubino and SmartThings Support. The device just would not report temperature changes without being manually polled from the classic app.

I have since returned the device and have replaced it with the new Qubino Flush On/Off Thermostat 2 (ZMNKID3). As alluded to above by @TheSmartestHouse , I can confirm that SmartThings has native support for it with no additional DH required (although Qubino doesn’t yet advertise this themselves on their website compatibility list).

The Classic app finds the device right off the bat and identifies it correctly with all the correct parameters. And it works exactly as expected. I have it integrating with homebridge and homekit and was up and running within 10 minutes. It doesn’t have the dry contacts that the Flush 1D has, but it does have energy monitoring (momentary and cumulative), which is a bonus. My application doesn’t require volt free or dry contacts anyway, so I am perfectly happy. The one thing I will say is the hysteresis isn’t customizable. it seems to be around 1°C from my limited testing so far.

1 Like

doncaruana,
When trying to update the code, I get the following error. Can you help with this?

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
script_dth_metadata_aecf2f79_a482_4856_9f0e_1b58d9c45a54: 1052: expecting ‘}’, found ‘,’ @ line 1052, column 46.
location.temperatureScale,cmd), unit:“°”
^

1 error

Hi DonCaruana,

Thank you for you help however I also received the error below:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
script_dth_metadata_0eb09ca5_1e37_4c5b_a6bc_cf95495e418a: 1052: expecting ‘}’, found ‘,’ @ line 1052, column 46.
location.temperatureScale,cmd), unit:“°”
^

1 error

The Handler I used is the following Git hub QubinoFlushOnOffThermostat_DeviceHandler_v0_9.groovy

You have to set the lifeline in the app. Firstly you have to setup the Z-wave tweaker follow this link

Once installed you have to log in in the SmartThings Ide from your pc or tablet (graph-eu01-euwest1.api.smartthings.com)

From there set the tweaker on the thermostat, go to the app there go to settings and set the Association Group ID to 1 and association group members to 01 save there. Go back to the SmartThings IDE and change the the thermostat back to its original state.

My bad @Madpup and @Brian_Peterson!!

I’m so sorry - not sure how that convertdegrees line up top got left in there.

Should be this:

def zwaveEvent(physicalgraph.zwave.commands.sensormultilevelv5.SensorMultilevelReport cmd){
	log.debug "Qubino Flush On Off Thermostat:physicalgraph.zwave.commands.sensormultilevelv5.SensorMultilevelReport"
	def resultEvents = []
	resultEvents << createEvent(name:"temperature", value: convertDegrees(location.temperatureScale,cmd), unit:"°"+location.temperatureScale, descriptionText: "Temperature: "+convertDegrees(location.temperatureScale,cmd)+"°"+location.temperatureScale)
	return resultEvents
}

And replace it with this:

def zwaveEvent(physicalgraph.zwave.commands.sensormultilevelv5.SensorMultilevelReport cmd){
	def map = [:]
	switch (cmd.sensorType) {
	case 1:
		map.name = "temperature"
		def cmdScale = cmd.scale == 1 ? "F" : "C"
		map.value = convertDegrees(location.temperatureScale,cmd)
		map.unit = location.temperatureScale
		log.debug "Temperature Report: $map.value"
	break
	default:
		map.descriptionText = cmd.toString()
	break
  }
	[createEvent(map)]
}

I wanted to share with everyone that with some effort this device is now working for me. You have to do a few things:

  1. get the device handler from here https://raw.githubusercontent.com/qubinoDeveloper/SmartThings/master/DeviceHandlers/Qubino/FlushOnOffThermostat/QubinoFlushOnOffThermostat_DeviceHandler_v0_9.groovy
  2. install that device handler and then make the changes listed above in the two posts by @doncaruana (thank you for that btw!)
  3. apply that device handler with the changes to the ZMNHID3
  4. get Z-wave tweaker from here ( here
  5. apply Z-wave tweaker to your device
  6. go to the setting of the ZMNHID3 in the classic app and add an Association Group ID:1 and an Association Group Members:01
  7. go back to the IDE and change your device handler from Z-Wave tweaker back to Qubino On Off Thermostat

Mine is now reporting temperature any time it changes by 1 degree within a second or two (it does not poll based on time it polls only when the temperature changes by 1 degree F). I am also not getting any errors in live logging after making the code replacements listed above by @doncaruana.

It does not automatically update the temperature only I do refresh.
Is there a way to fix this?

Hi @yahav . If you follow the instructions I posted above the temperature will update automatically. One thing I did notice is that if the temperature of the probe is not changing then you won’t see it polling. It only reports in with a temperature change when the temperature actually changes.

2 Likes

tank you its work

Hi ,
In the name of @yahav. Once a day the module need power OFF (220V off ) and power ON, since the temperature stop update. After the power recycle , everything is back to normal. Still , the module shouldn’t work like that. Can you find a solution to that ? What I’m doing wrong ? Do you need more information ? PM @YAHAV if you want to test the DTH in order to check corrected everything as you recommended .

It works!!! :slight_smile:

I just had the same issue. Everything was working fine with the modification proposed by doncaruana. When I woke up this morning, I realized that the temperature was stall since the night before and it wasn’t reflected the reality anymore. I had had to reconnect the power to solve the issue! It sucks!

1 Like