Unable to control parameter of device

Struggling to control a danfoss radiator thermostat.
After some trial and error with this device, the only parameter available on this somewhat limited TRV is the "thermostatSetpoint" not to be confiused (as i have been) with "cooling setpoint" or the "heating setpoint" These variables are controllable but, because i dont have a proper driver, they only change on the dashboard and have no relation nor function on the TRV itself, it seems.
Its the "thermostatSetpoint" i need to control. I can "read" the value but i cant seem to change this parameter in rule-machine. (i do see the the cooling and heating in rule machine)


In another app, i am logging the value changes as i can access the "setpoint" as a device-attribute as a control source (log value upon change) so i figure i need to set this in the same way but dont know how.
Any advice appreciated, thanks

What driver are you using, and what is the actual device?

The driver should read the current mode of the thermostat (heat, cool, etc.) and set that as the value of the thermostatMode attribute. Yours is currently "heat." It this case, it should take the value of the heatingSetpoint attribute and write it to thermostatSetpoint and keep it in sync as long as it stays in heating mode. (If this does not make sense to you, consider that other thermostats offer cool mode with a coolingSetpoint attribute, and the idea of thermostatSetpoint is to show whatever setpoint actually matters at the moment.)

It sounds like your driver just isn't doing this.

im using this driver, which is working nicely for my "popp radiator TRV that has a bit more functionality"
name: "Danfoss Living Connect and POPP Radiator Thermostat", namespace: "Mark-C-uk", author: "mark C") {
I think the danfoss hardware is an older device. (recently picked it up second-hand)

That makes complete sense, and it was working that way for a few days but since lost outward communication. Could this be due to the lack of "modes" on the device?

i have just found this in the logs:

dev:4722023-12-29 09:38:04.090errorgroovy.lang.MissingMethodException: No signature of method: java.lang.String.call() is applicable for argument types: (java.lang.String) values: [22.5]
Possible solutions: wait(), any(), wait(long), split(java.lang.String), take(int), any(groovy.lang.Closure) on line 404 (method setThermostatMode)

Can anyone advise what this implies. (sorry i am not educated well enough in the drivers)

The most helpful response would include a link to the source from which you obtained the driver. I may have found the one with some Googling.

Unlikely, but it really depends on what the driver is doing and what the device is reporting to the hub for use by the driver. Debug logging will often show the latter.

Looks like it's this line, assuming we're looking at the same driver:

cmds <<  setHeatingSetpoint(quickOnTemperature ?: fromCelsiusToLocal(21))

Nothing there appears to be problematic, unless maybe quickOnTemperature is an unexpected data type. Maybe try un-commenting lines 286-289 as a quick fix (i.e., removing the double-slashes in front of each line) if this is really the problem. Presumably, the original developer may haUnfortunately, that error message is one of the less helpful ones there is, so it's hard to do more than guess.

But maybe the original developer left that commented out for a reason. You could also skip that change and just modify this particular line to something like this instead:

cmds << setHeatingSetpoint(quickOnTemperature ? quickOnTemperature.toDouble() : fromCelsiusToLocal(21))

I am not familiar with this device or driver, so I will probably not be much help if this doesn't work. But maybe someone else would also be willing to take a look.

Here is the driver i currently use
https://raw.githubusercontent.com/Mark-C-uk/Hubitat/master/Danfoss%20Living%20Connect%20and%20POPP%20Radiator%20Thermostat
As found in these forums:

My apologies for the lack of info and lack of understanding, i intend and wish to learn more about the drivers so i can attempt some fixes.
THis particualr driver is (apparently) working ok for my other "popp TRV" device so i am reluctant to tweak it for the sake of this other device. i am aware i could copy the code and give it another name.

Bizarrely, it all appears working today. However, last night (after the chat above) I tried the "generic z wave thermostat" driver which failed over night. I think this was due to the wake-up command not being set and timing out. In my experience, this needs to be under 30mins in order to keep a communication link between the device and HE. So, this morning, i reverted back to the "danfoss/popp" driver that has the wake-up parameter set to 20min and it is working today, as it was over the weekend. The fact it works ok somedays and fails occasionally makes it hard to figure out where the problem lies. I will continue to monitor my logs.

i spotted another error in the logs:

[error](http://192.168.x.x/logs#)java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Float on line 110 (method parse)

the actual code on line 110 is:

    def currentTemperature = device.currentValue("heatingSetpoint").doubleValue()   //current app setpoint

Should the variable heatingSetpoint be declared prior to this line as i see this on line 209:
def heatingSetpoint = device.currentValue("heatingSetpoint").doubleValue()

understanding this will educate me further with drivers. thanks

No, that's not a variable. It's reading the current value of the heatingSetpoint attribute (as seen under "Current States").