こんにちは、ちゃんとくです。この記事はNefry Advent Calendar 2018 1日目の記事です。
毎年アドベントカレンダーの時期は時空が歪みがちですね!(すみません)
やること
Nefry BTというマイコンボードのスイッチを押すと、LINEに通知がいく仕組みを作ります。これを応用して「センサのデータが〜を超えたらLINE通知」や「人検知したらLINE通知」などの仕組みを作ることができます。
短いコードでサクッとやれるので試してみてね!
※この記事は下記のNefry BT環境構築・初期設定が済んでいる前提で進めます。
Nefry BTって?
Nefry BTは「ESP-WROOM-32」というWi-Fi・BLE通信モジュールを搭載した、Arduinoと同じように開発できるマイコンボードです。
Groveという刺すだけで配線できるモジュール対応のコネクタを搭載していて、ハードウェアをあまり意識せずに開発できます。
LINE Notifyって?
LINEが提供している、簡単にLINE通知を作成することができるサービスです。LINE Notifyという公式アカウントから自分が設定したLINE通知がくる仕組みです。
LINE Notifyの設定
LINE Notifyと友達になる
まずはQRコードを読み取り、アカウントと友達になっておきましょう。
トークンを作成
自分のLINEアカウントとLINE Notifyを紐付けるために、トークン(鍵のようなもの)を発行します。
LINE Notifyの設定ページにいき、自身のアカウントでログインします。
メールアドレス・パスワードは、スマホアプリの「友だち > 設定(歯車) > アカウント」で確認・設定ができます。
「トークンを発行する」ボタンを押します。
上記のようなウィンドウが表示されます。「トークン名」にはLINE Notifyが何のサービスと連携したかわかる名前をつけましょう。通知するルームは、今回は「1:1」を選択します。
トークンが発行されたら、コピーしてメモしておきます(あとで使います)。
プログラム
以下のプログラムをNefry BTに書き込みます。
#include <Nefry.h>
#include <NefryLineNotify.h>
String auth, message;
void setup() {
Nefry.setStoreTitle("LINE Auth",0);
Nefry.setStoreTitle("LINEMessage",1);
auth = Nefry.getStoreStr(0);
message = Nefry.getStoreStr(1);
Nefry.enableSW(); // SWの有効化。SWを使わない場合は不要
}
void loop() {
if(Nefry.readSW()) {
if (!LineNotify.send(auth, message)) {
Nefry.setLed(255, 0, 0);
}
Nefry.ndelay(1000*10); // 10秒間は再送しないようにする
}
}
Nefry BTにトークン情報を設定
Nefryポータルを開きます。
「DataStore」のページに行くと2つのフォームが用意されているので、「LINE Auth」には先ほどコピーしたトークン、「LINEMessage」には送りたいメッセージを入力します。
動作
雑な解説
LineNotify.send()
LineNotify.send("token", "メッセージ")
で、LINE Notifyで取得したトークンと送りたいメッセージを指定します。利用する時は NefryLineNotify.h
ライブラリを読み込んでください。
ちなみにメッセージに特殊顔文字などは利用できません(この記事を書きながら発見しました)。
Nefry.setStoreTitle()
Nefry.setStoreTitle("フォーム名", 番号)
で、Nefryポータルで設定するためのフォームを作成しています。0番目にLINE Auth, 1番目にLINEMessageという名前をつけています。
利用する時はNefry.h
ライブラリを読み込んでください
Nefry.getStoreStr()
Nefry.getStoreStr(番号)
で、Nefryポータルで設定した指定番号の値を取得しています。
わざわざポータル側で設定することもないのですが、トークンやメッセージを変えるたびにプログラムを書き込む手間を考えるとオススメの方法です。