我正在使用自定义分配策略通过DPS注册设备。可以在here中找到C#的参考代码。
我已将Azure函数的大部分代码从C#移植到NodeJS,如下所示:-
module.exports = async function (context, req) {
const regId = req.body.deviceRuntimeContext.registrationId;
const response = {
status: 200,
message: 'Device registered successfully'
};
if (!regId)
{
response.status = 500
}
const requestCustomPayload = req.body.deviceRuntimeContext.payload;
context.res = {
iotHubHostName: req.body.deviceRuntimeContext.payload.hubName
};
}
现在,我面临的问题是更新上述代码中设备的初始孪生兄弟。如果您在上面的链接中查找c#代码,则它具有一个名为TwinState和TwinCollection的类,它们用于更新设备的初始孪生子,但是在NodeJS中找不到相同的类或类似的api。
nodejs Azure IoT SDK是否提供更新初始孪生兄弟的方法?
答案 0 :(得分:0)
我能够在node.js Azure函数中实现自定义分配。下面是代码:-
module.exports = async function (context, req) {
const regId = req.body.deviceRuntimeContext.registrationId;
if(req && req.body && req.body.deviceRuntimeContext && req.body.deviceRuntimeContext.payload && req.body.deviceRuntimeContext.registrationId) {
const requestCustomPayload = req.body.deviceRuntimeContext.payload;
context.res = {
body: {
iotHubHostName: req.body.deviceRuntimeContext.payload.hubName,
initialTwin: {
tags: {
deviceName: "test"
}
},
properties: {
Desired: {}
}
}
}
};
} else {
context.res = {
status: 500,
message: `Somethig went wrong. Req object is ${JSON.stringify(req)}`
}
}
}
以上代码中的一些观察结果
D
是初始双胞胎属性字段下Desired
字段中的大写字母Here是Azure人员提供的官方视频。
答案 1 :(得分:0)
在 DPS 首次预配设备时初始化 IoT 中心设备孪生的一种非常简单的方法是使用 DPS 注册组的“初始设备孪生”状态功能。
您定义初始孪生状态,当注册组配置设备时,设备孪生将自动为新设备填充。
{
"tags": {
"AnyKey": "AnyValue"
},
"properties": {
"desired": {
"newKey": 200,
"newKey2": "this is a test",
}
}
}