[UPDATE] Sinope Electric Baseboard Thermostat - full integration

A DTH for the Sinope Thermostat.

Version 1.3 finally fully integrates with SmartThings’ thermostatMode capability.

  • Still integrates with Neviweb Home / Away settings
  • Uses Neviweb for “auto” mode setpoints
  • Now uses SmartThings’ thermostatMode capability to control Neviweb’s mode settings, so now fully controllable from CoRE and other controllers.
  • Has configurable settings for “heat” and “emergency heat” mode setpoints (via DTH preferences)

Previous versions:

I tried to mirror the functionality of the Sinope controls via Neviweb. For instance, changing your Presence will adjust the setpoint to the Auto setpoint (if at home) or the Away setpoint (if Away). Similarly, manually changing the setpoint will adjust the Mode to Manual.

You will need to add a device manually within the IDE. Once you have added the device, go into the device preferences and add (1) your Neviweb user name (typically your email), (2) your Neviweb password, (3) the Neviweb Network Name for the thermostat and (4) the Neviweb Device Name for the thermostat (all of these are set up / adjustable via www.neviweb.com ).

This DTH has the following Control Tiles:

  1. Presence tile: change presence to Home / Away. If Presence is changed to Away, the Mode Tile is no longer usable;
  2. thermostateMode tile:
  3. Setpoint Slider: adjust setpoint to desired temperature. Changes Mode to Manual, and if Presence is Away, then also changes Mode to Home;
  4. Setpoint up / Setpoint down buttons (in the Main tile). Like the Setpoint Slider, using these buttons will change Mode to Manual, and if Presence is Away, then also changes Mode to Home. (however, due to the slowness of Neviweb, I recommend using the slider when manually changing the setpoint by more than a degree or 2).

It also has the following Info Tiles:
5) Idle / Heating: Identifies whether the device is currently Heating or Idle;
6) Load: Identifies the percent of the max load that the Thermostat is sending to the Heater.

You can use CoRE to automate any of these attributes For example, to automate the Home/Away modes in CoRE, use the presenceHome() or the presenceAway() actions (make sure you first turn on the expert settings in CoRE). Here is a screenshot of the piston I have:

You can find version 1.3 of the DTH here (github repository of infofiend / Sinope-Thermostat / master).

Let me know if you experience any issues.

And, if you feel like making a donation for these community efforts, it would be greatly appreciated: https://www.paypal.me/anthonypastor . Thanks!

-Tony

2 Likes

Thanks!
Will try this tonight (if my wife isn’t in labour) and report back.

Hey.
I’m getting errors within when trying to increase / decrease the temperature directly in the SmartThings app:
java.lang.NullPointerException: Cannot invoke method toInteger() on null object @ line 314

Looks like you’re referencing the DEVICE ID, which I have been leaving as null when creating the devices.
How do you identify the device ID? What do you put there?

I have been using sequential numbers.

I tried setting device ID to 1, and now see a slightly different error:
java.lang.NullPointerException: Cannot invoke method getAt() on null object @ line 314

I have no problem with this DH. Thank you for creating this. The visual and colors are very appealing. I still couldn’t get Alexa to work but that’s not a big deal since I don’t use it. The other thing that doesn’t work well for me is pressing the up/down arrows is a little slow on response. Is this because of neviweb server? Or because the thermostat needs time to switch mode from auto to manual?

Neviweb.com is very slow. I incorporated a 2 1/2 delay in order to ensure that commands didn’t get lost.

1 Like

I’ve updated this DTH to address the authorization problem you have. Now, instead of entering Device ID, you only have to enter the Network Name and Device Name (which are set up on Neviweb).

An example of using CoRE to automate the Home / Away modes:

Hey @infofiend.
New code is now working in the SmartThings app, but SmartTiles is behaving strangely.
When I change hit up or down in SmartTiles, it changes the setpoint to 41°, no matter what the current setpoint is.
Also, is there any way to change it to celsius?

Awesome!

If it works in the ST app, then you’re better off asking @tgauchat about SmartTiles. I don’t know what that code looks like so I can’t answer your question.

