2021/04/27
Python連携
このコンテンツでは、特定の閾値を超えた場合に、アラートとしてメールを送信する方法について説明していきます。なお、本コンテンツで利用したSpotfireのバージョンは10.10/11.4です。ご利用環境によって、一部画面構成が異なる可能性がありますので、ご了承ください。
Pythonとはデータ分析を実装する際によく使われるプログラミング言語です。
Spotfireで使えるPythonには以下の2種類があります。
①テキストエリアなどで使えるironPython
②データ関数で使えるPython 3.7.5(ver10.10 LTS)
前回の記事では、①のironPythonを使用してプロパティの値をPythonに渡し、結果をSpotfireに表示する処理をご紹介しました。その際に、外れ値に対して閾値オーバーの表示をしました。
このような閾値オーバーや異常条件を判別した際に、アラートを受け取れると便利です。今回は、前回作成したdxpファイルを使用し、閾値オーバーの際にメール送信する処理をご紹介します。
本コンテンツで利用するサンプルファイルは、こちらからダウンロードしてください。
Pythonスクリプトの入出力で作成したdxpファイルになります。チップIDごとにパラメータが入っているデモデータを使用しています。
今回のサンプルではsmtpサーバーとしてgmailを使用しています。
あらかじめGoogleアカウントの「セキュリティ」から、「安全性の低いアプリのアクセス」を有効化しておいてください。
dxpファイルを開き、「ツール」から「データ関数を登録」をクリックします。
「データ関数の登録」ダイアログでは、以下の設定をしてください。
※ログイン情報はご自身の物ものに書き換えてください。
スクリプトに含まれている以下の6つのパラメータを順番に設定していきます。
「パラメータの入力」タブに移動し、「追加」をクリックします。
はじめに、from_addrパラメータを以下の設定で作成していきます。
以下の3つのパラメータも、from_addrパラメータと同様の設定で作成してください。
次に、specValueパラメータとtheValueパラメータを以下の設定で作成していきます。
今回は出力はメール送信のため、「パラメータの出力」設定は不要です。「パラメータの入力」で6つのパラメータの設定完了後、「実行」をクリックしてください。
データ関数実行後、「パラメータの編集」ダイアログが開きます。ここでは、6つのパラメータそれぞれに対して個別の設定をしていきます。
from_addrパラメータ
to_addrパラメータ
Titleパラメータ
Bodyパラメータ
specValueパラメータ
theValueパラメータ
最後に、「関数を自動的に更新」にチェックを入れてください。「OK」をクリックするとデータ関数が実行されます。
閾値を設定する入力エリアで、22以下の数字を入力してみます。「helloPython」ボタンをクリックすると変更が反映されます。
最大値が閾値を超えている場合、送信先アドレスにメールが届きます。
前の記事
Pythonスクリプトの入出力次の記事
閾値の変更時にスクリプトを実行【Python連携】最新の記事
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email import charset
from email.utils import formatdate
#メールを作成
def create_message(from_addr, to_addr, subject, body):
cset = 'iso-2022-jp'
msg = MIMEText(body.encode(cset), 'plain' , cset )
msg['Subject'] = Header ( subject.encode(cset) ,cset )
msg['From'] = from_addr
msg['To'] = to_addr
msg['Date'] = formatdate()
return msg
#メールを送信
def send_gmail(from_addr, to_addr, msg):
s = smtplib.SMTP('smtp.gmail.com', 587)
s.ehlo()
s.starttls()
s.ehlo()
s.login('□□□□□□@gmail.com', '****Password****')
s.sendmail(from_addr, [to_addr], msg.as_string())
s.close()
if ( specValue > theValue ) :
msg = create_message(from_addr, to_addr, Title, Body )
send_gmail(from_addr, to_addr, msg)