Overview

Google discontinued support for its Nest thermostat Generation 1 & 2 in 2025 leaving customers in the lurch. A smart gentleman created an open source solution.

https://nolongerevil.com


Setup

We will be running the self hosted server setup which will require that we run a docker container on our home server.

Start up the NLE Server

Docker 

buildDocker.sh
CONTAINER=nolongerevil-server

IMAGE=ghcr.io/codykociemba/nolongerevil-selfhosted:latest

docker stop $CONTAINER
docker rm $CONTAINER

DIR=`pwd -P`
echo "---- docker run ----"

docker run --name $CONTAINER \
--restart=unless-stopped \
-v $DIR/data:/data \
-v $DIR/db:/app/data \
-e API_ORIGIN=http://192.168.1.50:8000 \
-p 8000:8000 \
-p 8082:8082 \
-d $IMAGE

echo "---- docker logs ----"
docker logs -f $CONTAINER


Note: In the above, I expose the SQLite folder so that rebuilding the container does not destroy our data.


Running the open-source-prototype with Front-end UI 

https://github.com/codykociemba/NoLongerEvil-Thermostat/discussions/34


This will give you a UI like:

I didn't bother doing this but here is what I discovered:


Startup everything using docker-compose. This yaml will need to be tweaked based on how you configured your thermostats.

docker-compose.yaml
version: '3.8'

services:
  # 1. Your existing backend server container
  nle-backend:
    image: ghcr.io/codykociemba/nolongerevil-api:latest
    container_name: nle-backend
    ports:
      - "7001:7001"   # The port your physical Nest talks to
    environment:
      - DATABASE_URL=mongodb://db:27017/nolongerevil
    restart: unless-stopped
    depends_on:
      - db

  # 2. THE ADDITION: The cloud-matching Web UI Dashboard
  nle-frontend:
    image: ghcr.io/codykociemba/nolongerevil-frontend:latest
    container_name: nle-frontend
    ports:
      - "8080:3000"   # Maps port 8080 on your network to the frontend UI
    environment:
      - NEXT_PUBLIC_API_URL=http://<YOUR_SERVER_IP>:7001  # Links UI to your backend API
    restart: unless-stopped
    depends_on:
      - nle-backend

  # Your existing database container for logs and schedules
  db:
    image: mongo:latest
    container_name: nle-db
    volumes:
      - nle_data:/data/db
    restart: unless-stopped

volumes:
  nle_data:



Run the GUI Installer

https://github.com/codykociemba/NoLongerEvil-Thermostat/releases

...



Homebridge Integration

To allow us to control our thermostats via Apple HomeKit, we will add a plugin to our Homebridge installation.

See https://github.com/lastowl/homebridge-nolongerevil-nest



{
  "platforms": [
      {   
          "platform": "NoLongerEvilNest",
          "name": "NoLongerEvil Nest",
          "servers": [
            {   
              "name": "Upstairs",
              "apiKey": "xxxxxxx",
              "serverUrl": "http://192.168.1.50:8082"
            },  
            {   
              "name": "Downstairs",
              "apiKey": "xxxxxxx",
              "serverUrl": "http://192.168.1.50:8082"
            }   
          ]         
      },  
}


References

  • No labels