[SOLVED] Honeywell Zwave Thermostat in OpenHab2

Transformation Services looks great!

I’ll see about turning on the debug logging.

Thanks

Transformation is what I’d like to do but I can’t seem to find where to put the transformation. The examples I’ve found are done in rules- I’m just trying to display the status of the thing. Right now I have all the states coming in as numbers. if I change them to strings then they display nothing at all. It seems like it should be something really simple but the lightbulb isn’t on just yet.

The map files go to your /transform folder.
If you need to manipulate the state, put your map call in your channel definition, if you need to manipulate the display name, put the map call in your label definition and change the format to string. Example:

Contact Garage_CL "Garage [MAP(garage.map):%s]" <contact> (gRestore) { channel ...

garage.map:

1=is closed
2=is open
3=is moving

But first make sure your thermostat setpoint item (if you are using this) is working, because with transformations things can get tricky. There should be no need to use transforming to make your thermostat working …

Seems like I a have a java problem with that setpoint. I had reinitialized the unit and after that attempted to make a change from 75 to 70 (degrees F in cooling) and captured the zwave log:

12:36:42.909 [DEBUG] [nding.zwave.handler.ZWaveThingHandler] - NODE 17: Updating channel state zwave:device:3e121ab5:node17:switch_binary to ON [OnOffType]
12:36:42.909 [DEBUG] [l.serialmessage.ZWaveCommandProcessor] - Checking transaction complete: Sent Message: class=SendData[0x13], type=Request[0x00], priority=Get, dest=17, callback=21, payload=11 02 25 02
12:36:42.914 [DEBUG] [l.serialmessage.ZWaveCommandProcessor] - Checking transaction complete: Recv Message: class=ApplicationCommandHandler[0x04], type=Request[0x00], priority=High, dest=255, callback=0, payload=00 11 03 25 03 FF
12:36:42.914 [DEBUG] [l.serialmessage.ZWaveCommandProcessor] - Checking transaction complete: class=ApplicationCommandHandler, callback id=21, expected=ApplicationCommandHandler, cancelled=false        transaction complete!
12:36:42.915 [DEBUG] [ave.internal.protocol.ZWaveController] - Notifying event listeners: ZWaveTransactionCompletedEvent
12:36:42.915 [DEBUG] [nding.zwave.handler.ZWaveThingHandler] - NODE 17: Got an event from Z-Wave network: ZWaveTransactionCompletedEvent
12:36:42.916 [DEBUG] [tocol.ZWaveController$ZWaveSendThread] - NODE 17: Response processed after 69ms/4990ms.
12:37:10.784 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'ZWaveNode25TH8320ZWVisionPROZWaveTouchscreenProgrammableThermostat_SetpointCooling' received command 70 ?
12:37:10.787 [INFO ] [enhab.binding.upb.internal.UPBBinding] - UPB binding starting up...
12:37:10.785 [DEBUG] [nding.zwave.handler.ZWaveThingHandler] - NODE 25: Command received zwave:device:3e121ab5:node25:thermostat_setpoint_cooling --> 70 ?
12:37:10.793 [INFO ] [smarthome.event.ItemStateChangedEvent] - ZWaveNode25TH8320ZWVisionPROZWaveTouchscreenProgrammableThermostat_SetpointCooling changed from 75.0 ? to 70 ?
12:37:10.798 [ERROR] [nding.zwave.handler.ZWaveThingHandler] - NODE 25: Command received with no implementation (QuantityType).
12:37:10.893 [ERROR] [org.openhab.binding.upb              ] - [org.openhab.binding.upb.binding(211)] The activate method has thrown an exception
java.lang.RuntimeException: Failed to open serial port.
        at org.openhab.binding.upb.internal.UPBBinding.activate(UPBBinding.java:81) [483:org.openhab.binding.upb:1.12.0]
        at sun.reflect.GeneratedMethodAccessor68.invoke(Unknown Source) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:?]
        at org.apache.felix.scr.impl.inject.BaseMethod.invokeMethod(BaseMethod.java:229) [39:org.apache.felix.scr:2.0.12]
        at org.apache.felix.scr.impl.inject.BaseMethod.access$500(BaseMethod.java:39) [39:org.apache.felix.scr:2.0.12]
        at org.apache.felix.scr.impl.inject.BaseMethod$Resolved.invoke(BaseMethod.java:650) [39:org.apache.felix.scr:2.0.12]
        at org.apache.felix.scr.impl.inject.BaseMethod.invoke(BaseMethod.java:506) [39:org.apache.felix.scr:2.0.12]
        at org.apache.felix.scr.impl.inject.ActivateMethod.invoke(ActivateMethod.java:307) [39:org.apache.felix.scr:2.0.12]
        at org.apache.felix.scr.impl.inject.ActivateMethod.invoke(ActivateMethod.java:299) [39:org.apache.felix.scr:2.0.12]
        at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:298) [39:org.apache.felix.scr:2.0.12]
        at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:109) [39:org.apache.felix.scr:2.0.12]
        at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:906) [39:org.apache.felix.scr:2.0.12]
        at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:879) [39:org.apache.felix.scr:2.0.12]
        at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:823) [39:org.apache.felix.scr:2.0.12]
        at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$1.run(ServiceFactoryUse.java:212) [?:?]
        at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:210) [?:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:111) [?:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:45) [?:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:508) [?:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461) [?:?]
        at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:624) [?:?]
        at org.apache.felix.eventadmin.impl.handler.EventHandlerProxy.obtain(EventHandlerProxy.java:286) [3:org.apache.karaf.services.eventadmin:4.1.5]
        at org.apache.felix.eventadmin.impl.handler.EventHandlerProxy.sendEvent(EventHandlerProxy.java:407) [3:org.apache.karaf.services.eventadmin:4.1.5]
        at org.apache.felix.eventadmin.impl.tasks.HandlerTask.runWithoutBlacklistTiming(HandlerTask.java:82) [3:org.apache.karaf.services.eventadmin:4.1.5]
        at org.apache.felix.eventadmin.impl.tasks.SyncDeliverTasks.execute(SyncDeliverTasks.java:104) [3:org.apache.karaf.services.eventadmin:4.1.5]
        at org.apache.felix.eventadmin.impl.tasks.AsyncDeliverTasks$TaskExecuter.run(AsyncDeliverTasks.java:166) [3:org.apache.karaf.services.eventadmin:4.1.5]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:?]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:?]
        at java.lang.Thread.run(Unknown Source) [?:?]
