データプラットフォーム「IRIS」からMQTTプロトコルを利用してみる
InterSystems IRISでシンプルに開発するIoTアプリケーション 第3回
前回は「まずは動かしてみよう!」と題してInterSystems IRIS Data Platform(以下IRIS)を使ったIoTアプリケーションを紹介しました。まだ試していない方は、ぜひ前回の記事をご覧ください。以降の連載では、そのアプリケーションの開発手順を解説しながら、IRISのさまざまな機能を体験していただきたいと思います。今回は、IoTアプリケーションで使用されることの多いMQTTプロトコルを、IRISから利用する方法について解説します。
- 前回の記事:「データプラットフォーム「IRIS」を、まずは動かしてみよう!」
MQTTプロトコル
MQTTはMessage Queuing Telemetry Transportの略で、TCPベースのプロトコルです。IoTシステムで利用される理由としては、
- 軽量であり、比較的小さいサイズのデータを高頻度で送受信するのに適している
- 電力消費量に制約のあるデバイスでも動作できる
- Pub/Sub型の通信により、必要なデバイスやアプリケーションが、必要なデータだけを送受信することができる
などが挙げられます。
ここで、MQTTで規定されているPub/Sub型の通信について簡単に説明します。
Pub/Sub型の通信では、次の3つの役割を持つコンポーネントがあります。
- Publisher:データを送信(Publish)するコンポーネント。送信するデータには、Topic属性をつける。Topicの値は、Subscriberが受信するデータを選択(フィルター)するために使用される。
- Subscriber:データを受信するコンポーネント。受信したいTopicをあらかじめBrokerに登録(Subscribe)しておく。
- Broker:Publisherから送信されたデータを、そのデータについているTopicをSubscribeしているSubscriberに送る機能を持つ。
以上の概要を次の図に示します。
図の左側、PublisherはTopicとともにデータをBrokerに送信します。図の右側のSubscriberは、BrokerにTopicを登録しておき、実際にそのTopicに合致するデータがPublishされたら、Brokerからそのデータを受信します。
図に示されている通り、Topicは「/」で区切られた階層構造を持っています。Publisherは、DevA/Tempのように送信するデータのTopicを指定してPublishします。Subscriberは、受信したいTopicをDevA/Tempのように指定してSubscribeすることもできますし、DevB/#のように、ワイルドカード(#)を使用して、DevB以下すべてのTopic(図の例では、DevB/Temp、DevB/Speed)のデータをSubscribeすることもできます。
MQTT Brokerは、オープンソースでいくつかのソフトウェアが公開されています。今回の連載では、Eclipse Mosquittoを利用します。Eclipse Mosquittoはdockerイメージでも提供されているので、今回の構成ではeclipse-mosquittoというイメージをpullして使用するように定義しています。定義は、docker-compose.ymlのmqttbrokerセクションに記述しているので確認してみてください。
この記事は参考になりましたか?
- InterSystems IRISでシンプルに開発するIoTアプリケーション連載記事一覧
- この記事の著者
-
堀田 稔(インターシステムズジャパン)(ホリタ ミノル)
SEマネージャー。1992年大阪大学基礎工学部情報工学科卒。同年日本ディジタルイクイップメント(株)入社。電気通信など様々な業界向けプロジェクトにシステムエンジニアとして携わる。1996年InterSystems Data Platform製品の日本語版開発プロジェクトに従事し、同製品の販売・サポー...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社
この記事は参考になりましたか?
この記事をシェア
