首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Azure IotHub / EventHub获取deviceId

从Azure IotHub / EventHub获取deviceId
EN

Stack Overflow用户
提问于 2020-02-20 21:07:05
回答 4查看 966关注 0票数 0

我试图从Event Hub (在IoTHub的背面)读取设备Id,但我在JS中的语法似乎是错误的。

代码语言:javascript
复制
module.exports = function (context, IoTHubMessages) {
context.log(`JavaScript eventhub trigger function called for message array: ${IoTHubMessages}`);

var deviceId = IoTHubMessages.SystemProperties["iothub-connection-device-id"];

此函数返回错误: Exception: TypeError: Cannot read property 'iothub-connection-device-id‘of undefined

我不能完全确定"iothub-connection-device-id“是否是Event Hub上属性的正确名称,但问题似乎出在SystemProperties上。

感谢任何人的帮助。

EN

回答 4

Stack Overflow用户

发布于 2020-07-21 13:48:56

iothub-connection-device-id是正确的密钥,你只需要在正确的属性包上使用它即可。一个不相关的GitHub问题https://github.com/Azure/azure-sdk-for-js/issues/7801显示了此密钥如何在每条消息上确实可用。

根据functions.json文件中的基数,IotHubMessages可以是一组消息,也可以是一条消息。有关更多详细信息,请参阅IOTHubMessage.forEach is not a function?

如果它是一个消息数组,则直接在其上访问SystemProperties将不起作用。您需要遍历以分别访问每条消息。

您在每条消息上看到systemProperties了吗?如果是,则message.systemProperties["iothub-connection-device-id"]应该可以工作。

票数 2
EN

Stack Overflow用户

发布于 2020-02-21 03:11:10

您应该以这种方式阅读消息。有关主题的更多信息,请阅读本文- https://docs.microsoft.com/en-us/samples/azure-samples/functions-js-iot-hub-processing/processing-data-from-iot-hub-with-azure-functions/

代码语言:javascript
复制
    IoTHubMessages.forEach(message => {
    context.log(`Processed message: ${message}`);
    count++;
    totalTemperature += message.temperature;
    totalHumidity += message.humidity;
    deviceId = message.deviceId;
});
票数 1
EN

Stack Overflow用户

发布于 2020-02-21 00:25:02

首先,使用JSON.stringify将收到的有效负载打印出来。其次,我认为您应该能够通过执行以下操作来访问您的设备id : message.annotations"iothub-connection-device-id".有关更多信息,请参考微软的Github repos中提供的快速入门示例。导航到iot-hub\Quickstarts\read-d2c-messages文件夹,您应该可以找到处理消息有效负载和打印输出的示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60320652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档