NEQTO Docs
  • Languages icon日本語
    • English
  • ドキュメント
  • API
  • FAQ

›neqto.js Snippets

Getting Started

  • NEQTO Hello World!
  • Tutorial Step 1. NEQTO Console設定
  • Tutorial Step 2. デバイス設定とサービスの開始 (NEQTO Bridge)
  • Tutorial Step 2. デバイス設定とサービスの開始 (STM32 Discovery)
  • Tutorial Step 2. デバイス設定とサービスの開始 (SPRESENSE)
  • Tutorial Step 3. スクリプトを使ったアプリケーション開発

NEQTO

  • NEQTO アカウント登録
  • サブアカウント
  • APIの利用
  • NEQTO Engineファームウェアリスト
  • お問い合わせに関するガイドライン
  • NEQTO 製品を安全に安心してご使用いただくために
  • 脆弱性開示ポリシー

NEQTO Console

  • はじめに
  • 基本情報
  • 管理者専用の操作
  • デバイス管理
  • Linuxデバイス管理
  • 一括登録
  • スクリプト
  • アクション & コンタクト
  • Consoleでデータを表示
  • NEQTO Apps

    • NEQTO Apps について
    • NEQTO Infinitypool
    • NEQTO Insights
    • NEQTO Custodia
    • NEQTO Flow
  • Machine Driver
  • 推奨ブラウザ
  • 請求情報

SPRESENSE

    ハードウェア仕様

    • 01. About Spresense

    ソフトウェア仕様

    • 01. 動作フロー
    • 02. 初期インストール
    • 03. Spresense Wi-Fi 初期設定
    • 04. Spresense LTE-M 初期設定
    • 05. デバッグログ取得方法
    • 06. システムLED動作
    • 07. イベントメッセージ
    • 08. ファームウェア更新方法

    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

    ハードウェア仕様

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

    ソフトウェア仕様

    • 01. 動作フロー
    • 02. 初期インストール
    • 03. STM32 Discovery Wi-Fi 初期設定
    • 04. デバッグログ取得方法
    • 05. システムLED動作
    • 06. イベントメッセージ
    • 07. ファームウェア更新方法

    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

    ハードウェア仕様

    • 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

    ソフトウェア仕様

    • 01. 動作フロー
    • 02. NEQTO Bridge Wi-Fi Module 初期設定
    • 03. NEQTO Bridge LTE Module 初期設定
    • 04. デバッグログ取得方法
    • 05. システムLED動作
    • 06. イベントメッセージ
    • 07. ファームウェア更新方法

    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

    ソフトウェア仕様

    • 01. システム要件
    • 02. インストール
    • 03. ソフトウェア構成
    • 04. 動作フロー
    • 05. デバッグログ取得方法
    • 06. イベントメッセージ
    • 07. ソフトウェア更新方法

    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. SubTask
    • 14. Queue
    • 15. Utils
    • 16. nqLinux
    • 17. nqService
    • 18. nqMqtt
    • 19. nqFOTA
    • 20. 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
    • [Archive] 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
  • Splunk
  • Niagara
  • [Archive] SAP Cloud Platform Internet of Things

Release Notes

  • NEQTO Console アップデート
  • NEQTO Firmware (Bridge Wi-Fi/LTE Module) リリース
  • NEQTO Firmware (STM32 Discovery Wi-Fi) リリース
  • NEQTO Firmware (Spresense Wi-Fi/LTE-M) リリース
  • NEQTO Engine Linux版 リリース
  • neqto.js Libraries リリース

[Archive] SAP Cloud Platform Internet of Things

このライブラリはアーカイブされており、サポートされなくなりました。

このスニペットは、SAP Cloud Platform Internet of ThingsにIoTデータを送信する機能を提供します。

Resources used: HTTPS x 1 or MQTTS x 1


Details

send_sap関数は、HTTPS経由のREST APIを使用して、渡されたセンサーデータオブジェクトをSAP IoT deviceの「sensor capability」に「payload」を POST します。結果(エラー/レスポンス)は、コールバック関数に渡されます。

