【问题标题】:Raspberry pi sensor data monitoring in cloud云中的树莓派传感器数据监控
【发布时间】:2019-10-13 17:03:47
【问题描述】:

我正在构建我的第一个项目,该项目与云和树莓派 GPIO 引脚(或传感器)相关,但我有点卡住了,希望有人可以通过指出正确的方向来帮助我。

我有带有Sensirion SCD30 传感器的 Raspberry Pi 4,通过关注this guide,我成功地在“/run/sensors/scd30/last”中检索到传感器测量数据,该数据不断更新。

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

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

【问题讨论】:

    标签: azure raspberry-pi azure-iot-hub azure-iot-sdk azure-iot-central


    【解决方案1】:

    您需要实现使用 Azure IoT Hub Device SDK 的应用程序,该应用程序可以将数据发送到 IoT 中心。

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

    下面是一段 C# 代码 sn-p,它从 DHt11 温度/湿度传感器中提取数据,每 2 秒将数据发送到 IoT Hub。

                            ...
                            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);
        }
    

    关于 free tier,您可以拥有一个 IoT 中心,每个订阅的免费层级包含所有功能。

    【讨论】:

    • 另外,如果你真的想发送文件,你可以通过Azure门户将blob存储附加到IoT Hub,并使用DeviceClient将文件上传到blob存储。
    猜你喜欢
    • 2015-05-14
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 2020-06-29
    • 2017-10-26
    • 1970-01-01
    相关资源
    最近更新 更多