LoginSignup
6
2

More than 1 year has passed since last update.

MATLABからLINE通知を送る

Posted at

MATLABで長期の計算をしている多くは,年末年始などの長期休暇のときに計算機に頑張ってもらうということがあるかと思います。
特に,卒論や修論を控えている学生さんも多いのではないでしょうか。

そこで,以前,計算後に計算完了あるいはエラーがでたことを通知するために

matlabの計算完了通知メール送信(mailsend))

という記事にて,MATLABでメール通知を実装させましたが,LINEの方が便利だなと思い実装させました。

準備するもの・環境

LINEへの通知は LINE notify を使用します。
パソコン環境は特に指定していませんが,環境構築の手間を省くため,WindowsはPython不要にしています。

手順

1.LINE notifyからアクセストークンを発行

具体的な発行方法はこちら等に記載していますので,そちらを参照してください。
アクセスコード(例:dBHta…)を取得します。

2.(Windowsの場合)コマンドラインの文字列を作成

コマンドラインからLINE通知を送ることができます。具体的な方法等はコマンドラインから LINE にメッセージを送れる LINE Notify
に記載していますので,こちらを参考にして,1で取得したアクセスコードと送りたい文章を変数として,コマンドラインの文字列 cmd を作成します。

Key = "xxxxxxxxxxxxxxxxxxxxxxx"; % アクセスコード
messages = "送りたい文章"; %送りたい文章を書く。数値等を送る場合は `num2str` を用いる。
cmd = strcat("curl -X POST -H ""Authorization: Bearer ",Key,""" -F ""message=",messages,""" https://notify-api.line.me/api/notify");

この変数 cmd をコマンドラインに送ることでLINE通知を送ることができます。

    system(cmd);

なお,送信する文字が日本語の場合,LINEの文章が文字化けすることがあります。その際は,windowsシステムをUTF-8に変更してください。

【参考】
【Windows 10】文字コードを「Shift-JIS」から「UTF-8」に変更する方法!

(Unix系の場合)
上記の同様のプログラムをPythonで作成します。以下は基本的なプログラムです。

lineNotification.py
import requests

Key ='xxxxxxxxxxxxxxxxxxxxxxx'
messages = '送りたい文章'

def send_message(Key,messages):
    headers = {"Authorization": f"Bearer {Key}"}

    Data = {
        "message": (None, "\n" + messages )
    }

requests.post(
   "https://notify-api.line.me/api/notify",
    headers=headers,
    data=Data,
)

あとは,これを pyrunfile(lineNotification.py) py.lineNotification.send_messageなどでMATLABから呼び出せばLINEを送れるでしょう。

【参考】

関数化

上記でLINEに通知できるかと思いますが,文章を文字配列として引数にした関数化すると便利になります。
具体的な説明は省略しますが,GitHubで公開していますので,自由にお使いください。

try ~ catch を使用すると,計算エラーが出た場合にエラー文を送信させることもできます。

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2