Совокупные данные в канале 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

Измените channelID и writeAPIKey, чтобы отправить данные на свой канал

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

См. также

| |