問題タブ [google-cloud-iot]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
google-cloud-platform - Google iot-core は MQTT WILL メッセージをサポートしていますか
Google iot コアのサポートがメッセージの概念になるかどうか疑問に思っていました。デバイス ( ) でトピック イベントの意志メッセージを設定しようとしましdevices\device-id\events
たが、うまくいきませんでした... 何かアイデアはありますか?
ありがとう
mqtt - Google IoT MQTT ブリッジの問題
Google、AWS、Azure などのさまざまなサービス プロバイダーからの MQTT ブリッジを介してダッシュボードと通信するように構成された IoT ベースのアプリケーション デバイスがあります。
したがって、フローは次のとおりです。
- デバイスがサービス プロバイダーとの TLS セッションを開始します。
- 特定のトピックにサブスクライブし、5 秒のタイムアウトでサービス プロバイダーからのメッセージを待ちます。
- ダッシュボードは、定期的に同じトピックにメッセージを発行します。
- IoT サービス プロバイダーは、サブスクライブしているすべてのデバイスにそれをブロードキャストします。
パブリッシュおよびサブスクライブ メッセージは、MQTT QOS 1サービスを使用します。
観察:
AWS と Azure は上記のフローで正常に動作しますが、ダッシュボードが Google IoT MQTT ブリッジにメッセージを発行しているにもかかわらず、3 ~ 5 回の反復が成功すると、デバイスは Google MQTT ブリッジからのメッセージの受信を停止します。
Google については、Azure や AWS と比較すると、制御フローが異なることがわかりました。
Google の場合、メッセージの受信を待機する前に、特定のトピックを毎回サブスクライブおよびサブスクライブ解除する必要がありますが、AWS および Azure では、MQTT 接続を開くときに 1 回サブスクライブする必要があります。
問題:
サブスクライブされたトピックのメッセージを Google MQTT ブリッジから受信できなかったため、5 秒のデバイス タイムアウトが発生することがあります。電源を入れてから 45 ~ 60 秒後にデバイスが操作された後、デバイスが Google MQTT ブリッジからメッセージを受信できなかったため、タイムアウトの問題を解決するために複数の再試行を追加しても失敗しました。
- 毎回サブスクライブせずに定期的にメッセージを受信するには、Google MQTT ブリッジに制約がありますか?
- Google MQTT ブリッジからタイムアウト (5 秒) せずにデバイスがメッセージを受信するにはどうすればよいですか?
- MQTT 再接続の確立でタイムアウトになったデバイスを回復するための回避策はありますか?
mosquitto - OpenWRT mosquitto_pub バージョンは TLS をサポートしていないようですが、私の MQTT ブローカーは TLS を必要とします
問題を解決しました。解決策については、この質問の最後を参照してください。
私は Mosquitto|MQTT 初心者なので、以下のすべてについてお詫び申し上げます。
Ubuntuなどにmosquittoをインストールすると、すべてが機能します。これを心ゆくまで行うことができます。
Onion Omega2 デバイスから同等の処理を実行したいと考えており、openwrt-x86-generic-rootfs
そのための開発プロキシとして実行されているコンテナーを使用しています (おそらく問題 #1)。
そして、上記のUbuntuバージョンとは異なるバージョンがmosquitto_pub
ありますが、フォームのフラグはサポートされていません。ツールはバージョン情報を提供していないようです。mosquitto_sub
-f
--flag
これらのバージョンは古くなっていると思いますが、opkg install
上記よりも最新のものに更新できるかどうかはわかりません (issue #2)。
Unix の例のように、接続したい Google Cloud IoT ブローカーには TLS (相互ではない) が必要ですが、OpenWRT Mosquitto クライアントには TLS を許可するオプションが含まれていないようです。に相当するものはありません--cafile
。これがなければ、私はブロックされていると思います。(問題#3)。
質問:
- Onion Omega2 デバイスの Mosquitto は TLS をサポートしていますか?
- OpenWRT Mosquitto クライアントは時代遅れですか? アップグレードできますか?
- TLS を使用して Onion を Google の MTQQ に接続する方法はありますか?
ありがとう!!
Onion Omega2 デバイスでは、Mosquitto をインストールすると、cafile
フラグを含むツールの別の/現在のバージョンが提供され、これは私にとってはうまくいきました。不思議なことに、このバージョンのツールは、たとえば次のことを規定するヘルプを提供します-u
が、ツールは受け入れます--username
したがって、Omega2 で次のコマンドを実行でき、どちらも機能します。
と:
どこ:
LONG_REGISTRY=projects/${PROJECT}/locations/${REGION}/registries/${REGISTRY}
そして、私の質問に答えます:
- Onion Omega2 にインストールされた Mosquitto ツールは TLS をサポートします
- OpenWRT Mosquitto クライアントは時代遅れだと思います。違います
- はい、上記の例は Cloud IoT を使用したパブリッシュとサブスクライブのデモです
私は Cloud IoT に参加していない Google 社員ですが、Mosquitto のサポートが最も必要だと思います。