メインコンテンツ

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

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

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

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

MATLAB 解析を作成する

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

1) [Apps] > [MATLAB Analysis] を選択し、[New] を選択します。

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

3) 解析に 名前を付け、コードを変更します。アラート API キーと一致するように alertApiKey を変更します。自分のパブリックチャネルから読み取るには、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アプリのインスタンスを作成します。[Apps] > [TimeControl] を選択し、[New TimeControl] をクリックします。

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

  • 頻度 定期的を選択します。

  • 繰り返し を選択します。

  • Action - MATLAB Analysis を選択します。 実行するコード リストで、前に記述した MATLAB Analysis の名前を選択します。

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

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

参考

| (MATLAB) | |

トピック

外部の Web サイト