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

›Integration

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の利用
  • GCP用NEQTO CloudSync
  • NEQTO Engineファームウェアリスト
  • お問い合わせに関するガイドライン

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. 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 アップデート
  • NEQTO Firmware (Bridge Wi-Fi/LTE Module) リリース
  • NEQTO Firmware (STM32 Discovery Wi-Fi) リリース
  • NEQTO Firmware (Spresense Wi-Fi/LTE-M) リリース
  • NEQTO Engine Linux版 リリース

AWS IoT Core v2

このライブラリは、AWS IoT Coreと通信する機能を提供する組み込みクラスです。

Library usage requirements
Type Integrations
Name AWS_IoT_Core_V2
Version 2020-11-04
Code size used 2.3KB
Resources used HTTPS x 1, MQTT x 1, Timers x 1

関連資料

このライブラリで使用しているAWS IoT APIの詳細については、ドキュメンテーションを参照してください。



Abstracts

Methods()/PropertiesSummary
new AWS_IOT_CORE()AWS_IOT_COREオブジェクトを、渡された設定で初期化します。

{AWS_IOT_CORE} Instance

Methods()/PropertiesSummary
.httpPost()AWS IoT CoreエンドポイントにHTTPSでデータを送信します。
.abortHttpRequest()現在進行中のHTTPリクエストを中止します。
.mqttConnect()AWS IoT CoreにMQTT接続します。
.errors無効なキー名を含む配列。 無効な構成が setConfigまたはコンストラクターに渡された場合にのみ存在します。

Details

new AWS_IOT_CORE(config)

AWS_IOT_CORE インスタンスを初期化します。

Configuration

AWS_IOT_COREインスタンスを生成する場合に、次の設定が必要です。

NameTypeDefaultSummary
hoststringMANDATORYAWS IoT Coreコンソールの設定ページにあるリクエスト用のAWS IoTエンドポイント。
deviceCertstringMANDATORYこのデバイスに関連付けられているX.509証明書。
devicePrivKeystringMANDATORYこのデバイスに関連付けられている秘密鍵。
castringMANDATORYAWS IoT Coreと通信する際に使用するルートCA。
timeoutNumber90000HTTPリクエストのタイムアウト(ms)。

configは次の形式のJavaScriptオブジェクトである必要があります。

var config = {
    host: "<String>",
    deviceCert: "<String>",
    devicePrivKey: "<String>",
    ca: "<String>",
    timeout: "<Number>"
};

configオブジェクトを、AWS_IOT_CORE に指定します。無効な値が渡された場合、setConfigの結果はerrorsプロパティに格納されるため、適切に処理する必要があります。

var iot = new AWS_IOT_CORE(config);
if ('errors' in iot) {
    // TODO: handle errors
}

Setter Methods

AWS_IOT_COREインスタンス作成後、それぞれの設定は、対応するセッターメソッドによって変更できます。無効な値がいずれかのセッターに渡されると、 falseが返されます。

SetterSummary
.setHost(value: String)AWS IoT Coreエンドポイントを設定します。
.setDeviceCert(deviceCert: String)Thingの証明書を設定します。証明書は、AWS IoT CoreコンソールでThingを作成するときに生成できます。デバイス証明書の作成とアクティブ化の詳細については、AWS IoT Coreドキュメント を参照してください。この情報が必要な理由はこちらを参照して下さい。
.setDevicePrivKey(devicePrivKey: String)Thingに設定した証明書の秘密鍵を設定します。秘密鍵は、AWS IoT CoreコンソールでThingを作成するときに生成できます。 秘密キーの作成の詳細については、AWS IoT Coreドキュメントを参照してください。 この情報が必要な理由はこちらを参照して下さい。
.setTimeout(value: Number)HTTPリクエストのタイムアウトを設定します。
.setRootCA(value: String)AWS IoT CoreのルートCAを設定します。

.setConfig(config)

setConfig メソッド を用いると、複数の設定オプションを同時に設定したり変更したりすることができます。下記のようにJSONフォーマットで指定してください。無効な値が渡された場合、無効なキーの名前を含む配列を返し、その配列にerrorsプロパティを設定します。 有効な configがsetConfigに渡され、errorsが存在する場合、それは削除されます。

