2017-11-02 15 views
0

私はを持っています。私はモスキートをインストールしています。私は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 

答えて

1

をtrueにcleansession設定すると、それはすべてのメッセージをキューに入れ破棄するブローカーに指示するので、あなたが任意のキューに入れられたメッセージを取得することはできません。

をfalseに設定し、ubuntuマシンのブローカにpiのメッセージをキューイングして転送させたい場合は、piブローカとmosquitto_subクライアントの両方にfixed clientidを使用する必要があります。クライアント。

+0

HI。情報のおかげで。私はあなたが固定されたclientidを使用して述べた部分を取得しませんでした。それをもう一度説明できますか? ubuntu側では、通常、トピックとホスト名に-tと-hを付けた 'mosquitto_sub'コマンドを使用しています。 'mosquitto_sub'コマンドでクライアントを追加する必要がありますか、またあなたが参照しているクライアントは、私のiot.confファイルに' remote_clientid sensor1'と述べたのでsensor1です。ありがとう –

+0

データがどのように流れているかはあなたの質問からは分かりません。しかし、メッセージはクライアント単位で特定のブローカにキューイングされるため、特定のクライアントが見逃したメッセージを回復したい場合は、クライアントごとにクライアントIDを固定する必要があります(ブローカ時にブローカはクライアントです)。 – hardillb

+0

データがpiからubuntuに流れています。私はπでセンサーを接続しました。私は 'paho-mqtt' Pythonライブラリを使ってメッセージを公開しています。 ubuntuマシンでは、mosquitto_subを使って受信しています。私は構成を(問題のように)行い、それを/etc/mosquitto/conf.d/に保存して、mosquittoが使用するようにしました。これはすべて私のセットアップです –

0

私はhardilbの助けを借りて問題を解決しました。偽

  • 固定クライアントID
  • 使用QOS 1.
  • おかげ

    1. セットcleansession:これは私がオフラインメッセージを取得するために何をしたかです。

    関連する問題