サポート情報

MQTTブローカーの開発に成功

掲載日:2022/09/05

IoTの開発を進めている弊社では
3つのMQTTプロトコルの通信に成功致しました。
 

 

・MQTTブローカーの開発と検証

IBM iでIoTを実現するためにはIBM iが任意のIoT端末と
通信可能になることです。
そのためにIBM i内部にMQTTプロトコルの中心的槍割りを果たす
MQTTプローカーというソフトウェアによるサーバーを
確立することです。
そこで㈱オフィスクアトロではIBM i内部のMQTTプローカーを
開発して検証しています。

①TCP/IPによるMQTTプロトコル通信

独自に開発した SNDMQTMSG(=MQTT命令の送信コマンド)から
作成したMQTTプローカー(=MQTT通信サーバー)にコマンドを
送信して正常な会話を行えることに成功致しました。

...これによってお客さまが独自に開発するRPG/COBOL/CLPプログラムによって
工作機械などのIoT端末に自由に命令を送ることができることを
意味しています。

②マイコンからのMQTTプロトコル通信

 先日お伝えしたようにマイコン・モジュール・キット M5Stackから
ボタン押してTCP/IP通信によって無線LANでIBM iに通信する方法です。
このマイコンへArduino(=アルディーノ)というMQTTライブラリーを
 サポートしているプログラムをPC上で開発してISB経由で
プログラムを書き込んでいます。

...この成功は先日お伝えしたとおりですがすべてのMQTTコマンドを
今回サポート致しました。

 

③JavaScriptによるMQTTプロトコル通信

JavaScriptにもMQTTライブラリーが提供されていますが
JavaScriptではWebSocketによる通信が必要です。
このHTML画面は上のマイコンM5Stackに似せてテスト用に開発したものですが
  通信はJavaScriptですので単なるTCP/IPではなくWebSocketを利用しています。

そのためMQTTプローカーもWebSocket対応でなくてはなりません。
MQTTプローカーは通信がTCP/IPかWebSocketによるものかを
判断してどちらにも対応する必要があります。
また以前にお知らせしておりますようにWebSocketは常時接続ですので
AutoWebのようなWebフェーシング・ツールにとって革命的な機能でも
あります。今回の成功はAutoWebにも影響を与えます。

  .... JavaScriptによるMQTTプロトコルのサポートは
ブラウザ(=PCやスマート・フォン、タブレットとなど)によって
IoT機器を監視したり制御することができるようになる重要な
要素を含んでいます。

④メッセージの再配布にも成功しました

MQTTプローカーとは単にIoT端末と通信することだけではありません。
IoTの肝は1:N(=対複数)のメッセージ配布です。
これまでのサーバーはクライアントとサーバーとの1:1の会話でしたが
IoTの最大の機能の特徴は1:Nのメッセージ再配布の構造を持つことです。

例えばあるIoT機器に異常があればそれは一斉に関連する部署に通知しなければ
なりません。
逆にある工程管理担当者は複数台のIoT工作機械の監視が必要です。

このような複数の同時進行的な管理のためにMQTTプローカー(=IOTサーバー)は
送信と受信の両方を同時にこなせるマルチスレッドの機能が要求されます。
今回はこの1:Nのメッセージ再配布機能も実装しました。
 この度はこの複数クライアントへのメッセージ再配布の機能も
IBM iに搭載してあります。

⑤出口プログラム機能の追加

IBM iでのIoTの目的はRPG/COBOL/CLPでIoTを制御したり報告を受けるように
することです。
IoTを身近なものとしてやさしく扱って頂けるようにするため
出口プログラム機能も設けました。
これによって事象(=TOPIC)別に処理プログラムを指定してプログラムに
処理させめことができます。
どこかのIoT端末からデータ(=PAYLOAD)が送られてくると
あなたのプログラムによって適切な処理をさせることができます。
これが今回のIoTの最終目標です。

⑥RPGによるIoT端末

RPGプログラムでIoT端末を作ることができます。
RPGプログラムがMQTTプローカーと会話したり
他のIoT機器からの情報を取得して表示することもできます。
RPGプログラムでMQTTプロトコルを扱うことができるのであれば
IoTは情報システム部門にとって身近でわかりやすいものとなります。
 
例えば社内の工作機械の進捗状況を集計して
5250ハンドラーを使って一覧に表示することができます。
現在はMQTTのシミレート用のコマンドがありますが
RPGで試すこともできます。
 
RPGソースのサンプルを用意する予定です。

⑦MQTTコマンドによるIoTサポート

もっと簡単にIoTを体感できるのはコマンドによる実行です。
コマンドを手動で動作させればIoTの動きを体感的に学習したり
調べることもできます。
4GLのソフトウェア製品はコマンドをRPGソースに展開していたため
動作が遅くなっていましたがILEを正しく理解していれば
ソースに展開する必要もなくパフォーマンス良く実行することが
できます。

■ 今後のIoT開発は

 IoTに関してMQTTプローカーという難しい話が続きましたが
これはIoTとは何かをご理解して頂くことに必要なことでもありました。
また非常に短期間でIoTが開発できたように見えますが
これは長年にわたる技術の蓄積の成果です。
 
それでは実際にIoTとはどのような動きをするのかシミレータによる
実験動作と実機によるテストで情報システム室の皆さまにご理解頂けるように
テスト機器の開発を進めていきます。
これらはIoTの開発ではなくIoTを理解して頂くための実験器具を作ることです。
 実験器具による多くのタフ・テストを通じて製品化を図ります。

・シミレータ(=模擬テスト機器)の開発

  各種センサーを搭載するマイコンから情報を受け取って
スマート・フォンに表示するシミレータを作成します。

・実機によるテスト

 
  身の回りにある実際の工作機械に類似する機械からの
情報収集を行います。

㈱オフィスクアトロではお客さまの会社全体のDX化に向けて
IoTの実現に取り組んでいます。
やがては多くのお客さまでIoTの導入が必要になる日のために。

― 新しい技術はいつもオフィスクアトロから ―