タグ付けされた質問 「mosquitto」

オープンソースのMQTTブローカー実装であるEclipse Mosquittoに関する質問(セットアップの質問、ブローカーの実行に関する問題、Mosquittoの動作に関する質問)。

2
Mosquittoは複数のブローカーをサポートできますか?
私が検討してきたMosquittoをホームのIoTネットワーク用のMQTTメッセージ・ブローカーのために、私は、すべてのメッセージが通過する必要があるため、ブローカーは、それが失敗した場合、私のネットワーク全体をダウンさせる可能性が単一障害点となる可能性を懸念していますブローカーが何らかの理由でオフラインになった場合(偶発的なプラグの抜き取り、ハードウェア障害など)、ブローカーはまったく送信できません。 Mosquittoをインストールした状態で複数のブローカーを使用して、ネットワークの信頼性を向上させることは可能でしょうか?可能であれば、複数のブローカーを使用することに不利な点や重要なオーバーヘッドはありますか?

3
#をサブスクライブしないでください-Mosquittoを使用してすべてのメッセージをデータベースにダンプする方法は?
HiveMQのブログには、すべてのメッセージをデータベースにダンプしようとするときにマルチレベルワイルドカードをサブスクライブしない「ベストプラクティス」の下にリストされています。彼らは、サブスクライブしているクライアントが高負荷のメッセージに追いつくことができないかもしれないと主張し、代わりにブローカプラグインを使用してメッセージのストリームに直接フックすることを提案します。 場合によっては、すべてのメッセージをサブスクライブする必要があります。これらのメッセージは、すべてのメッセージをデータベースに永続化する場合など、ブローカー経由で転送されます。これは、MQTTクライアントを使用して、マルチレベルワイルドカードをサブスクライブすることで実行しないでください。その理由は、多くの場合、サブスクライブしているクライアントが、送信されるメッセージの負荷を処理できないことです。特に、大量のスループットがある場合。推奨されるソリューションは、MQTTブローカーに拡張機能を実装することです。たとえば、HiveMQのプラグインシステムを使用すると、HiveMQの動作にフックし、非同期ルーチンを追加して各着信メッセージを処理し、データベースに保持できます。 どちらかありますか mosquittoブローカー用の同様のシステム(拡張機能/プラグイン)、 蚊と連携する別の推奨方法、または このアプローチがまったく不要であるという合理的な証拠、すなわち、購読しているクライアント#がうまくいくことができるということですか? /programming//q/31584613/3984613は、この質問を網羅的に扱っていません。
16 mqtt  mosquitto 

2
MQTTネットワークで実行できる簡単なセキュリティテストは何ですか?
自宅でMQTTネットワークをセットアップしようとしています。実践的な演習で知識を積み上げたい。それは、私のラップトップ(Windows 7)でホストされるブローカーと、Raspberry Piを搭載したクライアントを備えた小さなネットワークです。また、携帯電話でクライアントを作成することも考えています(Android)。 私の目標は、簡単なネットワークを使用して実験できるようにすることであり、最初に実験して、セキュリティテストを実行することです。 悪意のあるMQTTクライアントとして機能するように設計されたMQTT Server Test Suiteを見つけました。開始することはかなり有望です。 テストツールの一般的な機能 完全自動化されたブラックボックスネガティブテスト 既製のテストケース Java(tm)で書かれています GUI、コマンドライン、リモートインターフェースモード 計装(ヘルスチェック)機能 サポートとメンテナンス 包括的なユーザードキュメント 結果の報告と分析 しかし、MQTTセキュリティ機能を検証するために使用できる、より簡単なプラクティスにも興味があります。初心者がMQTTネットワークでいくつかの基本的なセキュリティ検証を実行する最も簡単な方法は何ですか?

3
Raspberry PiのMosquittoは、ログ設定を変更した後に接続を拒否します
Raspberry Piに私の命令を任せるための継続的な努力の中で、Mosquitto MQTTブローカーをセットアップしました。基本設定では、すべてがかなりうまくいきました。 publishコマンドでテストメッセージを投稿し、subscribeコマンドで受信できます。次に、ログレベルを上げることにし、mosquitto.confファイルを次のように変更しました。基本的にログセクション全体がコメントアウトされたバージョンが機能します。もう一方はそうではありません。 ログファイルのある行に絞り込みました。 $ diff mosquitto.conf mosquitto.conf.old 408,410c408,410 < #log_dest file /var/log/mosquitto/mosquitto.log --- > log_dest file /var/log/mosquitto/mosquitto.log ファイルは存在しmosquitto:mosquitto、サービスを実行しているユーザーが所有しています。 ロギングを試みたときに得られる非常に役立つメッセージは次のとおりです。 mosquitto_pub -h localhost -t thisisme -m 5 Error: Connection refused 今では、このサービスは無言の死であると確信しています。 $ sudo service mosquitto status ● mosquitto.service - LSB: mosquitto MQTT v3.1 message broker Loaded: loaded (/etc/init.d/mosquitto) Active: …

