You are currently viewing MQTTのRetainedメッセージの理解

MQTTのRetainedメッセージの理解

MQTTのRetainメッセージの動作は、MQTT Clientがペイロードを持つTopicを発行すると、MQTT Brokerは新しいペイロードに変更するまでこのペイロードを保持するというものである。

MQTTのRetainメッセージの利点は、Publisherが同じTopicに継続してペイロードを発行していなくても、そのTopicを購読しているSubscriberがいれば、最後に更新されたペイロードを購読することができることである。することができます。したがって、ペイロードを保持したまま同じTopicを購読しているサブスクライバーがいれば、そのサブスクライバーは最後に更新されたペイロードを取得することになる。

MQTTのRetainedメッセージの例。

例えば、温度センサが「ESP32」というマイコンに接続されている場合、ESP32はMQTTクライアントとして動作し、センサ値は1時間ごとにTopic-‘LM35‘にRetainフラグを立ててMQTT Brokerにパブリッシュされます。公開時間中に他のMQTTクライアント(’MqttDesk‘)が同じトピックを購読すると、topic-‘LM35’に既に保持されているセンサ値を取得する。

以下のビデオでは、MQTT Retainedメッセージ、そのクリア方法、およびその仕組みについて説明します。

MQTT QoS(Quality of Service)は、MQTT Retainedメッセージに影響を与えません。

トピックからRetainフラグをクリアする方法は?

ゼロペイロードを ‘LM35’ トピックにパブリッシュすると、MQTT Broker からそのトピックの Retain フラグがクリアされます。これにより、「MqttDesk」が「LM35」トピックを購読した場合、次回「ESP32」がそのトピックに発行する際には、ペイロード以外何も取得しなくなる。

MqttDesk MQTT ClientをSnapストアでダウンロードできるようになりました。

コメントを残す