mqtt_sap関数は、SAP IoT MQTTブローカーに接続されたMQTTクライアントオブジェクトを返します。 ユーザーはクライアントを使用して、MQTTS経由でSAP IoT デバイストピックにパブリッシュ/サブスクライブ できます。

このスニペットを使用するには、 HOST (SAP Cloud IoTのインスタンスのホストネーム)、 DEVICE_ALTERNATE_ID (デバイスの代替ID)、 CERT (デバイスの証明書)、 KEY (暗号化されていない秘密鍵)と CA をユーザーが設定する必要があります。

SAP IoTデバイス管理ページからダウンロードした証明書には、証明書とデフォルトで暗号化されている秘密鍵の両方が含まれています。 このスニペットで使用するには、パスワードを秘密鍵から削除する必要があります。 これは、openSSL で次のコマンドを使用して実行できます。

openssl rsa -in encrypted_privatekey.pem -out un-encrypted_privatekey.pem

注意: 提供されている関数では、最大4KBまでのデータを取り扱うことができます。より大きなサイズのデータを取り扱う場合は、neqto.jsドキュメントのhttpsオブジェクト、分割書き込みを参考にしてください。

CAの取得方法はこちら。

var CA = "-----BEGIN CERTIFICATE-----\n...<CA>...\n-----END CERTIFICATE-----"

HTTPS (REST)

//=================================================================
// SAP HTTP SNIPPET
//=================================================================

//=================================================================
// The following configuration are MANDATORY. Set by user.
//=================================================================
// The address of the SAP Cloud Internet of Things instance.
var HOST = '<YOUR_HOST>';

// Alternate ID of the device.
// eg. xxxxxx
var DEVICE_ALTERNATE_ID = '<YOUR_DEVICE_ALTERNATE_ID>';

// The public certificate part of the device certificate obtained from the device management page.  
// eg. '-----BEGIN CERTIFICATE-----\n...<CERT>...\n-----END CERTIFICATE-----'
var CERT = '<YOUR_CERT>';

// The private key part of the device certificate (un-encrypted) obtained from the device management page.  
// eg. '-----BEGIN RSA PRIVATE KEY-----\n...<KEY>...\n-----END RSA PRIVATE KEY-----'
var KEY = '<YOUR_KEY>';

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

/**
 * Post data to SAP Cloud Internet of Things using client based authentication.
 * https://developers.sap.com/tutorials/iot-cf-send-data-rest.html
 * @function send_sap
 * @param {number} sensorAlternateId - Alternate ID of the sensor, as a Number.
 * @param {number} capabilityAlternateId - Alternate ID of the capability, as a Number.
 * @param {Array} payload - The data to be sent to SAP, as either an Array of arrays of specified measures, or as an Array of JSON objects where the name of each property defined in the capability is the key.
 * @param {function} callback - User callback to return the result (error/response).
 * @returns {undefined}
 */
var send_sap = function (sensorAlternateId, capabilityAlternateId, payload, callback) {
    var body = JSON.stringify({
        "sensorAlternateId": sensorAlternateId,
        "capabilityAlternateId": capabilityAlternateId,
        "measures": payload
    });
    var options = {
        "method": 'POST',
        "host": HOST,
        "path": `/iot/gateway/rest/measures/${DEVICE_ALTERNATE_ID}`,
        "headers": {
            "Content-Type": 'application/json',
            "Content-Length": body.length.toString()
        },
        "cert": CERT,
        "key": KEY,
        "ca": CA
    };
    var request = https.request(options, function (response) {
        response.on('end', function () {
            callback(null, { "statusCode": response.statusCode, "statusMessage": response.statusMessage, "body": response.read() });
        });
    });
    request.on('error', function () {
        callback({ "errCode": request.errCode }, null);
    });
    request.end(body.toString(), function () {
        print("[request] SUCCESS");
    });
}

MQTTS

//=================================================================
// SAP MQTT SNIPPET
//=================================================================

//=================================================================
// The following configuration are MANDATORY. Set by user.
//=================================================================
// The address of the SAP Cloud Internet of Things instance.
var HOST = '<YOUR_HOST>';

// Alternate ID of the device.
// eg. xxxxxx
var DEVICE_ALTERNATE_ID = '<YOUR_DEVICE_ALTERNATE_ID>';