Caused by: java.lang.RuntimeException: Port does not exist
        at org.openhab.binding.upb.internal.UPBBinding.openSerialPort(UPBBinding.java:234) ~[?:?]
        at org.openhab.binding.upb.internal.UPBBinding.activate(UPBBinding.java:77) ~[?:?]
        ... 32 more
Caused by: gnu.io.NoSuchPortException
        at gnu.io.CommPortIdentifier.getPortIdentifier(CommPortIdentifier.java:273) ~[?:?]
        at org.openhab.binding.upb.internal.UPBBinding.openSerialPort(UPBBinding.java:232) ~[?:?]
        at org.openhab.binding.upb.internal.UPBBinding.activate(UPBBinding.java:77) ~[?:?]
        ... 32 more
12:37:10.904 [WARN ] [org.openhab.binding.upb              ] - FrameworkEvent WARNING - org.openhab.binding.upb
org.osgi.framework.ServiceException: org.apache.felix.scr.impl.manager.SingleComponentManager.getService() returned a null service object
        at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:232) [?:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:111) [?:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:45) [?:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:508) [?:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461) [?:?]
        at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:624) [?:?]
        at org.apache.felix.eventadmin.impl.handler.EventHandlerProxy.obtain(EventHandlerProxy.java:286) [3:org.apache.karaf.services.eventadmin:4.1.5]
        at org.apache.felix.eventadmin.impl.handler.EventHandlerProxy.sendEvent(EventHandlerProxy.java:407) [3:org.apache.karaf.services.eventadmin:4.1.5]
        at org.apache.felix.eventadmin.impl.tasks.HandlerTask.runWithoutBlacklistTiming(HandlerTask.java:82) [3:org.apache.karaf.services.eventadmin:4.1.5]
        at org.apache.felix.eventadmin.impl.tasks.SyncDeliverTasks.execute(SyncDeliverTasks.java:104) [3:org.apache.karaf.services.eventadmin:4.1.5]
        at org.apache.felix.eventadmin.impl.tasks.AsyncDeliverTasks$TaskExecuter.run(AsyncDeliverTasks.java:166) [3:org.apache.karaf.services.eventadmin:4.1.5]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:?]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:?]
        at java.lang.Thread.run(Unknown Source) [?:?]
