https://github.com/nioc/netatmo-nodejs-api
Node.js wrapper for Netatmo API
https://github.com/nioc/netatmo-nodejs-api
netatmo netatmo-api nodejs security-api weather weather-station
Last synced: 5 months ago
JSON representation
Node.js wrapper for Netatmo API
- Host: GitHub
- URL: https://github.com/nioc/netatmo-nodejs-api
- Owner: nioc
- License: lgpl-3.0
- Created: 2021-07-25T18:11:32.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2025-02-05T22:13:46.000Z (8 months ago)
- Last Synced: 2025-04-30T20:07:21.073Z (5 months ago)
- Topics: netatmo, netatmo-api, nodejs, security-api, weather, weather-station
- Language: TypeScript
- Homepage:
- Size: 487 KB
- Stars: 4
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# netatmo-nodejs-api
[](https://www.gnu.org/licenses/lgpl-3.0)
[](https://github.com/nioc/netatmo-nodejs-api/actions/workflows/commit.yml)
[](https://coveralls.io/github/nioc/netatmo-nodejs-api?branch=master)
[](https://github.com/nioc/netatmo-nodejs-api/releases/latest)
[](https://www.npmjs.com/package/netatmo-nodejs-api)Node.js API wrapper for Netatmo API.
## Key features
- Authentication with all Netatmo provided methods:
- Authorization code grant type
- Client credentials grant type
- Refresh token
- Security API (get homes, get events)
- Weather API (get public data, get stations data, get measure)## Installation
``` bash
npm install netatmo-nodejs-api
```## Usage
You need to [create an application](https://dev.netatmo.com/apps/createanapp#form)
### ~~Basic example with Client Credentials grant type~~
This method has been deprecated, see [Natatmo documentation](https://dev.netatmo.com/apidocumentation/oauth#client-credential)
### Basic example with Refresh Token grant type
You need to generate a token on [Netatmo website](https://dev.netatmo.com/apps/):
- choose scopes
- click `generate token` button and accept the condition
- copy both `Access Token` and `Refresh Token` and use it in the following code```js
const { NetatmoClient, SCOPE_BASIC_CAMERA } = require('netatmo-nodejs-api')async function main () {
// you need to set your own information
const clientId = ''
const clientSecret = ''
let accessToken = ''
let refreshToken = ''
let expiresInTimestamp = 0try {
// create client
const client = new NetatmoClient(clientId, clientSecret, SCOPE_BASIC_CAMERA, { timeout: 1000 })// authenticate
if (!client.checkAndSetAccesToken(accessToken, expiresInTimestamp)) {
if (refreshToken) {
// use previous refresh token
({ accessToken, refreshToken, expiresInTimestamp } = await client.authenticateByRefreshToken(refreshToken))
// you should store accessToken, refreshToken, expiresInTimestamp for further request
console.log('update the code with following 3 lines:')
console.log(` let accessToken = '${accessToken}'`)
console.log(` let refreshToken = '${refreshToken}'`)
console.log(` let expiresInTimestamp = ${expiresInTimestamp}`)
} else {
throw new Error('Refresh token is missing')
}
}// get data
const homes = await client.getHomes()
console.log(homes)
} catch (error) {
console.log(error)
}
}main()
```### Authenticate wrapper (try access token or refresh token)
You can use the `authenticate` method which wrap 2 authentication methods.
```js
const { NetatmoClient, SCOPE_BASIC_CAMERA } = require('netatmo-nodejs-api')async function main () {
// you need to set your own information
const clientId = ''
const clientSecret = ''
let refreshToken = ''
let accessToken = ''
let expiresInTimestamp = 0try {
// create client
const client = new NetatmoClient(clientId, clientSecret, SCOPE_BASIC_CAMERA, { timeout: 1000 });// authenticate
({ accessToken, refreshToken, expiresInTimestamp } = await client.authenticate(accessToken, refreshToken, expiresInTimestamp))
// you should store accessToken, refreshToken, expiresInTimestamp for further request
console.log('update the code with following:', refreshToken)
console.log(` let accessToken = '${accessToken}'`)
console.log(` let refreshToken = '${refreshToken}'`)
console.log(` let expiresInTimestamp = ${expiresInTimestamp}`)// get data
const homes = await client.getHomes()
console.log(homes)
} catch (error) {
console.log(error)
}
}main()
```## About types
From version 2.0, this library is written in TypeScript. Response typing comes from the Netatmo Swagger, transformed into a TS interface by SwaggerEditor.
Errors may be present, so don't hesitate to [create an issue](https://github.com/nioc/netatmo-nodejs-api/issues/new) for fix.## Versioning
netatmo-nodejs-api is maintained under the [semantic versioning](https://semver.org/) guidelines.
See the [releases](https://github.com/nioc/netatmo-nodejs-api/releases) on this repository for changelog.
## License
This project is licensed under the GNU Lesser General Public License v3.0 - see the [LICENSE](LICENSE.md) file for details