Laurence Daxes
Published © MIT

Wit.ai Control an LED by a MQTT Channel in Cayenne Server

It is a base project to control the ON/OFF switch an LED in a channel from Cayenne MQTT Server using Node.js.

IntermediateProtip1 hour805
Wit.ai Control an LED by a MQTT Channel in Cayenne Server

Things used in this project

Software apps and online services

Cayenne
myDevices Cayenne
wit.ai

Story

Read more

Code

demo.js

JavaScript
'use strict';

const Wit = require('node-wit').Wit;
const interactive = require('node-wit').interactive;
const Cayenne = require('cayenne-mqtt');

const accessToken = 'QRV6QVSA6L...';

var cayenne_options = {
  'clientId' : 'c1d7df70...',
  'username' : 'f671f020...',
  'password' : '6c7dbdfd...',
  'debug': true
}

var Client = new Cayenne.Client(cayenne_options);
Client.connect();

var Ch4 = Client.Channel('4');

// Quickstart example
// See https://wit.ai/ar7hur/quickstart

const firstEntityValue = (entities, entity) => {
  const val = entities && entities[entity] &&
    Array.isArray(entities[entity]) &&
    entities[entity].length > 0 &&
    entities[entity][0].value
  ;
  if (!val) {
    return null;
  }
  return typeof val === 'object' ? val.value : val;
};

const actions = {
  send(request, response) {
    const {sessionId, context, entities} = request;
    const {text, quickreplies} = response;
    console.log('sending...', JSON.stringify(response));
  },
  turn({context, entities}) {
    //console.log('context'); console.log(context);
    //console.log('entities'); console.log(entities);
    
    var v = firstEntityValue(entities, 'on_off');
    console.log('value: ' + v);
    if(v == 'on'){
      Ch4.switchOn();
    }
    if(v == 'off'){
      Ch4.switchOff();
    }
    return context;
  },
};

const client = new Wit({accessToken, actions});
interactive(client);

Credits

Laurence Daxes

Laurence Daxes

19 projects • 36 followers
Systems Engineer Bachellor, I Love technology, and IoT World https://youtube.com/c/DaxesHacks

Comments