Main Content

ThingSpeak チャネルにおけるデータの集約

この例では、ThingSpeak™ チャネルでより低い時間分解能にデータを集約して不規則性を取り除く方法を説明します。データの不規則性は、イベント ドリブン検出、センサーの誤動作、またはネットワーク レイテンシなど、いくつかの要因によって発生する可能性があります。

データの読み取り

ThingSpeak チャネル 22641 には、ケープ コッドのオクウェイ湾で毎分観測される潮汐と気象データが含まれています。チャネルのフィールド 2 には気温データが含まれています。関数 thingSpeakRead を使用して、チャネル 22641 から過去 3 時間の気温データを読み取ります。

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

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

データの集約

データは 1 分ごとに観測されます。ただし、観測システムに関連するネットワーク レイテンシがあるため、実際のタイムスタンプの間隔は厳密に 1 分ではないこともあります。さらに、対象のアプリケーションにとって 1 分間隔という頻繁なデータ観測は必要ありません。1 時間の時間分解能をもつデータで十分です。関数 retime を使用して、1 時間分のデータを 1 つの値に集約することができます。データを集約するには各時間の最大値を使用できます。head を使用して、データの最初の 4 つの値をプレビューします。

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);

参考

| |