NEQTO Docs
  • Languages iconEnglish
    • 日本語
  • Docs
  • API
  • FAQ

›neqto.js Snippets

Getting Started

  • NEQTO Hello World!
  • Tutorial Step 1. NEQTO Console Setting
  • Tutorial Step 2. Device Settings & Launching Service (NEQTO Bridge)
  • Tutorial Step 2. Device Settings & Launching Service (STM32 Discovery)
  • Tutorial Step 2. Device Settings & Launching Service (SPRESENSE)
  • Tutorial Step 3. Application development using scripts

NEQTO

  • NEQTO Account Registration
  • Sub-accounts
  • API Usage
  • NEQTO CloudSync for GCP
  • NEQTO Engine Firmware List
  • Support Guidelines

NEQTO Console

  • Introduction
  • Fundamentals
  • Administrative Actions
  • Device Management
  • Linux-based Device Management
  • Batch Registration
  • Scripts
  • Actions and Contacts
  • View Data from the Console
  • NEQTO Apps

    • About NEQTO Apps
    • NEQTO Infinitypool
    • NEQTO Insights
    • NEQTO Custodia
    • NEQTO Flow
  • Machine Driver
  • Recommended Browsers
  • Billing Information

SPRESENSE

    Hardware Specifications

    • 01. About Spresense

    Software Specifications

    • 01. Operational Flow
    • 02. Initial Installation
    • 03. Spresense Wi-Fi Initial Setup
    • 04. Spresense LTE-M Initial Setup
    • 05. Debug Log Acquisition
    • 06. System LED Indications
    • 07. Event Messages
    • 08. Updating Firmware

    neqto.js

    • 01. About neqto.js
    • 02. Log
    • 03. Timers
    • 04. HTTP
    • 05. HTTPS
    • 06. MQTT
    • 07. Secure
    • 08. Storage
    • 09. Sleep
    • 10. RTC
    • 11. GPIO
    • 12. UART
    • 13. SPI
    • 14. I2C
    • 15. ADC
    • 16. GNSS
    • 17. Camera
    • 18. Utils
    • 19. nqSpresense
    • 20. nqService
    • 21. nqMqtt
    • 22. nqFOTA
    • 23. nqWiFi
    • 24. nqLte

STM32 Discovery

    Hardware Specifications

    • 01. About STM32 Discovery Kit (B-L4S5I-IOT01A)

    Software Specifications

    • 01. Operational Flow
    • 02. Initial Installation
    • 03. STM32 Discovery Wi-Fi Initial Setup
    • 04. Debug Log Acquisition
    • 05. System LED Indications
    • 06. Event Messages
    • 07. Updating Firmware

    neqto.js

    • 01. About neqto.js
    • 02. Log
    • 03. Timers
    • 04. HTTP
    • 05. HTTPS
    • 06. MQTT
    • 07. Secure
    • 08. Storage
    • 09. Sleep
    • 10. RTC
    • 11. UserSW
    • 12. GPIO
    • 13. UART
    • 14. SPI
    • 15. I2C
    • 16. ADC
    • 18. Utils
    • 19. nqDiscovery
    • 20. nqService
    • 21. nqMqtt
    • 22. nqFOTA
    • 23. nqWiFi

NEQTO Bridge

    Hardware Specifications

    • 01. NEQTO Bridge Module
    • 02. NEQTO Bridge Wi-Fi Module
    • 03. NEQTO Bridge LTE-1 Module
    • 04. NEQTO Bridge LTE-M/NB Module
    • 05. NEQTO Bridge IO Board
    • 06. NEQTO Bridge Digital IO Board
    • 07. NEQTO Bridge Connector Board

    Software Specifications

    • 01. Operational Flow
    • 02. NEQTO Bridge Wi-Fi Module Initial Setup
    • 03. NEQTO Bridge LTE Module Initial Setup
    • 04. Debug Log Acquisition
    • 05. System LED Indications
    • 06. Event Messages
    • 07. Updating Firmware

    neqto.js

    • 01. About neqto.js
    • 02. Log
    • 03. Timers
    • 04. HTTP
    • 05. HTTPS
    • 06. MQTT
    • 07. Secure
    • 08. Storage
    • 09. Sleep
    • 10. RTC
    • 11. UserSW
    • 12. GPIO
    • 13. UART
    • 14. SPI
    • 15. I2C
    • 16. ADC
    • 17. BLE
    • 18. Utils
    • 19. nqBridge
    • 20. nqService
    • 21. nqMqtt
    • 22. nqFOTA
    • 23. nqWiFi
    • 24. nqLte
    • 25. nqLAN
    • 26. nqEx