12:37:57.725 [DEBUG] [ZWaveSerialHandler$ZWaveReceiveThread] - Receive Message = 01 0C 00 04 00 19 06 31 05 01 2A 02 EE 1B
12:37:57.729 [DEBUG] [ave.internal.protocol.ZWaveController] - Receive queue TAKE: Length=0
12:37:57.731 [DEBUG] [zwave.internal.protocol.SerialMessage] - Assembled message buffer = 01 0C 00 04 00 19 06 31 05 01 2A 02 EE 1B
12:37:57.731 [DEBUG] [ave.internal.protocol.ZWaveController] - Process Message = 01 0C 00 04 00 19 06 31 05 01 2A 02 EE 1B
12:37:57.732 [DEBUG] [ave.internal.protocol.ZWaveController] - Message: class=ApplicationCommandHandler[0x04], type=Request[0x00], priority=High, dest=255, callback=0, payload=00 19 06 31 05 01 2A 02 EE
12:37:57.732 [DEBUG] [essage.ApplicationCommandMessageClass] - NODE 25: Application Command Request (ALIVE:DONE)
12:37:57.733 [DEBUG] [ialization.ZWaveNodeInitStageAdvancer] - NODE 25: Starting initialisation from DONE
12:37:57.733 [DEBUG] [essage.ApplicationCommandMessageClass] - NODE 25: Incoming command class SENSOR_MULTILEVEL
12:37:57.734 [DEBUG] [ass.ZWaveMultiLevelSensorCommandClass] - NODE 25: Received COMMAND_CLASS_SENSOR_MULTILEVEL command V3
12:37:57.734 [DEBUG] [ass.ZWaveMultiLevelSensorCommandClass] - NODE 25: Sensor Multi Level REPORT received
12:37:57.735 [DEBUG] [ass.ZWaveMultiLevelSensorCommandClass] - NODE 25: Sensor Type = Temperature(1), Scale = 1
12:37:57.735 [DEBUG] [ass.ZWaveMultiLevelSensorCommandClass] - NODE 25: Sensor Value = 75
12:37:57.736 [DEBUG] [ave.internal.protocol.ZWaveController] - Notifying event listeners: ZWaveMultiLevelSensorValueEvent
12:37:57.736 [DEBUG] [nding.zwave.handler.ZWaveThingHandler] - NODE 25: Got an event from Z-Wave network: ZWaveMultiLevelSensorValueEvent
12:37:57.737 [DEBUG] [nding.zwave.handler.ZWaveThingHandler] - NODE 25: Got a value event from Z-Wave network, endpoint = 0, command class = SENSOR_MULTILEVEL, value = 75
12:37:57.737 [DEBUG] [verter.ZWaveMultiLevelSensorConverter] - NODE 25: Sensor is reporting scale 1, requiring conversion to 1. Value is now 75.
12:37:57.737 [DEBUG] [.converter.ZWaveCommandClassConverter] - Converted temperature from 75F to 75F
12:37:57.740 [DEBUG] [nding.zwave.handler.ZWaveThingHandler] - NODE 25: Updating channel state zwave:device:3e121ab5:node25:sensor_temperature to 75 [DecimalType]
12:37:57.747 [DEBUG] [essage.ApplicationCommandMessageClass] - NODE 17: Transaction not completed: node address inconsistent.  lastSent=17, incoming=255
12:37:57.747 [INFO ] [smarthome.event.ItemStateChangedEvent] - ZWaveNode25TH8320ZWVisionPROZWaveTouchscreenProgrammableThermostat_SensorTemperature changed from 73.0 ? to 75.0 ?
12:38:50.053 [DEBUG] [nding.zwave.handler.ZWaveThingHandler] - NODE 24: Polling...
12:38:50.059 [DEBUG] [nding.zwave.handler.ZWaveThingHandler] - NODE 24: Polling deferred until initialisation complete
12:38:50.064 [DEBUG] [nding.zwave.handler.ZWaveThingHandler] - NODE 14: Polling...
12:38:50.064 [DEBUG] [nding.zwave.handler.ZWaveThingHandler] - NODE 14: Polling deferred until initialisation complete
12:38:50.085 [DEBUG] [nding.zwave.handler.ZWaveThingHandler] - NODE 7: Polling...
12:38:50.086 [DEBUG] [nding.zwave.handler.ZWaveThingHandler] - NODE 7: Polling deferred until initialisation complete

