I need a thermostat that can handle higher temperatures

I need a thermostat that will operate a switch AND will allow higher temperatures 140 - 160 F. So far I have tried:
Advanced vThermostat Manager:
Works up to a high temp of 80 degrees F

Virtual Thermostat Temperature Update Parent
Virtual Thermostat Temperature Update Child
I get a namespace error when I try to create a child

I am wanting it for my hot water. This shouldn't be this difficult should it? Frustrated

Are you using this one:

If so did you get all 3 files?

I am using that one for two room heating thermostats. I have basically the same setup for all of my needs. A temp sensor and then a relay device that it needs to turn on. The issue I have with this APP is that it ignores any heat setting above 80F. In the logs it literally says it is ignoring heat setting X above 80. This would work great for me if it would only allow higher settings. Is there a code setting I can change?

If you look at the VThermostat driver code right in the beginning there is a setting for a maxHeatTemp and it is set to 80F 26.5C.

You could try changing those values to see if would then allow you to use a higher value. I did a very quick look at the code and I think that is all you would have to update, but you would just have to try it and see.

I think I tried that last night. Since I already have two thermostats created with that APP would it ignore the change for the third Thermostat?

It would update the maximum value for all thermostats using that code.

I'll try again, but just for laughs I will remove the other thermostats and see what happens

What you can do is create another driver called vThermostat2 or something to that effect. Then on the device page for that thermostat, use the 2 driver instead of the 1.

I actually am doing that now. I made a slight change to the driver for something else but I have the original on there as well. The app code I use "as is" but my thermostats use the updated driver.

1 Like

Interesting, how do you "make" the new thermostat use the #2 driver?

Easiest way is to let the app create the child and then go into the child device and manually change the driver.

I just copied the current driver and then created a new driver on the driver page using the code I copied from the old driver. I then went to the device page for the thermostat and set the driver to the new updated driver.

I changed the driver for the first round of testing.

Driver changes:

// Let's set all base thermostat settings
	if (hubScale == "C") {
		state.currentUnit = "C"
		sendEvent(name: "minCoolTemp", value: 15.5, unit: "C") // 60°F
		sendEvent(name: "minCoolingSetpoint", value: 15.5, unit: "C") // Google
		sendEvent(name: "maxCoolTemp", value: 35.0, unit: "C") // 95°F
		sendEvent(name: "maxCoolingSetpoint", value: 35.0, unit: "C") // Google
		sendEvent(name: "minHeatTemp", value: 1.5, unit: "C") // 35°F
		sendEvent(name: "minHeatingSetpoint", value: 1.5, unit: "C") // Google
		sendEvent(name: "maxHeatTemp", value: 74, unit: "C") // 165°F
		sendEvent(name: "maxHeatingSetpoint", value: 26.5, unit: "C") // Google
		sendEvent(name: "thermostatThreshold", value: 0.5, unit: "C") // Set by user
		sendEvent(name: "temperature", value: 22.0, unit: "C") // 72°F
		sendEvent(name: "heatingSetpoint", value: 21.0, unit: "C") // 70°F
		sendEvent(name: "coolingSetpoint", value: 24.5, unit: "C") // 76°F
		sendEvent(name: "thermostatSetpoint", value: 21.0, unit: "C") // 70°F
	} else {
		state.currentUnit = "F"
		sendEvent(name: "minCoolTemp", value: 60, unit: "F") // 15.5°C
		sendEvent(name: "minCoolingSetpoint", value: 60, unit: "F") // Google
		sendEvent(name: "maxCoolTemp", value: 95, unit: "F") // 35°C
		sendEvent(name: "maxCoolingSetpoint", value: 95, unit: "F") // Google
		sendEvent(name: "minHeatTemp", value: 35, unit: "F") // 1.5°C
		sendEvent(name: "minHeatingSetpoint", value: 35, unit: "F") // Google
		sendEvent(name: "maxHeatTemp", value: 165, unit: "F") // 74°C
		sendEvent(name: "maxHeatingSetpoint", value: 165, unit: "F") // Google
		sendEvent(name: "thermostatThreshold", value: 1.0, unit: "F") // Set by user
		sendEvent(name: "temperature", value: 72, unit: "F") // 22°C
		sendEvent(name: "heatingSetpoint", value: 70, unit: "F") // 21°C
		sendEvent(name: "coolingSetpoint", value: 76, unit: "F") // 24.5°C
		sendEvent(name: "thermostatSetpoint", value: 70, unit: "F") // 21°C
	}

Error in the log:

2022-02-22 01:26:13.013 pm warnsetHeatingSetpoint() is ignoring out of range cooling setpoint (160.0).
dev:18692022-02-22 01:26:13.011 pm infoHeating setpoint to close to cooling setpoint, adjusting cooling accordingly

Messages are saying your Cooling Setpoints are out of range and are being ignored..

Does the changes to the driver code look correct? It still won't change from idle to heating. Does that cooling have anything to do with this? IF it can be removed all together I can live with that. I do not have AC at all

What did you put in for the cooling setpoint, i.e. if you put in something in the valid range does it work?

I left the cooling at whatever the default is.

Do you have the virtual thermostat in Auto mode or Heat mode? The code test if the cooling setpoint is more than a certain amount away from heating setpoint. I can't find that it ignores this in heat mode. So without some in depth digging into the code I am not sure how that is working.

Maybe bring the cooling max mins up to a range so they are around the difference they were in original code.

It is in Heat mode. Funny the heat set temp is 90 when I access the dashboard. I don't know where that is coming from I'll see if I can change the cooling settings and see if that helps

Can someone explain to me the interaction between the heating and cooling settings? Still struggling with getting this to work with my hot water

Cooling settings are semi independent for someone that would use this for cooling it's house (air conditioning). If nothing is assigned to the cooling switch settings, it will not do anything.

I say semi independent because if you set the heating higher than the cooling setting it will automatically stay a few degrees above the heating point so that in no way the cooling and heating switches/relays would be on at the same time.