問題を解決しました。解決策については、この質問の最後を参照してください。
私は Mosquitto|MQTT 初心者なので、以下のすべてについてお詫び申し上げます。
Ubuntuなどにmosquittoをインストールすると、すべてが機能します。これを心ゆくまで行うことができます。
mosquitto_pub \
--host mqtt.googleapis.com \
--port 8883 \
--id ${LONG_REGISTRY}/devices/${DEVICE} \
--username unused \
--pw ${PASSWORD} \
--cafile /roots.pem \
--tls-version tlsv1.2 \
--protocol-version mqttv311 \
--debug \
--qos 1 \
--topic /devices/${DEVICE}/events \
--message "$(date --rfc-3339=seconds) Hello Henry!"
Onion Omega2 デバイスから同等の処理を実行したいと考えており、openwrt-x86-generic-rootfs
そのための開発プロキシとして実行されているコンテナーを使用しています (おそらく問題 #1)。
docker run -i -t openwrt-x86-generic-rootfs /bin/ash
mkdir -p /var/lock
opkg update
opkg install mosquitto mosquitto-client libmosquitto
そして、上記の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 で次のコマンドを実行でき、どちらも機能します。
mosquitto_pub \
--host mqtt.googleapis.com \
--port 8883 \
--id ${LONG_REGISTRY}/devices/${DEVICE} \
--username unused \
--pw ${PASSWORD} \
--cafile /roots.pem \
--tls-version tlsv1.2 \
--protocol-version mqttv311 \
--debug \
--qos 1 \
--topic /devices/${DEVICE}/events \
--message "Hello Henry!"
と:
mosquitto_sub \
--host mqtt.googleapis.com \
--port 8883 \
--id ${LONG_REGISTRY}/devices/${DEVICE} \
--username unused \
--pw ${PASSWORD} \
--cafile /roots.pem \
--tls-version tlsv1.2 \
--protocol-version mqttv311 \
--debug \
--qos 1 \
--topic /devices/${DEVICE}/config
どこ:
LONG_REGISTRY=projects/${PROJECT}/locations/${REGION}/registries/${REGISTRY}
そして、私の質問に答えます:
- Onion Omega2 にインストールされた Mosquitto ツールは TLS をサポートします
- OpenWRT Mosquitto クライアントは時代遅れだと思います。違います
- はい、上記の例は Cloud IoT を使用したパブリッシュとサブスクライブのデモです
私は Cloud IoT に参加していない Google 社員ですが、Mosquitto のサポートが最も必要だと思います。