Linux-based device

    Software Specifications

    • 01. System Requirements
    • 02. Installation
    • 03. Software Configurations
    • 04. Operational Flow
    • 05. Debug Log Acquisition
    • 06. Event Messages
    • 07. Updating Software

    neqto.js

    • 01. About neqto.js
    • 02. Log
    • 03. Timers
    • 04. HTTP
    • 05. HTTPS
    • 06. MQTT
    • 07. Secure
    • 08. Storage
    • 09. RTC
    • 10. UNIXSocket
    • 11. FileSystem
    • 12. SubProcess
    • 13. Utils
    • 14. nqLinux
    • 15. nqService
    • 16. nqMqtt
    • 17. nqFOTA
    • 18. nqLAN

neqto.js Libraries

  • About neqto.js Libraries
  • UART

    • GM65 Barcode Reader
    • SRF Ultrasonic Range Finder - Serial Mode

    I2C

    • HTS221 v2 Temperature and Humidity Sensor
    • LIS2DW12 v2 Accelerometer
    • SRF Ultrasonic Range Finder - I2C Mode
    • [Archive] HTS221 Temperature and Humidity Sensor
    • [Archive] LIS2DW12 Accelerometer

    Utils

    • RTC Alarm Synchronized Scheduler

    Integration

    • AWS S3 v2
    • AWS IoT Core v2
    • Azure IoT v2
    • GCP IoT Core
    • [Archive] AWS S3
    • [Archive] AWS IoT Core

neqto.js Snippets

  • About neqto.js Snippets
  • DataDog
  • Dropbox
  • Google Sheets
  • InfluxDB
  • Oracle Cloud Object Storage
  • Salesforce
  • SAP Cloud Platform Internet of Things
  • Splunk
  • Niagara

Release Notes

  • NEQTO Console Updates
  • NEQTO Firmware (Bridge Wi-Fi/LTE Module) Releases
  • NEQTO Firmware (STM32 Discovery Wi-Fi) Releases
  • NEQTO Firmware (Spresense Wi-Fi/LTE-M) Releases
  • NEQTO Engine for Linux Releases

Niagara

This snippet provides a function to send IoT data to Niagara.

Resources used: HTTPS x 1 or MQTTS x 1

For more information about setting up your Niagara host and NEQTO device to work together using oBIX or MQTT, please see this blog post.


Details

The send_niagara function can be used to POST the passed 'payload' to Niagara oBIX server, over HTTPS. The result (error/response) is then passed to the callback function.

The mqtt_niagara function returns an MQTT client object connected to the specified MQTT broker. The user can use the client to PUBLISH/SUBSCRIBE to a topic, over MQTTS.

To start using this snippet, HOST (Address of the oBIX server/MQTT Broker), PORT (Port of the oBIX server/MQTT Broker), PATH (Path of the element to write data to, for oBIX server), USERNAME, PASSWORD, and CA are required to be configured by the user.

NOTE: The provided function can handle data sizes up to 4KB. To handle larger data sizes, please refer to divided writing for https objects in the neqto.js documentation.

HTTPS (oBIX)

//=================================================================
// NIAGARA OBIX SAMPLE CODE
//=================================================================

//=================================================================
// The following configuration are MANDATORY. Set by user.
//=================================================================
// The address of the oBIX Server.
var HOST = '<YOUR_HOST>';

// The port of the oBIX Server.
var PORT = '<YOUR_PORT>';

// The path to make requests to.
var PATH = '<YOUR_PATH>';

// The Username for authorization.
var USERNAME = '<YOUR_USERNAME>';

// The Password for authorization.
var PASSWORD = '<YOUR_PASSWORD>';

// Public certificate of the certificate authority that signed the oBIX server certificate for SSL/TLS handshake.  
// eg. '-----BEGIN CERTIFICATE-----\n...<CA>...\n-----END CERTIFICATE-----'
var CA = '<YOUR_CA>';
//=================================================================

/**
 * Post data to Niagara oBIX server using basic authentication.
 * @function send_niagara
 * @param {string} payload - The data to be sent to Niagara, as a string.
 * @param {function} callback - User callback to return the result (error/response).
 * @returns {undefined}
 */
