部屋の電気が付いたらLINEメッセージを送ってくれる仕組み(の前編)

12/17(月)は[m2wasabi](https://qiita.com/m2wasabi)さんが、[NefryBTのファームウェアを自分用に改造して動かそう](https://qiita.com/m2wasabi/items/d9d31afb0397c43c4342)を書いてくださいました。

[記事](https://qiita.com/m2wasabi/items/d9d31afb0397c43c4342)にあるような自分オリジナルの画面で起動できたら嬉しいですね！

今年からプログラミングを始めてたペーペーな私は、簡単なところから、先日購入した[GROVEスターターキット](https://www.switch-science.com/catalog/1812/)と一緒に始めたいと思います。

NefryBTはお詳しい方にも、私のような初心者にも、馴染みやすくて非常に助かっています。


#〇今日の内容

1.IFFTでLINEメッセージを飛ばす
2.タッチセンサーをつなげ、触ったら(近づけたら)LINEメッセージを飛ばす
3.光センサーをつなげ、部屋の電気がついたらLINEメッセージを飛ばす

1は[わみさん](https://qiita.com/wamisnet)の[Nefry BTとIFTTTでスイッチを押したらLINEを送る仕組みを作ってみよう](https://dotstud.io/blog/nefry-ifttt-push-line/)にそって、

2は[nefry.studioさんの記事]((https://nefry.studio/program/Grove/Grove%E3%82%BF%E3%83%83%E3%83%81%E3%82%BB%E3%83%B3%E3%82%B5/))にそって、

3はそれらのコードを少し修正して作ろうと思います。

3はIoTの世界へ導いて下さった[tseigo](https://qiita.com/tseigo)からのアドバイスで実現しました、ありがとうございます。

それでは内容に入ります！！

#1.IFFTでLINEメッセージを飛ばす

※重ねて伝えますが、[わみさん](https://qiita.com/wamisnet)の[Nefry BTとIFTTTでスイッチを押したらLINEを送る仕組みを作ってみよう](https://dotstud.io/blog/nefry-ifttt-push-line/)に丁寧に書かれていますので、是非ご覧ください！

コチラの章はわみさん記事に沿って、少しだけキャプチャなどを加えて、より手順を細かくブレイクダウンしました。

さて、最終的にはこのような感じでLINEメッセージが送られてきます。

<img width="375" alt="IMG_5687.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/201155/0bd58818-5186-976c-afbf-c3004a5f7da9.png">

Nefryのボタンを押すとメッセージが送られてきます。

###IFTTTでレシピを作成する

IFTTTの[Search](https://ifttt.com/search)で「web」と検索します。

<img width="960" alt="1.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/ced9e865-6ac6-3571-cf4c-14a18ec43dce.png">

「Webhooks」をクリックして、ページを移動したら「Connect」をクリックします。

<img width="943" alt="2_1.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/1c6c316f-a917-48e0-fe23-599fbe7863c8.png">

右上の「Setting」をクリックします。


<img width="960" alt="2.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/aa13af5e-b856-7ba5-9f07-70d857cabb58.png">

URLのuse/以下をコピーします(もしくはスクショします)。
出来たら「My Applets」をクリックします。

<img width="960" alt="3_シークレットキー.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/a6c9db88-b268-1351-6f75-f16b9e678e68.png">

「New Applet」をクリックします。

<img width="729" alt="4.1_レシピ作成this.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/0bca3fab-cf66-fd03-0597-cd8e0538de3c.png">

「+this」をクリックします

<img width="960" alt="4_レシピ作成this.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/fd681d4b-e73b-6743-23e8-9b35fc3b92eb.png">

「web」と入力してWebhooksを検索してクリックします。

<img width="960" alt="5_webhooks.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/ea37a241-9254-976d-2113-9642e4f02985.png">

「Event Name」に任意の名前を付けます(Nefryにしました)。
出来たら「Create Trigger」をクリックします。

<img width="960" alt="6Nefry.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/51ae7bcf-9117-be4e-e761-80de28237bdf.png">

次は「+that」をクリックします。

<img width="960" alt="7_レシピ作成that.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/91aca9b0-b247-e081-0da5-b79e0883c7a2.png">

「Line」と入力してLINEを検索してクリックします。

<img width="960" alt="8_Line.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/9bbe9f98-711b-dfc2-948c-709d8c414381.png">

「Connect」をクリックします。

<img width="960" alt="8_Line2.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/39c56c73-5257-95d2-6ad0-e3a4e707d096.png">

LINEがポップアップで出てきますので、アカウントIDとパスワードを入力します。

<img width="960" alt="8_Line3.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/efc6212a-fb87-a4be-d9c1-901289ffda06.png">

「同意して連携する」をクリックします。

<img width="960" alt="8_Line4.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/038891f6-8c62-22c5-89ca-1287064dd7f7.png">

「Send Message」をクリックします。

<img width="960" alt="8_Line5.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/81ea5219-7829-72b4-f8f5-0133c4e00c7d.png">

「Recipient」で送信先を指定することもできますが、このままでも大丈夫です。
「Create Action」をクリックします。

<img width="960" alt="8_Line6.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/662743d4-6cec-088a-c7f8-b09687aeab90.png">

「Finish」をクリックします。

<img width="960" alt="8_Line7.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/a567d351-fce2-7029-4620-2aada78cda91.png">

NefryBTをPCに差し込みます。
[Aruduino IDE](https://www.arduino.cc/en/Main/Software)を開きます。
「ファイル」から「環境設定」を開きます。

<img width="753" alt="9_IDE書き込み2.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/8c5c0aa3-a1a4-8579-9d2d-52556528dfdf.png">

「追加のボードマネージャのURL」に以下を入力します。
`https://nefry.studio/package_nefrybt_index.json`
「OK」をクリックします。

<img width="925" alt="9_IDE書き込み3.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/56285603-6c3b-5272-49cb-4e13878ac9d6.png">

「メニュー」の「ボード」からボードマネージャー」を開きます。

<img width="960" alt="9_IDE書き込み4.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/d9ed97ad-1c1f-c5b5-9e0e-4cf5d5f9556e.png">

「Nefry」と入力して下記をインストールします。
(下の画面はすでにインストールした後のものです)

<img width="590" alt="9_IDE書き込み5.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/fc246000-d72c-6094-bfe7-2b11b94130aa.png">

サンプルコードを貼り付けます。
[Nefry BTとIFTTTでスイッチを押したらLINEを送る仕組みを作ってみよう](https://dotstud.io/blog/nefry-ifttt-push-line/)からコピーしてください。

「ツール」の「ボード」で下の方に表示される「Nefry BT」を選択します。

<img width="855" alt="9_IDE書き込み6.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/942eaf76-c765-a4d1-0f90-9ed8b4327293.png">

シリアルポートを「115200」に設定します。
AruduinoIDEの右上にある虫眼鏡のようなマークをクリックしてシリアルモニタを表示します。
シリアルモニタも「115200」を選択します。
AruduinoIDEの右上にある矢印マーク「マイコンボードに書き込む」をクリックします。

シリアルモニタにログが出てきます。

<img width="978" alt="9_IDE書き込み7.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/d849bc3c-25f3-4f8f-a820-40d448843d06.png">

PCのネットワークとインターネットの設定からNefryBTをクリックします。

<img width="268" alt="10＿NefryBTに接続.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/326de742-6e67-6ac0-1bc8-a3b1afb1e315.png">

下の画面が表示されます。
出てこない場合は直接URLに打ち込みましょう！
`http://192.168.4.1`
「Setup WiFi」をクリックします。

<img width="960" alt="11_ネットセットアップ.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/9db14ee6-f996-aeb3-cb58-66615869ecdd.png">

wifiの「SSID」と「PASS」を入力して、「Save」をクリックします。

<img width="931" alt="11_ネットセットアップ1_2.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/2a7e31b5-a74e-d08a-21aa-99ab63390b7a.png">

下記の画面に遷移します。

<img width="458" alt="11_ネットセットアップ1_3.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/6cad257d-e17b-04e5-9a10-34fb2e14925b.png">

ここで実は大切なのが、NefryBTが再起動されるまでしっかり待つことです。
設定出来たかな、、、と思って焦って「Back to top」をクリックすると失敗します。

[NefryBT_Wifi設定時の再起動の映像](https://www.youtube.com/watch?v=YB4UhF4q0e4&feature=youtu.be)

ちょっとわかりにくいですが、「Save」をクリックすると一度NefryBTからネットワークが外れ、再起動されてNefryBTがもう一度出てきます。

時々少し時間がかかる時もあるので、ちゃんと待ちましょう、、、、、。
その上で「Back to top」をクリックすると、、、

<img width="884" alt="12_ネットセットアップ4.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/57f2ddf4-b248-79e6-5439-11a25f88fa14.png">

成功すれば「IP Address」が`192.168.`以降の数字が変わります。

あと環境によってだと思うのですが、接続がうまく行かない時もあるので、そんな時は「Setup　WiFi」からリトライしましょう。

設定できたら、次に「Data Store」をクリックします。
画面が変わったら、「SecretKey」にIFTTで取得したキーを、「Event」にEventNameを入れます。
「Save」をクリックします。

<img width="908" alt="12_ネットセットアップ5.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/1daaeb90-9b0b-7bc4-8ff4-be13a29bf47a.png">

最後です、Nefryの「SW」ボタンを押しましょう！
間違って反対の「Reset」を押さないでくださいね！

<img width="375" alt="IMG_5687.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/201155/db1017dc-5e46-a9d6-8a2c-5bb9c2977db8.png">

Nefryからメッセージが送られてきます。

もし送られてこない場合、IFTTTがOFFになっていないかも確認しましょう！

自分の場合なぜかOFFになっており、再度ONにし直しました。

<img width="960" alt="13_IFTTTがOFFになっていた.png" src="https://qiita-image-store.s3.amazonaws.com/0/201155/2a49aabd-201b-7c33-62d7-2b342f8a72be.png">


#2.タッチセンサーをつなげ、触ったら(近づけたら)LINEメッセージを飛ばす

1.が出来ていれば2は一瞬で終わります。

NefryのA2にGROVEのタッチセンサーをつなぎ、NefryをPCにつなぎます。

![IMG_5740.JPG](https://qiita-image-store.s3.amazonaws.com/0/201155/301e9833-99a8-bf98-47ad-7bd9f255bb7f.jpeg)

下記コードをAruduino IDEにコピペして「マイコンボードに書き込む」をクリックします。

```
#include <Nefry.h>
#include <NefryIFTTT.h>
String Event, SecretKey;

void setup() {
  Nefry.setStoreTitle("SecretKey",0); //Nefry DataStoreのタイトルを指定
  Nefry.setStoreTitle("Event",1);     //Nefry DataStoreのタイトルを指定
  SecretKey = Nefry.getStoreStr(0);   //Nefry DataStoreからデータを取得
  Event = Nefry.getStoreStr(1);       //Nefry DataStoreからデータを取得
  Nefry.println("Nefry Setup!!");

  pinMode(A2,INPUT_PULLUP);//入力モード切り替え
}

void loop() {
  if(digitalRead(A2)==HIGH) {               //センサーが静電気を検知した時
    bool sendData = IFTTT.send(Event, SecretKey,"Nefry",(String)(micros()/1000000)+"秒");//IFTTTにデータを送信
                                      //Value1:Nefry,Value2:Nefryが起動してからの秒数,Value3:送信カウンタ
     Nefry.println("A2 HIGH");
    if (!sendData) {//IFTTTにデータを送信が成功したか失敗したかの判定
      Nefry.setLed(255, 0, 0);        //Errの時、赤色点灯
    }
    Nefry.ndelay(1000);               //送信後1秒間待つ
  }
}
```
([nefry.studioさんの記事](https://nefry.studio/program/Grove/Grove%E3%82%BF%E3%83%83%E3%83%81%E3%82%BB%E3%83%B3%E3%82%B5/)を上の1.のコードにマージしました)

タッチセンサーに手を近づけるとLINEにメッセージが送られてきます。

<img width="375" alt="IMG_5703.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/201155/fb712cd6-6de8-30ab-9a19-4bafa4d2fef0.png">

Value2,Value3は時間が無くて何も工夫しませんでした、、、、(汗)

ここまで予想以上に長くなりましたので、3.光センサーをつなげ、部屋の電気がついたらLINEメッセージを飛ばすは別日で書かせてください！

12/21(木)は[BlueTone](https://qiita.com/BlueTone)さんの「NefryでJenkinsのXFD作った話とか、電子工作コンテストで賞もらった話」ですね、楽しみです！！

以上です！