netatmo-nodejs-api

1.2.0 • Public • Published

netatmo-nodejs-api

license: AGPLv3 Build Status Coverage Status GitHub release npms.io (final) npm

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

Basic example with refresh token and client credentials grant type

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)
}

Authenticate wrapper (try access token, refresh token or client credentials)

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)
}

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

Package Sidebar

Install

npm i netatmo-nodejs-api

Weekly Downloads

17

Version

1.2.0

License

AGPL-3.0-or-later

Unpacked Size

74.5 kB

Total Files

7

Last publish

Collaborators

  • nioc