本マニュアルでは、mqtt v1 -...

13
MQTT ユーザーマニュアル MQTT 本マニュアルでは、MQTT 機能の使用方法について説明いたします。 V1.00

Upload: others

Post on 26-Feb-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 本マニュアルでは、MQTT V1 - Weintekdl.weintek.com/public/EBPro/Document/UM016005J_MQTT_User...MQTT 3 LW アドレスはMQTT の状態表示、及びHMI 運転時で動的にMQTT

MQTT ユーザーマニュアル

MQTT

本マニュアルでは、MQTT機能の使用方法について説明いたします。

V1.00

Page 2: 本マニュアルでは、MQTT V1 - Weintekdl.weintek.com/public/EBPro/Document/UM016005J_MQTT_User...MQTT 3 LW アドレスはMQTT の状態表示、及びHMI 運転時で動的にMQTT

目次

1. MQTT 概要 ............................................................................................................. 1

Weintek HMI と MQTT .............................................................................................. 1

2. EasyBuilder Pro での設定 ...................................................................................... 2

サーバーの設定 ....................................................................................................... 2

デフォルトトピック ............................................................................................... 4

トピック発行の設定 ............................................................................................... 4

トピック購読の設定(cMT シリーズ) ..................................................................... 7

プロジェクトのデザイン及びアプリケーション ............................................... 8

3. ブローカーの選択 ................................................................................................ 9

HMI に内蔵されているブローカーを使用する.................................................... 9

外部ブローカーを使用する ................................................................................... 9

自分でブローカーを立ち上げる ........................................................................... 9

4. MQTT データを取得する ................................................................................... 10

MQTT クライアントプログラム .......................................................................... 10

5. 他の参照資料 ...................................................................................................... 11

Page 3: 本マニュアルでは、MQTT V1 - Weintekdl.weintek.com/public/EBPro/Document/UM016005J_MQTT_User...MQTT 3 LW アドレスはMQTT の状態表示、及びHMI 運転時で動的にMQTT

MQTT

1

1. MQTT概要

MQTT とは、一種の斬新なメッセージキュープロトコルです。配布/購読の形

で実行され、それに軽量、オープン、簡易の特性を持ち、プログラムの空き領

域、またはネットワークの帯域幅が限られている場合、MQTT はこれらの利点

を発揮できます。それにより、連続性のある測定データ、例えば温湿度、圧力、

水位、電力などの監視には、MQTT を応用するのが適しています。

MQTT プロトコルの中で、発行者(publisher)、購読者(subscriber)、ブローカー

(broker)との 3種の主役があります。下図に示した通り、発行者があるトピッ

クのメッセージを発行し次第、ブローカーはメッセージを購読者に送信します。

Weintek HMI と MQTT

HMIが PLCに通信し、そしてデータ処理を行った後、MQTT でメッセージを

ネットワークのMQTT ブローカーに配布し、そしてブローカーからメッセー

ジを購読者に転送することができます。HMIがファイアーウォールに在る場合、

この方式を使用すれば、HMIからメッセージを送信することが可能です。

センサー

(購読者)

MQTT

サーバー

(ブローカー)

(購読者)

(購読者)

発行: speed=30

Page 4: 本マニュアルでは、MQTT V1 - Weintekdl.weintek.com/public/EBPro/Document/UM016005J_MQTT_User...MQTT 3 LW アドレスはMQTT の状態表示、及びHMI 運転時で動的にMQTT

MQTT

2

MQTT メッセージも HMIに内蔵されているブローカーへ配布できます。それ

により、購読者は別途でブローカーを探す必要がありません。MQTT のクライ

アントさえあれば、直接に HMIに内蔵されているブローカーからメッセージ

を購読・取得できます。VPN、或いは EasyAccess 2.0 等に合わせ、MQTT の

クライアントに HMIを接続させたら、購読者はリモートでメッセージを入手

できます。

2. EasyBuilder Pro での設定

EasyBuilder Pro の[オブジェクト][MQTT]でプロジェクト内の MQTT 関連の設

定をします。

サーバーの設定

一番大切なのは、まず[サーバー]関連の設定をすることです。サーバーは IP ア

ドレスまたはドメイン名でブローカーを指定できます。IP アドレスはブローカ

ーが所在している IP アドレスです。ローカル(即ち 127.0.0.1)を選択した場合、

