Practice of IoT platform cloud general data analysis script

データ解析スクリプト (Cloud Gateway) の実践

IoT シナリオにおいて、低スペックなデバイス、リソースに制約のあるデバイス、またはネットワークトラフィックに配慮が必要なデバイスでは、デバイス側で JSON データを構築して IoT Platform と通信するのは適さない場合が多くあります。このような場合、デバイスはカスタム Topic を通じて生データを直接 IoT Platform に送信できます。IoT Platform はデータ分析機能を提供しており、送信されたスクリプトに基づいてデバイスの生データをクラウド上で構造化された JSON 形式に変換し、クラウド側の業務システムでの保存や表示を容易にします。

1. カスタム Topic のデータ解析

デバイスがカスタム Topic を通じてデータを発行し、その Topic に解析マーク (?_sn=default) が含まれている場合、IoT Platform はデータ受信後、コンソールで登録されたビジネスデータ解析スクリプトを呼び出し、デバイスから送信された生データを JSON 構造に解析してからデータフロー処理を行います。

解説

・現在、カスタム Topic のデータ解析は中国 (上海) リージョンのみでサポートされています。

・デバイスがデータを送信する際、メッセージ発行時のカスタム Topic の末尾にデータ解析フラグ (?_sn=default) を追加してください。

たとえば、デバイスが Topic /${productKey}/${deviceName}/user/update に送信する生データを JSON 形式に解析する場合、デバイス発行時の Topic は /${productKey}/${deviceName}/user/update?_sn=default となります。

・IoT Platform でカスタム Topic を作成する際は、解析タグを追加せず、通常 Topic として定義します。

・解析対象はデバイスからクラウドに送信された生データのみで、クラウドからの下行データは解析されません。

・解析前後でメッセージの Topic は変更されません。

たとえば、/${productKey}/${deviceName}/user/update?_sn=default に送信されたデータは、解析後も Topic /${productKey}/${deviceName}/user/update のままとなります。

2. スクリプト解析の実践例

本実践では、ポンプ稼働データの収集を例にとります。デバイス側で生成された生データ文字列 DATA, 235000 が、IoT Platform 上のデータスクリプト解析エンジンにより構造化された JSON 形式に変換されます:{"temperature": 23, "speed": 5000}。

3. クラウド側の開発

3.1 プロダクトの作成

コンソールにログインし、プロダクト「water pump」を作成します。

3.2 カスタム Topic の追加

プロダクト詳細画面に入り、Topic クラスリストのタブを選択し、カスタム通信 Topic /${productKey}/${deviceName}/user/data を追加します。

3.3 データ解析スクリプトの作成

業務内容に応じてデータ変換用スクリプトを作成し、模擬入力によりスクリプトの正確性を検証してから、IoT Platform に提出します。

本実践例の完全なスクリプトは以下のとおりです。

/**

*デバイスのカスタム Topic データを JSON 形式に変換する関数。デバイスが IoT Platform にデータを送信する際に呼び出されます。

*入力パラメーター:topic 文字列、デバイスが送信するメッセージの Topic

*入力パラメーター:rawData byte[] 配列、空にすることはできません

*

*出力パラメーター:jsonObj JSON オブジェクト、空にすることはできません

*/

function transformPayload(topic, rawData) {

var jsonObj = {}

var dataSrc = String.fromCharCode. apply(String, rawData);

var data = dataSrc.split(',');

jsonObj. temperature = parseInt(data[1]);

jsonObj. speed = parseInt(data[2]);

return jsonObj;

}

3.4 デバイス登録

water pump プロダクトの定義およびデータ解析スクリプトの提出後、デバイスを登録して認証三要素情報を取得します。

4. デバイス側の開発

Node.js スクリプトを使用してポンプをシミュレートし、稼働データを IoT Platform に送信します。完全なコードは以下のとおりです。

const mqtt = require('aliyun-iot-mqtt');

//Device Identity

const options = {

ProductKey: "Replace productKey",

DeviceName: "Replace deviceName",

DeviceSecret: "Replace deviceSecret",

regionId: "cn-shanghai"

};

//Added reported topics_ sn=default

const topic = `/${options.productKey}/${options.deviceName}/user/data?_ sn=default`;

//Device side data

var data = 'DATA,23,5000';

//1. Establish connection

const client = mqtt.getAliyunIotMqttClient(options);

console. log('topic= '+topic)

console. log('payload= '+data)

//2. Publish data to topic

client. publish(topic, data);

5. オンライン運用

コンピューター上でポンプシミュレーションの Node.js スクリプトを起動すると、IoT Platform のコンソールログサービスで上流メッセージの解析ログを確認でき、メッセージ本文がクラウド上で構造化された JSON データに変換されていることがわかります。

物理モデルデータ解析のタブで、解析プロセスのログを確認できます。

Related Articles

Explore More Special Offers

  1. Short Message Service(SMS) & Mail Service

    50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00

phone お問い合わせ
Hi, I'm Alibaba Cloud AI Assistant!
I can help with questions and solutions.