如何从 IoT Hub 接收特定设备发送的所有消息?
How to receive from IoT Hub the all messages a specific device sent?
代码将消息发送到 IoT 中心,IoT 中心将消息存储在 BLOB 存储中。
_device = DeviceClient.Create(_iotHubUri, new
DeviceAuthenticationWithRegistrySymmetricKey(_deviceId, _deviceKey),
TransportType.Amqp_Tcp_Only);
await _device.OpenAsync();
await _device.SendEventAsync(message);
我在 Azure 门户中看到了消息。
我不明白的是如何从设备发送的 IoT 中心获取所有消息 (C#)?
Azure IoT 中心是来自设备的实时物联网流管道的入口网关。可以从这个物联网流管道中捕获(过滤)任何特定事件,分析 window 时间的事件等
基本上,(从 Azure IoT 中心的角度来看)有两个地方可以过滤此流管道,例如:
借助内置的 Azure IoT 中心路由功能,可以根据路由查询字符串将设备事件路由到自定义端点,查看更多详细信息 here。请注意,有一些限制,例如路由的最大数量 (100) 和自定义端点的最大数量 (10)。
在 Azure IoT 中心之外作为流管道的使用者。简单的方法是使用 Azure EventHubTrigger 函数,请参阅 sample.
中的更多详细信息
以下代码片段显示了 EventHubTrigger 函数的示例:
using System;
public static void Run(string myIoTHubMessage, IDictionary<string, object> properties, IDictionary<string, object> systemproperties, TraceWriter log)
{
log.Info($"C# IoT Hub trigger function processed a message: \n\t{myIoTHubMessage}");
log.Info($"\nSystemProperties:\n\t{string.Join("\n\t", systemproperties.Select(i => $"{i.Key}={i.Value}"))}");
log.Info($"\nProperties:\n\t{string.Join("\n\t", properties.Select(i => $"{i.Key}={i.Value}"))}");
}
function.json 文件:
{
"bindings": [
{
"type": "eventHubTrigger",
"name": "myIoTHubMessage",
"direction": "in",
"path": "myIoTHubName",
"connection": "myIoTHubConnectionString",
"consumerGroup": "function"
}
],
"disabled": false
}
注意,deviceId 可以从 systemproperties["iothub-connection-device-id"].
中获取
代码将消息发送到 IoT 中心,IoT 中心将消息存储在 BLOB 存储中。
_device = DeviceClient.Create(_iotHubUri, new
DeviceAuthenticationWithRegistrySymmetricKey(_deviceId, _deviceKey),
TransportType.Amqp_Tcp_Only);
await _device.OpenAsync();
await _device.SendEventAsync(message);
我在 Azure 门户中看到了消息。
我不明白的是如何从设备发送的 IoT 中心获取所有消息 (C#)?
Azure IoT 中心是来自设备的实时物联网流管道的入口网关。可以从这个物联网流管道中捕获(过滤)任何特定事件,分析 window 时间的事件等
基本上,(从 Azure IoT 中心的角度来看)有两个地方可以过滤此流管道,例如:
借助内置的 Azure IoT 中心路由功能,可以根据路由查询字符串将设备事件路由到自定义端点,查看更多详细信息 here。请注意,有一些限制,例如路由的最大数量 (100) 和自定义端点的最大数量 (10)。
在 Azure IoT 中心之外作为流管道的使用者。简单的方法是使用 Azure EventHubTrigger 函数,请参阅 sample.
中的更多详细信息
以下代码片段显示了 EventHubTrigger 函数的示例:
using System;
public static void Run(string myIoTHubMessage, IDictionary<string, object> properties, IDictionary<string, object> systemproperties, TraceWriter log)
{
log.Info($"C# IoT Hub trigger function processed a message: \n\t{myIoTHubMessage}");
log.Info($"\nSystemProperties:\n\t{string.Join("\n\t", systemproperties.Select(i => $"{i.Key}={i.Value}"))}");
log.Info($"\nProperties:\n\t{string.Join("\n\t", properties.Select(i => $"{i.Key}={i.Value}"))}");
}
function.json 文件:
{
"bindings": [
{
"type": "eventHubTrigger",
"name": "myIoTHubMessage",
"direction": "in",
"path": "myIoTHubName",
"connection": "myIoTHubConnectionString",
"consumerGroup": "function"
}
],
"disabled": false
}
注意,deviceId 可以从 systemproperties["iothub-connection-device-id"].
中获取