Yes. First, download the updated that version I just now uploaded onto Github. From there, its a two-step process (because Neviweb protects against changes to the settings in your Neviweb user profile):

(1) Log into Neviweb and update your temperature format in your Neviweb User Profile.

then

(2) In the device within ST app, click the tile (its the 2nd to last one) that shows “F” or “C”. Clicking that tile will force a logout and then login, which is needed to recognize any changes in your Neviweb User Profile.

Let me know if this works for you!

Tony

Hey.
It’s not working, unfortunately.
When I open a thermostat, that tile shows C, but the temperature actually displays F. When I hit the tile, it switches to Updating, but nothing happens.
I’m actually not sure the temp control is working anymore, either.

Have you changed your temperature format setting in your Neviweb user account (not the setting for the network or the device) ?

It’s always been C, for all thermostats.
But for the one I’m testing with, I changed it to F and then back to C.

Please send me the IDE log when you click on the temp format button so I can see what’s going on. It’s working on my setup.

Hello!

Have you managed to get it fixed ? I’m also stuck in F mode although it’s in Celsius in my profile account.

Gen

Have you tried reinstalling?

Also - I can’t reproduce the problem on my end, so I can’t fix until someone sends me IDE log of what happens when it doesn’t work

Hello!

As you can see, it’s set in Celsius and when Home than Auto is set, themperature changes to 68, so in F.

Any clue where I should start looking?

thermLoad 0 Sal therm load is 0
temperature 71 Sal temperature is 71
heatingSetpoint 68.0 Sal heating setpoint is 68.0
thermMode Auto Sal therm mode is Auto
Presence Home Sal therm presence is Home
thermostatOperatingState 0 Sal thermostat operating state is
heatingSetpoint 20.0 Sal heating setpoint is 20.0 celsius

When I look at the Device info in the smartthings API, here’s what I see:

temperature: 71
heatingSetpoint: 68.0
thermostatOperatingState: idle
thermMode: Auto
thermPresence: Home
thermLoad: 0
temperatureUnit: celsius

You need to sign into your SmartThings IDE account via browser and then click Live Logging. Copy and paste the portion that comes up in response to you click the temperature format tile.

But again - before you do, have you tried uninstalling and then reinstalling?

Hello!

Installed, reinstalled. Switch to F in Neviweb profile then back to C.

Here is the log when I click in the title C. Used XXXX to hide personal info.