But wait, there’s more!

19:46:35.503 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'ZWaveNode25TH8320ZWVisionPROZWaveTouchscreenProgrammableThermostat_SetpointCooling' received command 70 ?
19:46:35.505 [DEBUG] [nding.zwave.handler.ZWaveThingHandler] - NODE 25: Command received zwave:device:3e121ab5:node25:thermostat_setpoint_cooling --> 70 ?
19:46:35.504 [INFO ] [enhab.binding.upb.internal.UPBBinding] - UPB binding starting up...
19:46:35.509 [INFO ] [smarthome.event.ItemStateChangedEvent] - ZWaveNode25TH8320ZWVisionPROZWaveTouchscreenProgrammableThermostat_SetpointCooling changed from 76.0 ? to 70 ?
19:46:35.508 [ERROR] [nding.zwave.handler.ZWaveThingHandler] - NODE 25: Command received with no implementation (QuantityType).
19:46:35.597 [ERROR] [org.openhab.binding.upb              ] - [org.openhab.binding.upb.binding(211)] The activate method has thrown an exception
java.lang.RuntimeException: Failed to open serial port.
        at org.openhab.binding.upb.internal.UPBBinding.activate(UPBBinding.java:81) [483:org.openhab.binding.upb:1.12.0]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:?]
        at org.apache.felix.scr.impl.inject.BaseMethod.invokeMethod(BaseMethod.java:229) [39:org.apache.felix.scr:2.0.12]
        at org.apache.felix.scr.impl.inject.BaseMethod.access$500(BaseMethod.java:39) [39:org.apache.felix.scr:2.0.12]
        at org.apache.felix.scr.impl.inject.BaseMethod$Resolved.invoke(BaseMethod.java:650) [39:org.apache.felix.scr:2.0.12]
        at org.apache.felix.scr.impl.inject.BaseMethod.invoke(BaseMethod.java:506) [39:org.apache.felix.scr:2.0.12]
        at org.apache.felix.scr.impl.inject.ActivateMethod.invoke(ActivateMethod.java:307) [39:org.apache.felix.scr:2.0.12]
        at org.apache.felix.scr.impl.inject.ActivateMethod.invoke(ActivateMethod.java:299) [39:org.apache.felix.scr:2.0.12]
        at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:298) [39:org.apache.felix.scr:2.0.12]
        at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:109) [39:org.apache.felix.scr:2.0.12]
        at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:906) [39:org.apache.felix.scr:2.0.12]
        at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:879) [39:org.apache.felix.scr:2.0.12]
        at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:823) [39:org.apache.felix.scr:2.0.12]
        at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$1.run(ServiceFactoryUse.java:212) [?:?]
        at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:210) [?:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:111) [?:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:45) [?:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:508) [?:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461) [?:?]
        at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:624) [?:?]
        at org.apache.felix.eventadmin.impl.handler.EventHandlerProxy.obtain(EventHandlerProxy.java:286) [3:org.apache.karaf.services.eventadmin:4.1.5]
        at org.apache.felix.eventadmin.impl.handler.EventHandlerProxy.sendEvent(EventHandlerProxy.java:407) [3:org.apache.karaf.services.eventadmin:4.1.5]
        at org.apache.felix.eventadmin.impl.tasks.HandlerTask.runWithoutBlacklistTiming(HandlerTask.java:82) [3:org.apache.karaf.services.eventadmin:4.1.5]
        at org.apache.felix.eventadmin.impl.tasks.SyncDeliverTasks.execute(SyncDeliverTasks.java:104) [3:org.apache.karaf.services.eventadmin:4.1.5]
        at org.apache.felix.eventadmin.impl.tasks.AsyncDeliverTasks$TaskExecuter.run(AsyncDeliverTasks.java:166) [3:org.apache.karaf.services.eventadmin:4.1.5]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:?]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:?]
        at java.lang.Thread.run(Unknown Source) [?:?]
Caused by: java.lang.RuntimeException: Port does not exist
        at org.openhab.binding.upb.internal.UPBBinding.openSerialPort(UPBBinding.java:234) ~[?:?]
        at org.openhab.binding.upb.internal.UPBBinding.activate(UPBBinding.java:77) ~[?:?]
        ... 33 more
