MQTTX マニュアル

## 目次

- [はじめに](#はじめに)
- [ダウンロードとインストール](#ダウンロードとインストール)
- [使用](#使用)
- [開発ガイド](#開発ガイド)

## 概要

[MQTT X](https://mqttx.app)は、macOS、Linux、Windowsをサポートする[EMQ](http://emqx.io)オープンソース化されたエレガントなクロスプラットフォーム MQTT 5.0 デスクトップクライアントです。

[MQTT X](https://mqttx.app)の `UI` は、チャットソフトウェアのような形でページの操作ロジックを簡素化します。ユーザーが `MQTT/MQTTS`接続、` MQTT`メッセージのPub/Sub機能をすばやくテストできるようにするために、接続をすばやく作成し、複数のクライアントを保存することができます。

ダウンロードとインストールする前に、[公式Webサイト](https://mqttx.app)または[GitHub](https://github.com/emqx/MQTTX)にアクセスして、最新バージョン情報を確認して入手してください。最新バージョンはエクスペリエンスの向上に役立ちます。このプロジェクトによく知っている場合は、[MQTT X](https://mqttx.app)ウェアハウスのソースコードを直接クローンし、パッケージ化して、自分で使用できます。使用中に質問がある場合は、[GitHubの問題](https://github.com/emqx/MQTTX/issues)にアクセスして質問や意見を投稿するか、プロジェクトをフォークして、改訂されたPRを送信してください。我々は慎重に検討し、返信します。

### クイックプレビュー

![mqttx-gif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763141/5d75b807-90a8-eebc-d38c-acaff62bd910.gif)

- Windows、macOS、Linuxをサポートします
- MQTT v3.1.1 と MQTT v5.0 をサポートします
- CA、自己署名証明書と一方向および双方向SSL証明書をサポートします
- ライト、ダーク、ナイト(パープル)3テーマモード切り替え
- 日本語、英語と簡略化された中国語をサポートします
- MQTTサーバーへのWebSocket接続をサポートします
- トピックを購読するときにカラーマークをカスタマイズできます
- $SYS トピックの自動購読をサポートし、レベルごとに拡張できます
- Hex、Base64、JSON、Plaintextなど複数のペイロード形式をサポートします

## ダウンロードとインストール

[GitHubリリース](https://github.com/emqx/MQTTX/releases)から自分に合ったバージョンをダウンロードしてインストールしてください。

GitHubからのダウンロード時にネットワーク速度の低下やストールを引き起こすネットワーク上の問題がある場合は、[こちら](https://www.emqx.io/downloads/MQTTX/)をクリックして、自分に合ったのを選択することもできます。

**注意**：ダウンロードするとき最新バージョンをダウンロードしてみてください。

- macOS

macOSユーザーの場合、Mac AppStoreからダウンロードすることをお勧めします。

[![Get it from the Snap Store](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763141/6bd1b9f5-c3c1-0189-2189-67d74f95bb59.png)](https://apps.apple.com/jp/app/mqttx/id1514074565?mt=12)

インストール用にファイルをダウンロードする時最初にインストールパッケージファイルを `dmg`形式でダウンロードしてください。`mac.zip`の圧縮ファイルをダウンロードすることもできます。

**注意**：ただし、 `macOS`システムのバージョンが異なると、`zip`圧縮パッケージを使用すると` 10.15.2`システムバージョンで解凍後に開くことができない場合がありますので、最初に`dmg`ファイルを選択してください。

- Windows

Windowsユーザーの方は、最新バージョンの`exe`ファイルをダウンロードしてください。ダウンロード後、Setupプロンプトに従ってインストールしてください。

- Linux

Linuxユーザーは、最新バージョンの`AppImage`あるいは`snap`ファイル使用してインストールしてください。

`snap`形式のファイルを使用してインストールする場合は、次のコマンドを実行してすばやくインストールするか、SnapStoreに直接アクセスすることもできます。

[![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/mqttx)

```shell
sudo snap install mqttx
```

**注意**： `snap`ファイルを使用してインストールする場合、インストールする権限が不十分であるという問題が発生する可能性があります。詳細については、この`issue`[https://github.com/emqx/MQTTX/issues/109]を参照してください。

## 使用

### MQTTブローカーの準備

- ローカルにデプロイされたMQTTBrokerが必要ない場合は、[EMQ X](https://github.com/emqx/emqx)のオンラインパブリックバージョンを使用して簡単にテストできます。

  ```shell
  ブローカーアドレス：broker.emqx.io
  ブローカーTCPポート：1883
  ブローカーSSLポート：8883
  ```

- ローカルで実行されているMQTTBrokerを展開する場合は、[EMQ Xをダウンロード](https://github.com/emqx/emqx/releases)をインストールして使用することをお勧めします。 EMQ Xは完全にオープンソースで、可用性が高く、レイテンシが低いミリオンレベルの分散型IoT MQTT5.0メッセージングサーバーです。

  Dockerを使用してEMQXをすばやくインストールします。

  ```shell
  docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx
  ```

### すばやく接続を確立する

MQTT Brokerを準備したら、メインプログラムページに入り、左側のメニューバーの`+`記号をクリックします。ページにデータがない場合は、右側の[新しい接続]ボタンをクリックして、新しいクライアントを設定することもできます。

![mqttx-create.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763141/d656dd58-f053-4b3d-1d4e-a808dfb71f2c.png)

### クライアント関連情報

作成ページに入った後、クライアントに接続する関連情報を設定または入力する必要があります。

1. ブローカー情報

    `Broker`情報を設定する時、`Client ID`、 `ホスト`、および`ポート`がデフォルトで入力されました、実際の `Broker`情報に従って変更することもできます。 `Client ID`の右側にある更新ボタンをクリックして、新しい `Client ID`を生成できます。

    `ホスト`の前の選択ボックスは、接続のプロトコルを選択するために使用されます。`mqtt://`、 `ws://`をサポートします。`SSL/TLS`認証接続の場合は、`mqtts://`、`wss://`を変更してください。

    **注意**：プロトコルを変更する場合は、接続されているポートを変更する必要があります。

![mqttx-brokerinfo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763141/1702dc94-5870-520b-6ef6-700a15c76a4a.png)


2. ユーザー認証情報

    ブローカーがユーザー認証を有効にしている場合は、設定項目に`ユーザー名` と `パスワード`の情報を入力できます。

![mqttx-user.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763141/98610d68-b432-67e4-0996-e75e06a62a8c.png)

3. SSL/TLS

    `SSL/TLS`認証を有効にする必要がある場合は、設定内の`SSL/TLS`設定アイテムを `true`に設定するだけでよく、`CA signed self`と`Self signed`の2つの方法を提供します。

    `Self signed`を選択するの場合、証明書を設定することが必要です。右端のフォルダボタンをクリックして、生成した各証明書を選択できます。一方向接続の場合は、`CA ファイル`を選択するだけで済みます。双方向認証の場合は、`クライアント証明書` と `クライアント証明書キーファイル`も設定する必要があります。 `SSL証明書`オプションをオンにすると、より完全な証明書検証接続が有効になります。通常、正式な環境をテストするときに有効にすることをお勧めします。

![mqttx-certs.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763141/e399e6e8-5106-f9af-25e1-13bd40d4ce78.png)

4. 詳細設定

    詳細設定では、`接続タイムアウト`、`Keep Alive`、`セッションクリア`、`自動再接続`、`MQTTバージョン`などを設定できます。

5. MQTT 5.0

    詳細設定では、MQTTのプロトコルバージョンを選択し、MQTTv3.1.1およびMQTTv5.0バージョンをサポートします。デフォルトはv3.1.1です。v5.0バージョンを選択した場合は、`セッション有効期限`、`最大受信数`、`トピックエイリアスの最大値`(オプション)も設定できます。

![mqttx-v5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763141/55096a0b-8aa3-48a1-b50a-1820f25cc401.png)


6. 遺言

    詳細設定の設定カードで、遺言を設定できます。`遺言 Qos`と`遺言 Retain`の値はデフォルトで 0 と `False` で入力されました。`遺言トピック`と入力すると`遺言Payload`の値を追加した後、遺言メッセージの設定を完了することができます。

![mqttx-willmessage.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763141/27d20486-5ca0-a4ae-93d8-36a8787d4b66.png)

設定が完了したら、右上隅にある[接続]ボタンをクリックして、接続をすばやく作成し、MQTTブローカーに接続します。

### メッセージPub/Sub

1. メインインターフェース

    接続が成功したら、接続のメインインターフェイスに入り、上部の接続名の横にある折りたたみボタンをクリックすると、設定のいくつかの基本情報を展開して表示できます。これは、接続のいくつかの一般的な設定を変更するのに便利であり、変更するときは切断する必要があります。接続し、もう一度`接続`をクリックして有効にします。接続が成功するたびに、パネルが自動的に折りたたまれます。切断状態では、右側の設定ボタンをクリックして、接続設定をさらに変更することもできます。

![mqttx-main.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763141/09c1fbf0-1b99-d10f-c20f-c6b6ae0be03d.png)

2. サブスクリプション追加

    左下隅にある`サブスクリプション追加`ボタンをクリックすると、すばやく`トピック`を追加できます。各`トピック`に色を付けることができ、ランダムに生成するか、それともカラーピッカーを開いて選択できます。サブスクリプションリストの上部にある右端のボタンを使用すると、サブスクリプションリストを非表示にして、ページのサイズを増やすことができます。追加が完了したら、サブスクリプションリストでサブスクライブされたトピックアイテムをクリックして、メッセージフィルタリングを実行します。メッセージビューでは、現在のトピックにサブスクライブされたメッセージコンテンツのみが表示されます。もう一度クリックするとフィルタリングがキャンセルされます。他のサブスクライブされたトピックアイテムを直接クリックすることもできます。対応するメッセージの内容を表示します。また、トピック名をクリックして、現在のトピック情報をすばやくコピーします。トピックにメッセージを送信する必要がある場合は、メッセージバーのトピック入力ボックスに貼り付けて変更するだけで、操作をすばやく完了できます。

    `トピック`を追加する場合、トピックごとにエイリアスを設定できます。このオプションはオプションです。サブスクリプションを設定して追加すると、サブスクリプションリストの`トピック`データがエイリアスとして表示され、マウスを`トピック`に合わせます。アイテム、プロンプトボックスには、`トピック`の元の値も表示されます。これは、監視する必要のある複数の`トピック`が長すぎて`トピック`の特定の意味を区別できない場合に非常に役立ちます。

![mqttx-topic.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763141/7ef8df3f-fe16-b41f-da15-6b76252bb992.png)


![mqttx-topic-alias.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763141/689c59ee-6a62-1b5c-5c6f-9121d06de952.png)

3. メッセージの送受信

    `Topic`のサブスクリプションが成功したら、メッセージの送受信をテストできます。ページの右下隅にサブスクライブしたばかりの`トピック`情報を入力し、`QoS`の値を選択するか、あるいは`Retain`を選択して、`を選択する`を入力して、右端の送信ボタンをクリックし、サブスクライブしたばかりの`トピック`に送信します。メッセージを送信しました。正常に送信した後、送信したばかりのメッセージをすぐに受信することもできます。メッセージボックスの右側の列が送信済みメッセージであることに注意してください。左の列は受信したメッセージを示しています。 macOSユーザーは `command + enter`ショートカットキーを使用でき、他のユーザーは` control + enter`ショートカットキーを使用してメッセージをすばやく送信できます。

    メッセージバーの `payload`オプションは、メッセージを複数の形式にすばやく変換し、`Base64`、 `Hex`、`JSON`、および `Plaintext`をサポートします。

![mqttx-message.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763141/6fcc60fe-6c1d-d8d8-0258-1228212a661e.png)

これで、 `MQTT`メッセージのテストは完了しました。

### セットアップ

左側のメニューバーの下部にある設定ボタンをクリックするか、ショートカットキーを使用すると、macOSユーザーは `command + ,`ショートカットキーを使用でき、他のユーザーは `control + ,`ショートカットキーを使用して設定ページにジャンプできます。現在、言語の選択がサポートされています。更新を自動的にチェックしてテーマを選択するかどうか、および高度な機能のデータのバックアップと復元の機能をオンにします。

![mqttx-theme.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763141/015e7862-00f9-9885-7454-ac662bd02c78.png)

#### データ管理

詳細設定には、データのバックアップおよびバックアップ機能が含まれます。ユーザーは、2つのインポート方法とエクスポート方法を選択するか、接続ページの右上のメニュー、または設定ページの詳細機能バーから選択できます。

設定ページで、下部にある高度な機能のデータバックアップボタンとデータバックアップボタンをクリックすることを選択できます。データバックアップを選択すると、送受信されたすべてのメッセージを含むすべての接続データがエクスポートされます。データバックアップを選択する場合、インポートしたファイルのパスを選択した後、確認後にデータをバックアップできます。ファイルフォーマットは `JSON`, `XML`, `CSV`, `Excel` をサポートしています。

![mqttx-advance.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763141/7ac82963-28ce-7a40-95a1-608de9b17073.png)


### その他

1. 接続操作

    上部の操作バーのボタンをクリックすると、すばやく切断したり、現在の接続を削除したり、現在のデータをインポートおよびエクスポートしたりできます。

![mqttx-connection.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763141/985c2872-40ba-e1d9-e211-714c110a7d41.png)


2. メッセージ処理

    メッセージバーの右上隅にある`すべて`、`受信済み`、`送信済み`ボタンで除外できます
    すべてのメッセージ、受信されたメッセージ、および公開したメッセージ。

    上部のアクションバーのボタンをクリックするか、`内容検索`項目を選択するか、ショートカットキーを使用すると、macOSユーザーは`command + f`ショートカットキーを使用でき、他のユーザーは`control + f`ショートカットキーを使用して`トピック`を押して検索を開くことができます。この関数は、サブジェクトのファジークエリをサポートします。

    上部の操作バーボタンをクリックし、`履歴データの削除`項目を選択して、現在の接続で送受信されたメッセージをすばやくクリアします。

![mqttx-search.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763141/96ff6a84-79ef-f8ff-ed81-51518b41bc2a.png)


3. アップデートを確認する

    [MQTT X](https://mqttx.app)のバージョン情報と[EMQ X](https://emqx.io)のバージョン情報については、左下の`i`ボタンをクリックして`About`ページに入ります。関連情報。 `バージョンチェック`をクリックして、更新されたバージョンがあるかどうかを確認します。

![mqttx-update.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763141/0117d54c-93d0-e629-9ab8-bcca92dafd20.png)

4. 再接続の最大数

    自動更新チェックでは、最大数の再接続設定があり、整数で設定できます。 `Broker`が切断または接続に失敗した場合、再接続の数がこの値を超えると、接続は完全に切断されます。

5. マルチウィンドウ
    接続リストで、右クリックして[新しいウィンドウ]を選択し、接続用の新しいウィンドウを作成します。 新しいウィンドウでは、接続、トピックのサブスクライブ、メッセージの公開と受信などもできます。
    作成された複数の接続間に接続がある場合、または、同時に受信したメッセージを表示する必要がある場合は、複数のビューウィンドウを作成して同時に表示することができます。

![mqttx-muti-window.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763141/cdf21acc-26cf-c2ec-411a-5c37e7f83384.png)