1

クラウドとラズベリー Pi の GPIO ピン (またはセンサー) に関連する最初のプロジェクトを作成していますが、少し行き詰まっており、誰かが正しい方向を指して助けてくれることを願っています。

Sensirion SCD30センサーが取り付けられた Raspberry Pi 4 があり、このガイドに従って、常に更新されている「/run/sensors/scd30/last」でセンサー測定データを取得することに成功しました。

私の目標は、測定データを無料のクラウド サービスに送信することです。どちらも無料のオプションがあるため、Azure IoT Central または IoT HUB を考えていました。

私の質問は、このファイル "/run/sensors/scd30/last" を取得し、5 秒または 10 秒間隔で Azure に転送して、必要なすべてのダッシュボードとトリガーを作成する方法を教えてください。

4

1 に答える 1

1

Azure IoT Hub Device SDKを使用し、IoT Hub にデータを送信できるアプリケーションを実装する必要があります。

ファイルからのデータの読み取りを 4 ~ 10 秒ごとに実装し、上記の SDK から DeviceClient を使用して情報を IoT Hub に送信する必要があります。

以下は、DHt11 温度/湿度センサーからデータを抽出し、2 秒ごとに IoT Hub にデータを送信する C# のコード スニペットの 1 つです。

                        ...
                        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 レベルに関しては、サブスクリプションごとに 1 つの IoT Hub を Free レベルで使用でき、すべての機能が含まれます。

于 2019-10-13T18:06:16.567 に答える