メッセージは HMIのブローカーに送信されます。ドメイン名を使用する場合、

直接にブローカーの名前を入力します。もし特定の購読者だけがサーバーに接

続できるように制限したかったら、[検証]にチェックマークを入れます。チェ

ックマークを入れると、ユーザー名、パスワードを入力する必要があります。

[自動接続]を選択すると、HMI が[アイドル制限]時間内でデータ更新を受信し

ていなかったら、自動的に接続を切断します。トピックリストは購読者に現在

HMI 上の購読可能なトピックを知らせることに用いられます。毎回接続するた

びにトピックを発行したくない場合、[初めての接続の場合のみ、トピックを

発行する]にチェックマークを入れてください。

Page 5: 本マニュアルでは、MQTT V1 - Weintekdl.weintek.com/public/EBPro/Document/UM016005J_MQTT_User...MQTT 3 LW アドレスはMQTT の状態表示、及びHMI 運転時で動的にMQTT

MQTT

3

LW アドレスは MQTT の状態表示、及び HMI 運転時で動的に MQTT をコントロ

ールすることに用いられます。一個の LW アドレスを指定した後、当アドレス

の相対アドレス(+1, +2, +3…etc.)は下図に示されたように、それぞれ MQTT の各

種の属性・パラメータに対応します。例えば:MQTT_STATUS が LW-110 に設定

された場合、LW-110 は状態を示し、LW-111 はエラーコードを示します。

送信されなっかたメッセージはバッファーに保存され、最大 10000 レコードを

保存できます。バッファーに空き領域がなくなると、一番古いメッセージから

削除されます。

MQTT のメッセージ転送に TLS/SSL で暗号化することができます。

サーバーの認証が CA 認証局の署名検証に得たのかを検証する必要がある場合、

サーバー検証]を有効にし、CA 証明書をインポートしてください。

Page 6: 本マニュアルでは、MQTT V1 - Weintekdl.weintek.com/public/EBPro/Document/UM016005J_MQTT_User...MQTT 3 LW アドレスはMQTT の状態表示、及びHMI 運転時で動的にMQTT

MQTT

4

接続する MQTT サーバーがクライアント認証を要求した場合、[クライアント

認証]をインポートする必要があります。

デフォルトメッセージ

HMI を発行者とし、初めてブローカーに接続する場合、HMI はデフォルトで 2

点の QoS2 のトピックを発行します。

1. iot-2/type/mt/id/<Registration ID>/evt/topics_update/fmt/json

このトピックでは全てのトピック、及びそれらのトピックが圧縮されたかを含

めています。

2. iot-2/type/mt/id/< Registration ID>/evt/status/fmt/json

このトピックは HMI とブローカーの間の接続状態を表示します。

トピック発行の設定

[サーバー]設定完了後、[トピック]を設定します。各[トピック]の中には幾つか

のメッセージが含まれます。

[トピック]を命名するには、ユーザー定義の名前を使用するか、或いは頭文字

が%の制御コード、HMI 名/サーバー設定でトピックを組み合わせることができ

ます。

例えば、トピックが以下のように命名された場合:

iot-2/type/cMT-SVR/id/%0/evt/topic 1/fmt/json

その中、%0 は HMI 名のことで、HMI 名を確認するには、HMI の OS システム

ツールバーで、または LW-10884 で HMI を確認できます。もし HMI 名は Default

HMI だったら、購読者のトピック下記のようになります:

iot-2/type/cMT-SVR/id/Default HMI/evt/topic 1/fmt/json

Page 7: 本マニュアルでは、MQTT V1 - Weintekdl.weintek.com/public/EBPro/Document/UM016005J_MQTT_User...MQTT 3 LW アドレスはMQTT の状態表示、及びHMI 運転時で動的にMQTT

MQTT

5

[発信モード]を設定する:誘発式を選択した場合、トピックに何か変更があり

次第、MQTT はメッセージを送信します。周期式を選択した場合、データは指

定した時間で配布されます。

発信モードには[アドレス]以外、[イベントログ]を選択することもできます。

イベントログが作成された場合のみ、[MQTT トピックの発行]で[イベントログ]

を選択できます。

発信モードに[アドレス]を選択する場合、アドレスタブで本トピックのデータ

組成を設定します。このアドレスは連続・非連続のアドレスでもいいし、異な

