[SOLVED] Ct100 thermostat in openHAB 2 (Fahrenheit vs Celsius)

Anyone know how to create an ct100 item that reports in Fahrenheit vs Celsius? Moving from openHAB 1.8.3 to 2.0-SNAPSHOT

Group     Tstat10                                                                                                     (Thermostats)
Group     Tstat10_Chart                                                                                               (Tstat10)
Number    Basement_Tstat_HeatSetPoint         "Basement Heat Setpoint [%.1f °F]"                      <temperature>   (Tstat10)                               {zwave="4:command=thermostat_setpoint,setpoint_type=1,setpoint_scale=1,refresh_interval=600"}
Number    Basement_Tstat_CoolSetPoint         "Basement Cool Setpoint [%.1f °F]"                      <temperature>   (Tstat10)                               {zwave="4:command=thermostat_setpoint,setpoint_type=2,setpoint_scale=1,refresh_interval=600"}
Number    Basement_Tstat_Temperature          "Basement Temperature [%.1f °F]"                        <temperature>   (Tstat10_Chart, Room_Temperature)       {zwave="4:1:command=sensor_multilevel,sensor_type=1,refresh_interval=600"}
Number    Basement_Tstat_Humidity             "Basement Humidity [%.1f %%]"                           <humidity>      (Tstat10_Chart, Humidity)               {zwave="4:2:command=sensor_multilevel,sensor_type=5,refresh_interval=600"}
Number    Basement_Tstat_OpMode               "Basement Mode"                                         <settings>      (Tstat10)                               {zwave="4:command=thermostat_mode,refresh_interval=600"}
Number    Basement_Tstat_ModeState            "Basement State [MAP(ct100.map):%s]"                    <settings>      (Tstat10)                               {zwave="4:command=thermostat_operating_state,refresh_interval=60"}
Number    Basement_Tstat_Battery              "Basement Thermostat Battery [%d %%]"                   <battery>       (Tstat10, Battery)                      {zwave="4:command=BATTERY,refresh_interval=1200"}
DateTime  Basement_Tstat_Clock    

Turns into:

Group     Tstat10                                                                                                     (Thermostats)
Group     Tstat10_Chart                                                                                               (Tstat10)
Number    Basement_Tstat_HeatSetPoint         "Basement Heat Setpoint [%.1f °F]"                      <temperature>   (Tstat10)                               {channel="zwave:device:67cd13f9:node4:thermostat_setpoint_heating"}
Number    Basement_Tstat_CoolSetPoint         "Basement Cool Setpoint [%.1f °F]"                      <temperature>   (Tstat10)                               {channel="zwave:device:67cd13f9:node4:thermostat_setpoint_cooling"}
Number    Basement_Tstat_Temperature          "Basement Temperature [%.1f °F]"                        <temperature>   (Tstat10_Chart, Room_Temperature)       {channel="zwave:device:67cd13f9:node4:sensor_temperature"}
Number    Basement_Tstat_Humidity             "Basement Humidity [%.1f %%]"                           <humidity>      (Tstat10_Chart, Humidity)               {channel="zwave:device:67cd13f9:node4:sensor_relhumidity2"}
Number    Basement_Tstat_OpMode               "Basement Mode"                                         <settings>      (Tstat10)                               {channel="zwave:device:67cd13f9:node4:thermostat_mode"}
Number    Basement_Tstat_ModeState            "Basement State [MAP(ct100.map):%s]"                    <settings>      (Tstat10)                               {channel="zwave:device:67cd13f9:node4:thermostat_state"}
Number    Basement_Tstat_Battery              "Basement Thermostat Battery [%d %%]"                   <battery>       (Tstat10, Battery)                      {channel="zwave:device:67cd13f9:node4:battery-level"}
DateTime  Basement_Tstat_Clock                                                                                        (Tstat10, Clock)                        {channel="zwave:device:67cd13f9:node4:time_offset"}

I know I can go into paper and set this all up, but I have a LOT of thermostats, its much easier to do this in vim. :slight_smile:

