このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
データの解析
この例では、Arduino® デバイスから気象関連のデータを収集する ThingSpeak channel 12397 から温度と湿度のデータを読み取る方法を説明します。温度と湿度のデータを、計算した露点のデータと共に Dew Point Measurement チャネルに書き込みます。次に、ThingSpeak™ を使用して、チャネルの結果を可視化します。
前提条件の手順
この例では、以下の手順が実行済みでなければなりません。
MathWorks® アカウントまたは ThingSpeak アカウントのいずれかにサイン インするか、新しい MathWorks アカウントを作成する。
Dew Point Measurement チャネルとしてチャネルの作成を行う。
チャネルにデータを書き込む
公開されている WeatherStation チャネルの Field 3 および 4 から湿度と温度を読み取り、そのデータを Dew Point Measurement チャネルの Field 2 および 1 にそれぞれ書き込みます。露点は計算されて Field 3 に書き込まれます。
MATLAB® Analysis を使用して、データの読み取り、計算、および書き込みを行います。
[Apps] タブを開き、[MATLAB Analysis] をクリックします。
[New] をクリックします。[Custom] テンプレートを選択し、[Create] をクリックします。
[Name] フィールドに
Dew Point Calculation
と入力します。[MATLAB Code] フィールドに次の複数行のコードを入力します。
公開されている Weather Station チャネルの ID および Dew Point Measurement チャネルの ID を変数に保存します。
readChId = 12397; writeChId = 677; % replace with your channel number
Write API Key を変数に保存します。
writeKey = 'F6CSCVKX42WFZN9Y'; % Replace with your channel write key
Channel ID と Write API Key を見つけるには、[My Channels] タブの [Channel Info] を参照します。
直近の 20 点の温度データを、タイムスタンプおよび湿度のデータとともに、公開されている Weather Station チャネルから変数へと読み取ります。
[temp,time] = thingSpeakRead(readChId,'Fields',4,'NumPoints',20); humidity = thingSpeakRead(readChId,'Fields',3,'NumPoints',20);
露点の計算
次の MATLAB コードを追加し、温度と湿度の測定値を使用して露点を計算します。
温度を華氏から摂氏に変換します。
tempC = (5/9)*(temp-32);
水蒸気 (
b
) および気圧 (c
) の定数を指定します。b = 17.62; c = 243.5;
摂氏で露点を計算します。
gamma = log(humidity/100) + b*tempC./(c+tempC); dewPoint = c*gamma./(b-gamma)
結果を華氏に変換し直します。
dewPointF = (dewPoint*1.8) + 32;
データを Dew Point Measurement チャネルに書き込みます。このコードは 1 回の操作ですべての使用可能データをポストし、正しいタイムスタンプを含めます。
thingSpeakWrite(writeChId,[temp,humidity,dewPointF],'Fields',[1,2,3],... 'TimeStamps',time,'Writekey',writeKey);
コードのブロック全体は次のようになります。
[Save and Run] をクリックして、コードの検証と処理を行います。
コードにエラーがある場合は [Output] フィールドに表示されます。
コードが正しく実行されたことを確認するには、[Channel Info] パネルの [Dew Point Measurement] チャネル リンクをクリックします。
これで Dew Point Measurement チャネルに、各フィールドからのチャネル データによるチャートが表示されます。
コードのスケジュール
TimeControl アプリを使用して、MATLAB Analysis コードの露点計算をスケジュールします。30 分ごとに気象計からデータを読み取り、露点を計算するようにスケジュールします。
MATLAB Analysis の [Dew Point Calculation] ページで一番下までスクロールします。[TimeControl] をクリックするとアプリが開きます。ここで、[Actions] フィールドには [MATLAB Analysis] が、[Code to execute] には [Dew Point Calculation] が選択された状態になっています。
新しい TimeControl を
Dew Point TC
という名前にします。[Frequency] フィールドで [Recurring] を選択します。
[Recurrence] フィールドで [Minute] を選択します。
[Every — minutes] フィールドで [30] を選択します。
[Start Time] を既定値のままにします。
[Action] が
[MATLAB Analysis]
、[Code to execute] が[Dew Point Calculation]
になっていることを確認します。[Save TimeControl] をクリックします。
メモ
チャネルにデータを書き込むよう TimeControl を設定すると、ThingSpeak アカウントにある利用可能なメッセージが使用されます。このアクションは利用可能なメッセージを最終的に使い切ってしまう可能性があり、その結果、チャネルフィードの更新が拒否されることになります。チャネルに書き込むデータが、時間領域内でオーバーラップしていないことを確認してください。メッセージが不必要に使用される原因となります。
Dew Point Measurement の可視化
MATLAB Visualizations アプリを使用して、Dew Point Measurement チャネルの露点、温度、湿度の測定データを可視化します。この例では関数 thingSpeakPlot
を使用して、3 つのデータ点すべてを 1 つの可視化に表示します。
[Apps] 、 [MATLAB Visualizations] を開き、[New] をクリックして可視化を作成します。
あるいは、[Dew Point Measurement] チャネル ビューの [MATLAB Visualization] をクリックすることもできます。
[Custom] テンプレートを選択し、[Create] をクリックします。
[Name] に可視化の名前 "Dew Point" を入力します。
Dew Point Measurement チャネル ID と Read API Key のための変数を作成します。コード内の値を、チャネル ID と Read API キーに置き換えます。
readChId = 677 readKey = '36LPYCQ19U37ANLE'
チャネル フィールドからデータを読み取り、以下に対する最新 100 点のデータを取得します。
温度: Field 1 から
湿度: Field 2 から
露点: Field 3 から
[dewPointData,timeStamps] = thingSpeakRead(readChId,'fields',[1,2,3],... 'NumPoints',100,'ReadKey',readKey);
x ラベル、y ラベル、タイトルおよび凡例と共にデータをプロットします。
thingSpeakPlot(timeStamps,dewPointData,'xlabel','TimeStamps',... 'ylabel','Measured Values','title','Dew Point Measurement',... 'Legend',{'Temperature','Humidity','Dew Point'},'grid','on');
作成したコードは、次のコードのようになります。
[Save and Run] をクリックします。MATLAB コードにエラーがなければ、プロットの出力は次に示すプロットのようになります。
次のステップ
データに基づいてアクションを実行の例では、計算された露点を追跡して、指定のレベルを超えると自動ツイートがトリガーされるようにできます。
参考
thingSpeakRead
| thingSpeakWrite