1
Arch Linuxでmosquitto_sub「接続が拒否されました」
インストール私はそうmosquittoとmosquitto-clientラズベリーPiを経由Raspbianジェシーを実行しているのapt-getと同様にmosquitto通過アーチのLinuxを実行している別のパイの上にpacman。Archでは、クライアントユーティリティを個別にインストールする必要はありません。 Raspbianでの簡単なサブスクリプション/パブリッシングのテストは、そのままで機能しました。 mosquitto_sub –d –t blub mosquitto_pub –d –t blub –m “test” Archボックスからのパブリッシュも機能します。 mosquitto_pub -h <IP-Raspbian> -t blub -m "test" ただし、Archシステムのトピックをサブスクライブすると、次のようになります。 mosquitto_sub –d –t blub Error: Connection refused これはかなり一般的です。ここで何が問題になっていますか?

3
MosquittoのWebソケットを使用するか、クライアントを直接接続する必要がありますか?
このブログによると、Mosquitto(MQTTブローカー)はWebソケットを介したクライアントへの接続をサポートしています。ブログ記事は、Webソケットプロトコルが現在のブラウザーの大部分でサポートされているにもかかわらず、Webブラウザーが適切なTCPソケットを(まだ)サポートしていないため、Webソケットがブラウザーアプリケーションにとってより有用であることを示唆しているようです。 ネットワークにさまざまなクライアント(例:Raspberry Pisなどのマイクロコントローラーに基づくセンサーやアクチュエーター)しかない場合、直接TCP接続でWebソケットを使用する利点はありますか?ブラウザと通信しているときだけ、Webソケットプロトコルのオーバーヘッドはそれだけの価値がありますか?

1
Mosquitto MQTTクライアントは別のクライアントを強制的に切断できますか?
MQTTサーバーからクライアントを強制的に切断する必要がある場合(たとえば、なんらかの動作が正しくなく、正しく応答しない場合)に、MQTTクライアントがブローカーに何らかの方法でクライアントを切断するように指示する方法を知りました。 前の質問には、ちょうどあなたが殺したいクライアントと同じクライアントIDとの接続の可能性を強調したが、これは最高の状態で信頼できないようだと、私のニーズを満たす、より信頼性の高いオプションがあります場合、私は思ったんだけど: 許可されたクライアントが、クライアントIDによって他のクライアントをネットワークから切断できるようにします 理想的には、許可されていないクライアントが他のクライアントを切断するのを防ぎます(これにより、「信頼できる」クライアントだけが他のクライアントを切断できるようになります) そのような要件を満たす機能はありますか?
10 mqtt  mosquitto 

2
Mosquittoサーバーの特定のトピックにサブスクライブしているクライアントをリストする
それが一般的な質問ですが、ここではシナリオを提供します。 私はMosquittoサーバーを実行して、espリレーモジュール(IteadのSonoff)とHome Assistantの間にmqtt通信を提供しています。ほとんどの場合、問題なく動作します。各モジュールには独自のトピックがあり、HASSにはモジュールと同じ数の「軽い」構成があるため、個々のトグルボタンでWebフロントエンドから制御できます。 ただし、ライトが実際にオンになっていて、HASSのトグルがオフとして表示される(およびその逆の状況も)一貫性のない状態の状況を経験しました。ログを調査したところ、MosquittoがHASSに特定のメッセージを発行していないことがわかりました(すべてのモジュール状態トピックにサブスクライブする必要があります)。具体的には、4つのモジュールとそれに対応する状態トピック(state/sonoff_xx/POWER)を指定すると、HASSはモジュール2と4のトピックにのみサブスクライブされ、1と3にはサブスクライブされないようです。モジュール4の予想される動作は次のとおりです。他の作業モジュールですが、HASSへの公開は他の2つにはありません。 Jun 15 19:22:46 nas mosquitto[9486]: Received PUBLISH from sonoff4 (d0, q0, r1, m0, 'stat/sonoff4/POWER', ... (2 bytes)) Jun 15 19:22:46 nas mosquitto[9486]: Sending PUBLISH to home-assistant (d0, q0, r0, m0, 'stat/sonoff4/POWER', ... (2 bytes)) これはHASSとリレーモジュールに関する問題ではありませんが、特定のクライアントがサブスクライブしていると想定されているMQTTサーバーのステータスを調べる方法についてですが、ログを見るとわかりません。

4
Windowsで実行されているMosquittoでWebSocketを有効にする方法は?
WindowsマシンでMosquittoブローカーを稼働させています。Webソケットのサポートを使用してインストールしたかどうかはわかりません(原因がわからなかったため、または必要だったため)。しかし、私の要件はJavaScript(Paho)を使用してMQTTに接続することです。既存のMQTTブローカーのWebソケットサポートを有効にする方法を知りたいです。 mosquitto.confこれらの行をファイルに追加してファイルを編集してみました listener 9001 protocol websockets しかし、動作していないようです。私はより良い写真を提供するかもしれない画像を添付しています: コマンドもよくわかりませんが、デフォルトのポート1883で動作するようです。 だから問題は:それをどのように機能させるのですか?

