exponenta event banner

Агрегирование данных в канале ThingSpeak

В этом примере показано, как агрегировать данные с более низким временным разрешением в канале ThingSpeak™ для устранения неправильности. Неравномерность в данных может быть вызвана несколькими факторами, такими как обнаружение событий, неисправность датчиков или задержки в сети.

Считывание данных

Канал ThingSpeak 22641 содержит данные о приливе и погоде, измеренные один раз в минуту в заливе Оквей, Кейп-Код. Поле 2 канала содержит данные о температуре воздуха. Считывайте данные о температуре воздуха за последние 3 часов из канала 22641 с помощью thingSpeakRead функция.

datetimeStop = dateshift(datetime('now'),'start','hour');
datetimeStart = dateshift(datetime('now'),'start','hour') - hours(3);

data = thingSpeakRead(22641,'DateRange',[datetimeStart,datetimeStop],...
    'Fields',2,'outputFormat','timetable');

Агрегирование данных

Данные измеряются один раз в минуту. Однако из-за сетевой задержки, связанной с системой измерения, фактические временные метки могут быть больше или меньше минуты. Кроме того, для применения, представляющего интерес, частота данных, измеряемых каждую минуту, является высокой. Данных с почасовым разрешением достаточно. Вы можете использовать retime для объединения данных за каждый час в одно значение. Для агрегирования данных можно использовать максимальное значение для каждого часа. Предварительный просмотр первых четырех значений данных с помощью head.

dataHourly = retime(data,'hourly','max');
head(dataHourly,4)
ans =

  3×1 timetable

         Timestamps         AirTemperatureC
    ____________________    _______________

    03-Jan-2019 14:00:00          7.5      
    03-Jan-2019 15:00:00          6.9      
    03-Jan-2019 16:00:00          6.4      

Отправка данных в ThingSpeak

Чтобы отправить данные на канал, измените startID и writeAPIKey

channelID=17504;
writeAPIKey='23ZLGOBBU9TWHG2H';
thingSpeakWrite(channelID,data,'writeKey',writeAPIKey);

См. также

| |