Caused by: gnu.io.NoSuchPortException
        at gnu.io.CommPortIdentifier.getPortIdentifier(CommPortIdentifier.java:273) ~[?:?]
        at org.openhab.binding.upb.internal.UPBBinding.openSerialPort(UPBBinding.java:232) ~[?:?]
        at org.openhab.binding.upb.internal.UPBBinding.activate(UPBBinding.java:77) ~[?:?]
        ... 33 more
19:46:35.612 [WARN ] [org.openhab.binding.upb              ] - FrameworkEvent WARNING - org.openhab.binding.upb
org.osgi.framework.ServiceException: org.apache.felix.scr.impl.manager.SingleComponentManager.getService() returned a null service object
        at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:232) [?:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:111) [?:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:45) [?:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:508) [?:?]
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461) [?:?]
        at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:624) [?:?]
        at org.apache.felix.eventadmin.impl.handler.EventHandlerProxy.obtain(EventHandlerProxy.java:286) [3:org.apache.karaf.services.eventadmin:4.1.5]
        at org.apache.felix.eventadmin.impl.handler.EventHandlerProxy.sendEvent(EventHandlerProxy.java:407) [3:org.apache.karaf.services.eventadmin:4.1.5]
        at org.apache.felix.eventadmin.impl.tasks.HandlerTask.runWithoutBlacklistTiming(HandlerTask.java:82) [3:org.apache.karaf.services.eventadmin:4.1.5]
        at org.apache.felix.eventadmin.impl.tasks.SyncDeliverTasks.execute(SyncDeliverTasks.java:104) [3:org.apache.karaf.services.eventadmin:4.1.5]
        at org.apache.felix.eventadmin.impl.tasks.AsyncDeliverTasks$TaskExecuter.run(AsyncDeliverTasks.java:166) [3:org.apache.karaf.services.eventadmin:4.1.5]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:?]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:?]
        at java.lang.Thread.run(Unknown Source) [?:?]

I’m reading that UPB is possibly not supported in Windows. Seems like the thermostat shouldn’t need it though because it’s zwave.

Now that is all said and done and I have moved the zwave dongle from a USB3 port to a USB 2 port and learned something about the HABpanel, I think I’m in business.

Do you have this thermostat working properly now? What did you do? I’m having a problem setting the setpoints. Honeywell TH8320ZW thermostat setpoint not working

@chris this seems to be the same issue I am having over at eurotronic-spirit-z-wave-errors Ill move my conversation here since this is dedicated to the thermostat and it seems others are having the same issue.

All it seems to me everything is working except for the setpoints on my setup.

Here is my sitemap with mapping if you want to take it and tweak… Note that two of the items here are read only but I thought it looked nicer as a Selection (Fan State, and Operating State)

Text item=HoneywellThermostat_SensorTemperature label="Home Temperature [%.1f °F]" icon="temperature" {
			Frame label="Honeywell Thermostat"{
				Text item=HoneywellThermostat_SensorTemperature label="Thermostat Temperature"
				Selection item=HoneywellThermostat_ThermostatOperatingState mappings=[0="Idle",1="Heating",2="Cooling",3="Fan Only",4="Pending Heat",5="Pending Cool",6="Vent Economizer"]
				Setpoint item=HoneywellThermostat_SetpointCooling icon="heating" minValue=50 maxValue=90 step=1
				Setpoint item=HoneywellThermostat_SetpointHeating icon="heating" minValue=40 maxValue=80 step=1
				Switch item=HoneywellThermostat_ThermostatMode label="Thermostat Mode" mappings=[0="Off",1="Heat",2="Cool",3="Auto"]
				Switch item=HoneywellThermostat_ThermostatFanMode label="Thermostat Fan Mode" mappings=[0="Auto",1="On",6="Circulate"]
				Selection item=HoneywellThermostat_ThermostatFanState mappings=[0="Idle",1="Running",2="Running High"]
				Switch item=AC_Cool_It label="Cool It"
			}


		}

FYI I am not using any sitemaps at this point. I’m only using HabPanel or the control section of Paper UI. But based on the above, it seems the problem happens regardless.

Also FYI, the thermostat-to-openhab setpoint updates work properly. When the thermostat reports its setpoint to openhab, it is properly received and displayed in the UI. It’s the openhab-to-thermostat change of setpoints that is making it angy. For example, you try to send it a setpoint of 70, which presumably is sent as 70.0. The thermostat changes to 99, and reports that 99 back to OpenHab, which correctly displays the newly reported setpoint of 99.