iot.setConfig({
    host: "value",
    deviceCert: "value",
    devicePrivKey: "value",
    ca: "value",
    timeout: 90000
});

Instance Methods

.httpPost(topic,headers,getNextChunk,callback[,qos])

HTTPSを介して、topicで指定されたAWS IoT Coreエンドポイントにデータを送信します。使用する前に、AWS IoT CoreのThingに適切な AWS IoT Coreポリシー が設定されている必要があります。

NameTypeDefaultSummary
topicstringMANDATORYMQTTトピック
headersobjectMANDATORYリクエストに使用するHTTPヘッダー。「Content-Length」を指定する必要があります。
getNextChunkfunctionMANDATORY送信するデータを取得するためのコールバック。 データがなくなるまで4KB以下の[string/ArrayBuffer]チャンクでデータを返し、最後にnullを返します。
callback(err, resp)functionMANDATORYレスポンスを処理するためのコールバック関数。 エラーを errとして返し、レスポンスをrespとして返します。
qosNumber0リクエストに必要なQoS値。
QoSに関するAWSドキュメント
returnundefined--

Responses

AWS IoT Coreのレスポンスは、次の形式で返します。

{
    statusCode: <Number>,
    statusMessage: <String>,
    body: <String>
}

statusCode と statusMessage の詳細については、該当するデバイスのHTTPSドキュメントをご覧ください。(NEQTO Bridge | Spresense)

body は、HTTPレスポンスのbodyデータが入ります。

Errors

neqto.jsのHTTPオブジェクトのエラーを返します。

{
    errCode: <Number>
}

errCode パラメータについてはneqto.jsドキュメントをご覧ください。(NEQTO Bridge | Spresense)

.abortHttpRequest()

現在進行中のHTTPリクエストを中止します。

NameTypeDefaultSummary
returnundefined--

.mqttConnect([options])

AWS IoT CoreにMQTT接続します。使用する前に、AWS IoT CoreのThingに適切な AWS IoT Coreポリシー が設定されている必要があります。

NameTypeDefaultSummary
optionsobject{}neqto.jsのmqtt.connectメソッドのoptionを指定します。
returnMQTT.Client-AWS IoT Coreに接続されたMQTTインスタンス。
- NEQTO Bridge
- Spresense
- QoSに関するAWSドキュメント

Usage Examples

config オプションで使用できる CAの取得方法はこちら。

ルートCAがターゲットのIoT Coreエンドポイントに適切であることを確認してください。

var rootCa = '-----BEGIN CERTIFICATE-----\n...<CA>...\n-----END CERTIFICATE-----';

次のコードは、以降のサンプルコードの先頭に入ります。全ての設定を適切に置き換えて使用してください。

// IMPORTED LIBRARIES
// - AWS_IoT_Core_V2

// Logging setup
log.setLevel(0,2); //-1:NONE 0:ERROR 1:WARNING 2:DEBUG 3:TRACE, 0:DISABLE 1:LOG 2:CONSOLE 3:BOTH
log.printLevel(2); //0:DISABLE 1:LOG 2:CONSOLE 3:BOTH

// Device setup
var deviceCert = "[certificate]";
var deviceKey = "[key]";
var host = "host.iot.ap-northeast-170.amazon.aws.com"
var config = {
    host: host,
    deviceCert: deviceCert,
    devicePrivKey: deviceKey,
    ca: rootCa
}
var iotCore = new AWS_IOT_CORE(config);

if ('errors' in iotCore) {
    // TODO: handle errors
    throw 'Invalid configuration'
}

Sample 1: 自動再接続するMQTT通信