While on the subject, any help in setting up a zwave stick in text files vs paper would also be great help. I understand that paper is not required, but there is a bunch of stuff like setting up things that works in paper that I can’t find docs on doing it textually.

I looked at that jsondb and it looks like the option is config_scale=1

Never mind, that is not working, anyone have any ideas? The ironic part is that the stats is sending F, openHAB is trying to be nice and convert to C:

zwave.log:2017-01-17 19:28:06.787 [eMultiLevelSensorConverter] - NODE 2: Sensor is reporting scale 1, requiring conversion to 0. Value is now 70.5.
zwave.log:2017-01-17 19:28:06.883 [eMultiLevelSensorConverter] - NODE 2: Sensor is reporting scale 1, requiring conversion to 0. Value is now 70.5.
zwave.log:2017-01-17 19:35:16.115 [eMultiLevelSensorConverter] - NODE 2: Sensor is reporting scale 1, requiring conversion to 0. Value is now 70.5.
zwave.log:2017-01-17 19:35:17.034 [eMultiLevelSensorConverter] - NODE 2: Sensor is reporting scale 1, requiring conversion to 0. Value is now 70.5.

This is one of the areas that is lacking on OH 2, you should be able to configure the binding to provide data in the unit system you want. Netatmo has the same problem, as does the Yahoo Weather binding.

Ah… is that why you can’t do it as part of the item file?

@sipvoip It’s been a while, but did you ever get this resolved? I am having the same issue with a CT32 (which is virtually identical to yours). This is despite setting the Scale for all temperatures for the binding in Habmin to Fahrenheit. Do you know if this a Zwave binding issue for @chris to look at or something more to do with the core openhab runtime? OpenHAB2 finally works OK for me otherwise… just this one thing holding me back. Thanks!

Thing zwave:rtc_ct100_00_000:controller:node6 "Node 6: CT100 - Master Bedroom" (zwave:serial_zstick:controller) [ node_id=6 ] {
  Channels:
    Type sensor_temperature : sensor_temperature [ config_scale=1 ]
    Type thermostat_setpoint : thermostat_setpoint_cooling [ config_scale=1 ]
    Type thermostat_setpoint : thermostat_setpoint_heating [ config_scale=1 ]
}
1 Like

Did you have to Remove the ‘discovered’ thing or if they are named the same does this modify it? After checking the zwave db I tried:

Thing zwave:rtc_ct32_00_000:controller:node11 "Z-Wave Node 11: CT32 Z-Wave Thermostat" (zwave:serial_zstick:controller) [ node_id=11 ] {
  Channels:
    Type sensor_temperature : sensor_temperature [ config_scale=1 ]
    Type thermostat_setpoint : thermostat_setpoint_cooling [ config_scale=1 ]
    Type thermostat_setpoint : thermostat_setpoint_heating [ config_scale=1 ]
    Type sensor_relhumidity : sensor_relhumidity
    Type rtc_ct32_00_000_thermostat_mode : thermostat_mode
    Type thermostat_state : thermostat_state
    Type rtc_ct32_00_000_thermostat_fanmode : thermostat_fanmode
    Type rtc_ct32_00_000_thermostat_fanstate : thermostat_fanstate
    Type system.battery-level : battery-level
}

It gave me an error in the logs when I saved it with an existing Thing already there (although named differently)

Oh… and Thanks again!

Can the CT100 thermostat be connected to an electrical heater?
The thermostat for the electrical heater should get 110-220 V, but the CT100 is not a line voltage thermostat.
I was able to connect the CT100 thermostat to openhab, but I don’t know what to do with it…

Thanks

I am having two problems, one I can’t figure out how to make it deliver the temps in F, I only get C.
(the CT100 is Displaying F, but that clearly does not matter)

I see the “config_scale=1” but I have no idea where that goes.
I have tried editing the things via habmin and paperui but nothing Sticks

I am also having problems with the MAPping of the Mode numbers to the names…
My items…

Group gHVAC "CT100" (All)

