Мониторинг данных Raspberry Pi Sensor в облаке - PullRequest
0 голосов
/ 13 октября 2019

Я строю свой первый проект, который связан с выводами GPIO для облака и малины Pi (или датчиками в этом отношении), но я немного застрял и надеюсь, что кто-то может помочь мне, указав правильное направление.

У меня есть Raspberry Pi 4 с подключенным Sensirion SCD30 датчиком и, следуя этому руководству Мне удалось получить данные измерений датчика в "/ run / Датчики / scd30 / последний", которыйпостоянно обновляется.

Моя цель - отправить данные измерений в какой-либо бесплатный облачный сервис. Я думал о Azure IoT Central или IoT HUB, поскольку у обоих есть бесплатные опции.

У меня вопрос, как можноЯ беру этот файл "/ run / sensor / scd30 / last" и пересылаю его с 5 или 10-секундным интервалом в Azure, где я могу затем создать все необходимые панели и триггеры?

1 Ответ

0 голосов
/ 13 октября 2019

Вам необходимо внедрить приложение, которое использует Azure IoT Hub Device SDK и которое может отправлять данные в IoT Hub.

Вам нужно будет выполнять чтение данных из файла каждые 4-10 секунд и отправлять информацию в IoT Hub с помощью DeviceClient из SDK, упомянутого выше.

Ниже приведен один фрагмент кода в C #, который извлекает данные из датчика температуры / влажности DHt11 и отправляет данные в концентратор IoT каждые 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);
    }

Что касается уровня free , вы можете иметь один концентратор IoT с бесплатнымуровень на подписку со всеми включенными функциями.

...