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版 リリース

Azure IoT v2

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

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

関連資料

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



Abstracts

Methods()/PropertiesSummary
new AZURE_IOT()AZURE_IOTインスタンスを初期化します。

{AZURE_IOT} Instance

Methods()/PropertiesSummary
.generateSasToken()Azure IoT Hubでこのデバイスを認証するために使用するSASトークンを生成します。
.httpPost()HTTPS経由でAzure IoT Hubにデータを送信します。
.abortHttpRequest()現在進行中のHTTPリクエストを中止します。
.mqttConnect()Azure IoT HubにMQTT接続します。
.errors無効なキー名を含む配列。 無効な構成が setConfigまたはコンストラクターに渡された場合にのみ存在します。

Details

new AZURE_IOT(config)

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

Configuration

AZURE_IOT オブジェクトのインスタンスを作成する際には、以下の設定が必要です。

NameTypeDefaultSummary
hoststringMANDATORY有効なAzure IoT Hubエンドポイント。 デフォルトでは、Azure IoT HubのDNS名は {IoT Hub 名}.azure-devices.net のようになります。
deviceIdstringMANDATORYAzure IoT Hub内のデバイスIDです。これは、Azure IoT HubのIDレジストリにデバイスを登録したときに作成されます。
primaryKeystringMANDATORYAzure IoT Hubのサービスプライマリキーです。 これは、ID レジストリからの対称キー、または 共有アクセス・ポリシーからの鍵のいずれかになります。
castringMANDATORYAzure IoT HubとHTTP通信する際に使用するルートCA。
timeoutnumber90000デフォルトは 90000 ミリ秒 (90 秒)です。HTTPSリクエストの場合、リクエストが自動的にタイムアウトするまでの時間を変更します。
tokenTimeoutnumber3600デフォルトは3600秒(1時間)です。生成されたSASトークンが有効な時間 (秒)です。

configは以下の形式のJavaScriptオブジェクトでなければなりません。

var config = {
    host: "<String>",
    deviceId: "<String>",
    primaryKey: "<String>",
    ca: "<String>"
    timeout: "<Number>",
    tokenTimeout: "<Number>"
};

設定オブジェクトが作成されると、インスタンス作成時に AZURE_IOT に渡すことができます。無効な値が渡された場合、setConfigの結果はerrorsプロパティに格納されるため、適切に処理する必要があります。

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

Setter Methods

AZURE_IOT オブジェクトのインスタンスを作成した後、対応するセッターメソッドを用いて前述の設定を変更することができます。無効な値がいずれかのセッターメソッドに渡されると、 false が返されます。

SetterSummary
.setHost(value: String)Azure IoT Hubに接続する際に使用する Host の値を設定します。Azure IoT Hub コンソールでは、この値はデバイスを表示する際の「Primary Connection String」属性の HostName になります。
.setDeviceId(value: String)このデバイスの認証に使用する deviceId の値を設定します。device_id の値は、Azure IoT Hubコンソールのデバイス詳細に記載されています。
.setPrimaryKey(value: String)このデバイスの認証に使用する primary_key の値を設定します。primary_key の値は、Azure IoT Hub コンソールのデバイス詳細に記載されています。
.setRootCA(value: String)リクエストを行うIoT HubインスタンスのCAを設定します。
.setTimeout(value: Number)HTTPSリクエストのタイムアウトを設定します。
.setTokenTimeout(value: Number)トークンのタイムアウトを設定します。

.setConfig(config)

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

iot.setConfig({
    host: "value",
    deviceId: "value",
    primaryKey: "value",
    tokenTimeout: "value",
    timeout: "value"
});

Instance Methods

.generateSasToken([resourceUri][,signingKey][,policyName][,expiresInSecs])

Azure IoT Hub でこのデバイスを認証するために使用される SAS トークン を生成します。

NameTypeDefaultSummary
resourceUristring{host}/devices/{deviceId}このデバイスのURIです。
signingKeystring{primaryKey}SASトークンの署名に使用されるキーです。
policyNamestringundefinedセキュリティトークンを生成するためのポリシー名(該当する場合)です。これは primaryKey として渡される値によって異なる値を持ちます。有効な値は、Azure IoT Hub セキュリティトークンのドキュメントのさまざまなセクションに記載されています。
expiresInSecsstringtokenTimeoutトークンのタイムアウトです。
returnstring-MQTT 接続の確立や HTTPS リクエストに使用される認証トークンです。

.httpPost(token,length,getBody,callback[,endpoint])

HTTPS経由でAzure IoT Hubにデータを送信します。

使用する前に、適切な権限が設定されていること、およびこのデバイスの接続がIoT Hubの制限内で許可されていることを確認してください。

NameTypeDefaultSummary
tokenstringMANDATORY認証に用いられるトークンで、generateSasToken から返されます。
lengthstringMANDATORYAzure IoT Hubに送信するデータ量になります。
getBodyfunctionMANDATORY送信するbodyデータを取得するためのコールバック。 データがなくなるまで4KB以下の[string/ArrayBuffer]チャンクでデータを返し、最後にnullを返します。
callback(err, resp)functionMANDATORYレスポンスを処理するためのユーザのコールバック関数です。エラー を err、レスポンス を resp として渡します。
endpointstring/messages/events?api-version=2018-06-30有効なAzure IoT Hub ルーティングエンドポイントです。QoSやその他のプロパティはクエリパラメータで、Azure IoT Documentationでは {property_bag} として記述されています。デフォルトでは、テレメトリエンドポイント /messages/events?api-version=2018-06-30 にPOSTします。
returnundefined--

Responses

このライブラリは、Azure IoT Hubのレスポンスを処理するためにオブジェクトを使用します。これらのレスポンスは、常に以下の形式になっています。

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

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

