Azure 树莓pi传感器在云中的数据监控

Azure 树莓pi传感器在云中的数据监控,azure,raspberry-pi,azure-iot-hub,azure-iot-sdk,azure-iot-central,Azure,Raspberry Pi,Azure Iot Hub,Azure Iot Sdk,Azure Iot Central,我正在构建我的第一个项目,它与cloud&raspberry Pi GPIO引脚(或传感器)相关,但我有点卡住了,希望有人能帮我指明正确的方向 我有带传感器的Raspberry Pi 4,通过以下操作,我成功地在“/run/sensors/scd30/last”中检索到传感器测量数据,该数据不断更新 我的目标是将测量数据发送到一些免费的云服务,我正在考虑Azure IoT Central或IoT HUB,因为两者都有免费选项 我的问题是,我如何将此文件“/run/sensors/scd30/la

我正在构建我的第一个项目,它与cloud&raspberry Pi GPIO引脚(或传感器)相关,但我有点卡住了,希望有人能帮我指明正确的方向

我有带传感器的Raspberry Pi 4,通过以下操作,我成功地在“/run/sensors/scd30/last”中检索到传感器测量数据,该数据不断更新

我的目标是将测量数据发送到一些免费的云服务,我正在考虑Azure IoT Central或IoT HUB,因为两者都有免费选项


我的问题是,我如何将此文件“/run/sensors/scd30/last”以5秒或10秒的间隔转发到Azure,然后在那里制作所有必要的仪表板和触发器

您需要实现正在使用的应用程序,该应用程序可以向物联网中心发送数据

您必须每隔4-10秒从文件中读取数据,并使用上述SDK中的DeviceClient将信息发送到IoT中心

下面是C#中的一个代码片段,它从DHt11温度/湿度传感器提取数据,并每隔2秒将数据发送到物联网中心

                        ...
                        var deviceClient = DeviceClient.CreateFromConnectionString("ConnectionString");                        

                        var dht = new DHT(pin, gpioController, DHTSensorTypes.DHT11);
                        while (true)
                        {
                            try
                            {
                                var measurement = new Measurement();
                                var dhtData = dht.ReadData();

                                 measurement.Temperature = (int)dhtData.TempCelcius;
                                 measurement.Humidity = (int)dhtData.Humidity;

                                 if (gpioController.IsPinOpen(pin))
                                 {
                                     gpioController.ClosePin(pin);
                                 }
                                }

                                SendMeasurementAsync(deviceClient, measurement).Wait();

                                Console.WriteLine(DateTime.UtcNow);
                                Console.WriteLine(" sent to iot hub temp: " + measurement.Temperature);
                                Console.WriteLine(" sent to iot hub hum: " + measurement.Humidity);
                            }
                            catch (DHTException)
                            {
                                Console.WriteLine(" problem reading sensor data ");
                            }
                            Task.Delay(2000).Wait();
                        }
                        .
                        .
                        .


    private static Task SendMeasurementAsync(DeviceClient deviceClient, Measurement measurement)
    {
        var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(measurement);
        var eventMessage = new Message(Encoding.UTF8.GetBytes(jsonString));

        return deviceClient.SendEventAsync(eventMessage);
    }

关于,您可以拥有一个IoT中心,每个订阅具有免费层,包括所有功能

此外,如果您确实想发送文件,可以通过Azure portal将blob存储连接到IoT中心,并使用DeviceClient将文件上载到blob存储。