Widget: CT100 Thermostat

After reading @dcabanero 's blog post (https://www.smarthomeblog.net/openhab-dashboard/) on how to get started with HABpanel, I decided to try my own hand at it - and I’m hooked! It’s come leaps and bounds from the first version I tried a while ago, and it’s really simple to set up and get going with. I’ve spent the past couple nights turning my regular sitemap into a set of dashboards, and while at it - I found no widget for the CT100 thermostat available, yet. So, I adapted @Signal11 's nice looking ecobee widget to make it work with my CT100. It’s simpler than the ecobee, since there’s no schedules stored on the thermostat, so getting a basic version to work was pretty easy. I intend to work on it more to get HVAC/Fan modes and other settings incorporated into it, but for now, the basic version is available here:

CT100.widget.json (13.7 KB)


GitHub repository:

For configuration, you only need to point it to the existing HVAC items, my sample items:

/* Thermostat */
Group gHVAC "Thermostat" ["Thermostat"]
Number:Temperature HVAC_HeatSetPoint "Heat Set [%.0f °F]" <temperature_hot> (gHVAC)["TargetTemperature"] {channel="zwave:device:512:node7:thermostat_setpoint_heating"} 
Number:Temperature HVAC_CoolSetPoint "Cool Set [%.0f °F]" <temperature_cold> (gHVAC)["TargetTemperature"] {channel="zwave:device:512:node7:thermostat_setpoint_cooling"}
Number:Temperature Temperature_HVAC "Temperature [%.1f °F]" <temperature> (gHVAC,Temp_Chart)["CurrentTemperature"] {channel="zwave:device:512:node7:sensor_temperature"}
Number Humidity_HVAC "Humidity [%.1f %%]" <humidity> (gHVAC,Hum_Chart) {channel="zwave:device:512:node7:sensor_relhumidity2"}
Group gHVACStatus
Number HVAC_Mode "Mode" <flow> (gHVACStatus)["homekit:HeatingCooling"] {channel="zwave:device:512:node7:thermostat_mode" }
Number HVAC_Fan_Mode "Fan Mode [MAP(thermostatFanMode.map):%s]" <fan> (gHVACStatus) {channel="zwave:device:512:node7:thermostat_fanmode" }
Number HVAC_Operating_State "Op State [MAP(thermostatOpState.map):%s]" <flow> (gHVACStatus) {channel="zwave:device:512:node7:thermostat_state"}
Number HVAC_Fan_State "Fan State [MAP(thermostatFanState.map):%s]" <fan> (gHVACStatus) {channel="zwave:device:512:node7:thermostat_fanstate"}
Number HVAC_Battery "Battery State [%d %%]" <battery> (gHVACStatus) {channel="zwave:device:512:node7:battery-level"}

For the map files, I’m using:


0=Auto Low
1=On Low
2=Auto High
3=On High


2=Running High


4=Aux Heat
6=Fan Only
8=Dry Air
9=Moist Air
10=Auto Changeover
11=Heat Econ
12=Cool Econ


3=Fan Only
4=Pending Heat
5=Pending Cool
6=Vent / Economizer
1 Like

How do I make the sample widget picture show up in the gallery? Right now it’s showing the Github logo…

The binding looks awesome BK!

Thanks! It’s not finished yet - I’ve added fan/op state rows to the bottom, but I’d like to scale the sliders so they take up more vertical space (and are easier to hit on the touchpad)…Work in progress! :slight_smile:

BK, I’ve implemented your dashboard as posted in the Widget Gallery, and for the life of me, I can’t get the sliders to appear on the widget. Any thoughts? All other info and items seem to be working as expected, but without the sliders, it’s impossible to change the set points.

Did you make sure to get the latest version from Github? I had to make some changes due to version 2.4, and using the UoM functionality, instead of having a hardcoded C/F conversion…

Also, what do your item definitions look like?

I imported from the Github version. I had seen that you had made some improvements in that one more recently than the version listed in the gallery. Anyway, I had already setup items for most of my HVAC/temperature items, but tried to mimic their definitions as best as I could. From my Items file:

//CT100 Thermostat
Number   FF_Hallway_Temperature        "Hall Temp [%.1f F]"       <temperature> (FF_Hallway, gTemperature, gHeating)  ["Current Temperature"]         {channel="zwave:device:[devID]:node32:sensor_temperature"}
Number   FF_Hallway_HeatingSetpoint    "Hall Heat To [%.0f F]"   <temperature_hot> (FF_Hallway, gTemeprature, gHeating)  ["Target Heat Temperature"]         {channel="zwave:device:[devID]:node32:thermostat_setpoint_heating"}
Number   FF_Hallway_CoolSetPoint       "Hall Cool To [%.0f F]"   <temperature_cold> (FF_Hallway, gTemeprature, gHeating)  ["Target Cool Temperature"]         {channel="zwave:device:[devID]:node32:thermostat_setpoint_cooling"}
Number   FF_Hallway_Humidity           "Hall Humidity [%.1f %%]"    <humidity>    (FF_Hallway, gTemperarure, gHeating)  ["Current Humidity"]         {channel="zwave:device:[devID]:node32:sensor_relhumidity2"}
Number   FF_Hallway_OpMode             "Thermostat Mode"          <flow>    (FF_Hallway, gTemperarure, gHeating)           {channel="zwave:device:[devID]:node32:thermostat_mode"}
Number   FF_Hallway_OpState            "Operating State [MAP(thermostatOpState.map):%s]" <flow> (FF_Hallway, gTemperature, gHeating) {channel="zwave:device:[devID]:node32:thermostat_state"}
Number   FF_Hallway_FanMode            "Fan Mode [MAP(thermostatFanMode.map):%s]"     <fan>     (FF_Hallway, gTemperature, gHeating) {channel="zwave:device:[devID]:node32:thermostat_fanmode"}
Number   FF_Hallway_FanState          "Hall Fan State [MAP(thermostatFanState.map):%s]" <fan> (FF_Hallway, gTemperarure, gHeating)         {channel="zwave:device:[devID]:node32:thermostat_fanstate"}
Number   FF_Hallway_Battery            "Hall Thermostat Battery [%d %%]" <battery> (FF_Hallway, gTemperarure, gHeating)       {channel="zwave:device:[devID]:node32:battery-level"}

I even played around with either displaying the degree symbol in the temperature items too. The result is always the same, no sliders are visible. And the Fan Mode isn’t working either (but that’s not really important to me at the moment).

I just realized that my item definition samples in the original post were out of date (I wasn’t showing the UoM correctly.- try making yours match my samples above, and hopefully that solves your problem!

Absolutely! Thanks for the help. This will aid tremendously in my struggle to get the misses to adopt the new automation setup!

I am trying to get this to work. Managed to update from github, but still shows broken images, and no sliders for the setpoints…any ideas what I am doing wrong? Thanks for any help you can give, I think this is literally the last piece to get me off the Vera onto OpenHab!

@muzicman0 - make sure you download/copy the *.png files (icons) into an html/images/ct100 folder under your openHab config tree.

Thanks, that has gotten me close. Now, I only have one broken image between opstate and fan state. (but it seems, only when heat is running…) Here is a screenshot:


Also, Is there any way to have an image or something that shows where to click to set the OpState? Right now, assuming it is working correctly, if it is in an ‘off’ state. it is just a blank area to click to bring up the choices. Hopefully that makes sense.

Thanks so much for the help!

Figured the broken image thing out. The images for Heating.png and Cooling.png should have been all lower case. I renamed the images, and now that works.

1 Like