[RELEASE] Vivint CT200 Thermostat Driver

sigh Sorry about that. I'll look some more tomorrow - have a few errands I still have to do tonight for the Mrs.

I see a number of issues - comparing to a few other drivers, I see what needs to be done. I'll start working through them tomorrow, though. This wouldn't be an issue if the US would just use Celsius. :slight_smile:

1 Like

I appreciate that you have done all of this work! Take all the time you want. Thank you very much for taking the time write a driver for the CT200!

I've believe I have most of it fixed now. Should be ready for another test tomorrow after a few more tweaks.

:+1:

V1.4 - 07/28/2020 - Attempted to fix Celsius input/output issues #2

Note that the configuration parameters are still listed as "F" only. The Vivint manual only says what the values for the configuration parameters are in "F".

It is a reasonable assumption that the "C" values would be ~half the listed "F" values, but I did not verify that, and the manual does not clarify that.

When I get my next CT200 later this week I'll try to test this and update the configuration parameter text.

Thank you very much that is working great, it is not rounding the C values it is not an issue for me personally because both Google and the thermostat are rounding it is neat seeing the decimals on the dashboard :slight_smile: let me know if you would like a copy of the debug screen or anything else. I appreciate all of the work you have done on this driver!

Which values aren't rounding? I don't necessarily need to see the logs, but an example of a value would help - what it is actually showing versus what you expect to see/see on other drivers.

I would expect that C values normally show 1 decimal place. To your point, I didn't force it to 1 place so when it is converted it may show more....

here is a copy of the current states. some values like 20 come out as 20.
the cooling set point was set to 22 and the heat set point was set to 18.

Current States

  • battery : 85
  • coolingSetpoint : 22.2222222222
  • currentSensorCal : 0
  • heatingSetpoint : 17.7777777778
  • humidity : 49
  • supportedThermostatFanModes : [auto, on]
  • supportedThermostatModes : [auto, cool, heat, off]
  • temperature : 23.8888888889
  • thermostatFanMode : auto
  • thermostatFanState : idle
  • thermostatMode : heat
  • thermostatOperatingState : idle
  • thermostatSetpoint : 17.7777777778

Yup, there is a rounding issue.... My fault.

Another version on the way....

  • V1.5 - 07/28/2020 - Attempted to fix Celsius input/output issues #3

(sorry for all of the floundering here! Normally I would test on a dev hub/dev device 1st - but I don't have an extra CT200 this minute... Not 100% sure this version will work either...)

One more question.... When you physically raise/lower the setpoint form the thermostat itself, how much does it raise/lower per press?

i am very happy with this Driver you have done an amazing job it is very nice to be able to set all of the settings from Hubitat!

please take your time do not rush this for me.

the set point changes by 0.5 C for each button press.

1 Like

OK, that's what I would have guessed. Thanks for confirming.

Let me know how v1.5 works (:crossed_fingers::crossed_fingers:) . If it doesn't work, screenshots as before would be very helpful!!!

bit of a problem please see log below

dev:6122020-07-28 09:32:00.279 am errorjava.lang.NullPointerException: Cannot invoke method round() on null object on line 108 (setHeatingSetpoint)

--- Live Log Started, waiting for events ---

Yup, small typo (sorry). Just fixed it on the repository (I didn't up the rev though).

The "degrees2.round(1)" should have been "degrees.round(1)" on lines 108 & 133.

Nice catch, there is still a bit of an issue,

dev:6122020-07-28 09:49:56.898 am debugIn parse, error in zwave.parse. Description = 'zw device: 38, command: 4303, payload: 01 09 48 , isMulticast: false'. Error = 'groovy.lang.MissingMethodException: No signature of method: java.math.BigDecimal.round() is applicable for argument types: (java.lang.Integer) values: [1] Possible solutions: round(java.math.MathContext), find(), pow(int), find(groovy.lang.Closure), power(java.lang.Integer), mod(java.lang.Number)'.

--- Live Log Started, waiting for events ---

Thanks! Back to the drawing board. :slight_smile:

EDIT: Ah... .round on BigDecimals is a groovy 2.5 function....

  • Version 1.5.1 - 07/28/2020 Fix round error

it is looking better please look at the attached log.

dev:6122020-07-28 10:47:28.285 am debugIn parse, error in zwave.parse. Description = 'zw device: 38, command: 4303, payload: 01 09 48 , isMulticast: false'. Error = 'groovy.lang.MissingPropertyException: No such property: scaledSensorValue for class: hubitat.zwave.commands.thermostatsetpointv2.ThermostatSetpointReport'.

dev:6122020-07-28 10:47:28.275 am debugsetpoint requested is 72 and unit is F

dev:6122020-07-28 10:47:28.273 am debugcmdScale is F

dev:6122020-07-28 10:47:28.271 am debugThermostatSetpointReport...START

dev:6122020-07-28 10:47:28.269 am debugParsing 'zw device: 38, command: 4303, payload: 01 09 48 , isMulticast: false'

dev:6122020-07-28 10:47:28.267 am debugParse...START

dev:6122020-07-28 10:47:26.406 am debugsetHeatingSetpoint...END

dev:6122020-07-28 10:47:26.404 am debugsetpoint written is 22

dev:6122020-07-28 10:47:26.402 am debugsetpoint requested is 22.0

dev:6122020-07-28 10:47:26.400 am debugprecision is 1

dev:6122020-07-28 10:47:26.398 am debuglocationScale is C

dev:6122020-07-28 10:47:26.396 am debugsetHeatingSetpoint...START

dev:6122020-07-28 10:47:22.932 am debugdebug logging is enabled.

--- Live Log Started, waiting for events ---

AAAARGH. Dang it.... Fixed 2 out of 3 of those...

  • Version 1.5.2 - 07/28/2020 Fix scaledSensorValue error in ThermostatSetpointReport

(note, there still seems like a rounding issue though, as 72F = 22.22222C, not 22.0 as input).

that works much better thank you very much, i hate to say this but the reported temp is not rounding. Again not a problem for me at all just letting you know. i personally do not mind that there is a bit of rounding error that is not a problem for me at all.

Current States

  • battery : 85
  • coolingSetpoint : 21.1
  • currentSensorCal : 0
  • heatingSetpoint : 16.1
  • humidity : 51
  • supportedThermostatFanModes : [auto, on]
  • supportedThermostatModes : [auto, cool, heat, off]
  • temperature : 23.8888888889
  • thermostatFanMode : auto
  • thermostatFanState : idle
  • thermostatMode : off
  • thermostatOperatingState : idle
  • thermostatSetpoint : 21.1
1 Like