MQTT プロトコル
IoT および制約のあるデバイス向けに設計された軽量パブリッシュ/サブスクライブメッセージングプロトコルです。MQTT 3.1.1 および MQTT 5.0 仕様を完全サポートしています。
IoT および制約のあるデバイス向けに設計された軽量パブリッシュ/サブスクライブメッセージングプロトコルです。MQTT 3.1.1 および MQTT 5.0 仕様を完全サポートしています。
IoT および制約のあるデバイス向けの軽量パブリッシュ/サブスクライブメッセージングです。WebSocket またはネイティブ TCP を通じて MQTT 3.1.1 および MQTT 5.0 を完全サポートします。
TsgcWSPClient_MQTT
Windows, macOS, Linux, iOS, Android
Standard / Professional / Enterprise
TsgcWebSocketClient と TsgcWSPClient_MQTT をペアリングし、OnMQTTConnect / OnMQTTPublish をバインドして Subscribe と Publish を呼び出すだけです。
uses
sgcWebSocket, sgcWebSocket_Protocol_MQTT_Client,
sgcWebSocket_Protocol_MQTT_Message;
var
WSClient: TsgcWebSocketClient;
MQTT: TsgcWSPClient_MQTT;
begin
WSClient := TsgcWebSocketClient.Create(nil);
WSClient.Host := 'www.esegece.com';
WSClient.Port := 15675;
MQTT := TsgcWSPClient_MQTT.Create(nil);
MQTT.Client := WSClient;
MQTT.Authentication.Enabled := True;
MQTT.Authentication.UserName := 'sgc';
MQTT.Authentication.Password := 'sgc';
MQTT.OnMQTTConnect := MQTTConnect;
MQTT.OnMQTTPublish := MQTTPublish;
WSClient.Active := True;
end;
procedure TForm1.MQTTConnect(Connection: TsgcWSConnection;
const Session: Boolean; const ReasonCode: Integer;
const ReasonName: string;
const ConnectProperties: TsgcWSMQTTCONNACKProperties);
begin
MQTT.Subscribe('sensors/temperature/#');
end;
procedure TForm1.MQTTPublish(Connection: TsgcWSConnection;
aTopic, aText: string;
PublishProperties: TsgcWSMQTTPublishProperties);
begin
Memo1.Lines.Add(aTopic + ': ' + aText);
end;
// Publish a retained QoS 1 message
MQTT.Publish('sensors/temperature/room1',
'{"value":22.5,"unit":"C"}', mtqsAtLeastOnce, True);
// uses: sgcWebSocket, sgcWebSocket_Protocol_MQTT_Client
TsgcWebSocketClient *WSClient = new TsgcWebSocketClient(this);
WSClient->Host = "www.esegece.com";
WSClient->Port = 15675;
TsgcWSPClient_MQTT *MQTT = new TsgcWSPClient_MQTT(this);
MQTT->Client = WSClient;
MQTT->Authentication->Enabled = true;
MQTT->Authentication->UserName = "sgc";
MQTT->Authentication->Password = "sgc";
MQTT->OnMQTTConnect = MQTTConnect;
MQTT->OnMQTTPublish = MQTTPublish;
WSClient->Active = true;
void __fastcall TForm1::MQTTPublish(TsgcWSConnection *Connection,
UnicodeString aTopic, UnicodeString aText,
TsgcWSMQTTPublishProperties PublishProperties)
{
Memo1->Lines->Add(aTopic + ": " + aText);
}
MQTT->Publish("sensors/temperature/room1",
"{\"value\":22.5,\"unit\":\"C\"}", mtqsAtLeastOnce, true);
using esegece.sgcWebSockets;
var WSClient = new TsgcWebSocketClient();
WSClient.Options.Parameters = "/ws";
var MQTT = new TsgcWSPClient_MQTT();
MQTT.Client = WSClient;
MQTT.Authentication.Enabled = true;
MQTT.Authentication.UserName = "sgc";
MQTT.Authentication.Password = "sgc";
MQTT.HeartBeat.Enabled = true;
MQTT.HeartBeat.Interval = 5;
MQTT.OnMQTTConnect += (conn, session, code, name, props) => MQTT.Subscribe("sensors/temperature/#");
MQTT.OnMQTTPublish += (conn, topic, text, props) => Console.WriteLine(topic + ": " + text);
WSClient.Host = "www.esegece.com";
WSClient.Port = 15675;
WSClient.Active = true;
MQTT.Publish("sensors/temperature/room1",
"{\"value\":22.5,\"unit\":\"C\"}", TmqttQoS.mtqsAtLeastOnce, true);
公開プロパティ 10 個、メソッド 9 個、イベント 13 個 ― TsgcWSPClient_MQTT リファレンスより。
MQTTVersion で CONNECT パケットに通知するレベル(MQTT 3.1.1 または MQTT 5.0)を選択します。ConnectProperties には MQTT 5 のセッション有効期限、受信最大数、パケットサイズ、トピックエイリアス、拡張認証フィールドが含まれます。
Client プロパティを TsgcWebSocketClient に接続すると WebSocket 経由で MQTT を実行でき、Broker 経由で TsgcWSMQTTBroker に接続するとポート 1883/8883 のネイティブ TCP トランスポートを使用できます。
オプションの保持フラグ付きで QoS 0、1、2 でパブリッシュできます。QoS プロパティはデフォルトレベル、再試行間隔、タイムアウトを制御します。PublishAndWait はブローカーの確認応答までブロックします(トランザクションパブリッシュに便利です)。
LastWillTestament で、接続が異常切断した場合にブローカーがこのクライアントの代わりにパブリッシュするトピック、ペイロード、QoS、保持フラグを設定します。デバイスの切断を通知するスマートな方法です。
Subscribe / UnSubscribe は + および # ワイルドカードを持つトピックフィルターを受け付けます。OnMQTTPublish で受信メッセージを取得し、OnMQTTPublishEx では生バイト/ストリームが得られます。QoS 2 ハンドシェイクは OnMQTTPubRec、OnMQTTPubRel、OnMQTTPubComp を通じて公開されています。
HeartBeat はタイマーで PINGREQ を送信し、ブローカーの無音切断を検出します。Authentication は CONNECT に UserName/Password を含めます。MQTT 5 の拡張認証:Auth を呼び出し、SCRAM スタイルのチャレンジに対して OnMQTTAuth を処理します。
本コンポーネントが実装するプロトコルの公式リファレンスです。
コンポーネントリファレンスへのディープリンク、すぐに実行可能なデモプロジェクト、そして体験版のダウンロードはこちらです。
| オンラインヘルプ — Protocol_MQTT 本コンポーネントのプロパティ、メソッド、イベントの完全なリファレンスです。 | 開く | |
| デモプロジェクト — Demos\Protocols\MQTT すぐに実行可能なサンプルプロジェクトです。sgcWebSockets パッケージに同梱されています。下記より体験版をダウンロードしてください。 | 開く | |
| 技術ドキュメント (PDF) 本コンポーネントのみを対象とした機能解説、クイックスタート、Delphi、C++ Builder および .NET のコードサンプル、一次資料への参照を収録しています。 | 開く | |
| ユーザーマニュアル (PDF) ライブラリ内のすべてのコンポーネントを網羅した総合マニュアルです。 | 開く |