A Home Assistant Add-on that provides self-hosted Nest thermostat control via the NoLongerEvil API. Control your Nest thermostats locally without relying on external cloud services.
-
Click the button below to add this repository to your Home Assistant instance:
-
Find NoLongerEvil HomeAssistant in the Add-on store and click Install
-
Configure the Add-on (see Configuration below)
-
Start the Add-on
-
Select "Watchdog" to restart the server if it crashes
-
(Optional) Select "Add to sidebar" for ease of use during thermostat configuration
-
Navigate to Settings > Add-ons > Add-on Store
-
Click the menu icon (three dots) in the top right and select Repositories
-
Add this repository URL:
https://github.com/codykociemba/NoLongerEvil-HomeAssistant -
Click Add and close the dialog
-
Find NoLongerEvil HomeAssistant in the store and click Install
- Home Assistant OS (not Home Assistant Container) - Learn more
- Mosquitto broker add-on - Required for MQTT integration
After installing the add-on, configure it on the "Configuration" tab via the Home Assistant UI:
| Option | Required | Default | Description |
|---|---|---|---|
api_origin |
Yes | http://192.168.1.x:9543 |
Full URL where Nest devices reach this add-on (protocol + host + port). Always use an IP address — do not use homeassistant.local as mDNS can fail for Nest devices |
entry_key_ttl_seconds |
No | 3600 |
How long entry keys remain valid (seconds) |
debug_logging |
No | false |
Enable verbose logging for troubleshooting |
mqtt_host |
No | (auto-detected) | MQTT broker hostname (leave empty to use Mosquitto add-on) |
mqtt_port |
No | 1883 |
MQTT broker port |
mqtt_user |
No | (empty*) | MQTT username for authentication |
mqtt_password |
No | (empty*) | MQTT password for authentication |
- Fields can be empty under HAOS. Enter your credentials if you're using an external MQTT broker.
api_origin: "http://192.168.1.100:9543"
entry_key_ttl_seconds: 3600
debug_logging: false| Port | Purpose | Access |
|---|---|---|
| 9543 (host) → 8000 (container) | Nest device communication | External (configurable) |
| 8082 | Control API + Web UI | Ingress only (default) |
By default the dashboard is only accessible via the HA sidebar through Ingress. If you want direct access at http://<HA-IP>:<port> (e.g. for development or external tools), go to Settings → Add-ons → NoLongerEvil → Configuration → Network and assign a host port to container port 8082, then restart the add-on.
The No Longer Evil firmware installer handles thermostat configuration automatically:
- Flash your Nest thermostat using the No Longer Evil firmware installer
- During flashing, select Self-Hosted when asked how you want to connect
- The installer will scan your LAN for a running No Longer Evil add-on and configure the thermostat automatically using the add-on's
/infoendpoint - Once flashing completes, open the add-on Web UI and the thermostat will appear in the device list
Use this if the firmware installer could not auto-configure your thermostat.
SSH credentials: The default username is root and default password is nolongerevil. However, if the firmware installer prompted you to set a password during the flashing process, use that password instead. The default nolongerevil password applies to older devices or installs that skipped the password step.
-
SSH to your thermostat:
ssh root@<nest_ip> -
Enter your password (default:
nolongerevil— see note above) -
Edit the config file:
vi /etc/nestlabs/client.config -
Press
ito enter edit mode -
Find
<a key="cloudregisterurl" .../>and update it to:<a key="cloudregisterurl" value="http://<homeassistant_IP>:9543/entry"/>Tip: Not sure of your IP? Query
http://<homeassistant_IP>:9543/infofrom any browser on your network — thecloudregisterurlfield in the response is the exact value to use here.Do not omit
/entryfrom the URL. -
Press
Escape, then type:wqto save and quit -
Reboot the thermostat:
reboot -
Once rebooted, on the thermostat go to Settings (gear icon) → Nest App → Get Entry Key to generate a pairing code
Note: Pairing is only required if
require_device_pairingis enabled in the add-on configuration (disabled by default). If it's disabled, your thermostat will connect and appear automatically without needing a pairing code.
If pairing is enabled:
- Open the add-on Web UI via the Open Web UI button
- Enter the 7-character pairing code from your thermostat and click Register
- The thermostat will appear in Home Assistant via MQTT discovery
- HackHouse Discord - Join
#nle-home-assistantchannel - GitHub Issues - Bug reports and feature requests
Need help getting set up? Watch the walkthrough:
- NoLongerEvil SelfHosted - Python server powering this add-on
- Home Assistant Nest Integration - Alternative integration
Hardware Alternative: If you're interested in the hardware side of things, check out sett.homes for a drop-in PCB replacement option.
- Nest Thermostat Protocol Reference - Deep dive into the Nest communication protocol and how the device, transport, and subscription layers work together (credit: @cjserio)
NoLongerEvil is created and maintained by Hack House and our open source contributors. Contributors are recognized in the #nle-home-assistant channel on Discord with the NLE Contributor role.
See the CONTRIBUTING guide for development setup instructions.
This project is licensed under the MIT License - see the LICENSE file for details.
