この記事は、 NTT Communications Advent Calendar 2022 9日目の記事です。
対象読者 / わかること
対象読者
- IoT デバイス接続の難しさに頭を抱えている
- 「クラウドにデータを送信する」までの要所をざっくり理解したい
- とにかく IoT を道具として使ってみたい、始めてみたい
わかること
- 「クラウドにデータを送信する」までの一連の流れ
- Things Cloud を活用した「お手軽IoT」の始め方
はじめに
こんにちは、Things Cloud のソリューションアーキテクトチーム 竹村です。私たちのチームは、5G&IoTサービス部で IoT プラットフォーム「Things Cloud」を活用したソリューションアーキテクトを担当しています。
早速ですが、皆さんは「IoT」と聞いて何を連想しますか。モノ同士が通信すること、クラウド上でデータを可視化すること、それとも現地の機器を自律制御することでしょうか。もちろんこれらは IoT で実現できることですが、共通していることがあります。それは 「何か実現したいことに対する手段であり目的ではない」 いう点です。
皆さんが IoT を活用して目指すゴールは、品質向上・コスト削減・事業拡大・業務DXなど様々だと思います。IoT によって、「現状把握→仮説立案→効果検証」の PDCA サイクルを高速に回すことも、自動化してビジネスをスケールさせることも可能になります。 つまり、IoTは 「数ある手段の中でも強力な手段の1つ」 とも言えます。
しかし、どうやったら IoT を導入できるのか、頭を抱えている方も多いのではないでしょうか。 IoT の技術領域は「デバイス」「ネットワーク」「クラウド」「データ利活用」「セキュリティ」など多岐にわたるため、いざ検討を始めるとサービス選定やシステム構築などの場面で多くの課題に直面します。
本記事では、「IoT を道具として使いこなしたい」「仮説検証や商用導入に多くの時間を使いたい」皆さんのご要望にお応えするため、Things Cloud とパートナーデバイスを活用した「お手軽IoT」の始め方についてご紹介します。
クラウドにデータを送信するには?
それでは、IoT を道具として使いこなす第一歩「データをクラウドに送信する」までの STEP をみていく前に一度、私たちがハサミを使う場面を想像してみてください。
私たちはてこの原理を意識しなくても「なんか刃の奥の方が切りやすいぞ」と経験上学習して知っています。それと同じように、「なんとなく分かった」状態で IoT 使い始めることを目標に、肩の力を抜いてこれからお話しする内容もご覧いただければと思います。
そうです、IoT はただの道具です。(しかし、強力な道具です!)
まず、IoTを構成する要素として、センサーと IoT-GW (ゲートウェイ)といったデバイスがあります。 センサーは、物理情報を科学原理に基いて信号に変換する機器のことで、温湿度センサーなどが存在します。IoT-GW は、センサー等の機器とクラウド間を中継する機器のことです。
「データをクラウドに送信する」には主に以下の3つの STEP があり、多くの場合では、IoT-GW のソフトウェアが3つの STEP を実行します。
- センサープロトコル変換
- センサーから送信される多種多様な形式のデータを解釈
- データ形式変換
- デバイスのデータ情報をクラウドが理解するデータモデルに変換
- 安全な通信
- 安全な通信(HTTPS / MQTTS など)によるクラウドへのデータ送信
それでは、それぞれの STEP について詳細を見ていきましょう。
STEP1:「センサープロトコル変換」
まずは、「プロトコル」という言葉について確認します。
プロトコルって?
プロトコルとは、「約束された手順・ルール」のことです。
通信の世界におけるデータの送受信は、プロトコルと呼ばれる共通のルールのもとで実現されています。人間のコミュニケーションで例えると、日本語や英語などの共通の言語を用いることで情報の伝達を実現しているのと同じイメージです。
しかし、勝手にプロトコルを定めていくとその数は爆発的に増加し、ルールを知っている機器のみが通信できる状態になってしまいます。これは、地域・国ごとに異なる方言・母国語が存在している状況下で、コミュニティー間で言語による情報伝達に支障が生じる状況に似ています。
そのため、プロトコルは規格化(共通ルール化)されていき、様々なセンサーやデバイス間で共通のプロトコルを用いた通信が可能になります。グローバルなビジネスの場では、多くの人がコミュニケーションできるように英語を利用するようなイメージです。
センサープロトコル変換
さて、センサーの通信プロトコルも多岐にわたるため、やり取りされるデータ形式も多種多様です。そのため、センサーが利用するプロトコルやデータ形式に応じて、データを解釈する必要があります。
例えば、温湿度センサーからデータを受信する以下のようなケースを考えてみます。この場合、センサーのデータ形式に基づいて「今は温度27℃で湿度72%だな」と解釈できます。
# 例:温湿度センサー # 表現形式: 電文の4Byte の先頭 2Byte が温度(℃)、残り 2Byte を湿度(%)を表す 1b48 → 0001101101001000 → 00011011,01001000 → 27, 72 → 27℃, 72%
また、プロトコルには手順・ルールだけでなく、このデータ形式まで規定しているものもあります。機器/メーカーによらずデータ形式を規定しているプロトコル(EnOceanなど)や、機器/メーカーごとに独自のデータ形式を用いるプロトコル(Modbus、BLE、LoRaWANなど)などがその例です。前者は機器/メーカーによらずソフトウェアを共通化でき、後者は機器/メーカーごとに開発が必要になります。
つまり、各機器ごとにデータを解釈するためのプログラムが必要 となる可能性があるということです。
# 【参考】プロトコルの分類例 # 用途・通信距離等の分類 ・産業系プロトコル(Modbus など) ・近距離無線通信系プロトコル(Wi-Fi、BLE、Wi-SUN、ZigBee、EnOcean など) ・LPWA系プロトコル(LoRaWAN、Sigfox、LTE-M など) # データ形式での分類 ・データ形式を規定しているプロトコル(EnOcean など) ・独自のデータ形式を用いるプロトコル(Modbus、BLE、LoRaWANなど)
STEP2:「データ形式変換」
センサーから得られたデータをクラウド側が要求するデータ形式に変換します。具体的には、対象とするクラウドが対応している以下のようなデータ形式へ変換します。
- 構造化データ(Excel、CSV、RDBデータなど)
# 例:CSV
key1,key2,key2
value1,value2,value3
- 半構造化データ(JSON、XMLなど)
// 例:JSON { "key1": "value1", "key2": "value2" }
- 非構造化データ(規則性のないテキスト、PDF、画像、音声、動画など)
# 例:上記画像ファイルのビット列をHEX(16進数)表記したもの
89504e470d0a1a0a0000000d49484452 ... f87fbd0a6e6b89b8ca800000000049454e44ae426082
STEP3:「安全な通信」
クラウド側が対応している通信方式によってデータを送信します。多くのクラウドでは、HTTPS や MQTTS といった通信経路上を流れるデータを暗号化する通信プロトコルに対応しており、都度適切なデータ形式及び方法を用いて、変換後のデータを送信します。
データを送信するだけでも一苦労
いかがでしょうか、「データをクラウドに送信する」までにこのような STEP を経ることで、データの可視化やアラーム判定などのデータ利活用が開始できる状態になります。
ここまでで、「センサー/クラウドごとに開発がいるのか、大変そう」「データ利活用するまで先が長い」など少し難しそうだなと思われた方もいらっしゃるのではないでしょうか。 この記事を最後まで見ていただければ、「お手軽IoT」を始められますのでご安心ください。
「お手軽IoT」を実現するための道具として、「Things Cloud」というクラウドと、「OpenBlocks」というデバイスをご紹介します。
Things Cloud について
Things Cloud は、NTT Communications の Smart Data Platform (略称SDPF) の中で、データ収集機能を提供するプラットフォームです。 センサーにつながる IoT デバイスからデータを収集し、蓄積できるクラウドサービスで、簡単な操作でデバイス情報を閲覧したりデータを可視化したり、ユーザー管理/通知/デバイス管理等、IoT に必要な機能一式が揃っています。1
また、LoRaWAN2 や Sigfox3 ネットワークとの接続機能を有しているため、これらのプロトコルに対応したセンサーの選択が可能です。
それでは、 Things Cloud における「データ形式変換」と「安全な通信」について確認していきましょう。
Things Cloud における「データ形式変換」
Things Cloud では JSON 4 または CSV 5 形式のデータを要求するため、センサープロトコル変換等で得たデータを上記の形式に変換するプログラムが必要となります。
// 例:温度データ(JSON) { "c8y_TemperatureMeasurement": { "T": { "value": 27, "unit": "℃" } }, "time":"2022-12-09T10:00:00.000+09:00", "source": {"id":"...." }, "type": "c8y_TemperatureMeasurement" }
# 例:温度データ(CSV) 200,c8y_TemperatureMeasurement,T,27
Things Cloud における「安全な通信」
Things Cloud では HTTPS(JSON 形式)または MQTTS(基本的には CSV 形式)に対応しており、都度適切なデータ形式及び方法を用いて、変換後のデータを送信します。
OpenBlocks について
本記事で紹介する OpenBlocks は、IoT-GW 機器として使うことができます。IoT-GW は、「データをクラウドに送信する」ための3つの STEP の処理を行う主体でもあります。 それでは、OpenBlocks が持つ「センサープロトコル変換」に関する機能に注目して、ご紹介していきます。
OpenBlocks における「センサープロトコル変換」
OpenBlocks は様々な通信規格やプロトコル(BLE・EnOcean・Wi-SUN・スマートメーター・Modbus等)を用いた主要メーカーの多種多様なセンサーに対応しており、Webブラウザ上での設定だけで接続できるという特長を持っています。 そのため、OpenBlocks が利用したいセンサーに対応していれば、「センサープロトコル変換」機能を開発することなく該当センサーを利用可能です。6
「お手軽IoT」の始め方
ここまでで3つの STEP についてまとめると下記の通りです。
- センサープロトコル
- OpenBlocks の持つ機能を利用することで多種多様なセンサーに対応可能
- データ形式変換
- Things Cloud が対応する JSON または CSV に変換するソフトウェアが必要
- クラウドへの安全な通信
- 変換後のデータを HTTPS または MQTTS によって送信するソフトウェアが必要
上記の通り「データ形式変換」「安全な通信」の機能を持つソフトウェアを開発する必要があります。これらの機能を補完する「お手軽IoT」を始めるためのソフトウェア(以降、「データ送信用ソフトウェア」と呼びます) を開発しましたのでご紹介します。
「お手軽IoT」の始め方について、EnOcean センサー利用を例にご紹介します。
データ送信用ソフトウェアのご利用については 問い合わせ先 からご連絡ください。
OpenBlocks の設定
OpenBlocks に関する操作・設定については、 OpenBlocks のマニュアル をご参照ください。
センサー接続
まずは、OpenBlocks にセンサーを接続します。 EnOcean の場合、無線プロトコルであるため物理的な接続はありませんが、機器によっては電源を ON にします。
センサー登録
利用するセンサーの情報を OpenBlocks に登録します。
センサー情報を登録するために、以下の項目を入力・保存します。9
- デバイスID:EnOcean におけるセンサーを識別する番号
- ユーザーメモ:ユーザーが指定する任意の情報
- EEP:EnOcean で定義されているデータ形式を示す番号
特に「デバイスID」「EEP」に入力する値は、筐体や取扱説明書などに記載されていることが多いため、そちらを参照します。
センサー情報を登録後、該当のセンサーに対して以下のように設定します。10
初回は IoTデータ設定 及び ユニックスドメインソケット を参照して、以下の設定をしてください。
データ送信用ソフトウェアのインポート
OpenBlocks 上で動作する Node-RED にデータ送信用ソフトウェアをインポートします。
Web ブラウザで Node-RED の実行環境にアクセスし、「読み込み」>「読み込むファイルを選択」にてデータ送信用ソフトウェアを選択します。11
初回は OpenBlocks への Node-RED のインストール 及び アクセス方法 を参照して、必要な設定をしてください。
Things Cloud の設定
以下は Things Cloud 上での操作になります。
IoT-GW の ID 登録
Things Cloud に対して OpenBlocks の ID を登録します。
OpenBlocks 筐体の裏面に記載されている「SERIAL No.」の値を参照し、「デバイスID」に入力します。
接続の承認
Things Cloud で承認処理をします。
一定時間経過すると「承認」ボタンが出現するので、これをクリックします。
結果
上記の設定だけで Things Cloud にデータが送信・可視化されるようになります。「データをクラウドに送信する」までの3つの STEP がうまく隠蔽されていることを感じられたでしょうか。
まとめ
- IoT はビジネスにおける手段の1つ、だけど強力な手段
- データ送信するまでには3つの STEP がある
- センサープロトコル変換
- データ形式変換
- 安全な通信
- Things Cloud と OpenBlocks を活用して今すぐ「お手軽IoT」をはじめよう
今後も NTT Communications は皆さんの IoT 活用をサポートしてまいります!
問い合わせ先
お手軽IoTを試してみたい方は、以下にお問い合わせください。
Things Cloud サービスについて:iot-info@ntt.com
※お手数ですが@を半角文字に置き換えてください
それでは、明日の投稿もお楽しみに!
- https://engineers.ntt.com/entry/2022/03/01/130720↩
- https://www.nttbizsol.jp/service/lorawan/about/↩
- https://www.kccs.co.jp/sigfox/service/↩
- https://developer.ntt.com/iot/docs/reference/measurements/↩
- https://developer.ntt.com/iot/docs/device-sdk/mqtt/#mqtt-static-templates↩
- https://www.plathome.co.jp/partner-program/sensor-device/↩
- https://nodered.jp/about/↩
- https://docs.plathome.co.jp/docs/openblocks/fw4/data_form/enocean↩
- https://docs.plathome.co.jp/docs/openblocks/fw4/service/basic↩
- https://docs.plathome.co.jp/docs/openblocks/fw4/data_handling/enocean↩
- https://nodered.jp/docs/user-guide/editor/workspace/import-export↩