var client = iotCore.mqttConnect( {reconnectCount: 1855} );
if (!client) {
    throw 'Failed to create mqtt instance';
}
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('connect', function() {
    print("CONNECTED");
    client.subscribe("testtopic/subtopic/#", { qos: 1 }, function(err) {
        if (err.code > 0) {
            print("MQTT SUBSCRIBE ERROR", err.code);
            //TODO: Error handling
        }
    });
    client.subscribe("shadowtopic/#", { qos: 1 }, function(err) {
        if (err.code > 0) {
            print("MQTT SUBSCRIBE ERROR", err.code);
            //TODO: Error handling
        }
    });
});
setInterval(function() {
    if (client.canPublish()) {
        var body = JSON.stringify({ "message" : "dummy" })
        client.publish("testtopic/subtopic/dummy", 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 2: 手動再接続するMQTT通信

var reconnectAttempts = 0;
var maxReconnectAttempts = 24;
var registerEventHandlers = function(mqClient) {
    if (!mqClient) {
        return;
    }
    mqClient.on('error', function(err) {
        print('ERROR: ' + err.code + ' ERRNO: ' + mqClient.get('errnoConnect'));
        if (err.code == 1) { //Connection failed
            if (reconnectAttempts++ < maxReconnectAttempts) {
                print('reconnectAttempts:', reconnectAttempts);
                mqClient.reconnect();
            } else {
                print('ABORT');
                reconnectAttempts = 0;
                mqClient.end(); //Release mqtt instance
                client = undefined;
            }
        }
    });
    mqClient.on('message', function(topic, message) {
        print('TOPIC: ' + topic + ' MESSAGE: ' + message);
        //TODO: Message handling
    });
    mqClient.on('close', function() {
        print("DISCONNECTED");
        mqClient.reconnect();
    });
    mqClient.on('connect', function() {
        reconnectAttempts = 0;
        print("CONNECTED");
        mqClient.subscribe("testtopic/subtopic/#", { qos: 1 }, function(err) {
            if (err.code > 0) {
                print("MQTT SUBSCRIBE ERROR", err.code);
                //TODO: Error handling
            }
        });
    });
}
client = iotCore.mqttConnect();
if (!client) {
    throw 'Failed to create mqtt instance';
}
registerEventHandlers(client);
setInterval(function() {
    if (!client) {
        print('mqtt instance recreate');
        client = iotCore.mqttConnect();
        registerEventHandlers(client);
    }
    if (client && client.canPublish()) {
        var body = JSON.stringify({ "message" : "dummy" });
        client.publish("testtopic/subtopic/dummy", body, { qos: 1 }, function(err){
            if(err.code == 0){
                print('Publish OK');
            } else {
                print('Publish failed');
                //TODO: Error handling
            }
        });
    }
}, 15000);

Sample 3: HTTPでデータを送信します

var body = JSON.stringify({
    "message": "HTTP post"
});
var headers = {
    "Content-Length": body.length.toString()
}
// A simple method that returns `body` once, then `null` all other times.
var getBody = function() {
    var temp = body;
    body = null;
    return temp;
}

// A very simple callback to handle the HTTP response
var callback = function(err, res) {
    if (err) print(JSON.stringify(err));
    if (res) print(JSON.stringify(res));
}

iotCore.httpPost("testtopic/shadowtopic/dummy", headers, getBody, callback);

Sample 4: HTTPでデータを分割送信します

var body = JSON.stringify({
    "message": "This is a really long string[...]"
});
var headers = {
    "Content-Length": body.length.toString()
}
// This is a *dummy* example of how to chunk data for return.
// If the data is actually larger than 4KB, it is best to chunk it in the way that makes most sense.
var index = 0;
var getBody = function() {
    var ival = 8;
    var ret = body.substring(index, index + ival);
    if (ret) {
        index = index + ival;
        return ret;
    }
    return null;
}

// A very simple callback to handle the HTTP response
var callback = function(err, res) {
    if (err) print(JSON.stringify(err));
    if (res) print(JSON.stringify(res));
}

iotCore.httpPost("testtopic/shadowtopic/dummy", headers, getBody, callback);
上記に記載されている会社名、製品名は、各社の登録商標または商標です。

Updated: 2023-01-20
← 前次 →
  • Abstracts
    • {AWS_IOT_CORE} Instance
  • Details
    • new AWS_IOT_CORE(config)
    • Setter Methods
    • Instance Methods
  • Usage Examples
    • Sample 1: 自動再接続するMQTT通信
    • Sample 2: 手動再接続するMQTT通信
    • Sample 3: HTTPでデータを送信します
    • Sample 4: HTTPでデータを分割送信します
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.
© 2023 JIG-SAW INC.