Help us understand the problem. What is going on with this article?

Nefry BTとLINE Notifyをサクッと連携

More than 1 year has passed since last update.

こんにちは、ちゃんとくです。この記事はNefry Advent Calendar 2018 1日目の記事です。

毎年アドベントカレンダーの時期は時空が歪みがちですね!(すみません)

やること

Image from Gyazo

Nefry BTというマイコンボードのスイッチを押すと、LINEに通知がいく仕組みを作ります。これを応用して「センサのデータが〜を超えたらLINE通知」や「人検知したらLINE通知」などの仕組みを作ることができます。

短いコードでサクッとやれるので試してみてね!

※この記事は下記のNefry BT環境構築・初期設定が済んでいる前提で進めます。

Nefry BTって?

Image from Gyazo

Nefry BTは「ESP-WROOM-32」というWi-Fi・BLE通信モジュールを搭載した、Arduinoと同じように開発できるマイコンボードです。

Groveという刺すだけで配線できるモジュール対応のコネクタを搭載していて、ハードウェアをあまり意識せずに開発できます。

LINE Notifyって?

Image from Gyazo

公式ページ

LINEが提供している、簡単にLINE通知を作成することができるサービスです。LINE Notifyという公式アカウントから自分が設定したLINE通知がくる仕組みです。

LINE Notifyの設定

LINE Notifyと友達になる

まずはQRコードを読み取り、アカウントと友達になっておきましょう。

トークンを作成

自分のLINEアカウントとLINE Notifyを紐付けるために、トークン(鍵のようなもの)を発行します。

Image from Gyazo
LINE Notifyの設定ページにいき、自身のアカウントでログインします。

メールアドレス・パスワードは、スマホアプリの「友だち > 設定(歯車) > アカウント」で確認・設定ができます。

token_button.png

「トークンを発行する」ボタンを押します。

Image from Gyazo
上記のようなウィンドウが表示されます。「トークン名」にはLINE Notifyが何のサービスと連携したかわかる名前をつけましょう。通知するルームは、今回は「1:1」を選択します。

token_create.png

トークンが発行されたら、コピーしてメモしておきます(あとで使います)。

プログラム

以下のプログラムを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_portal.png

Nefryポータルを開きます。

nefry_portal.png

「DataStore」のページに行くと2つのフォームが用意されているので、「LINE Auth」には先ほどコピーしたトークン、「LINEMessage」には送りたいメッセージを入力します。

動作

Image from Gyazo

雑な解説

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ポータルで設定した指定番号の値を取得しています。

わざわざポータル側で設定することもないのですが、トークンやメッセージを変えるたびにプログラムを書き込む手間を考えるとオススメの方法です。

tokutoku393
エンジニア兼テクニカルライター。大学は法学部。Node女学園主催。たまに電気風呂と呼ばれます。PHP/Laravel/Node.js/Milkcocoa/IoT/電子工作
http://toku-log.hatenablog.com/
dotstudio
全ての人がモノづくりを楽しむ世界を目指して活動しています。
https://dotstud.io
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした