{"id":13830603,"url":"https://github.com/CFenner/MMM-Netatmo","last_synced_at":"2025-07-09T12:30:26.776Z","repository":{"id":5661657,"uuid":"50565011","full_name":"CFenner/MMM-Netatmo","owner":"CFenner","description":"A module for the MagicMirror to display information about your rooms climate from your Netatmo system.","archived":false,"fork":false,"pushed_at":"2025-06-27T22:16:14.000Z","size":1337,"stargazers_count":41,"open_issues_count":16,"forks_count":33,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-06-27T23:24:55.524Z","etag":null,"topics":["magic-mirror-modules","magicmirror","netatmo","netatmo-weather-station"],"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/CFenner.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,"zenodo":null},"funding":{"github":"cfenner","ko_fi":"hafenstrand"}},"created_at":"2016-01-28T07:33:07.000Z","updated_at":"2025-06-27T22:16:17.000Z","dependencies_parsed_at":"2023-01-13T13:39:01.322Z","dependency_job_id":"6c16df06-5d29-45d7-ae93-902e723e7d91","html_url":"https://github.com/CFenner/MMM-Netatmo","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/CFenner/MMM-Netatmo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CFenner%2FMMM-Netatmo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CFenner%2FMMM-Netatmo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CFenner%2FMMM-Netatmo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CFenner%2FMMM-Netatmo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CFenner","download_url":"https://codeload.github.com/CFenner/MMM-Netatmo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CFenner%2FMMM-Netatmo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264458042,"owners_count":23611473,"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":["magic-mirror-modules","magicmirror","netatmo","netatmo-weather-station"],"created_at":"2024-08-04T10:01:02.864Z","updated_at":"2025-07-09T12:30:26.462Z","avatar_url":"https://github.com/CFenner.png","language":"JavaScript","funding_links":["https://github.com/sponsors/cfenner","https://ko-fi.com/hafenstrand"],"categories":["Hardware"],"sub_categories":[],"readme":"[![Validation](https://github.com/CFenner/MMM-Netatmo/actions/workflows/validation.yml/badge.svg)](https://github.com/CFenner/MMM-Netatmo/actions/workflows/validation.yml)\n[![Known Vulnerabilities](https://snyk.io/test/github/cfenner/magicmirror-netatmo-module/badge.svg)](https://snyk.io/test/github/cfenner/magicmirror-netatmo-module)\n[![code climate](https://codeclimate.com/github/CFenner/MMM-Netatmo/badges/gpa.svg)](https://codeclimate.com/github/CFenner/MMM-Netatmo)\n[![JavaScript Style Guide](https://img.shields.io/badge/code_style-neostandard-brightgreen.svg)](https://github.com/neostandard/neostandard)\n[![api](https://img.shields.io/badge/api-Netatmo-orange.svg)](https://dev.netatmo.com/doc)\n[![All Contributors](https://img.shields.io/github/all-contributors/CFenner/MMM-Netatmo/main)](#contributors-)\n[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](https://choosealicense.com/licenses/mit/)\n\n# MMM-Netatmo\n\nA module for [MagicMirror²][mirror] to integrate information from a [Netatmo weather station][weather-station].\n\n![Netatmo visualisation](https://github.com/CFenner/MagicMirror-Netatmo-Module/blob/main/.github/preview.classic.png)\n![Netatmo visualisation](https://github.com/CFenner/MagicMirror-Netatmo-Module/blob/main/.github/preview.bubbles.png)\n\n## Usage\n\nPrerequisites:\n\nTo use this module you need to have access to a [Netatmo weather station][weather-station].\n\n### Installation\n\nNavigate into your MagicMirror's modules folder and clone the repository:\n\n```shell\ncd ~/MagicMirror/modules \u0026\u0026 git clone https://github.com/CFenner/MMM-Netatmo netatmo\n```\n\n:warning: Note that the checkout folder is named `netatmo` and not `MMM-Netatmo` as the repository.\n\nSince v2.1.0: **No special dependencies and no others commands are now needed!**\n\n### Connection to Netatmo Service API\n\nTo be able to access your data, you need to have an Netatmo Application. Create your personal app in the [Netatmo developer portal][dev-portal] and you will get an `APP_ID` and an `APP_SECRET` which you will need to enter in your [mirror configuration](#configuration). On the same page, scroll to *Token Generator* and create a token with the `read_station` scope. During that process you will grant your previously created Netatmo app access to your Netatmo weather station. You will actually not need the `access_token`, but the `refresh_token`. This will also go into your mirror configuration.\n\n#### Sample Data\n\nIf you don't have a Netatmo station yet, you can request a set of mock data by configuring `mockData: true` in the module configuration. In that case you don't need any user of app credentials.\n\n### Configuration\n\nTo run the module properly, you need to add the following data to your config.js file.\n\n```js\n{\n  module: 'netatmo',\n  position: 'bottom_left', // the location where the module should be displayed\n  header: 'Netatmo', // a header if you like one\n  config: {\n    clientId: '', // your app id\n    clientSecret: '', // your app secret\n    refresh_token: '', // your generated refresh token\n  }\n}\n```\n\n#### Config Options\n\nThe following properties can be configured:\n\n|Option|Description|Default|Required|\n|---|---|---|---|\n|`clientId`|The ID of your Netatmo [application][dev-portal].||yes|\n|`clientSecret`|The app secret of your Netatmo [application][dev-portal].||yes|\n|`refresh_token`|Generated refresh token for your Netatmo app and Netatmo instance.||yes|\n|`refreshInterval`|How often does the content needs to be updated (minutes)? Data is updated by netatmo every 10 minutes|`3`|no|\n|`moduleOrder`|The rendering order of your weather modules, ommit a module to hide the output. **Example:** `[\"Kitchen\",\"Kid's Bedroom\",\"Garage\",\"Garden\"]` Be aware that you need to use the module names that you set in the netatmo configuration.||no|\n|`dataOrder`|The rendering order of the data types of a module, ommit a data type to hide the output. **Example:** `[\"Noise\",\"Pressure\",\"CO2\",\"Humidity\",\"Temperature\",\"Rain\"]`||no|\n|`design`|The design for the module appearance, could be `classic` or `bubbles`.|`classic`|no|\n|`horizontal`|Control the direction of the modules.|`true`|no|\n|`showBattery`|Control the appearance of the battery status.|`true`|no|\n|`showRadio`|Control the appearance of the radio perception.|`true`|no|\n|`showWiFi`|Control the appearance of the Wifi perception.|`true`|no|\n|`showTrend`|Control the appearance of the temperature and pressure trend.|`true`|no|\n|`showMeasurementIcon`|Control the appearance of the data entry icons (`bubbles` design only).|`true`|no|\n|`showStationName`|Control the appearance of the station name next to the module name.|`true`|no|\n|`showModuleNameOnTop`|Control the position of the module name.|`false`|no|\n|`fontClassModuleName`|Control font size class of the module name.|`xsmall`|no|\n|`fontClassPrimary`|Control font size class of the primary value (`bubbles` design only).|`large`|no|\n|`fontClassSecondary`|Control font size class of the secondary value (`bubbles` design only).|`xsmall`|no|\n|`fontClassMeasurement`|Control font size class of the data entries.|`xsmall`|no|\n|`thresholdCO2Average`|Control the threshold for the CO2 status when it should turn `average` (`bubbles` design only).|`800`|no|\n|`thresholdCO2Bad`|Control the threshold for the CO2 status when it should turn `bad` (`bubbles` design only).|`1800`|no|\n|`mockData`|Use a set of mock data instead of a real data from the Netatmo API.|`false`|no|\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/kuutio-hub\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/66736498?v=4?s=100\" width=\"100px;\" alt=\"kuutio-hub\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ekuutio-hub\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#translation-kuutio-hub\" title=\"Translation\"\u003e🌍\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/zdeneksofr\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/25898139?v=4?s=100\" width=\"100px;\" alt=\"zdeneksofr\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ezdeneksofr\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#translation-zdeneksofr\" title=\"Translation\"\u003e🌍\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/tomlarse\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/4574656?v=4?s=100\" width=\"100px;\" alt=\"Tom-Inge Larsen\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTom-Inge Larsen\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#translation-tomlarse\" title=\"Translation\"\u003e🌍\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/jegerikke\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/35518057?v=4?s=100\" width=\"100px;\" alt=\"jegerikke\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ejegerikke\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#translation-jegerikke\" title=\"Translation\"\u003e🌍\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/gilmrt\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/4236800?v=4?s=100\" width=\"100px;\" alt=\"gilmrt\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003egilmrt\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#translation-gilmrt\" title=\"Translation\"\u003e🌍\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/cyber152\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/96107993?v=4?s=100\" width=\"100px;\" alt=\"cyber152\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ecyber152\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/CFenner/MMM-Netatmo/commits?author=cyber152\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Laz2516\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/40304797?v=4?s=100\" width=\"100px;\" alt=\"Laz2516\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eLaz2516\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#translation-Laz2516\" title=\"Translation\"\u003e🌍\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/ottolote\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/6615220?v=4?s=100\" width=\"100px;\" alt=\"Otto Lote\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eOtto Lote\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/CFenner/MMM-Netatmo/commits?author=ottolote\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/cgillinger\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/11836825?v=4?s=100\" width=\"100px;\" alt=\"cgillinger\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ecgillinger\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#translation-cgillinger\" title=\"Translation\"\u003e🌍\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://www.bugsounet.fr\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/30669209?v=4?s=100\" width=\"100px;\" alt=\"Bugsounet - Cédric\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBugsounet - Cédric\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/CFenner/MMM-Netatmo/commits?author=bugsounet\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/CFenner/MMM-Netatmo/issues?q=author%3Abugsounet\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/CFenner/MMM-Netatmo/pulls?q=is%3Apr+reviewed-by%3Abugsounet\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Duhlin12\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/140636121?v=4?s=100\" width=\"100px;\" alt=\"Duhlin12\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDuhlin12\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/CFenner/MMM-Netatmo/commits?author=Duhlin12\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n\n[weather-station]: https://www.netatmo.com/weather\n[dev-portal]: https://dev.netatmo.com/apps/\n[mirror]: https://github.com/SAP/jenkins-library/issues\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCFenner%2FMMM-Netatmo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCFenner%2FMMM-Netatmo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCFenner%2FMMM-Netatmo/lists"}