MQTT mosquitto トピックretainデータのクリア

mosquittoによる特定トピックに設定したretainデータのクリア方法について。
一度retainデータとして任意の値を送信してしまうと、mosquittoの再起動の度にこの値が初期値としてパブリッシュされてしまいます。意図せずにretainしてしまった場合はこれをクリアする必要があります。

ターミナルから以下コマンドを実行します。Mosquittoブローカへのアクセスにユーザ名とパスワードを設定している場合にはオプションでユーザ名とパスワードを指定します。

$ mosquitto_pub -h BROKER_ADDRESS -u USERNAME -P PASSWORD -t TOPIC -r -n

-n : send a null (zero length) message.
-r : message should be retained.

mosquittoサービス停止後、データベースを削除します。

サービスの停止

$ sudo service mosquitto stop

mosquittoデータベースの削除 /var/lib/mosquitto/mosquitto.db

$ sudo rm /var/lib/mosquitto/mosquitto.db

サービスの起動

$ sudo service mosquitto start

または、削除したいトピックTOPICに空のメーセージをパブリッシュします。

$ mosquitto_pub -h BROKER_ADDRESS -u USERNAME -P PASSWORD -t TOPIC -m ’ ’