Using Blynk Node JS library to connect to other Node JS hardware

Hello,

Have you ever wish to use Blynk Apps to control unsupported IoT hardware? I have this example where my Particle Photon running ‘Twitter Torch’ and already exposing some cloud functions. But I want to control it with Blynk App. Rather than including Blynk library, I use Node JS library to run somewhere else to link between Blynk App to Photon. I could try to add Blynk library, but given how busy this Twitter Torch already, a lot of effort needed to optimize it. Well by the way this is the Node JS code, hope useful for anyone want to make a link between Blynk App and unsupported hardware using virtual pins, as long as you can find Node JS lib of that hardware.

#!/usr/bin/env node

var spark = require('spark');
spark.login({accessToken: '*** Particle Token ***'});
var photon;
spark.getDevice('*** Particle Device Code ***', function(err, device) {
  console.log('Device name: ' + device.name);
  photon = device;
});

var Blynk = require('blynk-library');
var AUTH = '*** Blynk Auth ***'; // blynk.cc
var blynk = new Blynk.Blynk(AUTH);

var v0 = new blynk.VirtualPin(0);
var v1 = new blynk.VirtualPin(1);
var v2 = new blynk.VirtualPin(2);
var v3 = new blynk.VirtualPin(3);
var v4 = new blynk.VirtualPin(4);
var v5 = new blynk.VirtualPin(5);
var v6 = new blynk.VirtualPin(6);
var v7 = new blynk.VirtualPin(7);

v0.on('write', function(param) {
  console.log('V0:', param[0]);

  photon.callFunction('params', 'lamp_red=' + param[0], function(err, data) {
  if (err) {
    console.log('An error occurred:', err);
  } else {
    console.log('Function called succesfully:', data);
  }
});
  
});

v1.on('write', function(param) {
  console.log('V1:', param[0]);
  
  photon.callFunction('params', 'lamp_green=' + param[0], function(err, data) {
  if (err) {
    console.log('An error occurred:', err);
  } else {
    console.log('Function called succesfully:', data);
  }
});
});

v2.on('write', function(param) {
  console.log('V2:', param[0]);
  
  photon.callFunction('params', 'lamp_blue=' + param[0], function(err, data) {
  if (err) {
    console.log('An error occurred:', err);
  } else {
    console.log('Function called succesfully:', data);
  }
});
});

v3.on('write', function(param) {
  console.log('V3:', param[0]);
  
  photon.callFunction('params', 'brightness=' + param[0], function(err, data) {
  if (err) {
    console.log('An error occurred:', err);
  } else {
    console.log('Function called succesfully:', data);
  }
});
});

v4.on('write', function(param) {
  console.log('V4:', param[0]);
  
  if (param[0]=='0') {
    photon.callFunction('params', 'mode=1', function(err, data) {
    if (err) {
      console.log('An error occurred:', err);
    } else {
      console.log('Function called succesfully:', data);
    }
    });
  }
});

v5.on('write', function(param) {
  console.log('V5:', param[0]);
  
  if (param[0]=='0') {
    photon.callFunction('params', 'mode=2', function(err, data) {
    if (err) {
      console.log('An error occurred:', err);
    } else {
      console.log('Function called succesfully:', data);
    }
    });
  }
});

v6.on('write', function(param) {
  console.log('V6:', param[0]);
  
  if (param[0]=='0') {
    photon.callFunction('params', 'mode=3', function(err, data) {
    if (err) {
      console.log('An error occurred:', err);
    } else {
      console.log('Function called succesfully:', data);
    }
    });
  }
});

v7.on('write', function(param) {
  console.log('V7:', param[0]);
  
  if (param[0]=='0') {
    photon.callFunction('params', 'mode=4', function(err, data) {
    if (err) {
      console.log('An error occurred:', err);
    } else {
      console.log('Function called succesfully:', data);
    }
    });
  }
});

2 Likes