我可以使用设备置备服务(DPS)通过边缘模块置备下游设备吗?对于身份转换网关方案,边缘网关是否应具有所有下游设备的连接字符串,或者可以使用DPS服务获取连接字符串?
答案 0 :(得分:1)
在配备下游设备的方案中,设备配置服务当前根本无法通过IoT Edge正常运行。
根据我的经验,如果您使用的是x.509证书,则必须分别设置每个下游设备的配置,并具有将父设备(IoT Edge设备)分配给下游设备的机制。 (当前,我认为这是在预览中,您需要设置的属性名称称为deviceScope)。
文档还说:“身份转换-无法连接到IoT中心的设备可以连接到网关设备。” 这意味着在身份转换的情况下,您的下游设备对于IoT中心不可见,因此对DPS也不可见,但可能与IoT Edge设备在同一网络中。
现在,根据业务情况,并且如果下游设备完全没有与IoT中心的连接和可见性,则另一种方法是您根本不将下游设备注册为设备。例如,您可以尝试将数据推送到RabittMQ服务器,并在IoT Edge上安装一个模块,该模块可以订阅,获取数据并将其发送到IoT中心。或者,如果下游设备仅具有本地网络访问权限,则在IoT Edge模块之一中设置某种终结点,然后将数据从下游设备发送到该终结点。
答案 1 :(得分:1)
您可以具有一个自定义模块,该模块将通过DPS进行供应。从Edge Runtime的1.6版本开始,没有内置的子设备配置。如果您进行协议翻译,那么您不会停止编写一个模块来代理子设备的dps呼叫或实现自定义握手的功能。
这是DPS设备注册的呼叫结构:
const registrationOptions = {
url: `https://${dpsEndpoint}/${idScope}/registrations/${deviceId}/register?api-version=${dpsVersion}`,
method: 'PUT',
json: true,
insecure: true,
rejectUnauthorized: false,
headers: { Authorization: sasToken },
body: bodyJson,
};
如果您使用协议转换,则您的设备可以通过边缘模块注册自己,或者边缘模块可以注册设备。您会发现以下github存储库对于了解网关如何注册子设备很有用。 https://github.com/Azure/iotc-device-bridge