Zoran Roncevic
Published © GPL3+

Photon & NodeJS

Simple project for communication between Particle Photon and NodeJS.

BeginnerProtip30 minutes5,187
Photon & NodeJS

Things used in this project

Story

Read more

Code

Photon

C/C++
Photon code
#define led D7

int int_value; 


int i;
int led_state = 0;

void setup() {
    
    pinMode(led,OUTPUT);

    Particle.variable("int_val", &int_value, INT);

    Particle.function("int_fun",int_function);


    i = 0;
}


void loop() {

    int_value = i;
    
    i = i + 1;

    delay(10000);
    
}


int int_function(String command) {

    if (command=="wifi_rssi") {
        return WiFi.RSSI();
    }
    if (command=="blink") {
        led_state = !led_state;
        digitalWrite(led,led_state);
        return led_state;
    }
    
}

NodeJS

JavaScript
var Particle = require('particle-api-js');
var particle = new Particle();

var token='[Here-Your-Token]';
var d_uid='[Here-Your-Device-ID]';
var timer1;

timer1 = setInterval(talk_with_photon,10000);

function talk_with_photon() {
    g_var(d_uid, token);
    c_func(d_uid, token);          
}

function g_var(d_id,l_token){
    particle.getVariable({ deviceId: d_id, name: 'int_val', auth: l_token }).then(
        function (data) {
            console.log('Device variable retrieved successfully:', data.body.result);
        }, function (err) {
            console.log('An error occurred while getting attrs:', err);
        });
}

function c_func(d_id, l_token) {

    var fnPr = particle.callFunction({ deviceId: d_id, name: 'int_fun', argument: 'wifi_rssi', auth: l_token });

    fnPr.then(
        function (data) {
            console.log('Function called succesfully WiFi_RSSI: ', data.body.return_value);
        }, function (err) {
            console.log('An error occurred:', err);
        });
        
    var fnPr2 = particle.callFunction({ deviceId: d_id, name: 'int_fun', argument: 'blink', auth: l_token });

    fnPr2.then(
        function (data) {
            console.log('Function called succesfully LED: ', data.body.return_value);
        }, function (err) {
            console.log('An error occurred:', err);
        });
}

Credits

Zoran Roncevic

Zoran Roncevic

19 projects • 128 followers
Hackster Live ambassador in Serbia. Organizer of Maker NS community.

Comments