bodyはHTTPSレスポンスのデータです。

Errors

このライブラリは、HTTPSのエラーから Error オブジェクトをユーザが提供するコールバックに渡します。エラーオブジェクトの形式は以下の通りです。

{
    errCode: <Number>
}

errCode パラメータの詳細はneqto.jsのドキュメントにあります。(NEQTO Bridge | Spresense )

.abortHttpRequest()

現在進行中のHTTPS要求を中止します。

NameTypeDefaultSummary
returnundefined--

.mqttConnect(token[,options])

MQTT接続ドキュメントに従ってAzure IoT Hubとの接続を確立します。Azure IoT Hubは、デバイスごとにアクティブなMQTT接続を1つしかサポートしていません。

使用する前に、適切な権限が設定されていること、およびこのデバイスの接続がIoT Hubの制限の範囲内で許可されていることを確認してください。

x.509 証明書を使用した認証は現在サポートされていません。

NameTypeDefaultSummary
tokenstringMANDATORY認証に用いられるトークンで、generateSasToken から返されます。
optionsobject{}適切なMQTTのドキュメントにあるMQTTオプション。clientId, username, password は予約語であり、上書きされます。
returnMQTT.Client-Azure IoT Hubに接続されたMQTTクライアントです。このオブジェクトの詳細については、デバイスの適切なMQTTページを参照してください。
- NEQTO Bridge
- Spresense

Usage Examples

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

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

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

以下のサンプルコードのセクションでは、すべて以下の設定を使用しています。

// IMPORTED LIBRARIES
// - Azure_IoT_V2

// Setup logging
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

// Set config
var config = {
    host: "<String>",
    deviceId: "<String>",
    primaryKey: "<String>",
    tokenTimeout: "<Number>",
    timeout: "<Number>",
    ca: rootCa
};

var iot = new AZURE_IOT(config);

if ('errors' in iot) {
    // TODO: Handle errors
    throw 'Invalid configuration'
}

Sample 1: 基本的なHTTPS通信

var token = iot.generateSasToken();
var body = "sample text to send to Azure IoT Hub"
var getBody = function() {
    var temp = body;
    body = null;
    return temp;
}
var length = body.length.toString();

var callback = function (err, data) {
    if (err) {
        print("Error!", err.errCode, err.message);
    } else {
        print(data.statusCode, data.statusMessage);
        print(data.body);
    }
}
iot.httpPost(token, length, getBody, callback);

Sample 2: トークンの有効期限が切れた場合のMQTTでの再接続

var reconnectAttempts = 0;
var client;

var reconnectSt = 0;    //0: No reconnect, 1: Reconnect backoff, 2: Expired backoff(available reconnect)
var scheduleMqttReconnect = function() {
    if(reconnectSt) {
        return;
    }
    reconnectSt = 1;    // Waiting reconnect
    var backoff = 64 * 1000;    //backoff[msec]
    reconnectAttempts++;
    if(client) {
        client.end(); // close the connection, free resources
        client = undefined; // destroy the current client
    }
    print('Reconnect backoff[ms]:' + backoff);
    setTimeout(function() {
        print('Backoff expired');
        reconnectSt=2;
    }, backoff);
}

var registerEventHandlers = function() {
    if(!client){
        print('skip registerEventHandlers()');
        return; // quit
    }
    client.on('connect', function() {
        reconnectAttempts = 0;
        if(client.isConnected()){
            client.subscribe(`devices/${config.deviceId}/messages/devicebound/#`, { 'qos' : 1 }, function(err) {
                if(err.code != 0){
                    print('subscribe() failed');
                    //TODO: Error Handling. (Reconnect is recommended)
                }
            });
        }
    });
    client.on('error', function(err) {
        print('mqttClientOnError: ' + err.code);
        if(err.code == 1) {     // 1: connection failed
            var errnoConnect = client.get('errnoConnect');
            print('errnoConnect ' + errnoConnect);
            scheduleMqttReconnect();
        } else {
            //TODO: Error Handling.
        }
    });
    client.on('message', function(topic, message) {
        print('TOPIC ' + topic);
        print('MESSAGE ' + message);
        //TODO: Message Handling
    });
    client.on('close', function() {
        print('DISCONNECTED');
        scheduleMqttReconnect();
    });
}

var publishInterval = 60 * 1000;
var publishEvent = 0;
setInterval(function() {
    publishEvent = 1;
}, publishInterval);

//  Main loop
reconnectSt = 2;
while(1) {
    if(reconnectSt == 2) {  //Allow MQTT connection
        reconnectSt = 0;
        if(!client) {
            var token = iot.generateSasToken();  //update JWT each connection. default == 1 hour.
            client = iot.mqttConnect(token);
            if(!client) {
                scheduleMqttReconnect();
            } else {
                registerEventHandlers();
            }
        } else {
            client.reconnect();
        }
    }
    if(client && client.canPublish()) {
        if(publishEvent) {
            publishEvent = 0;
            client.publish(`devices/${config.deviceId}/messages/events/?api-version=2018-06-30`, 'Publishing over MQTT', { 'qos' : 1 }, function(err) {
                if(err.code == 0) {
                    print('publish success');
                } else {
                    print('publish failure ' + err.code);
                }
            });
        }
    }
}
上記に記載されている会社名、製品名は、各社の登録商標または商標です。

Updated: 2023-01-20
← 前次 →
  • Abstracts
    • {AZURE_IOT} Instance
  • Details
    • new AZURE_IOT(config)
    • Setter Methods
    • Instance Methods
  • Usage Examples
    • Sample 1: 基本的なHTTPS通信
    • Sample 2: トークンの有効期限が切れた場合のMQTTでの再接続
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.