Sinope electric thermostats

I’m using the latest Sinope DH. I tried with the thermostat in both Automatic and Manual modes and the results are the same.

I purchased the sinope thermostats and am disappointed in the functionality provided by the software that comes with them (neviweb). It has just two modes - home and away. There’s no way to setup a 3rd mode, such as “sleep”. You have to manually change the temps on all the thermostats when you go to bed and wake up (8 of them for me) . That’s awful.

So bought a smartthings hub and setup the api to sinope. I can control the thermostats manually, but when I try to run an automation I get the following errors in my ST log.

error groovy.lang.MissingMethodException: No signature of method: script147614829405233222051.setHeatingSetpoint() is applicable for argument types: (java.math.BigDecimal) values: [55]

Is this a bug in the sinope device handler code?

Is anyone successfully using Automation’s with Sinope thermostats? Sigh.

I fixed my own problem by modifying the device handler code. The ST app is calling setHeatingSetpoint with one argument and it expects two.

I opened an issue on the github tracker, just in case anyone is reading them

2 Likes

What exactly do you mean by run automations?
I also have 8 thermostats around the house, connected to ST, and I’d love to increase automation…
So far the best I came up with is a SmartTiles dashboard with all my thermostats, which lets me easily manually change the temps for multiple thermostats one at a time, but with very few clicks.

Sorry for the late reply. I can no longer control with Alexa either. Not sure what changed. I don’t use the official Sinope device handler cause I find @Mdbashi is better. Winter is almost here and I hope to play with it again soon.

@mattmatt not sure what kind of automation you want to do but you can have your thermostats with Routine and also there are a couple of smartapps on marketplace you can try. CoRE smartapps is also very good at automating your thermostats. I did play with most of them before but I limit my thermostats to just one routine. Away routine = all thermostats to 63F. Don’t forget your thermostat has 7 days programming schedule as well which I do use.

While I tried using the 7 day programs on the Nevi website, one of the benefits of having automation was to turn down/off the thermostat when a window in that room is open to prevent constant heating and send a push notification with CoRE.

Couple times that my wife would open the window and forgot the turn down the thermostat.

Thanks again mattmatt for the fix, just had to switch the code to Celsius cause you know metric :slight_smile:

I do use notification for overtemp as well. Everyone at my house think it’s summer or trying to simulate summer even in the middle of winter. I would love to get rid of the 7 day programs but I have no trust in ST just yet.
If you guys want a simple way to turn down all the thermostats with one button. You can create a virtual switch and sync it with coRE or a few apps on marketplace. I do use this kind of setup for my blinds.

I’m having the same problem, but with SmartTiles.

Up until last week, it seemed to be working, but since a couple of days ago I can no longer contorl the thermostats through SmartTiles. I can still control them within the ST app, though.
I get this error when changing the temp in SmartTiles:

groovy.lang.MissingMethodException: No signature of method: script147653304879533222051.setHeatingSetpoint() is applicable for argument types: (java.lang.Integer) values: [16]
Possible solutions: setHeatingSetpoint(java.lang.Object, java.lang.Object) @ line 476


I’m looking at the code on GitHub, and it looks like this (on line 53, 2 arguments):
def setHeatingSetpoint(newSetpoint , temperatureUnit)

Where did you find your version of the code, with only 1 argument?

Follow-up: It’s not only SmartTiles and Alexa.
CoRE pistons don’t work either, they return the same error:
groovy.lang.MissingMethodException: No signature of method: script147653715830733222051.setHeatingSetpoint() is applicable for argument types: (java.lang.Integer) values: [19] Possible solutions: setHeatingSetpoint(java.lang.Object, java.lang.Object) @ line 6925

There must be something wrong with the device handler, but it doesn’t seem to be the error that @mattmatt identified, because in my version of the code there are 2 arguments.

@Sinope. @VanessaPepin, can we get any help here?

Here is what I found in the Amazon Echo Logs:

b30b9a22-121d-4229-830b-1d553375932e 12:32:19 AM: error Unsupported thermostat mode
b30b9a22-121d-4229-830b-1d553375932e 12:32:19 AM: debug Mode: null TemperatureScale: F
b30b9a22-121d-4229-830b-1d553375932e 12:32:19 AM: debug Set Bedroom Heat temperature to 21.0
b30b9a22-121d-4229-830b-1d553375932e 12:32:19 AM: debug control, params: [appId:b30b9a22-121d-4229-830b-1d553375932e, param1:control, param2:71db8d45-98e3-4b99-b62a-cb938422a939, param3:SetTargetTemperatureRequest, param4:21, action:[GET:executeSmartAppGet, POST:executeSmartAppPost, PUT:executeSmartAppPut, DELETE:executeSmartAppDelete, OPTIONS:executeSmartAppOptions], controller:smartAppApi, id:71db8d45-98e3-4b99-b62a-cb938422a939, command:SetTargetTemperatureRequest, value:21], request: [:], devices: null params.id: 71db8d45-98e3-4b99-b62a-cb938422a939 params.command: SetTargetTemperatureRequest params.value: 21

