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