Azure 物联网和事件中心?

Azure ioT and Event Hub?

我正在尝试读取我的设备正在发送的事件。我正在使用 azure npm lib 来阅读我认为正确的内容。

好的,首先,在该服务的我的 Azure IoT 中心帐户下,有一个选项卡调用消息。有一种东西叫做"Event Hub-compatible name"和"Event Hub-compativle endpoint"。我必须创建一个名称为 "Event Hub-compatible name" 的新事件中心还是什么?我有点困惑:D 如果不是,连接字符串和主题等是什么?

现在的代码是这样的...

var azure = require('azure');

var serviceBusService = azure.createServiceBusService("Endpoint=XXXXXXXXXX.servicebus.windows.net/");
var isWaiting = false;


function waitForMessages(){
    console.log("Checking Queue...");
    isWaiting = true;
    serviceBusService.receiveQueueMessage("messages","events",function (error, receivedMessage){
        console.log(error);
        console.log(receivedMessage);
        isWaiting = false;
    });
}


// Start messages listener
setInterval(function () {
    if(!isWaiting){
        waitForMessages();
    }
}, 200);

Event Hub-compatible name不是意味着您必须创建同名的事件中心。

IOT Hub 提供了一个向后兼容 Event Hub API 的端点。我认为实际实现稍微复杂一些,但您可以将 IOT Hub 视为继承自事件中心或至少是事件中心的实现。将此事件中心兼容名称与任何事件中心 SDK 或代码示例一起用作连接字符串的一部分。

Event Hub-compatible name & Event Hub-compatible endpoint的概念说明,可参考[=官方文档 Azure IoT Hub developer guide. You can use the Azure Service Bus SDK for .NET or the Event Hubs - Event Processor Host 的 13=] 以使用 C# 从 IoT 中心读取事件。

否则有两个Azure IoT SDKs for NodeJS using connection string: Azure IoT Service SDK (API Reference) & Azure IoT Device SDK (API Reference).

connection string可以在All settings中的Shared Access Policies选项卡的一个策略中找到它,请看图片下面来自文档 Tutorial: Get started with Azure IoT Hub.

根据您从 IoT 中心读取事件的需要,您可以按照这些示例使用适用于 NodeJS 的 Azure IoT SDK 进行编码。

  1. 使用 Azure IoT Service SDK 列出在您的 IoT 中心注册的设备 ID,请参阅示例 https://github.com/Azure/azure-iot-sdks/blob/master/node/service/samples/registry_sample.js
  2. 使用 Azure IoT Device SDK 监控来自 IoT 中心的事件,请参阅示例 https://github.com/Azure/azure-iot-sdks/blob/master/node/device/samples/remote_monitoring.js

希望对您有所帮助。如有任何疑问,请随时告诉我。

您可以使用 Node.js 的事件中心 SDK 查看您的设备向您的 IoT 中心发送的 events/messages:

https://www.npmjs.com/package/azure-event-hubs

事件中心 SDK 的客户端对象可以接受 IoT 中心连接字符串,因此您不需要使用事件中心连接字符串。

如果你只是想调试你的设备并想验证它是否真的在发送消息,你可以使用 Azure IoT Hub SDK 提供的名为 iothub-explorer 的工具:

https://github.com/Azure/azure-iot-sdks/tree/master/tools/iothub-explorer

还有一些关于之前答案的澄清:服务 SDK 允许向设备发送消息,并读取设备发送的 "feedback" 消息,用于了解设备是否接受或拒绝了命令消息但不包含任何数据。读取设备发送的数据事件没有帮助。

连接到 IoT 中心以接收数据:

var protocol = 'amqps';
var eventHubHost = '{your event hub-compatible namespace}';
var sasName = 'iothubowner';
var sasKey = '{your iot hub key}';
var eventHubName = '{your event hub-compatible name}';
var numPartitions = 2;

协议

var protocol = 'amqps';

它是与事件中心兼容的端点:sb://abcdefnamespace.servicebus.windows.net/ 但没有 sb:// 和 .service windows.net/

像这样:abcdefnamespace

var eventHubHost = '{your event hub-compatible namespace}';

还可以

var sasName = 'iothubowner';

主键,像这样:83wSUdsSdl6iFM4huqiLGFPVI27J2AlAkdCCNvQ==

var sasKey = '{your iot hub key}';

这样命名:iothub-ehub-testsss-12922-ds333s var eventHubName = '{您的事件中心兼容名称}';

还可以

var numPartitions = 2;

每个 Iot Hub 实例都带有一个与事件中心兼容的内置端点。您在 Azure 门户中看到的事件中心兼容端点将是指向事件中心实例的连接字符串,您可以从中读取发送到 Iot 中心实例的所有消息。

您可以使用此连接字符串实例化 @azure/event-hubs 库中的 EventHubConsumerClient class 并阅读您的消息。

如果发生故障转移,据说这个后备内置端点会发生变化。因此,您将不得不获取新的连接字符串并重新启动该过程。另一种选择是使用 azure-iot-samples-node repo to get the Event Hub compatible connection string by passing in the Iot Hub connection string and then use the @azure/event-hubs library to read your messages. See more in Read from the built-in endpoint

中的示例代码