Number HVAC_HeatSetPoint "Heat Set [%.0f F]" <temperature> (gHVAC) {channel="zwave:device:1608131a9e2:node2:thermostat_setpoint_cooling" }
Number HVAC_CoolSetPoint "Cool Set [%.0f F]" <temperature> (gHVAC) {channel = "zwave:device:1608131a9e2:node2:thermostat_setpoint_cooling" }
Number HVAC_Temperature "Temperature [%.1f F]" <temperature> (gHVAC) {channel="zwave:device:1608131a9e2:node2:sensor_temperature" }
Number HVAC_Humidity "Rel Humidity [%.1f %%]" <temperature> (gHVAC) {channel = "zwave:device:1608131a9e2:node2:sensor_relhumidity2" }
Number HVAC_Mode "Mode [MAP(thermostatMode.map):%s]" (gHVAC) {channel = "zwave:device:1608131a9e2:node2:thermostat_mode" }
Number HVAC_Fan_Mode "Fan Mode [MAP(thermostatFanMode.map):%s]" (gHVAC) {channel = "zwave:device:1608131a9e2:node2:thermostat_fanmode" }
String NextFanIdle "Fan Idle Next at [%s]" (gHVAC)
Number HVAC_Operating_State "Op State [MAP(thermostatOpState.map):%s]" (gHVAC) {channel = "zwave:device:1608131a9e2:node2:thermostat_state" }
Number HVAC_Fan_State "Fan State [MAP(thermostatFanState.map):%s]" (gHVAC) {channel = "zwave:device:1608131a9e2:node2:thermostat_fanstate" }
Number HVAC_Battery "Battery State [%d %%]" (gHVAC) {channel = "zwave:device:1608131a9e2:node2:battery_level"}
Number HVAC_Time_Offset "Time Offset [%d]" (gHVAC) {channel = "zwave:device:1608131a9e2:node2:time_offset"}
Number HVAC_Temperature1 "Temperature1 [%.1f F]" <temperature> (gHVAC) {channel="zwave:device:1608131a9e2:node2:sensor_temperature1" }

and thermostatMode.map

-=Unintialized
-1=Unintialized
0=Off
1=Heat
2=Cool
3=Auto
4=Aux Heat
5=Resume
6=Fan Only
7=Furnace
8=Dry Air
9=Moist Air
10=Auto Changeover
11=Heat Eco
12=Cool Eco
13=Away

In my OH1 I had the transform like this:
Number HVAC_Mode “Mode [MAP(thermostatMode.map):%d]”

OH2 did not like the %d, changing it to %s made the syntax check happier
(of course that does not mean it is really RIGHT :slight_smile: )

Tom

Are you manually configuring zwave.things? If so, this is how you do it:

Thing zwave:rtc_ct100_00_000:controller:node3 "Node 03: CT100 - Kitchen" (zwave:serial_zstick:controller) [ node_id=3, binding_pollperiod=600 ] {
  Channels:
    Type sensor_temperature : sensor_temperature [ config_scale=1 ]
    Type thermostat_setpoint : thermostat_setpoint_cooling [ config_scale=1 ]
    Type thermostat_setpoint : thermostat_setpoint_heating [ config_scale=1 ]
}

Wierd, after having it off for a while (gone shopping) reloaded and the units were fixed!

The MAP transform is still not working

@sipvoip Pardon me for waking up this old thread. I have two CT101 thermostats from a prior Iris system that are reporting temperature and setpoints in Celsius to my new HabianPi. What file are you editing these lines of text in, and where is that file located?

Many thanks

Hi, you need to use a relay from the thermostat output signals. HVAC relays and contactors will activate with 24VAC power, which is what the thermostats are designed to use. Very inexpensive equipment to make this work.

He created the file within the Things folder which is at the same level as your items/rules/transforms/etc etc.

If you are running a *nix OS then you would find the exact location at /etc/openhab2.

Unit of Measure is standard within OH now (I believe 2.3 and higher) or setting it as part of the thing setup within PaperUI/Habmin?