如何向 IOT Central 报告遥测数据?
How to report telemetry to IOTCentral?
我不知道如何向 IOTCentral 报告遥测数据。
我创建了一个设备模板,添加了遥测测量,字段名称 "freeDiskSpace",最大值 999999999999。获得了与模板关联的设备。启动了设备代码,但在 IOTCentral 的 Device Explorer 中查看设备时它只显示 "Missing Data".
首先我尝试了:
const upd = {};
upd.freeDiskSpace = info.available;
deviceTwin.properties.reported.update(upd, function (err) {
在调试器中我可以看到双胞胎收到了数据
Got device twin
{ reported:
{ update: [Function: update],
freeDiskSpace: 468716691456,
'$version': 4 },
但 IOTCentral 中没有任何内容。
然后我注意到他们是如何发送所需属性的:
desired:
{ setCurrent: { value: 0 },
所以我试过了
const upd = {};
upd.freeDiskSpace = { value: info.available };
deviceTwin.properties.reported.update(upd, function (err) {
但 IOTCentral 中仍然没有任何内容。
您应该使用 设备 属性 创建您在 IoTCentral 上报告 属性 的设备孪生,请参见以下屏幕片段:
对另一个问题的评论将我指向了 https://docs.microsoft.com/en-us/azure/iot-central/howto-connect-nodejs,我在所有搜索中都没有找到它。关键是遥测被报告为事件,而不是报告 属性。这对我来说是违反直觉的,因为我理解 "event" 是一个明显有意义的事件,而 "telemetry" 是连续数据。但它有效。 link:
中的代码片段
var data = JSON.stringify({
temperature: temperature,
humidity: humidity,
pressure: pressure,
fanmode: (temperature > 25) ? "1" : "0",
overheat: (temperature > 35) ? "ER123" : undefined });
var message = new Message(data);
client.sendEvent(message, (err, res) =>
我不知道如何向 IOTCentral 报告遥测数据。
我创建了一个设备模板,添加了遥测测量,字段名称 "freeDiskSpace",最大值 999999999999。获得了与模板关联的设备。启动了设备代码,但在 IOTCentral 的 Device Explorer 中查看设备时它只显示 "Missing Data".
首先我尝试了:
const upd = {};
upd.freeDiskSpace = info.available;
deviceTwin.properties.reported.update(upd, function (err) {
在调试器中我可以看到双胞胎收到了数据
Got device twin
{ reported:
{ update: [Function: update],
freeDiskSpace: 468716691456,
'$version': 4 },
但 IOTCentral 中没有任何内容。
然后我注意到他们是如何发送所需属性的:
desired:
{ setCurrent: { value: 0 },
所以我试过了
const upd = {};
upd.freeDiskSpace = { value: info.available };
deviceTwin.properties.reported.update(upd, function (err) {
但 IOTCentral 中仍然没有任何内容。
您应该使用 设备 属性 创建您在 IoTCentral 上报告 属性 的设备孪生,请参见以下屏幕片段:
对另一个问题的评论将我指向了 https://docs.microsoft.com/en-us/azure/iot-central/howto-connect-nodejs,我在所有搜索中都没有找到它。关键是遥测被报告为事件,而不是报告 属性。这对我来说是违反直觉的,因为我理解 "event" 是一个明显有意义的事件,而 "telemetry" 是连续数据。但它有效。 link:
中的代码片段 var data = JSON.stringify({
temperature: temperature,
humidity: humidity,
pressure: pressure,
fanmode: (temperature > 25) ? "1" : "0",
overheat: (temperature > 35) ? "ER123" : undefined });
var message = new Message(data);
client.sendEvent(message, (err, res) =>