{"id":13830297,"url":"https://github.com/michael5r/mmm-nest-status","last_synced_at":"2025-07-09T11:32:43.763Z","repository":{"id":40479697,"uuid":"160420690","full_name":"michael5r/mmm-nest-status","owner":"michael5r","description":"Display Nest Thermostat data on your MagicMirror. Supports multiple modes, sizes \u0026 views to get you exactly the look you want.","archived":false,"fork":false,"pushed_at":"2022-05-05T17:59:56.000Z","size":124,"stargazers_count":37,"open_issues_count":4,"forks_count":7,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-08-04T10:02:50.049Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/michael5r.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-12-04T21:23:47.000Z","updated_at":"2024-04-15T08:29:26.000Z","dependencies_parsed_at":"2022-08-09T21:40:52.583Z","dependency_job_id":null,"html_url":"https://github.com/michael5r/mmm-nest-status","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michael5r%2Fmmm-nest-status","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michael5r%2Fmmm-nest-status/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michael5r%2Fmmm-nest-status/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michael5r%2Fmmm-nest-status/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/michael5r","download_url":"https://codeload.github.com/michael5r/mmm-nest-status/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225539370,"owners_count":17485314,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-08-04T10:00:58.376Z","updated_at":"2024-11-20T11:30:37.496Z","avatar_url":"https://github.com/michael5r.png","language":"JavaScript","funding_links":[],"categories":["Home Automation \u0026 Notifications"],"sub_categories":[],"readme":"# Module: mmm-nest-status\n\n## A note about migrating from v1 to v2\nPlease note that v2.x of this module **only** supports the [Google Device Access API](https://developers.google.com/nest/device-access).\n\nIf you still have an old Nest developer account, you'll need to either migrate it to Google or use the [`1.4.3`](https://github.com/michael5r/mmm-nest-status/tree/1.4.3) version of this module.\n\nPrevious versions of this module were able to display Nest Protects as well as the thermostats - unfortunately, Google Device Access does not currently give you access to Nest Protects, so this functionality has (hopefully temporarily) been removed.\n\n## About This Module\n\nThe `mmm-nest-status` module is a [MagicMirror](https://github.com/MichMich/MagicMirror) addon.\nThis module requires MagicMirror version `2.5` or later.\n\nThis module displays your [Nest](https://www.nest.com) thermostats on your Magic Mirror and supports multiple modes to get you exactly the views that you want.\n\n![image](https://user-images.githubusercontent.com/3209660/144278339-5906821c-69b0-4159-bb84-5aa694f8507c.png)\n*An example showing multiple thermostats (using the large size \u0026 classic mode)*\n\n\n## Key Features\n- all states for the Nest thermostat (including Eco mode, Away mode, leaf/fan icons, etc) in 2 different designs and 3 sizes\n- 2 different modes - `grid` and `list` - allows you to easily customize your display\n- choose to display all of your thermostats, or pick \u0026 choose which devices to show\n- choose to display the name of the thermostat for easy identification\n- only re-renders the devices when data has actually changed\n\n\n## Table of Contents\n\n- [Installing the module](#installing-the-module)\n- [Using the module](#using-the-module)\n- [General Configuration Options](#general-configuration-options)\n- [Configuration Options specific to the Grid view](#configuration-options-specific-to-the-grid-view)\n- [How To Get the Access Tokens \u0026 Keys](#how-to-get-the-access-tokens-and-keys)\n- [How It Looks](#how-it-looks)\n  * [Grid view (Classic Mode)](#grid-view-classic-mode)\n  * [Grid view (Non-Classic Mode)](#grid-view-non-classic-mode)\n  * [List view](#list-view)\n  * [List view with ID](#list-view-with-id)\n  * [Minimal View](#minimal-view)\n- [FAQ](#faq)\n  * [How do I use `thermostatsToShow`?](#how-do-i-use-thermostatstoshow)\n  * [I have a humidifier hooked up to my thermostat and on the Nest app, I can see a humidifying icon when it is running. Do you show this too?](#i-have-a-humidifier-hooked-up-to-my-thermostat-and-on-the-nest-app-i-can-see-a-humidifying-icon-when-it-is-running-do-you-show-this-too)\n  * [When I run this module, the fonts look different than your screenshots. Why is that?](#when-i-run-this-module-the-fonts-look-different-than-your-screenshots-why-is-that)\n  * [Does this module support touch or mouse interactions? Eg. can I change the temperature of my thermostat using this?](#does-this-module-support-touch-or-mouse-interactions-eg-can-i-change-the-temperature-of-my-thermostat-using-this)\n  * [I'm getting a \"Device Access API rate limit has been exceeded\"-error - what does it mean?](#im-getting-a-device-access-api-rate-limit-has-been-exceeded-error---what-does-it-mean)\n  * [How does the motionSleep setting work?](#how-does-the-motionsleep-setting-work)\n- [Using Handlebars](#using-handlebars)\n\n\n## Installing the module\n1) Run `git clone https://github.com/michael5r/mmm-nest-status.git` from inside your `MagicMirror/modules` folder.\n2. Enter the new `mmm-nest-status` directory and execute `npm install`.\n\n\n## Using the module\nTo use this module, simply add it to the `modules` array in the MagicMirror `config/config.js` file:\n\n```js\n{\n    module: \"mmm-nest-status\",\n    position: \"lower_third\", // pick whichever position you want\n    config: {\n        clientId: \"\u003cYOUR_DEVICE_ACCESS_CLIENT_ID\u003e\",\n        clientSecret: \"\u003cYOUR_DEVICE_ACCESS_CLIENT_SECRET\u003e\",\n        refreshToken: \"\u003cYOUR_DEVICE_ACCESS_REFRESH_TOKEN\u003e\",\n        projectId: \"\u003cYOUR_DEVICE_ACCESS_PROJECT_ID\u003e\",\n        displayType: \"grid\",\n        displayMode: \"all\",\n        thermostatsToShow: \"all\",\n        // ... and whatever else configuration options you want to use\n    }\n},\n```\n\nThis module uses the excellent [Handlebars](http://handlebarsjs.com) library to serve up precompiled templates for the various designs. If you're just using this module **as is**, you don't need to do anything - this module already comes with all the templates you need.\n\nIf, however, you wish to modify the HTML structure of the thermostats or smoke detectors, read the [Using Handlebars](#using-handlebars) guide at the bottom of this page.\n\n\n## General Configuration Options\n\nOption               | Type             | Default   | Description\n---------------------|------------------|-----------|-------------------------------------------------------\n`clientId`           | `string`         | -         | **This value is required for this module to work.**\n`clientSecret`       | `string`         | -         | **This value is required for this module to work.**\n`refreshToken`       | `string`         | -         | **This value is required for this module to work.**\n`projectId`          | `string`         | -         | **This value is required for this module to work.**\n`displayType`        | `string`         | `grid`    | One of: `grid`, `list`, [`list-id`](#list-view-with-id-thermostat--protect)\n`thermostatsToShow`  | `string`,`array` | `all`     | One of: `all`, `first`, or an `array` with [device IDs](#list-view-with-id-thermostat--protect)\n`units`              | `string`         | config.js | One of: `imperial` (fahrenheit), `metric` (celsius)\n`updateInterval`     | `int`            | `120000`  | Default is 2 minutes - Nest recommends updating no more than once pr. minute.\n`initialLoadDelay`   | `int`            | `0`       | How long to delay the initial load (in ms)\n`motionSleep`        | `boolean`        | `false`   | Suspend module when triggered by [MMM-PIR-Sensor](https://github.com/paviro/MMM-PIR-Sensor)\n`motionSleepSeconds` | `int`            | `300`     | When motion is triggered, how long to wait before going to sleep. Default is 5 minutes.\n`showDecimals`       | `boolean`        | `true`    | Whether to show decimals on Thermostat values (eg. `24.5`). Only applies if `units` are set to `metric`.\n\n**Note:** `units` get their default value from the MagicMirror `config.js` file. I'd strongly suggest adding the value in there instead of adding it in this module.\n\n\n## Configuration Options specific to the Grid view\n\nThe following options only apply if your `displayType` has been set to `grid` - they have no effect on the list view:\n\nOption               | Type             | Default   | Description\n---------------------|------------------|-----------|-------------------------------------------------------\n`showNames`          | `boolean`        | `true`    | Displays the device name above the device\n`alignment`          | `string`         | `center`  | One of: `left`, `center`, `right`\n`thermostatSize`     | `string`         | `large`   | One of: `small`, `medium`, `large`\n`thermostatClassic`  | `boolean`        | `true`    | [Classic view](#grid-view-thermostat-classic-mode) of the thermostat\n\n\n## How To Get the Access Tokens and Keys\n\nCompared to the old Nest developer API, working with Google Device Access to get your access tokens \u0026 keys is, well, to put it mildly, a fair bit more cumbersome.\n\nIn order for this module to work, you'll need 4 things:\n- Google Cloud Platform OAuth 2.0 Client ID\n- Google Cloud Platform OAuth 2.0 Client Secret\n- Device Access Project ID\n- Device Access Refresh Token\n\nI've put together a document that tells you how to do this - [you can find it here](ACCESS_TOKENS.md).\n\n\n## How It Looks\n\n### Grid view (Classic Mode)\n\n#### Large Size\n\nWith `showNames` set to `false`.\n\n![image](https://user-images.githubusercontent.com/3209660/49625264-7b142e00-f99a-11e8-815e-05f6e92d9808.png)\n\n#### Medium Size\n\n![image](https://user-images.githubusercontent.com/3209660/49628282-dfd68500-f9a8-11e8-804f-8761070285d9.png)\n\n#### Small Size\n\n![image](https://user-images.githubusercontent.com/3209660/49628314-18765e80-f9a9-11e8-9f59-afe82964d7e7.png)\n\n### Grid view (Non-Classic Mode)\n\nThe non-classic view is a bit more abstract and doesn't include quite as detailed information as the `classic` mode.\n\n#### Large Size\n\nWith `showNames` set to `false`.\n\n![image](https://user-images.githubusercontent.com/3209660/49628758-b8cd8280-f9ab-11e8-96a5-1278311ad5d8.png)\n\n#### Medium Size\n\n![image](https://user-images.githubusercontent.com/3209660/49628974-c1728880-f9ac-11e8-9727-d37ab032f713.png)\n\n#### Small Size\n\n![image](https://user-images.githubusercontent.com/3209660/49628480-e9142180-f9a9-11e8-83d5-9d7a1cb6585e.png)\n\n### List view\n\nIf you prefer just looking at text, set the `displayType` to `list`:\n\n![image](https://user-images.githubusercontent.com/3209660/144283585-9d34d2ee-709b-45f7-8eac-0a30e111a858.png)\n\nAll states show up in the list view as well:\n\n![image](https://user-images.githubusercontent.com/3209660/144283616-065d9925-c6cc-4fa7-82c8-dbc5c6464993.png)\n\n### List view with ID\n\nIf the `displayType` is set to `list-id`, you get the list view but with IDs in front of every device:\n\n![image](https://user-images.githubusercontent.com/3209660/144283836-21d99689-aac7-4b27-9485-028b63dfd41c.png)\n\nYou can use these IDs to specify which devices to show in `thermostatsToShow` and `protectsToShow`.\n\n### Minimal View\n\nFor a very minimal \u0026 clean look, set `thermostatClassic` to `false` and `showNames` to `false`.\n\n![image](https://user-images.githubusercontent.com/3209660/144284023-2f247757-af30-47c9-95b1-b95189487cbe.png)\n\n\n## FAQ\n\n### How do I use `thermostatsToShow`?\n\nIt's simple - this configuration takes the following values:\n- `all`: This is the default, it means that all thermostats will be displayed.\n- `first`: Setting this value means that only the first thermostat in the list will be displayed.\n- `array`: Each device has an ID (which can be seen by setting `displayType` to `list-id`), so by adding these IDs to an array, you can select exactly which devices you want to display.\n\nIn `config.js`:\n```js\nthermostatsToShow: [0,1,3],\n```\n\nThis results in only the 3 thermostats above being displayed.\n\n### I have a humidifier hooked up to my thermostat and on the Nest app, I can see a humidifying icon when it is running. Do you show this too?\n\nNo, unfortunately not - there's currently no way to get this information from the Device Acccess API. It only tells me that a fan is running, but doesn't distinguish between a fan and a humidifier.\n\n### When I run this module, the fonts look different than your screenshots. Why is that?\n\nNest uses their own, proprietary font named `Akkurat` for all their devices. Seeing that this font isn't open source, I'm not able to include it with this module - if you want to use it, purchase a license and follow the instructions in the `mmm-nest-status.css` file to install.\n\nIf you don't own this font, this module will just fall back to using the standard `Roboto` font - don't worry, it still looks great.\n\n### Does this module support touch or mouse interactions? Eg. can I change the temperature of my thermostat using this?\n\nNo, right now this module only displays information - it does not allow you to control your Nest devices.\n\n### I'm getting a \"Device Access API rate limit has been exceeded\"-error - what does it mean?\n\nGoogle applies data rate limits for accessing their API - if you get this error, it means your account has reached that limit and is now **temporarily** blocked from getting Device Access API data. When this happens, the module will automatically try to load data again after **10 minutes**.\n\nThere is, unfortunately, nothing you can do about this - you simply have to wait for their block to expire.\n\n### How does the motionSleep setting work?\n\nSetting the `motionSleep` setting to `true` makes this module continually listen for `USER_PRESENCE` notifications from the [MMM-PIR-Sensor](https://github.com/paviro/MMM-PIR-Sensor) module. Whenever a positive `USER_PRESENCE` notification is received, the module will reset a timer based on your `motionSleepSeconds` setting. When the timer reaches zero, the module will then do two things:\n\n- temporarily stop pulling new data from Nest\n- hide the mmm-nest-status module\n\nYou specify how long this timer should last by using the `motionSleepSeconds` setting - please note that this setting is in **seconds** (not ms).\n\nThis sleep mode will last till the next positive `USER_PRESENCE` notification is received, at which point the module will resume by immediately pulling new Nest data and then showing the mmm-nest-status module again.\n\nThis is a good option to enable if you're using a monitor that shows an ugly \"no signal message\" when the HDMI signal is lost and you've therefore turned off the `powerSaving` setting in the MMM-Pir-Sensor module.\n\n\n## Using Handlebars\n\nThe Handlebars templates can all be found in the `templates` folder in the root of this module.\n\nBefore you do anything, if you don't have Handlebars installed, install it globally on your system:\n\n```js\nnpm install handlebars -g\n```\n\nMake any changes you wish in the relevant `.hbs` files in the `templates` folder.\n\nOnce you're done, precompile all templates by running this in your terminal:\n```js\nhandlebars \u003cpath-to-MM-modules\u003e/mmm-nest-status/templates/*.hbs -f \u003cpath-to-MM-modules\u003e/mmm-nest-status/mmm-nest-status-templates.js -m\n```\n\nMake sure you replace `\u003cpath-to-MM-modules\u003e` with the correct file path to your Magic Mirror `modules` folder.\n\nIf you have any problems, check out the [Handlebars](http://handlebarsjs.com/precompilation.html) documentation (or open an issue in this repo).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichael5r%2Fmmm-nest-status","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmichael5r%2Fmmm-nest-status","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichael5r%2Fmmm-nest-status/lists"}