我解决了我的问题,请查看此问题的最后解决方案。
是一个Mosquitto | MQTT noob,所以我为随后的一切道歉。
安装的蚊子例如Ubuntu和一切正常,我可以按照我的心意做这件事:
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_pub
和mosquitto_sub
,但上面的Ubuntu版本版本不同,不支持-f
和--flag
格式的标记。这些工具似乎没有提供任何版本信息。
我认为这些版本已经过时,但我不知道我是否可以更新到比上面opkg install
更新的内容(问题#2)。
与Unix示例一样,我想要连接的Google Cloud IoT代理需要TLS(不是相互),但OpenWRT Mosquitto客户端似乎不包含允许TLS的选项。不等于--cafile
。没有这个,我想我被封锁了。 (问题#3)。
问题:
谢谢!
在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}
并回答我的问题:
我不是云物联网中的Google员工,我认为我最需要Mosquitto的帮助。