Ok so a big part of my problem was I am new to this system. I will explain a little bit here in case it will help someone else.

  1. I had manually bound the zwave things and was using PaperUI as my control method.
    Now I understand that PaperUI is better used for administration and troubleshooting.

  2. I had no .items file and no .sitemap file.
    These really are critical to getting anything done.

Thermostat specific:
In my .sitemap file I had no troubles mapping the Mode and Fan Mode, as they are selection items and support it. The Operate States on the other hand do not support mapping like the selection items. I had to use transformation for those.

Here’s my Thermostat in the sitemap: It’s now working.

Text label="Thermostat" icon="temperature" {
        Default item=LivingRoom_Temperature label="LivingRoom [%.1f °F]" icon="temperature"
        Selection item=Thermostat_Mode label="Mode" mappings=[0="Off", 1="Heat", 2="Cool", 3="Auto", 5="Resume"]
        Default item=Thermostat_Operating_State label="Operate State [MAP(thermostat_state.map):%s]"
        Selection item=Thermostat_Fan_Mode label="Fan Mode" mappings=[0="Auto", 1="On", 6="Circulate"]
        Default item=Thermostat_Fan_State label="Fan State [MAP(FanMode.map):%s]"
	    Setpoint item=Cooling_Setpoint label="Cooling"
	    Setpoint item=Heating_Setpoint label="Heating"

And also the .items:


Number    Cooling_Setpoint            "Air Conditioner"   <snow>             (LivingRoom, Thermostat)     ["Switchable"]      {channel="zwave:device:3e121ab5:node26:thermostat_setpoint_cooling"}
Number    Heating_Setpoint            "Heating"           <heating>          (LivingRoom, Thermostat)                         {channel="zwave:device:3e121ab5:node26:thermostat_setpoint_heating"}
Number    LivingRoom_Temperature      "Temperature"       <temperature>      (LivingRoom, Temperature, Thermostat)            {channel="zwave:device:3e121ab5:node26:sensor_temperature"}
Number    Thermostat_Mode             "Temperature"       <temperature>      (LivingRoom, Thermostat)                         {channel="zwave:device:3e121ab5:node26:thermostat_mode"}
Number    Thermostat_Operating_State  "Temperature"       <temperature>      (LivingRoom, Thermostat)                         {channel="zwave:device:3e121ab5:node26:thermostat_state"}
Number    Thermostat_Fan_Mode         "Temperature"       <fan_ceiling>      (LivingRoom, Thermostat)                         {channel="zwave:device:3e121ab5:node26:thermostat_fanmode"}
Number    Thermostat_Fan_State        "Temperature"       <fan_ceiling>      (LivingRoom, Thermostat)                         {channel="zwave:device:3e121ab5:node26:thermostat_fanstate"}

Have you tried it without min/max and increment part?

The min/max is only a function in the OpenHab UI. Changing the setpoint manually in Paper UI has no min/max/increment. Neither work.

Your setpoints are working properly now the way you have it?

Yes mine are working

OK. I think later this evening I will try a sitemap similar to yours and see that makes it happy. May also delete and exclude and start over too.

Problem solved. When I looked at the channel properties in HabMin, it had a selection for Fahrenheit vs celsius. It was set to celcius by default. So telling it to go to 70 degrees was being interpreted as 70C which it just can’t do. Once i changed it to F, it stated working fine.

Cool. Glad you found it.

Yes I did. I still have the same issue. Chris suggested I leave my topic on the other post as he noticed this post had some other issues with serial devices. I’m heading back over there now and sending him some logs to see if he can help. Weird thing is it worked with the same setup under 2.3.0 snapshots and when I upgraded to 2.4.0 is when this started happening.

Now I have the same problem. I changed to the snapshot version to get my door lock included and I get the pegs-at-99 thing. Set for F not C,but it still does it.

Just to be clear. what is “it”?

Also, when you say you are using the snapshot version - are you using the manually installed development version? You should note that this version uses UoM, and does not have the ability to set the units in the channel configuration any more.

“It” being the behavior where when making a temperature change, it registers, and then immediately switches to 99. My understanding is that this is a result of feeding the unit a degrees F number and it thinks that it’s C instead. I am using the development version because if I understand correctly, it is the only way to get secure inclusion to work. (Which I am only using on my lock, the thermostat is included in the standard method.) If I can’t set units in the channel configuration, I’m guessing I need to use the transform function to change between degrees F and C? Thanks for stopping by the thread.