0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Watson IoT Platform - MQTT - Retainの確認

Posted at

初めてWatson IoT Platformを使ってみよう、というかたのためのガイドです。
Watson IoT Platformを使ってみるでIoTアプリを準備しました。
MessageSightを動かすでMQTTブローカーとしてMessageSightを準備しました。
Node-REDをローカル環境で稼働させる
Watson IoT Platform - MQTT - Node-REDからpub/subするでNode-REDからpub/subできるようにしました。

#Retain機能の確認

  • MQTTのRetain機能により、同一トピックの最新(最終)メッセージをブローカー内に保持することができます。
  • Retainはパブリッシュする際にパブリッシャー(送信者)がメッセージ毎に指定可能です。
  • サブスクライバー(受信者)は
    • 接続されていればパブリッシュされた時にすぐ受信できます(当然)。
    • あとからサブスクライブしても、ブローカー内にRETAIN(保持)されている最終版をサブスクライブした時に受信することができます。
Retainの確認
[{"id":"42b340e4.dc4bd","type":"mqtt-broker","z":"375326d0.fda38a","broker":"192.168.100.100","port":"1883","clientid":"","usetls":false,"verifyservercert":true,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willRetain":null,"willPayload":"","birthTopic":"","birthQos":"0","birthRetain":null,"birthPayload":""},{"id":"418d3097.c29d28","type":"mqtt out","z":"375326d0.fda38a","name":"","topic":"/abc/def/ghi","qos":"","retain":"true","broker":"42b340e4.dc4bd","x":250,"y":520,"wires":[]},{"id":"fec77fc6.405f2","type":"inject","z":"375326d0.fda38a","name":"","topic":"","payload":"こんにちは","payloadType":"str","repeat":"","crontab":"","once":false,"x":100,"y":520,"wires":[["418d3097.c29d28"]]},{"id":"796ea0f6.918108","type":"debug","z":"375326d0.fda38a","name":"","active":true,"console":"false","complete":"false","x":630,"y":520,"wires":[]},{"id":"9520efe5.348c9","type":"mqtt in","z":"375326d0.fda38a","name":"","topic":"/abc/def/ghi","broker":"42b340e4.dc4bd","x":450,"y":520,"wires":[["796ea0f6.918108"]]}]

スクリーンショット 2016-05-31 12.48.18.png

  • まずデフォルトのRetainをfalseにしてデプロイし、injectノードの左側のボタンを押すと、Debugノードからメッセージが出力される事を確認します。
  • 次に、mqtt outノードのRetainをtrueにして一度メッセージを送付(injectノード左側のボタンを押下)します。
  • 続いて、右側のmqtt inノードを開いてなにか編集(例えばノードのName欄に名前を入力するなど)し、デプロイし直すと、
    スクリーンショット 2016-05-31 13.06.14.png

このタイミングでDebug出力へ保存されていたRetainメッセージが送達される事を確認します。
スクリーンショット 2016-05-31 13.09.57.png

  • Retainメッセージをブローカーから削除するには、同一トピックに対してブランクのペイロードを送付することで削除されます。

  • 下記のようにinjectノードの送付メッセージをブランクに変更し、デプロイします。
    スクリーンショット 2016-05-31 13.09.19.png

  • デプロイ後、上記と同様の操作でmqtt inノードを編集しデプロイしなおしても、前に保持されていたRetainメッセージが送達されなくなった事を確認します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?