var send_niagara = function (payload, callback) {
    var body = `<real val='${payload}'/>`; // assuming it is a string writable path
    var options = {
        "method": 'POST',
        "host": HOST,
        "port": Number(PORT),
        "path": PATH,
        "headers": {
            "Authorization": 'Basic ' + secure.base64Encode(`${USERNAME}:${PASSWORD}`),
            "Content-Type": 'application/json',
            "Content-Length": body.length.toString()
        },
        "ca": CA
    };
    var request = https.request(options, function (res) {
        res.on('readable', function () {
            callback(null, { "statusCode": res.statusCode, "statusMessage": res.statusMessage, "body": res.read() });
        });
        res.on('end', function () {
            callback(null, { "statusCode": res.statusCode, "statusMessage": res.statusMessage, "body": res.read() });
        });
    });
    request.on('error', function () {
        callback({ "errCode": request.errCode }, null);
    });
    request.end(body.toString(), function () {
        print('[request] SUCCESS');
    });
}

MQTTS

//=================================================================
// NIAGARA MQTT SAMPLE CODE
//=================================================================

//=================================================================
// The following configuration are MANDATORY. Set by user.
//=================================================================
// The address of the MQTT Broker.
var HOST = '<YOUR_HOST>';

// The port of the MQTT Broker.
var PORT = '<YOUR_PORT>';

// The Username for authorization.
var USERNAME = '<YOUR_USERNAME>';

// The Password for authorization.
var PASSWORD = '<YOUR_PASSWORD>';

// Public certificate of the certificate authority that signed the MQTT broker certificate for SSL/TLS handshake.  
// eg. '-----BEGIN CERTIFICATE-----\n...<CA>...\n-----END CERTIFICATE-----'
var CA = '<YOUR_CA>';
//=================================================================

/**
 * Create an MQTT Client connected to the specified MQTT Broker using basic authentication.
 * @function mqtt_niagara
 * @param {object} options - MQTT Configuration for connecting to the broker, as an Object.
 * @returns {(Client|undefined)} - {Client} : Generated MQTT {Client} | undefined : {Client} generate failed due to invalid arguments or insufficient resources.
 */
var mqtt_niagara = function (options) {
    mqtt.set('ssl.ca', CA);
    return mqtt.connect(`mqtts://${HOST}:${PORT}`, options);
}

Function Usage Example

Sample 1

This is a sample to send data to the server using the send_niagara function.

/*
<INSERT ABOVE SNIPPET HERE WITH SET CONFIGURATIONS>
*/

//=================================================================
log.setLevel(-1);       //-1:NONE 0:ERROR 1:WARNING 2:DEBUG 3:TRACE
log.printLevel(2);      //0:DISABLE 1:LOG 2:CONSOLE 3:BOTH
//=================================================================
// MAIN SCENARIO
//=================================================================

/**
 * Callback to fetch error/response from the request.
 * @function callback
 * @param {object} err - Error returned if the request failed. Has one property - `errCode`.
 * @param {object} data - Response returned by a successfully completed request. Has three properties - `statusCode`, `statusMessage`, and `body`.
 */
var callback = function (err, data) {
    if (err) {
        print("[error]", err.errCode);
    } else {
        print("[status]", data.statusCode, data.statusMessage);
        print("[response]", data.body);
    }
}

var payload = "Hello from NEQTO Device";
send_niagara(payload, callback);

Sample 2

This is a sample to publish and subscribe using the client returned from the mqtt_niagara function, with automatic reconnection enabled. After connection, loopback test of transmission and reception is performed.

/*
<INSERT ABOVE SNIPPET HERE WITH SET CONFIGURATIONS>
*/

//=================================================================
log.setLevel(-1);       //-1:NONE 0:ERROR 1:WARNING 2:DEBUG 3:TRACE
log.printLevel(2);      //0:DISABLE 1:LOG 2:CONSOLE 3:BOTH
//=================================================================
// MAIN SCENARIO
//=================================================================

var sub_topic = 'niagara/test/sub';
var pub_topic = 'niagara/test/pub';

var client = mqtt_niagara({
    "username": USERNAME, // MANDATORY
    "password": PASSWORD, // MANDATORY
    "reconnectCount": 1855
});
if (!client) {
    throw 'Failed to create mqtt instance';
}

