2

我解决了我的问题,请参阅此问题的结尾以获取我的解决方案。

我是 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

然后,我拥有mosquitto_pubmosquitto_sub上面的 Ubuntu 版本不同的版本,形式的标志-f并且--flag不受支持。这些工具似乎没有提供任何版本信息。

我认为这些版本已经过时,但我不知道是否可以更新到比opkg install上述版本更新的版本(问题 #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 的帮助。

4

0 回答 0