{"id":44677731,"url":"https://github.com/grdl/pronestheus","last_synced_at":"2026-02-15T03:33:31.203Z","repository":{"id":38329462,"uuid":"254873517","full_name":"grdl/pronestheus","owner":"grdl","description":"A Prometheus exporter for the Nest Learning Thermostat","archived":false,"fork":false,"pushed_at":"2023-10-21T21:13:08.000Z","size":233,"stargazers_count":23,"open_issues_count":5,"forks_count":8,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-06-19T19:47:52.767Z","etag":null,"topics":["golang","nest-learning-thermostat","openweathermap-api","prometheus-exporter"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grdl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-11T13:27:33.000Z","updated_at":"2024-05-30T02:08:27.000Z","dependencies_parsed_at":"2024-06-19T19:20:45.549Z","dependency_job_id":null,"html_url":"https://github.com/grdl/pronestheus","commit_stats":{"total_commits":49,"total_committers":3,"mean_commits":"16.333333333333332","dds":"0.26530612244897955","last_synced_commit":"1914e3d811465ed03db46d8e5900e2f571393ba4"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/grdl/pronestheus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grdl%2Fpronestheus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grdl%2Fpronestheus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grdl%2Fpronestheus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grdl%2Fpronestheus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grdl","download_url":"https://codeload.github.com/grdl/pronestheus/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grdl%2Fpronestheus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29466929,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T01:01:38.065Z","status":"online","status_checked_at":"2026-02-15T02:00:07.449Z","response_time":118,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["golang","nest-learning-thermostat","openweathermap-api","prometheus-exporter"],"created_at":"2026-02-15T03:33:30.492Z","updated_at":"2026-02-15T03:33:31.194Z","avatar_url":"https://github.com/grdl.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ProNestheus\n\n![build](https://github.com/grdl/pronestheus/workflows/build/badge.svg)\n[![Go Report Card](https://goreportcard.com/badge/github.com/grdl/pronestheus)](https://goreportcard.com/report/github.com/grdl/pronestheus)\n\nA Prometheus exporter for the [Nest Learning Thermostat](https://nest.com/). Exposes metrics about your thermostats and the weather in your current location.\n\nWorks with the new [Google Smart Device Management API](https://developers.google.com/nest/device-access)!\n\n![dashboard](docs/dashboard.png)\n\n## Installation\n\n### Binary download\n\nGrab the Linux, macOS or Windows executable from the [latest release](https://github.com/grdl/pronestheus/releases/latest).\n\n### Docker image\n\n```\ndocker run -p 9777:9777 -e \"PRONESTHEUS_NEST_TOKEN=xxx\" grdl/pronestheus\n```\n\n### Helm chart\n\nHelm chart is available in `deployments/helm`.\n\n### \"One-click\" installation with Docker Compose\n\nUpdate necessary variables in `deployments/docker-compose/.env` file. Then run:\n```\ncd deployments/docker-compose\ndocker-compose up\n```\n\nThis will start docker containers with Prometheus, Grafana and ProNestheus exporter automatically configured. Visit http://localhost:3000 to open Grafana dashboard with your thermostat metrics.\n\n\n### Usage and configuration\n\nAll configuration flags can be passed as environment variables with `PRONESTHEUS_` prefix. Eg, `PRONESTHEUS_NEST_AUTH`.\n\n```\nusage: pronestheus [\u003cflags\u003e]\n\nFlags:\n  -h, --help                     Show context-sensitive help (also try --help-long and --help-man).\n      --listen-addr=\":9777\"      Address on which to expose metrics and web interface.\n      --metrics-path=\"/metrics\"  Path under which to expose metrics.\n      --scrape-timeout=5000      Time to wait for remote APIs to response, in milliseconds.\n      --nest-url=\"https://smartdevicemanagement.googleapis.com/v1/\"  \n                                 Nest API URL.\n      --nest-client-id=NEST-CLIENT-ID  \n                                 OAuth2 Client ID\n      --nest-client-secret=NEST-CLIENT-SECRET  \n                                 OAuth2 Client Secret.\n      --nest-project-id=NEST-PROJECT-ID  \n                                 Device Access Project ID.\n      --nest-refresh-token=NEST-REFRESH-TOKEN  \n                                 Refresh token\n      --owm-url=\"http://api.openweathermap.org/data/2.5/weather\"  \n                                 The OpenWeatherMap API URL.\n      --owm-auth=OWM-AUTH        The authorization token for OpenWeatherMap API.\n      --owm-location=\"2759794\"   The location ID for OpenWeatherMap API. Defaults to Amsterdam.\n  -v, --version                  Show application version.\n\n```\n\n\n### Authentication\n\nTo be able to call the Nest API you need to register for Device Access with Google (there's a one-time $5 fee) and follow [the Get Started guide](https://developers.google.com/nest/device-access/get-started) to create a Device Access project and OAuth2 client.\n\nThen, follow the [Authorize the account guide](https://developers.google.com/nest/device-access/authorize) to get the necessary values for:\n* OAuth2 Client ID\n* OAuth2 Client Secret\n* Device Access Project ID\n* OAuth2 Refresh Token\n\nBecause ProNestheus is meant to run continuously, it doesn't require OAuth2 Access Token, only the Refresh Token. It will automatically get the valid access token and refresh it when needed.\n\n\nOpenWeatherMap API key is required to call the weather API. [Look here](https://openweathermap.org/appid) for instructions on how to get it.\n\n\n## Exported metrics\n\n```\n# HELP nest_ambient_temperature_celsius Inside temperature.\n# TYPE nest_ambient_temperature_celsius gauge\nnest_ambient_temperature_celsius{id=\"abcd1234\",label=\"Living-Room\"} 23.5\n# HELP nest_heating Is thermostat heating.\n# TYPE nest_heating gauge\nnest_heating{id=\"abcd1234\",label=\"Living-Room\"} 0\n# HELP nest_humidity_percent Inside humidity.\n# TYPE nest_humidity_percent gauge\nnest_humidity_percent{id=\"abcd1234\",label=\"Living-Room\"} 55\n# HELP nest_setpoint_temperature_celsius Setpoint temperature.\n# TYPE nest_setpoint_temperature_celsius gauge\nnest_setpoint_temperature_celsius{id=\"abcd1234\",label=\"Living-Room\"} 18\n# HELP nest_up Was talking to Nest API successful.\n# TYPE nest_up gauge\nnest_up 1\n# HELP nest_weather_humidity_percent Outside humidity.\n# TYPE nest_weather_humidity_percent gauge\nnest_weather_humidity_percent 82\n# HELP nest_weather_pressure_hectopascal Outside pressure.\n# TYPE nest_weather_pressure_hectopascal gauge\nnest_weather_pressure_hectopascal 1016\n# HELP nest_weather_temperature_celsius Outside temperature.\n# TYPE nest_weather_temperature_celsius gauge\nnest_weather_temperature_celsius 17.57\n# HELP nest_weather_up Was talking to OpenWeatherMap API successful.\n# TYPE nest_weather_up gauge\nnest_weather_up 1\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrdl%2Fpronestheus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrdl%2Fpronestheus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrdl%2Fpronestheus/lists"}