// The public certificate part of the device certificate obtained from the device management page.  
// eg. '-----BEGIN CERTIFICATE-----\n...<CERT>...\n-----END CERTIFICATE-----'
var CERT = '<YOUR_CERT>';

// The private key part of the device certificate (un-encrypted) obtained from the device management page.  
// eg. '-----BEGIN RSA PRIVATE KEY-----\n...<KEY>...\n-----END RSA PRIVATE KEY-----'
var KEY = '<YOUR_KEY>';

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

/**
 * Create an MQTT Client connected to SAP Cloud Internet of Things using client based authentication.
 * https://developers.sap.com/tutorials/iot-cf-send-data-mqtt.html
 * @function mqtt_sap
 * @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_sap = function (options) {
    mqtt.set('ssl.ca', CA);
    mqtt.set('ssl.key', KEY);
    mqtt.set('ssl.cert', CERT);
    return mqtt.connect(`mqtts://${HOST}:8883`, options);
}

Function Usage Example

Sample 1

これはsend_sap関数を使用してサーバーにデータを送信するサンプルです。

/*
<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 in case of a failed request. 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 sensorAlternateId = 123;
var capabilityAlternateId = 123456;
var payload = [
    {
        "testProperty": 'Hello from NEQTO Device' // "property": '<DATA>'
    }
];
send_sap(sensorAlternateId, capabilityAlternateId, payload, callback);

Sample 2

これは自動再接続を有効にし、mqtt_sap関数から返されたクライアントでパブリッシュおよびサブスクライブするサンプルです。 接続後、送受信のループバックテストを行います。

/*
<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 sensorAlternateId = 5;
var capabilityAlternateId = 123456;

var sub_topic = `ack/${DEVICE_ALTERNATE_ID}`;
var pub_topic = `measures/${DEVICE_ALTERNATE_ID}`;

var client = mqtt_sap({
    "clientId": DEVICE_ALTERNATE_ID.toString(), // 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 payload = [
            {
                "testProperty": 'Hello from NEQTO Device' // "property": '<DATA>'
            }
        ];
        var body = JSON.stringify({
            "sensorAlternateId": sensorAlternateId,
            "capabilityAlternateId": capabilityAlternateId,
            "measures": payload
        });
        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

これは手動で再接続をして、 mqtt_sap関数から返されたクライアントでパブリッシュおよびサブスクライブするサンプルです。 再接続が連続して失敗した場合、インスタンスは解放され再作成されます。

/*
<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 sensorAlternateId = 5;
var capabilityAlternateId = 123456;

var sub_topic = `ack/${DEVICE_ALTERNATE_ID}`;
var pub_topic = `measures/${DEVICE_ALTERNATE_ID}`;

var client = mqtt_sap({
    "clientId": DEVICE_ALTERNATE_ID.toString() // 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_sap({
            "clientId": DEVICE_ALTERNATE_ID.toString() // MANDATORY
        });
        registerEventHandlers();
    }
    if (client) {
        if (client.canPublish()) {
            var payload = [
                {
                    "testProperty": 'Hello from NEQTO Device' // "property": '<DATA>'
                }
            ];
            var body = JSON.stringify({
                "sensorAlternateId": sensorAlternateId,
                "capabilityAlternateId": capabilityAlternateId,
                "measures": payload
            });
            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);
上記に記載されている会社名、製品名は、各社の登録商標または商標です。

Updated: 2023-09-12
← 前次 →
  • Details
    • HTTPS (REST)
    • MQTTS
  • Function Usage Example
    • Sample 1
    • Sample 2
    • Sample 3
NEQTO とはニュースサービスFAQプライバシーポリシー脆弱性開示ポリシー
NEQTO Console
はじめに基本情報管理者専用の操作デバイス管理NEQTO Apps
NEQTO Bridge
NEQTO Bridge ピン配置NEQTO Bridge Wi-Fi ModuleNEQTO Bridge LTE-1 Moduleデバッグログ取得方法イベントメッセージ
APIのドキュメント
APIの利用グローバル APIリージョン APIAPIサービス利用規約
Jigsaw, Inc.
© 2025 JIG-SAW INC.