## はじめに
AlibabaCloudのデバイス管理サービスであるIoT Platform。
- 様々なプロトコルでデバイスと双方向通信ができる
- デバイスの認証・管理ができる
- 受け取ったデータをルールに従って転送できる
と様々な機能があるのだが、いざ利用しようと思うと、
DataHub/トピック/カテゴリ/RuleEngineなど、データの流れが分かりにくい部分も多い。
(少なくとも、私はそう感じた・・・。)
そこで、今回はAlibabaCoud IoTPlatformにおけるデータの流れを説明しようと思う。
データの流れ全体像
まず、今回で実現するデータの流れを図示する。
IoT Platformのプロダクトを作成したとき、[解析しない / カスタマイズ (バイナリデータを示す)] と [Alink JSON] のいずれかのデータ型を選択する必要がある。
- 解析しない / カスタマイズ: ルールエンジンはバイナリデータを解析せず、データはターゲットに渡される。
- Alink JSON: データはまず TSL (Thing Specification Language) に解析され、ルールエンジンは解析されたデータに SQL 文を実行する。
下記は、Alink JSON形式を選択した場合の流れである。
公式サイトから引用
構成
具体的な説明にあたっては、実機を使ったほうが分かりやすいので環境を準備する。
DeviceはCentOS7.6で構築したECS上で、Node.js用のサンプルモジュールからデータを送信することにする。
IoT Platformでデータを受信したのち、TableStoreに転送して格納する流れとした。
環境構築順序
IoT Platform
IoT Platformは、マネジメントコンソールで**[IoTPlatform]を選択したのち左ペインに表示される[クイックスタート]に従って構築した。
なお、[ステップ2 開発キットの選択]では、
デバイスOS:Linux、接続プロトコル:MQTT、SDK:Node.jsを選択した。
基本的に指示通り進めるだけなので、迷うところはないと思うが、「ステップ4設定とテスト」はECS構築完了時の動作確認に使うので、閉じないこと。**
ECS
※検証なので、すべてrootユーザで実施する。
ECSローンチまでの構築方法は、公式サイト参照のこと。
イメージは、AlibabaCloudが提供する、centos_7_06_64_20G_alibase_20190711.vhd
を使用した。
上記イメージからローンチした場合、unzipコマンドが通らないので、unzipはインストールしておく。
# yum install unzip
次にNode.jsもインストール。
$ yum install nodejs
**[クイックスタート]**の中でダウンロードしたaliyun_iot_device_quickstart.zip
をECS上に配置し解凍。
# unzip aliyun_iot_device_quickstart.zip
初期状態ではstart.shに実行権限がないので、実行権限を与える。
# cd aliyun_iot_device_quickstart
# ll
total 20
-rw-r--r-- 1 root root 154 Aug 20 02:44 device_id_password.json
-rw-r--r-- 1 root root 656 Oct 9 2018 index.js
-rw-r--r-- 1 root root 249 Dec 21 2018 package.json
-rw-r--r-- 1 root root 144 Oct 10 2018 start.bat
-rw-r--r-- 1 root root 121 Oct 1 2018 start.sh
# chmod 744 start.sh
# ll
total 20
-rw-r--r-- 1 root root 154 Aug 20 02:44 device_id_password.json
-rw-r--r-- 1 root root 656 Oct 9 2018 index.js
-rw-r--r-- 1 root root 249 Dec 21 2018 package.json
-rw-r--r-- 1 root root 144 Oct 10 2018 start.bat
-rwxr--r-- 1 root root 121 Oct 1 2018 start.sh
start.shを実行。
Aliyun Iot Device SDKがインストールされたのち、データがIoT Platformに転送され始める。
# sh ./start.sh
Installing Aliyun Iot Device SDK...
~中略~
npm WARN simple@1.0.0 No description
npm WARN simple@1.0.0 No repository field.
Connect successfully!
Post properties every 5 seconds...
Post properties: {"Status":1,"Data":"Hello, world!"}
Post properties: {"Status":1,"Data":"Hello, world!"}
マネジメントコンソールのIoT Pratform(ステップ4設定とテスト)を確認すると、デバイスがオンラインとなりデータが送信されている
ことが分かる。
次回に向けて
今回は、デバイスからIoT Platformに対してデータを送信するところまでを説明した。次回はTableStoreを構築し、
デバイスのデータをTableStoreに格納するまでの流れを説明する。
AlibabaCloud IoTPlatformにおけるデータの流れを理解する② -IoT Platformが受信したデータをTableStoreに格納する-