В этом примере показано, как агрегировать данные с более низким временным разрешением в канале 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
Чтобы отправить данные на канал, измените startID и writeAPIKey
channelID=17504; writeAPIKey='23ZLGOBBU9TWHG2H'; thingSpeakWrite(channelID,data,'writeKey',writeAPIKey);