Formally known as Nest_accfactory, this is a Homebridge plugin I have developed to allow Nest devices to be used with HomeKit including having support for HomeKit Secure Video on doorbells and camera devices
Building and maintaining this project takes time, effort, and resources. If you find it valuable, please consider sponsoring to support its development and future improvements. Your support makes a difference—thank you!
The following Nest devices are known to be supported by this Homebridge plugin:
- Nest Thermostats
- Nest Protects
- Nest Temperature Sensors
- Nest Cameras
- Nest Doorbells
- Nest Heat Links
- Nest × Yale Locks
Note: Google has discontinued support for 1st and 2nd generation Nest Thermostats as of October 25, 2025.
Based on this, these models are expected to stop functioning with this Homebridge plugin.
The accessory supports connection to Nest using a Nest account AND/OR a Google (migrated Nest account) account.
If you have a Nest Account, you’ll need to obtain an access token from the Nest web app.
- Go to home.nest.com and click Sign in with Nest.
- After logging in, open home.nest.com/session.
- You’ll see a JSON string similar to:
{"2fa_state":"enrolled","access_token":"XXX", ...} - Copy the value of access_token near the start (a long string beginning with
b) and paste it into your Homebridge configuration.- Ignore any other
access_tokenentries further down the string.
- Ignore any other
Note: Do not log out of home.nest.com, as this will invalidate your credentials.
Google Accounts require an "issueToken" and "cookie", which are unique to your account. You only need to do this once as long as you stay logged into your Google Account.
- Open Safari in a Private Window
- Enable the Develop Menu (Safari ▸ Settings ▸ Advanced ▸ check Show features for web developers)
- Open Develop ▸ Show Web Inspector, then select the Network tab
- Ensure Preserve Log is checked
- In the filter box, type issueToken
- Go to home.nest.com and click Sign in with Google
- After login, click the iframerpc network request
- In Headers, copy:
- Summary ▸ URL this is your issueToken
- Request ▸ Cookie: this is your cookie, which must include a key starting with
SIDCC=(ifSIDCCis missing, the cookie is incomplete and authentication will fail)
- Enter both into your Homebridge configuration
Important: Tokens must be obtained using Safari. Other browsers (Chrome, Edge, Firefox, etc.) do not reliably generate valid or non-expiring issueToken and cookie values and will often result in authentication failures or token expiry.
If you did not use Safari, re-capture the tokens using Safari.
Note: Do not log out of home.nest.com, as this will invalidate your credentials.
When using the plugin configuration with homebridge-config-ui-x, the config.json will be updated/generated with the configuration options available via the web-form. Additional options can be specified in the config.json directly.
Sample config.json entries below
{
"nest": {
"access_token": "<nest access token>",
"fieldTest": false
},
"google": {
"issuetoken": "<google issue token>",
"cookie": "<google cookie>",
"fieldTest": false
},
"options": {
"eveHistory": true,
"weather": true,
"elevation": 600,
"hksv": false
},
"devices": [
{
"serialNumber": "XXXXXXXX",
"exclude": false
},
{
"serialNumber": "YYYYYYYY",
"hksv": true
}
],
"platform": "NestAccfactory"
}
The following options are available in the config.json options object. These apply to all discovered devices and homes.
| Name | Description | Default |
|---|---|---|
| elevation | Height above sea level for weather station(s) | 0 |
| eveHistory | Provide history in EveHome application where applicable | true |
| exclude | Exclude all device(s) | false |
| ffmpegDebug | Turns on specific debugging output for when ffmpeg is invoked | false |
| ffmpegHWaccel | Enable video hardware acceleration for supported camera(s) and doorbell(s) | false |
| ffmpegPath | Path to an ffmpeg binary (looks for binary named ffmpeg in path) |
/usr/local/bin |
| hksv | Enable HomeKit Secure Video for supported camera(s) and doorbell(s) | false |
| weather | Virtual weather station for each Nest/Google home we discover | false |
The following options are available on a per-device level in the config.json devices array. Each device is specified as a JSON object, and the device is identified using the "serialNumber" key with the value of its serial number (in uppercase).
| Name | Description | Default |
|---|---|---|
| chimeSwitch | Switch to allow the indoor doorbell chime to be turned on/off | false |
| doorbellCooldown | Time between doorbell press events | 60s |
| eveHistory | Provide history in EveHome application where applicable for this device | true |
| exclude | Exclude this device | false |
| fanDuration | Fan runtime duration | |
| ffmpegDebug | Turns on specific debugging output for when ffmpeg is invoked | false |
| ffmpegHWaccel | Enable video hardware acceleration for supported camera(s) and doorbell(s) | false |
| hksv | Enable HomeKit Secure Video for supported camera(s) and doorbell(s) | false |
| hotwaterBoostTime | Time for hotwater boost heating (30, 160, 120mins) | 30mins |
| hotwaterMaxTemp | Maximum supported temperature for hotwater heating | 70c |
| hotwaterMinTemp | Minimum supported temperature for hotwater heating | 30c |
| humiditySensor | Separate humidity sensor for supported thermostat(s) | false |
| localAccess | Use direct access to supported camera(s) and doorbell(s) for video streaming and recording | false |
| motionCooldown | Time between detected motion events | 60s |
| personCooldown | Time between detected person events | 120s |
| serialNumber | Device serial number to which these settings belong to |
The following options are available on a per-home level in the config.json homes array. Each home is specified as a JSON object, and the home is identified using the "name" key.
| Name | Description | Default |
|---|---|---|
| elevation | Height above sea level for the weather station | 0 |
| eveHistory | Provide history in EveHome application where applicable for all devices | false |
| name | Name of home (from Nest/Google App) to which these settings belong to | |
| weather | Virtual weather station for this Home | false |
To support streaming and recording from cameras, an ffmpeg binary needs to be present. We have specific requirements, which are:
- version 6.0 or later
- compiled with:
- libx264
- libfdk-aac
- libspeex
- libopus
By default, we look in /usr/local/bin for an ffmpeg binary, however, you can specify a specific ffmpeg binary to use via the configuration option 'ffmpegPath'
A pre-compiled ffmpeg binary that meets these requirements is available from the ffmpeg-for-homebridge project and may be used as an alternative to building ffmpeg yourself.
This is a personal hobby project, provided "as-is," with no warranty whatsoever, express or implied, including but not limited to warranties of merchantability or fitness for a particular purpose. Building and running this project is done entirely at your own risk.
This plugin is only supported when used with official Homebridge installations.
Other platforms or forks such as HOOBS, Home Assistant, or similar derivatives are not officially supported and may not function as intended.
Please note that I am not affiliated with any companies, including but not limited to Google, Apple, or any other entities. The author of this project shall not be held liable for any damages or issues arising from its use.
If you encounter a problem, please raise an issue on the project's GitHub repository. Providing diagnostic details and being available to assist with followup testing is appreciated and helps ensure the issue can be resolved effectively.
