Microsoft Azure Iot集线器

时间:2018-10-31 14:38:18

标签: c# iot

我有一台设备将数据帧发送到azure iot集线器,“转换这些帧”并将其保存到SQL Db或Cosmos Db的最佳实践是什么?

3 个答案:

答案 0 :(得分:1)

您可以使用Azure流分析或Azure函数来处理来自Azure IoT中心的传入遥测数据:

Stream Analytics

  

Azure流分析是一种实时分析和复杂的事件处理引擎,旨在同时分析和处理来自多个源的大量快速流数据。可以在从许多输入源(包括设备,传感器,点击流,社交媒体供稿和应用程序)中提取的信息中识别模式和关系。这些模式可用于触发动作和启动工作流,例如创建警报,将信息提供给报告工具或存储转换后的数据以供以后使用。此外,流分析可在Azure IoT Edge运行时上使用,并支持与云相同的语言或语法。

Azure Functions

  

在此快速样本中,您将学习如何从设备或传感器捕获数据,对该数据执行聚合,过滤或其他自定义处理,以及如何将其存储在数据库中。所有这些都将通过设置IoT中心和Azure功能之间的集成来完成,同时学习一些有关Azure功能的触发器和绑定的知识,并将处理后的数据放在Cosmos DB上。

希望这会有所帮助!

答案 1 :(得分:0)

尝试阅读/浏览Azure IoT参考体系结构:ref to architecture document

在大多数情况下,Cosmos DB将是我的首选起点。

请记住在扩展应用程序之前先研究分区。还要考虑如何在出站侧使用数据-因为这将为您应该如何组织和处理入站数据流提供有价值的输入。 尝试搜索Lambda IoT架构。

答案 2 :(得分:0)

Azure IOT集线器具有一个内置的终结点,默认情况下可以使用它称为事件集线器。您可以创建一个Azure功能,该功能使用和处理与路由到该事件集线器的消息相关的所有事件。默认情况下,所有发送到IOT Hub的遥测消息将被路由到EventHubs端点中的内部版本。

在您的函数中,可以根据需要使用sql或cosmos客户端写入数据。这是一个可能看起来像的示例:

using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System;
using Microsoft.Azure.EventHubs;
using System.Text;    

public static class EventHubFunctions
    {
        [FunctionName("ProcessEventHubQueue")]
        public static void Run(
    [EventHubTrigger("my-iot-eventhub", ConsumerGroup = "consumergroup1", Connection = "EventHubConnectionString")]
    EventData[] eventHubMessages,
    ILogger log)
        {
            foreach (EventData myEventHubMessage in eventHubMessages)
            {
               String messageBody = Encoding.UTF8.GetString(myEventHubMessage.Body);
               log.LogInformation($"EventData MessageBody: {messageBody}");

            }
        }