0

我正在使用多个传感器设备进行内部项目。我不希望用户单独注册每台设备。从某种意义上说,我想为注册到注册表的所有设备使用相同的公钥/私钥对,但能够通过 mqtt/http 将设备信息传递到 pubsub,并使用名称或 ID 等唯一设备信息。有可能实现吗?

我假设我是否使用相同的密钥。我将所有设备注册为一个,但是否可以将设备信息作为正在发布的消息的一部分发送。这样做会以任何方式(如 API)抑制谷歌内置功能的使用。

云技术的新手,任何想法/建议都会有所帮助。

4

2 回答 2

0

取决于 MQTT 代理配置。

通常基于证书的授权仅用于 MQTT-Broker 端的授权。因此,您可以使用公钥/私钥对来授权和连接到代理,并使用 MQTT ClientID 来区分您的设备。

MQTT-Broker 也可以配置为使用来自授权公钥/私钥对的身份作为用户名。

use_identity_as_username true

在这种情况下,如果 MQTT-Broker 还具有基于用户名的 ACL 配置,例如:

#device info sent from device. %u <- username
pattern readwrite %u/devinfo

您的所有设备都将以相同的用户名发布消息,您应该为每个设备设置不同的 ClientID 或在这种情况下使用 CleanSession 标志。

这是了解设备和代理之间的连接如何工作的好读物:https ://www.hivemq.com/blog/mqtt-essentials-part-3-client-broker-connection-establishment/

于 2019-02-07T08:09:58.213 回答
0

听起来您真的很想使用新的网关功能(它现在处于测试阶段,但我已经使用过很多次并且它非常稳定)。

查看有关网关的本教程以了解我们正在谈论的内容:

https://cloud.google.com/community/tutorials/cloud-iot-gateways-rpi

TL;DR 版本是它允许单个设备管理许多较小的设备(它们可能无法自己进行身份验证),但仍然可以在云中表示这些较小的设备。

因此,基本上,您拥有在 IoT Core 中注册为“网关”的更强大的设备(如 Raspberry Pi 或台式机等)。然后,当您在云中创建单个设备时,您无需指定 SSL 密钥(控制台会警告您设备无法连接),然后您可以将设备与网关“关联”,并且它'将为您处理身份验证文件。然后各个设备而不是呼叫互联网,而是在本地连接并与网关设备对话。

于 2019-02-08T15:59:27.250 回答