1
MQTT CONNECTメッセージのクライアントIDのみを変更する方法は?
MQTT CONNECTメッセージをいじっています。私のラップトップで実行されているMosquittoブローカーに向けてTCP / IPソケットを開き、MQTT CONNECTメッセージを送信し、(通常)4バイト長のCONNACK応答を受信して​​ソケットを閉じ、プログラムを終了する単純なCプログラムがあります。 現在、私は自分のCONNECTメッセージを作成していませんが、Wiresharkキャプチャからのものを使用しています。 MQTTパーツであるC配列としてエクスポートできます。 char packet_bytes[] = { 0x10, 0x20, 0x00, 0x06, 0x4d, 0x51, 0x49, 0x73, 0x64, 0x70, 0x03, 0x02, 0x00, 0x3c, 0x00, 0x12, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x31, 0x34, 0x38, 0x35, 0x38, 0x39, 0x30, 0x38, 0x35, 0x37, 0x31, 0x39, 0x34 }; この変更されていない配列を使用すると、すべてがうまく機能します。ブローカーの出力は次のとおりです。 1486237905: New connection …
8 mqtt  mosquitto 

4
Windows 7でMosquittoブローカーの詳細なログを有効にする方法は?
前の質問があります。解決策に近づくために、Windows 7でMosquittoブローカーのログを有効にしたいと思います。 もともと私は次のようにブローカーを手動で起動しました: mosquitto -p 1883 -v -v詳細なコンソールロギングを意味します。しかし、これは十分な情報を提供しません、私の問題の場合には次の行のみを提供します: 1486293976: Socket error on client <unknown>, disconnecting. 私はこの答えで説明されていることをやってみました。設定ファイルのログ部分は次のとおりです。 # Note that if the broker is running as a Windows service it will default to # "log_dest none" and neither stdout nor stderr logging is available. # Use "log_dest none" if you wish …

1
QoS 1/2メッセージを保存するためにMosquittoのメモリが不足するとどうなりますか?
MQTTでは、QoSの1又は2のメッセージがなければならない少なくとも一度配信される(QOS 2件のメッセージが配信されなければならない正確に 1回)。クライアントが接続されていない場合、ブローカーはクライアントがメッセージを受信する準備ができるまでメッセージを保存する必要があります。 HiveMQのブログは面白いポイントがあります。 しかし、クライアントが長時間オンラインにならないとどうなりますか?多くの場合、メッセージを保存するための制約は、オペレーティングシステムのメモリ制限です。このシナリオで何をすべきかについての標準的な方法はありません。それは完全にユースケースに依存します。HiveMQでは、キューに入れられたメッセージを操作してそれらをパージする可能性を提供します。 これはブローカーに依存しているようですので、Mosquittoはこの状況をどのように処理しますか?メモリ不足の後にクラッシュするのですか、それとも古いメッセージが最終的に削除されますか?
8 mqtt  mosquitto 

1
mosquitto-ブローカーが永続化構成で起動しない
mosquitto 永続化のための以下のオプションは好きではないようです。 # Persistence configuration persistence true persistence_location /data/qos/ persistent_client_expiration 8h /data/qos存在し、アクセス権が設定されていません。 sudo chown mosquitto:mosquitto /data/qos 永続化構成オプションは、ディレクトリのpersist.conf下に配置されたファイルにあります/etc/mosquitto/conf.d。コピーする前に、次のようなコマンドを使用してコピーした後、ブローカーを停止して再起動します。 sudo service mosquitto stop sudo service mosquitto start /var/log/mosquitto/mosquitto.log問題何ができるかについての手掛かりを与えるものではありません。 では、永続化のために上記で提供されたオプションの何が問題になっていますか?
7 mqtt  mosquitto 


1
標準化されたMQTTトピックはありますか?
私はMQTTに不慣れです(そして一般的にホームオートメーションです。システムと開発者の方がずっと好きです)、WiFiスイッチ(Sonoff Basic)をフラッシュし、それをMosquittoとHome Assistantのインスタンスに接続しました。これまでのところ、すべてが正常に機能しています。 Mosquittoバスを監視すると、次のようなメッセージが表示されます。 tele/hass1/LWT Online tele/home/room1/switch1/LWT Online cmnd/home/room1/switch1/POWER OFF 私home/room1/switch1は自分のWiFiスイッチで定義したものを認識し、スイッチはcmnd(コマンド?誰もスイッチを操作しなかったので驚くでしょう)およびtele(テレメトリ?)で始まるいくつかのトピックを送信しました。tele/hass1/...Home Assistantによって生成されます。 プレフィックスの標準または一般に受け入れられている慣行はありますか? MQTTドキュメントはトピックのフォーマット方法を説明しますが、構造は導入していません(で始まるトピックを除く$)ので、ベストプラクティスは、ベストプラクティス(またはフルストップ)であると思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.