有没有办法从 azure 函数应用程序更新设备初始孪生?
Is there a way to update device initial twin from azure function app?
我正在使用自定义分配策略通过 DPS 注册我的设备。可以找到 C# 的参考代码 here.
我已经将 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
};
}
现在,我面临的问题是在上面的代码中更新设备的初始双胞胎。如果您检查上述 link 的 c# 代码,它有一个名为 TwinState 和 TwinCollection 的 class,用于更新设备的初始双胞胎,但相同的 classes 或类似的 api's 我在 NodeJS 中找不到。
nodejs Azure IoT sdk 是否提供更新初始孪生的方法?
我能够在 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)}`
}
}
}
以上代码中的一些观察
- 函数返回的对象有一个 body 字段,我们可以在其中设置 hubName 和 Initial twin 属性。
D
是初始孪生 属性字段下 Desired
字段中的上限
- 函数返回的对象赋值给context.res
Here 是 Azure 家伙的官方视频。
在 DPS 首次预配设备时初始化 IoT 中心设备孪生的一种非常简单的方法是使用 DPS 注册组的“初始设备孪生”状态功能。
您定义初始孪生状态,当设备由注册组配置时,设备孪生会自动为新设备填充。
{
"tags": {
"AnyKey": "AnyValue"
},
"properties": {
"desired": {
"newKey": 200,
"newKey2": "this is a test",
}
}
}
我正在使用自定义分配策略通过 DPS 注册我的设备。可以找到 C# 的参考代码 here.
我已经将 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
};
}
现在,我面临的问题是在上面的代码中更新设备的初始双胞胎。如果您检查上述 link 的 c# 代码,它有一个名为 TwinState 和 TwinCollection 的 class,用于更新设备的初始双胞胎,但相同的 classes 或类似的 api's 我在 NodeJS 中找不到。
nodejs Azure IoT sdk 是否提供更新初始孪生的方法?
我能够在 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)}`
}
}
}
以上代码中的一些观察
- 函数返回的对象有一个 body 字段,我们可以在其中设置 hubName 和 Initial twin 属性。
D
是初始孪生 属性字段下 - 函数返回的对象赋值给context.res
Desired
字段中的上限
Here 是 Azure 家伙的官方视频。
在 DPS 首次预配设备时初始化 IoT 中心设备孪生的一种非常简单的方法是使用 DPS 注册组的“初始设备孪生”状态功能。
您定义初始孪生状态,当设备由注册组配置时,设备孪生会自动为新设备填充。
{
"tags": {
"AnyKey": "AnyValue"
},
"properties": {
"desired": {
"newKey": 200,
"newKey2": "this is a test",
}
}
}