るデータ型や長さでもいいです。

[QoS]:MQTT のサービス品質(Quality of Service)を設定します。3 レベルを設定

できます。

QoS 0:最高一回:メッセージを一回だけ配布するが、確実に届く保証はあり

ません。

Qos 1:最低一回:メッセージは最低1回届きます。

QoS 2:最低一回:メッセージは最低1回届きます。MQTT の QoSに関しても

っと多くの情報を取得するには、ここをクリックしてください。

[圧縮して転送する]:メッセージを圧縮してから転送します。圧縮されたメッ

セージを読み取る前、先に解凍する必要があります。MQTT は DEFLATE 算法で

メッセージを圧縮/解凍します。

[内容フォーマット]:JSON、Raw data を選択できます。

Page 8: 本マニュアルでは、MQTT V1 - Weintekdl.weintek.com/public/EBPro/Document/UM016005J_MQTT_User...MQTT 3 LW アドレスはMQTT の状態表示、及びHMI 運転時で動的にMQTT

MQTT

6

JSON:

仮に HMI が発行するトピックには下記のデータ型が含まれた場合:

HMI が発行する JSON フォーマットは下記のようになります:

{

"d" : {

"value 1" : [ false ],

"value 2" : [ 2 ],

"value 3" : [ 1.20000005, 0, 0, 0, 0 ],

"value 4" : [ "ABCD" ]

},

"ts" : "2017-04-18T17:36:52.501856"

}

Page 9: 本マニュアルでは、MQTT V1 - Weintekdl.weintek.com/public/EBPro/Document/UM016005J_MQTT_User...MQTT 3 LW アドレスはMQTT の状態表示、及びHMI 運転時で動的にMQTT

MQTT

7

Raw data:

仮に HMI が発行するトピックには下記のデータ型が含まれた場合:

HMI が発行する Raw data フォーマットは下記のようになります:

0002 009A 9999 3F00 0000 0000 0000 0000

0000 0000 0000 0041 4243 4400 0000 00

トピック購読の設定(cMT シリーズ)

cMT シリーズの HMI は他の MQTT サーバーからトピックを購読することがで

きます。設定はトピック発行の設定と同じですが、[イベントログ]の購読をサ

ポートしません。

[内容フォーマット]:JSON、または Raw data フォーマットを購読できます。発

行者がサポートするフォーマットを選択してください。

JSON:

仮に JSON のメッセージは下記の場合:

{

"d" : {

"value 1" : [ false ],

},

"ts" : "2017-04-18T17:36:52.501856"

}

Page 10: 本マニュアルでは、MQTT V1 - Weintekdl.weintek.com/public/EBPro/Document/UM016005J_MQTT_User...MQTT 3 LW アドレスはMQTT の状態表示、及びHMI 運転時で動的にMQTT

MQTT

8

注意すべきなのは、各 JSON の ts (time stamp)は昇順でなければなりません。

Raw data:

トピック購読のアドレスを設定する時、購読するトピックのデータフォーマッ

トに一致しなければなりません。

例を挙げると、例えば購読するトピックに一個のビット、一個の 16bit-unsigned

ワード、一個の長さが 4 のストリングを含めた場合、アドレスの設定は下記の

ようになります:

その中、アドレスの設定順番はビット、16bit-unsigned ワード、ストリングの

順でなければなりません。順番を変えてはいけなく、長さも完全に一致である

こと。

プロジェクトのデザイン及びアプリケーション

MQTT サーバー設定の中には、前述のコントロールアドレス MQTT_COMMAND

と状態アドレス MQTT_STATUS があります。コントロールアドレスはパラメー

タの制御に指定されることができ、MQTT_COMMAND+1 から

MQTT_COMMAND+43……等が含まれます。接続状態は状態アドレス

MQTT_STATUS 及び MQTT_STATUS+1 に表示されます。

上記情報は、EasyBuilder Pro の設定ダイアログボックスで記載されています。

HMI 稼働時:

MQTT_COMMAND を 1に設定すると、HMI はブローカーと接続します

MQTT_COMMANDを 2に設定すると、HMIはブローカーとの接続を切断します。

コントロールパラメータを更新した後、MQTT_COMMAND を 3 に設定すると、

HMI は新しいパラメータでブローカーと接続します。

