netatmo-nodejs-api
v2.0.0
Published
Node.js API wrapper for Netatmo API.
Downloads
76
Readme
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
andRefresh Token
and use it in the following code
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 = 0
try {
// 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.
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 = 0
try {
// 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 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