For some reason the device mode is null. I’m just starting with Smart Things, so I don’t quite understand who is reporting the mode. Any help from experienced members is appreciated!

It may be that the device type you are using does not list SmartThings’ thermostat mode capability. It may also be that there are differences between the Sinope thermostat modes (Auto, Standby, Away, Manual, and X-Bypass) don’t match up with the SmartThings thermostat modes (Auto, Off, Heat, Emergency Heat, Cool). Here’s a screenshot of the SmartThings capabilities reference document:

I just posted a new DTH for the Sinope thermostats that includes presence, modes, and manual controls: [UPDATE] Sinope Electric Baseboard Thermostat - full integration

If you use CoRE, you can the Sinope mode to Home or Away by turning on Expert mode in CoRE settings (which will cause the custom actions of presenceHome and presenceAway to be shown when you add a task). I will update the DTH with a custom action for setModestandby.

1 Like

Thanks!
So this will let SmartTiles and CoRE actually change the setpoint on the thermostats again?

Controlling presence, mode, and manually controlling the setpoint should all work with CoRE. You will still need to use Neviweb to set up the “Auto” and “Away” setpoints / schedule (alternatively, I guess you could set up schedule exclusively through CoRE using manual controls, but I think its much easier to set up schedule in Neviweb) .

Not sure about SmartTiles. Let me know if you get an error.

Yet another new error today when trying to change setpoint through SmartTiles.
SmartThings app still works.
groovy.lang.MissingMethodException: No signature of method: script147714750076733222051.setHeatingSetpoint() is applicable for argument types: (java.lang.Integer) values: [16]

I’ve figured out how to get Alexa to stop reporting the error about the mode; I looked at http://docs.smartthings.com/en/latest/capabilities-reference.html#thermostat and the meta data events that are being sent are incorrect. thermostatOperatingState should be one of a list of string values, not an integer. I believe it should be either “heating” or “idle” for baseboard heaters. As well, it was missing the “thermostatMode”. I experimented with a few different modes and Alexa would respond accordingly:

sendEvent(name: 'thermostatOperatingState', value: data.status.heatLevel > 0 ? "heating" : "idle")
sendEvent(name: 'thermostatMode', value: "heat")

Now Alexa says it has set the temperature, but I’m not actually seeing the change on my thermostat. How did you find those logs? There might be a new error.

Figured it out, the description of the event that Alexa sends is:

“setHeatingSetpoint(21.0) command was sent to Master Bedroom Thermostat”

and the code doesn’t define such a function. Since I’m Canadian and everything is set to celsius anyway, I simply added a function to pass that onto the defined function et voila!

def setHeatingSetpoint(newSetpoint) {
setHeatingSetpoint(newSetpoint , “celsius”)
}

I’ll fork the repository and see if I can get a pull request in:

Thanks for your troubleshooting. I’m pretty stupid when it comes to this stuff. I’m in fahrenheit. What code do I change to make that work?

No problem, when you cut and paste in the code from my github link, find this line (click the link to go to the line):

setHeatingSetpoint(newSetpoint , “celsius”)

and replace with:

setHeatingSetpoint(newSetpoint , “fahrenheit”)

Alexa doesn’t care about the units, so you can just say “set the temperature to 68 degrees” and you should be good.

Let me know if you have any issues.

So I’m new to this site and Smartthings as a whole, but there seem to be a couple of concurrent conversations in this thread. I love the interface provided by @infofiend but really want to have things capable of being controlled by Echo (which @tristeng so kindly figured out)

I’m still trying to wallow through these live logs on my systems to figure out what is happening, but if I control a stat with @infofiend’s code, Alexa says the mode doesn’t support what I’m trying to do, while @tristeng’s code works but uses the layout from Sinope’s stock app (which I’m not in love with)

Anyone have a more recent code version that works with Alexa?

Edit: It looks like the only difference I can see from the Alexa logs is the GUID of param2 in the request: param2:08a7a58c-1828-4cd3-a0d2-6571590055a8… other than that, both look the same

I think my Alexa integration is broken now :frowning: the other day Alexa informed me it couldn’t set the temperature, when in fact it had. Technically it still works, but somewhere along the line it thinks it failed. I haven’t had a chance to look into it yet.

It seems the smart things api updates are not backwards compatible.

It sounds like you need to send the thermostatMode event maybe? Try setting it to heat.