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
npm install netatmo-nodejs-api
Usage
You need to create an application
Basic example with Client Credentials grant type
This method has been deprecated, see Natatmo documentation
Basic example with Refresh Token grant type
You need to generate a token on Netatmo website:
- choose scopes
- click
generate token
button and accept the condition - copy both
Access Token
and Refresh Token
and use it in the following code
const { NetatmoClient, SCOPE_BASIC_CAMERA } = require('netatmo-nodejs-api')
async function main () {
const clientId = ''
const clientSecret = ''
let accessToken = ''
let refreshToken = ''
let expiresInTimestamp = 0
try {
const client = new NetatmoClient(clientId, clientSecret, SCOPE_BASIC_CAMERA, { timeout: 1000 })
if (!client.checkAndSetAccesToken(accessToken, expiresInTimestamp)) {
if (refreshToken) {
({ accessToken, refreshToken, expiresInTimestamp } = await client.authenticateByRefreshToken(refreshToken))
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')
}
}
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.
const { NetatmoClient, SCOPE_BASIC_CAMERA } = require('netatmo-nodejs-api')
async function main () {
const clientId = ''
const clientSecret = ''
let refreshToken = ''
let accessToken = ''
let expiresInTimestamp = 0
try {
const client = new NetatmoClient(clientId, clientSecret, SCOPE_BASIC_CAMERA, { timeout: 1000 });
({ accessToken, refreshToken, expiresInTimestamp } = await client.authenticate(accessToken, refreshToken, expiresInTimestamp))
console.log('update the code with following:', refreshToken)
console.log(` let accessToken = '${accessToken}'`)
console.log(` let refreshToken = '${refreshToken}'`)
console.log(` let expiresInTimestamp = ${expiresInTimestamp}`)
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 for fix.
Versioning
netatmo-nodejs-api is maintained under the semantic versioning guidelines.
See the releases on this repository for changelog.
License
This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE file for details