Main Content

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

チャネルデータを分析して電子メール通知を送信する

この例では、 ThingSpeakアラート サービスを使用して通知を電子メール メッセージとして送信する方法を示します。TimeControlアプリを使用して、 MATLAB Analysisアプリを定期的にトリガーします。MATLAB Analysisアプリはデータを分析し、土壌水分データに基づいて生成する適切な電子メール メッセージを決定します。MATLABの分析機能を使用すると、 ThingSpeakデータからフィルター処理され、ターゲットを絞った特定のチャネルアクティビティの通知を生成できます。

チャネル276330 は、オフィス植物からの土壌水分測定値を記録します。この例では、ThingSpeak アラートを使用して、植物に水が必要なときに最後の土壌センサー値を含む電子メール通知を受信します。ThingSpeakにデータを記録する土壌水分モニターを設定する方法については、Moisture Sensor Using HTTP POST Requests to Channel を参照してください。

« MATLAB Analysisを作成する »

ThingSpeakデータをMATLABで分析します。分析の結果を使用して、 ThingSpeakアラートからの電子メールの要求などの Web要求をトリガーできます。この分析では 4 週間のデータを読み取り、履歴データに基づいてしきい値を計算します。測定値がデータ範囲の 10% 未満であると、出力メッセージが変更されます。

1) «アプリ» > «MATLAB Analysis» を選択し、«新規» を選択します。

2) 「例」セクションで「電子メールをトリガーするチャネルを読む」を選択します。以下のコードは、 MATLAB解析ウィンドウに事前に入力されています。

3) 分析に「名前」を付け、コードを変更します。alertApiKey をアラート API キーと一致するように変更します。自分のパブリックチャネルから読み取るには、channelID 値を変更します。まず、チャネルID とアラート キーを設定します。すべてのアラート API キーは TAK で始まります。

channelID = 276330;
alertApiKey = 'TAKXXXXXXXXXXXXX';

4) URLとヘッダーを設定します。アラート サービスには ThingSpeak-Alerts-API-Key ヘッダーが必要です。weboptions を使用してヘッダーを設定します。

alertUrl = "https://api.thingspeak.com/alerts/send";
options = weboptions("HeaderFields", ["ThingSpeak-Alerts-API-Key", alertApiKey ]);
alertSubject = sprintf("Plant soil information");

5) thingSpeakRead を使用して最近のデータを読み取ります。

moistureData = thingSpeakRead(channelID,'NumDays',30,'Fields',1);

6)チャネルから読み取られたデータがあることを確認し、それに応じてメッセージを設定します。データのスパンから 10% のしきい値を計算します。最新の値を使用してアラートbodyメッセージを設定します。

if isempty(moistureData)
      alertBody = ' No data read from plant. ';
      
 else
    % Calculate a 10% threshold value based on recent data.
    span = max(moistureData) - min(moistureData);
    dryValue = 0.1 * span + min(moistureData);

    % Get the most recent point in the array of moisture data.
    lastValue = moistureData(end); 

    % Set the outgoing message
    if (lastValue<dryValue)
        alertBody = ' I need water! ';
    end

    if (lastValue>dryValue)
        alertBody = ' No water needed. ';
    end
end

7) ユーザー webwrite がアラート要求を送信します。何らかの理由で要求が失敗した場合にMATLAB Analysisが無効にならないように、送信要求をtry/catch でラップします。

try
    webwrite(alertUrl , "body", alertBody, "subject", alertSubject, options);

    catch someException
    fprintf("Failed to send alert: %s\n", someException.message);
end

«分析を実行するための時間コントロールを作成する»

TimeControlアプリは、 ThingSpeakチャネルデータを評価し、他のイベントをトリガーできます。MATLAB Analysisコードを毎日呼び出すTimeControlアプリのインスタンスを作成します。「アプリ」>「TimeControl」を選択し、「New TimeControl」をクリックします。

  • «Name»« »— TimeControlに名前を付けます。

  • «頻度»«»—«定期»を​​選択します。

  • «繰り返し»« »—«日»を選択します。

  • ≪アクション≫ — 「MATLAB Analysis」を選択します。「実行するコード」「」リストで、前に作成したMATLAB Analysisの名前を選択します。

TimeControlアプリが実行されるたびに、植物に水が必要かどうかを知らせる電子メールが届きます。10% のしきい値は単なる推定値です。 ThingSpeak はお客様の植物に対して一切の責任を負いません。

メモ:この例のこの構成では、毎日 1 つの電子メール アラートが消費されます。アラートの総数には制限があります。制限を超えると、新しい電子メール アラートをトリガーできなくなります。

参考

| (MATLAB) | |

関連するトピック

外部の Web サイト