var registerEventHandlers = function () {
    if (!client) {
        return;
    }
    client.on('error', function (err) {
        print('ERROR: ' + err.code + ' ERRNO: ' + client.get('errnoConnect'));
        //TODO: Error handling
    });
    client.on('message', function (topic, message) {
        print('TOPIC: ' + topic + ' MESSAGE: ' + message);
        //TODO: Message handling
    });
    client.on('close', function () {
        print("DISCONNECTED");
    });
    client.on('connect', function () {
        print('CONNECTED');
        client.subscribe(sub_topic, { qos: 1 }, function (err) {
            if (err.code > 0) {
                print('MQTT SUBSCRIBE ERROR', err.code);
                //TODO: Error handling
            }
        });
    });
};

registerEventHandlers();
setInterval(function () {
    if (client.canPublish()) {
        var body = 'Hello from NEQTO Device';
        client.publish(pub_topic, body, { qos: 1 }, function (err) {
            if (err.code == 0) {
                print('Publish OK');
            } else {
                print('Publish failed');
                //TODO: Error handling
            }
        });
    } else {
        print('Cannot publish');
    }
}, 15000);

Sample 3

This is a sample to publish and subscribe using the client returned from the mqtt_niagara function, with manual reconnection. If the reconnects fail consecutively, the instance is released and recreated.

/*
<INSERT ABOVE SNIPPET HERE WITH SET CONFIGURATIONS>
*/

//=================================================================
log.setLevel(-1);       //-1:NONE 0:ERROR 1:WARNING 2:DEBUG 3:TRACE
log.printLevel(2);      //0:DISABLE 1:LOG 2:CONSOLE 3:BOTH
//=================================================================
// MAIN SCENARIO
//=================================================================

var sub_topic = 'niagara/test/sub';
var pub_topic = 'niagara/test/pub';

var client = mqtt_niagara({
    "username": USERNAME, // MANDATORY
    "password": PASSWORD // MANDATORY
});
if (!client) {
    throw 'Failed to create mqtt instance';
}

var registerEventHandlers = function () {
    var reconnectAttempts = 0;
    var maxReconnectAttempts = 24;
    if (!client) {
        return;
    }
    client.on('error', function (err) {
        print('ERROR: ' + err.code + ' ERRNO: ' + client.get('errnoConnect'));
        if (err.code == 1) { //Connection failed
            if (reconnectAttempts++ < maxReconnectAttempts) {
                print('reconnectAttempts:', reconnectAttempts);
                client.reconnect();
            } else {
                print('ABORT');
                reconnectAttempts = 0;
                client.end(); //Release mqtt instance
                client = undefined;
            }
        }
    });
    client.on('message', function (topic, message) {
        print('TOPIC: ' + topic + ' MESSAGE: ' + message);
        //TODO: Message handling
    });
    client.on('close', function () {
        print("DISCONNECTED");
        client.reconnect();
    });
    client.on('connect', function () {
        reconnectAttempts = 0;
        print("CONNECTED");
        client.subscribe(sub_topic, { qos: 1 }, function (err) {
            if (err.code > 0) {
                print("MQTT SUBSCRIBE ERROR", err.code);
                //TODO: Error handling
            }
        });
    });
};

registerEventHandlers();
setInterval(function () {
    if (!client) {
        print('Recreating MQTT Instance');
        client = mqtt_niagara({
            "username": USERNAME, // MANDATORY
            "password": PASSWORD // MANDATORY
        });
        registerEventHandlers();
    }
    if (client) {
        if (client.canPublish()) {
            var body = 'Hello from NEQTO Device';
            client.publish(pub_topic, body, { qos: 1 }, function (err) {
                if (err.code == 0) {
                    print('Publish OK');
                } else {
                    print('Publish Failed');
                    //TODO: Error handling
                }
            });
        }
    } else {
        print('Cannot Publish');
    }
}, 15000);
The company names and product names mentioned above are registered trademarks or trademarks of their respective companies.

Updated: 2021-12-13
← SplunkNEQTO Console Updates →
  • Details
    • HTTPS (oBIX)
    • MQTTS
  • Function Usage Example
    • Sample 1
    • Sample 2
    • Sample 3
AboutNewsProductsFAQPrivacy Policy}
NEQTO Console
IntroductionFundamentalsAdministrative ActionsDevice Management NEQTO Apps
NEQTO Bridge
NEQTO Bridge ModuleNEQTO Bridge Wi-Fi ModuleNEQTO Bridge LTE-1 ModuleError Logging Event Messages
API Documentation
API UsageGlobal APIRegional APIAPI Terms of Service
Jigsaw, Inc.
© 2023 JIG-SAW INC.