我是否可以使用设备调配服务(DPS)来调配使用边缘模块的下游设备?对于身份转换网关场景,边缘网关应该拥有所有下游设备的连接字符串,还是可以使用DPS服务获取连接字符串?
发布于 2019-05-16 07:16:04
您可以拥有一个自定义模块,它将通过DPS执行配置工作。从1.6版本的Edge Runtime开始,没有对子设备的内置配置。没有什么能阻止你编写一个模块,它将代理来自你的孩子设备的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
发布于 2019-04-11 18:39:32
在使用下游设备的情况下,设备调配服务目前根本不能通过IoT边缘进行工作。
根据我的经验,如果您使用的是x.509证书,则必须单独设置每个下游设备的配置,并具有将父设备(IoT边缘设备)分配给下游设备的机制。(目前,我认为这是在预览中,您需要设置的属性名称称为deviceScope )。
文档中还写道:“身份转换-无法连接到IoT集线器的设备可以连接到网关设备..”这意味着在身份转换情况下,您的下游设备对IoT集线器不可见,因此对DPS也不可见,但它可能与您的IoT边缘设备位于同一网络中。
现在,根据业务案例,如果您的下游设备根本没有连接到IoT集线器并可见,另一种方法是根本不将下游设备注册为设备。例如,您可以尝试将数据推送到RabittMQ服务器,让IoT边缘上的一个模块订阅、获取数据并发送到IoT集线器。或者,如果您的下游设备仅具有本地网络访问权限,请在其中一个IoT边缘模块中设置某种端点,然后将数据从下游设备发送到该端点。
https://stackoverflow.com/questions/55629933
复制相似问题