Ecobee Smart Si Thermostat to read in Celsius in iOS app

(MacKenzie Wilson) #1

Hi Everyone,

As the title says, I am trying to switch the unit from displaying fahrenheit (F) to celsius © of my Ecobee- Smart Si thermostat in the SmartThings iOS app.

I’ve read through the SmartThings Lab - Ecobee section, nothing of use there.

Though while digging through this code from this 2 Ecobee Si Thermostat + Geofencing topic, I notice lots of vairables:


My question do I need to go into my code and change the F’s to C’s? If so can you point me where to start in the developer side of things? I poked around the developer’s area in My Locations, My Hubs
and My Devices but nothing jumped out at me.

My strength is networking and the coding side of things is new to me. I feel this should be a simple hack but I am stumped and any direction is appreciated!


(Paul) #2

I assume your temperature scale for your location is set to Celcius.

(Yves Racine) #3

Hi @macattack,

You can use my code as an example. The custom ecobee device that I created already supports Celsius.



(MacKenzie Wilson) #4

You bet. I just tried bouncing the units to F and then back to C which did nothing either. I should explain, I have a SmartSense Moisture Sensor which is displaying in Celsius just fine under things menu screen.

(MacKenzie Wilson) #5

Hey @yvesracine,

Unfortunately I do not know where to copy and paste the code to apply it to my ecobee. I new to the dev side of things. How would I do this or if this is re-creating the wheel, can you point me to article/ thread on doing this?


(Yves Racine) #6

@macattack, could you precise what you want to achieve?

Do you want to modify a smartapp or the ecobee device itself?

  1. If you want to modify a smartapp, just be aware that Smartthings (ST) does not support inputting
    decimal values in Celcius for now (ex. 12.5), so the value to switch some smartapp code to Celcius is limited.

  2. If you want to modity the stock ST ecobee device and make it run in Celcius, I’d recommend
    to use my custom ecobee device instead as it works already in Celcius and brings much more functionalites than the ST ecobee device. The custom ecobee device will post all temperature settings
    in Celcius with the right temperature scale.

The ST ecobee device code (which only works in Farenheits at the moment) is complex as it involves also an ecobee connect smartapp that acts as a service manager.

In general, you have to deal with the temperature scale in order to customize your code for Celcius.

For example,

def scale = getTemperatureScale()
if (scale == 'C') {
	float actualTemp = fToC(data.thermostatList[0].runtime.actualTemperature)
	sendEvent(name: 'temperature', value: actualTemp.round(1).toString(),
		unit: "C", state: data.thermostatList[0].settings.hvacMode)
} else {
	sendEvent(name: 'temperature', value: (data.thermostatList[0].runtime.actualTemperature),
		unit: "F", state: data.thermostatList[0].settings.hvacMode)