Getting Started in Javascript

If you haven't read Getting Started, we'd suggest reading that first.

Want to control your Lono with Javascript? The easiest way is probably with our Lono module on npm!

// In Node:
// npm install lono
LonoClient = require("lono").LonoClient

// Client-side javascript:
// download it from https://github.com/lono-devices/lono-api-js/blob/master/dist/index.js
LonoClient

Single User Application Example

lc = new LonoClient({

  // oauth client id, secret, and scope
  client_id: "client id",
  client_secret: "client secret",
  scope: ["write"],

  // Specify the auth token here. This is shown on the Dev Settings page
  // right under client secret for a single-user application.
  auth_token: "auth token",

  on_token: function(token) {
    console.log(token, "(token) has been emitted!");
    
    device = lc.get_device("device id")
    console.log("Turn on zone:", device.set_zone(0, true))
  }

});

On start, you'll see that your token has been emitted (on_token will fire).

Then, start issuing requests!

Multi User Application Example

lc = new LonoClient({

  // oauth client id, secret, and scope
  client_id: "Client ID",
  client_secret: "Client Secret",
  scope: ["write"],

  // this is the url the app will redirect to on a
  // successful login.
  redirect_on_success: "http://127.0.0.1:3001",

  // oauth2 callback address. This is where access token requests will
  // be sent. If you also pass in an express app, the route will be created
  // for you. Otherwise, call lc.callback(req, res) when a callback
  // hits your app. Take note that for the oauth callback to work your app has
  // to be publically accessible on the internet.
  callback_url: "/callback",
  express_app: app,

  // though these callback's aren't required, they are useful
  // for diagnostic purposes.
  on_auth_code: function(authCode) {
    console.log(authCode, "(auth code) has been emitted!");
  },

  on_token: function(token) {
    console.log(token, "(token) has been emitted!");
    
    device = lc.get_device("device id")
    console.log("Turn on zone:", device.set_zone(0, true))
  }

});

Additionally, pass lc.authorize as a route to your initial "authorization"
page.

app.get("/auth", lc.authorize);

(If you aren't using express, just pass req and res: lc.authorize(req, res);)

And then, direct your user to that route (in our case, /auth). If you've set
everything up correctly, the logged-in user will be prompted to allow access to
your app. If they click yes, both on_auth_code and on_token will fire with their
respective tokens. Then, you can start issuing requests!