Ecobee using other sensor data

Has anyone using an ecobee figured out a way to feed your thermostat sensor data from your own sources rather than just the ecobee sensors? For example, I would like to use a motion/temp sensor in our office instead of the thermostat itself since it doesn’t get regular traffic while the office does. Or do you use your own methods to control ecobee rather than the built in temp averaging algorithms?

It seems like they devised a way to do that with Smartthings.

You need to create an item with a binding to the sensor and then create a rule that uses this item to do whatever you want to do with that information
What is the sensor and how can you get the data from it?

I have a couple of motion sensors (ON/OFF switches in openhab) and a temp sensor in our office that I would prefer to use over the ecobee thermostat itself. The thermostat lives in a quiet part of the house so most of the time it is reading as unoccupied even though we’re in the next room.
So you use a separate group of rules to control ecobee (as opposed to the built in ecobee algorithms)?

That is correct.
I have a nest thermostat. BUT I have also installed wireless thermostats in all the rooms to I have fine control of the heating in each room.
You can’t override the ecobee algorithms, they are built in. But with rules in openHAB I can get the temperature in each room, compare against a scheduled target and drive the boiler and the room’s radiator valve.
Can you get the data of your office thermostat into openHAB?
How does your boiler gets fired? Is it driven by the ecobee?

Yes, all my temperature data goes into openhab. And my gas furnace is driven by ecobee. What kind of rules setup do you have for the ecobee?

None, almost, I just get the data.
You could get the data from the office thermostat, Compare against target, If you need heat, then increase the target on the ecobee and that will fire the boiler.

@hardyh - sorry to resurrect this very old thread, but I would love to accomplish the same that you were thinking of doing with my ecobee. I already have z-wave motion and temperature sensors in all of the parts of my house that I would want to control my thermostat with. Did you make any progress or do any work with it that you’re willing to share? I believe since you posted this, the ecobee binding has been significantly updated - although I have yet to determine if that makes what we’re trying to do easier or harder.

I do have some minor custom inputs to ecobee based specifically on our basement being occupied since it is generally 5 degrees cooler downstairs so when it’s occupied the furnace needs to be on more.
I added the full ecobee items list based on the ecobee binding writeup on this site (even though I don’t use them all). The additional rules kick in when the system recognizes activity in the basement. I also have one for the summer, it just turns on the circulation fan for an hour at a time when the temperature reaches a certain threshold.
Once you’ve got the ecobee binding working for heating I use something like this in my HVAC rules file:

rule BasementHeatON
  Item BasementActive changed from OFF to ON
	if (Temperature_B_EB.state <17 && weather_forecasts0_temperature.state <12){
	if (HeatOFFOverride.state == OFF){
	if(now.getHourOfDay() > 7 && now.getHourOfDay() < 16){
rule BasementHeatOFF
  Item BasementActive changed from ON to OFF

Thanks for your response! I have the full ecobee item list from this link ( but it doesn’t have an item called desiredComf. What do you have that defined as in your items? I think that might be what I’m missing.

Here is my complete items list:

Number LivingroomTemp "Living Room temperature [%.1f °C]"   { ecobee="<[ECOBEENUMBER#remoteSensors(Thermostat).capability(temperature).value]" }
Number BasementTemp "Basement temperature [%.1f °C]" { ecobee="<[ECOBEENUMBER#remoteSensors(Basement).capability(temperature).value]" }
Switch BasementOccu "Basement occupancy [%s]"          { ecobee="<[ECOBEENUMBER#remoteSensors(Basement).capability(occupancy).value]" }
Switch LivingroomOccu "Livingroom occupancy [%s]"          { ecobee="<[ECOBEENUMBER#remoteSensors(Thermostat).capability(occupancy).value]",expire="10m,command=OFF"}
DateTime LastBasementOccuTime "Last Basement Occu [%1$tm/%1$td %1$tH:%1$tM]"
DateTime LastLivingroomOccuTime "Last Living Room Occu [%1$tm/%1$td %1$tH:%1$tM]"
String hvacMode "hvac mode [%s]"            { ecobee="=[ECOBEENUMBER#settings.hvacMode]" }
String currentClimateRef "sched comf [%s]"  { ecobee="<[ECOBEENUMBER#program.currentClimateRef]" }
String desiredComf "desired comf"           { ecobee="<[ECOBEENUMBER#runningEvent.holdClimateRef]", autoupdate="false" }
Number desiredTemp "desired temp [%.1f °C]"
Number desiredHeat "desired heat [%.1f °C]" { ecobee="<[ECOBEENUMBER#runtime.desiredHeat]" }
Number desiredCool "desired cool [%.1f °C]" { ecobee="<[ECOBEENUMBER#runtime.desiredCool]" }
String desiredFan  "desired fan mode [%s]"  { ecobee="<[ECOBEENUMBER#runtime.desiredFanMode]" }
Number settings_fanMinOnTime "fanMinOnTime [%d]" { ecobee="=[ECOBEENUMBER#settings.fanMinOnTime]" }
Switch BasementActive
Switch ThermostatOverride
Number runtime_actualTemperature "actualTemperature [%.1f °C]"                 (gRuntime) { ecobee="<[ECOBEENUMBER#runtime.actualTemperature]" }
Number weather_forecasts0_temperature "temperature [%.1f °C]"                  (gWeather) { ecobee="<[ECOBEENUMBER#weather.forecasts[0].temperature]" }
Switch FanOverride { expire="60m,command=OFF" }
Switch Circulate { expire="20m,command=OFF" }

Switch HeatUp
Switch HeatDown
String ecobee_name             "Ecobee Name [%s]"                 { ecobee="=[ECOBEENUMBER#name]" }

Group All
Group gSettings (All)

String ecobee_hvacMode "Ecobee hvacMode [%s]"     (gSettings) { ecobee="=[ECOBEENUMBER#settings.hvacMode]" }
Switch ecobee_useCelsius "Ecobee useCelsius [%s]" (gSettings) { ecobee="=[ECOBEENUMBER#settings.useCelsius]" }

Group gRuntime (All)

Number ecobee_temperature  "Ecobee Temperature [%.1f °F]"  (gRuntime) { ecobee="<[ECOBEENUMBER#runtime.actualTemperature]" }
Number ecobee_humidity     "Ecobee Humidity [%d %%]"       (gRuntime) { ecobee="<[ECOBEENUMBER#runtime.actualHumidity]" }

Number ecobee_desiredCool  "Ecobee Desired Cool [%.1f °F]" (gRuntime) { ecobee="<[ECOBEENUMBER#runtime.desiredCool]" }
Number ecobee_desiredHeat  "Ecobee Desired Heat [%.1f °F]" (gRuntime) { ecobee="<[ECOBEENUMBER#runtime.desiredHeat]" }

String ecobee_schedule "Ecobee Scheduler"           { ecobee="<[ECOBEENUMBER#runningEvent.holdClimateRef]", autoupdate="false" }

Number ecobee_userCool "User Selected Heat [%.1f °F]"
Number ecobee_userHeat "User Selected Cool [%.1f °F]"

/* runningEvent.* is first event marked running, available as of openHAB 1.8 */
String ecobee_eventType "Running event type [%s]"                            (gEvents)       { ecobee="<[ECOBEENUMBER#runningEvent.type]" }

Group gRemoteSensors (All)

/* remote sensor named Office connected to an ecobee3 with ID ECOBEENUMBER */
Number ecobee_office_temperature "Basement temperature [%.1f °C]" { ecobee="<[ECOBEENUMBER#remoteSensors(Basement).capability(temperature).value]" }
Switch ecobee_office_occupancy "Basement occupancy [%s]"          { ecobee="<[ECOBEENUMBER#remoteSensors(Basement).capability(occupancy).value]" }