What Can I Do With the Honeywell Home Thermostat API?
You can control the various functions of our Honeywell Home Round Thermostat as well as get status from the device itself including:
-
Getting and changing current setpoint(s)
-
Getting and changing System Mode (e.g., Heat, Cool, Off)
-
Get and change the Fan Mode
-
Get current indoor temperature and indoor humidity readings
-
Get user and location information
Note: A physical Honeywell Home device is required to use the API. We currently do not have a simulator.
To start using the API you have two options:
- Using the interactive documentation which gets you past the step of setting up an OAuth redirect URL for tokens
- Registering an OAuth Redirect URL to your application and using your own code
Requirements:
- A Honeywell Home account with a connected/installed device
- An API Key
Example API Call Flow:
First: Make sure you have an OAuth token or are using the built in documentation. If you aren't familiar with OAuth, start with the OAuth2 Guide.
Second: Get a user's locations and devices. Here you'll want to store the locationIDs and deviceIDs for later use in changing settings.
Request:
curl -H "Authorization: Bearer accessTokenHere" api.honeywell.com/v2/locations?apikey=yourApiKeyHere
Response Snippet:
[ { "locationID": 29769, "name": "home", "streetAddress": "1985 Douglas drive", "city": "Golden valley", "state": "MN", "country": "Usa", "zipcode": "55422", "devices": [ { "deviceID": "TCC-1105359", "name": "Desk Test", "userDefinedDeviceName": "Desk Test"....
Third: You can use the locationId to get all the devices for a particular location
Request:
curl -H "Authorization: Bearer accessTokenHere" api.honeywell.com/v2/devices?apikey=apiKeyHere&locationId=29769
Response Snippet:
[ { "deviceID": "TCC-1105359", "name": "Desk Test", "userDefinedDeviceName": "Desk Test", "thermostat": { "units": "Fahrenheit", "indoorTemperature": 73.0000, "outdoorTemperature": 57.0000, "allowedModes": [ "Cool", "Heat", "Off" ], "deadband": 0.0000, "hasDualSetpointStatus": false, "minHeatSetpoint": 40.0000, "maxHeatSetpoint": 90.0000, "minCoolSetpoint": 50.0000, "maxCoolSetpoint": 99.0000, "changeableValues": { "mode": "Heat", "autoChangeoverActive": true, "heatSetpoint": 73.0000, "coolSetpoint": 78.0000 }.... ]
Fourth: The part we are should focus on is the "changeableValues" array. I'm too cold, so I'd appreciate if you change the setpoint up a couple degrees. It is a best practice to just take the changeableValues array and modify the settings you wish to change and leave the rest as-is when you POST it back.
curl -X POST -H "Authorization: Bearer accessTokenHere" -H "Content-Type: application/json" -d '{ "mode": "Heat", "autoChangeoverActive": true, "heatSetpoint": 74,"coolSetpoint": 78 }' https://api.honeywell.com/v2/devices/thermostats/TCC-1105359?apikey=apiKeyHere&locationId=29769
You should recieve a 200 response, and the setpoint on your device should change pretty quickly after that.