55895b03-4e42-4f31-9c68-f27096743b8a 12:53:27: debug My operating state is …idle
55895b03-4e42-4f31-9c68-f27096743b8a 12:53:27: debug My Presence is …Away
55895b03-4e42-4f31-9c68-f27096743b8a 12:53:27: debug My temperature is …62
55895b03-4e42-4f31-9c68-f27096743b8a 12:53:27: debug myLoad == 0
55895b03-4e42-4f31-9c68-f27096743b8a 12:53:27: debug My Mode is …Away
55895b03-4e42-4f31-9c68-f27096743b8a 12:53:27: trace getBackgroundColor(61.0)
55895b03-4e42-4f31-9c68-f27096743b8a 12:53:27: debug In null, setpoint is 61.0 and temperature is 62.
55895b03-4e42-4f31-9c68-f27096743b8a 12:53:27: debug temperatureUnit = null
55895b03-4e42-4f31-9c68-f27096743b8a 12:53:27: trace selTempSetpoint( 16.00, 16.67 ):
55895b03-4e42-4f31-9c68-f27096743b8a 12:53:27: debug *****************data.status.mode == 5
55895b03-4e42-4f31-9c68-f27096743b8a 12:53:27: debug data.status == [alarm:0, errorCode:null, rssi:45, setpoint:16.00, heatLevel:0, mode:5, temperature:16.67]
55895b03-4e42-4f31-9c68-f27096743b8a 12:53:27: debug data.deviceId == XXXX
55895b03-4e42-4f31-9c68-f27096743b8a 12:53:27: debug data.devices_list == [[id:XXXX, model:1120, wattageError:null, tempMax:24, family:1120-1, name:XXXX, wattage:1750, active:1, tempMin:5, type:10, gatewayId:XXXX, wattageOverride:null], [id:XXXX, model:1120, wattageError:null, tempMax:24, family:1120-1, name:XXXX, wattage:2000, active:1, tempMin:5, type:10, gatewayId:XXXX, wattageOverride:null], [id:XXXX, wattageError:null, tempMax:24, family:1122, name:XXXX, wattage:4079, active:1, tempMin:5, type:10, gatewayXXXX, wattageOverride:null], [id:XXXX, model:1120, wattageError:null, tempMax:24, family:1120-1, name:Sous-sol, wattage:1750, active:1, tempMin:5, type:10, gatewayId:XXXX, wattageOverride:null], [id:XXXX, model:1120, wattageError:null, tempMax:24, family:1120-1, name:Tour, wattage:500, active:1, tempMin:5, type:10, gatewayId:XXXX, wattageOverride:null]]
55895b03-4e42-4f31-9c68-f27096743b8a 12:53:27: debug data == [status:[alarm:0, errorCode:null, rssi:45, setpoint:16.00, heatLevel:0, mode:5, temperature:16.67], gatewayId:XXXX, dataAuth:[session:4ukMdg0riMEZCuKD6u9g1x8pgSmbuGbREkw0dTkF, user:[id:1763, email:XXXX, locale:fr, format:[time:24, temperature:c]]], server:https://neviweb.com/, devices_list:XXXX, wattageError:null, tempMax:24, family:1120-1, name:XXXX, wattage:1750, active:1, tempMin:5, type:10, gatewayId:XXXX, wattageOverride:null], [id:8739, model:1120, wattageError:null, tempMax:24, family:1120-1, name:XXXX, wattage:2000, active:1, tempMin:5, type:10, gatewayId:XXXX, wattageOverride:null], [id:8738, model:1122, wattageError:null, tempMax:24, family:1122, name:XXXX, wattage:4079, active:1, tempMin:5, type:10, gatewayId:XXXX, wattageOverride:null], [id:8737, model:1120, wattageError:null, tempMax:24, family:1120-1, name:XXXXl, wattage:1750, active:1, tempMin:5, type:10, gatewayId:XXXX, wattageOverride:null], [id:XXXX, wattageError:null, tempMax:24, family:1120-1, name:Tour, wattage:500, active:1, tempMin:5, type:10, gatewayId:XXXX, wattageOverride:null]], auth:[session:XXXX, user:[id:XXXX, email:XXXX, locale:fr, format:[time:24, temperature:c]]], lastPresence:Home, error:false, deviceId:XXXX, gateway_list:[[icon:1, dst:1, city:XXXX, country:Canada, id:1635, kwhCost:0.0871, timezone:-5, postalCode:XXXX, name:XXXX, macID:XXXX, active:true, longitude:-72.0683829, latitude:45.247495, deviceListUpdate:null, localAPI:0]]]
55895b03-4e42-4f31-9c68-f27096743b8a 12:53:27: debug data.gateway_list == [1635]
55895b03-4e42-4f31-9c68-f27096743b8a 12:53:27: debug data.gateway_list== [[icon:1, dst:1, city:XXXXy, country:Canada, id:XXXX, kwhCost:XXXX, timezone:-5, postalCode:XXXX, name:XXXX, macID:XXXX, active:true, longitude:-72.0683829, latitude:45.247495, deviceListUpdate:null, localAPI:0]]
55895b03-4e42-4f31-9c68-f27096743b8a 12:53:27: debug dataAuthSession == 4ukMdg0riMEZCuKD6u9g1x8pgSmbuGbREkw0dTkF
55895b03-4e42-4f31-9c68-f27096743b8a 12:53:27: info Is it login?
55895b03-4e42-4f31-9c68-f27096743b8a 12:53:27: trace isLoggedIn():
55895b03-4e42-4f31-9c68-f27096743b8a 12:53:27: trace poll():