Node.js API wrapper for Netatmo API.
- 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)
npm install netatmo-nodejs-api
const { NetatmoClient, SCOPE_BASIC_CAMERA } = require('netatmo-nodejs-api')
// you need to set your own information
const clientId = '60...'
const clientSecret = 'abc...'
const username = 'user@domain'
const password = 'pass'
let refreshToken = ''
let accessToken = ''
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))
} else {
// use user credentials
({ accessToken, refreshToken, expiresInTimestamp } = await client.authenticateByClientCredentials(username, password))
}
// you should store accessToken, refreshToken, expiresInTimestamp for further request
}
// get data
const homes = await client.getHomes()
} catch (error) {
console.log(error)
}
You can use the authenticate
method which wrap 3 authentication methods.
const { NetatmoClient, SCOPE_BASIC_CAMERA } = require('netatmo-nodejs-api')
// you need to set your own information
const clientId = '60...'
const clientSecret = 'abc...'
const username = 'user@domain'
const password = 'pass'
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, username, password))
// you should store accessToken, refreshToken, expiresInTimestamp for further request
// get data
const homes = await client.getHomes()
} catch (error) {
console.log(error)
}
netatmo-nodejs-api is maintained under the semantic versioning guidelines.
See the releases on this repository for changelog.
This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE file for details