MQTTキープアライブ時間内のping送信

MQTTキープアライブについて

ping送信を意図的に送信しなくても、キープアライブ間隔で接続が切断されても、その都度再接続するようにコードを書けば特に問題になることはないと思います。

MQTTキープアライブ設定時間内にクライアントからのデータパブリッシュがなければ、ブローカーが接続を自動的に切断します。クライアントとブローカーのどちらかが非アクティブになった際のために必要な設定ですが、クライアントが頻繁にパブリッシュしない場合は設定時間毎に再接続する必要が生じてしまうため、クライアントからのpingをこの設定時間内に送信することで再接続プロセスを回避できます(特別必要な処置ではないようです)。

Arduinoの場合などは下記コマンドを追加して下さい。

// ping the server to keep the mqtt connection alive
// NOT required if you are publishing once every KEEPALIVE seconds

if(! mqtt.ping()) {
mqtt.disconnect();
}