首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >云端树莓派传感器数据监测

云端树莓派传感器数据监测
EN

Stack Overflow用户
提问于 2019-10-14 01:03:48
回答 1查看 145关注 0票数 1

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

我的Raspberry Pi 4连接了Sensirion SCD30传感器,通过遵循this guide,我成功地在"/run/sensors/scd30/last“中检索到了传感器测量数据,该数据正在不断更新。

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

我的问题是,我如何将这个文件"/run/sensors/scd30/last“以5秒或10秒的间隔转发到Azure,在那里我可以创建所有必要的仪表板和触发器?

EN

回答 1

Stack Overflow用户

发布于 2019-10-14 02:06:17

您需要实现使用Azure IoT Hub Device SDK的应用程序,该应用程序可以向IoT集线器发送数据。

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

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

代码语言:javascript
复制
                        ...
                        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集线器,每个订阅包含所有功能。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58365850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档