前述のアドレスをコントロールすることにより、HMI 稼働時にオンラインで

MQTT 関連の設定を調整できます。

Page 11: 本マニュアルでは、MQTT V1 - Weintekdl.weintek.com/public/EBPro/Document/UM016005J_MQTT_User...MQTT 3 LW アドレスはMQTT の状態表示、及びHMI 運転時で動的にMQTT

MQTT

9

3. ブローカーの選択

HMI に内蔵されているブローカーを使用する

HMI に内蔵されているブローカーを使用したい場合、アドレス設定タブでロー

カルを選択します(サーバーの IP アドレスは自動的に 127.0.0.1に設定されま

す)。或いは HMI で IP アドレスを 127.0.0.1に設定すれば、MQTT が HMI に内蔵

されているブローカーを使用することになります。一方、クライアントプログ

ラムが HMI の IP アドレスでブローカーに接続できます。

HMI に内蔵されている MQTT ブローカーを初めて使用する前、先に EasyBuilder

Pro を通じて HMI へダウンロードする必要があります。MQTT ブローカーをダ

ウンロードする時、[Runtime]を選択してください。

外部ブローカーを使用する

外部ブローカーを使用する場合、サーバー情報のところに当ブローカーの IP

アドレスを入力する必要があります。

例:HiveMQ Enterprise MQTT Broker を使用します。当ブローカーの情報は:

Host: broker.hivemq.com(212.72.74.21)

Port: 1883

Websocket Port: 8000

(http://www.hivemq.com/try-out/)

EasyBuilder Pro V5.07.01 からドメイン名をサポートすることになったので、、

ブローカーの実際 IP アドレスを入力してもいいし、ドメイン名

(broker.hivemq.com)を入力してもいいです。

自分でブローカーを立ち上げる

ユーザーは自分でブローカーを立ち上げて使用することができます。ここで数

個の弊社社内でテスト済みの選択を提示します:

1. Mosquitto (http://mosquitto.org/download/)

2. HiveMQ (http://www.hivemq.com/downloads/) (テストバージョン)

3. EMQ (http://emqtt.io/)

各ブローカーのインストール及び使用方法について、各ソフトウェアのホーム

ページにご参照ください。

Page 12: 本マニュアルでは、MQTT V1 - Weintekdl.weintek.com/public/EBPro/Document/UM016005J_MQTT_User...MQTT 3 LW アドレスはMQTT の状態表示、及びHMI 運転時で動的にMQTT

MQTT

10

4. MQTTデータを取得する

MQTT の更新データを取得するには、MQTT のクライアントプログラムを使用

し、ブローカーに接続して登録してから、HMI が提供した更新データを受信で

きます。インターネットでは多くの無料クライアントプログラムが提供されて

います。本章では、PC 向けの無料プログラム MQTT.fx をご紹介します。

MQTT クライアントプログラム

インターネットでは多くの無料 PC 版 MQTT クライアントプログラムが提供さ

れています。モバイル端末にも無料アプリが提供されています。ここで、PC

での MQTT.fx の使用方法について簡単に説明します。他のソフトウェアを使用

する場合でも、類似な設定を使用することができます。

1. 仮にHMIではMQTT Demoを使用し、そしてMQTTサーバー212.72.74.21 port

1883 に接続するように設定し、MQTT トピックは Data_Bit の場合。

MQTT.fx で新規の接続プロファイル(Edit Connection Profiles)を作成します。

設定は下記の通りです:

Broker Address: 212.72.74.21

Broker Port: 1883

Profile Name: ユーザー定義

Client ID: ユーザー定義

2. 他の項目についてはデフォルトを使用すればいいです。設定完了後

[Connect]をクリックすると、ブローカーと接続し始めます。

Page 13: 本マニュアルでは、MQTT V1 - Weintekdl.weintek.com/public/EBPro/Document/UM016005J_MQTT_User...MQTT 3 LW アドレスはMQTT の状態表示、及びHMI 運転時で動的にMQTT

MQTT

11

3. Subscribe タブをクリックします。下図に示された欄でトピック Data_Bit を

入力して Subscribe をクリックすると登録されます。これでデータを受信で

きます。MQTT メッセージに更新があると、メイン画面に表示されます。

5. 他の参照資料

The Seven Best MQTT Client Tools

http://www.hivemq.com/blog/seven-best-mqtt-client-tools