私はを持っています。私はモスキートをインストールしています。私はpubとsubを使ってpiと私のubuntuマシン間でメッセージを送受信しています。私はファイルiot.conf
を作って/etc/mosquitto/conf.d/iot.conf
に入れました。ファイルの内容は以下の通りです:モスキートブローカーにオフラインメッセージを保存する方法
connection CONIOT log_type all address 192.168.1.154:8883 remote_clientid sensor1 bridge_cafile /etc/ssl/certs/ca-certificates.crt try_private false cleansession true start_type automatic bridge_insecure false bridge_protocol_version mqttv311 bridge_tls_version tlsv1 notifications false
topiC# out 0 sensor/sensor1 sensor/sensor1 topiC# in 0 sensor/sensor1 sensor/sensor1
IPアドレスは私のラズベリーパイのIPアドレスです。ラズベリーパイの私はセンサー1のデータを公開する小さなpythonスクリプトを作った。私のubuntuマシンでは、以下のコマンドを使ってデータを受け取ることができます:
mosquitto_sub -t sensor/sensor1 -h 192.168.1.154
私はトピックとホストのIPアドレスを与えました。このように私はpiからすべてのメッセージを受け取ることができます。しかし、piがオフラインになったら(Wi-Fi/LANなし)、メッセージがローカルに保存され、オンラインに戻ったときにすべてのメッセージを受信できるかどうかをテストしたい。
これを上記の構成でテストしましたが、オフラインメッセージを受信できませんでした。私はhereのようにcleansession
を真としました。
誰でも私が間違っている箇所を指摘できますか? piがwifi/lanに接続されていないときに、mosquittoにオフラインメッセージを保存します。これをどのようにテストできますか?ここで
は/etc/mosquitto/mosquitto.confファイルの内容です:
# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example
pid_file /var/run/mosquitto.pid
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
include_dir /etc/mosquitto/conf.d
HI。情報のおかげで。私はあなたが固定されたclientidを使用して述べた部分を取得しませんでした。それをもう一度説明できますか? ubuntu側では、通常、トピックとホスト名に-tと-hを付けた 'mosquitto_sub'コマンドを使用しています。 'mosquitto_sub'コマンドでクライアントを追加する必要がありますか、またあなたが参照しているクライアントは、私のiot.confファイルに' remote_clientid sensor1'と述べたのでsensor1です。ありがとう –
データがどのように流れているかはあなたの質問からは分かりません。しかし、メッセージはクライアント単位で特定のブローカにキューイングされるため、特定のクライアントが見逃したメッセージを回復したい場合は、クライアントごとにクライアントIDを固定する必要があります(ブローカ時にブローカはクライアントです)。 – hardillb
データがpiからubuntuに流れています。私はπでセンサーを接続しました。私は 'paho-mqtt' Pythonライブラリを使ってメッセージを公開しています。 ubuntuマシンでは、mosquitto_subを使って受信しています。私は構成を(問題のように)行い、それを/etc/mosquitto/conf.d/に保存して、mosquittoが使用するようにしました。これはすべて私のセットアップです –