Raspberry Pi 3+DHT22 で気温を通知するLINEbotを作る①

#やりたいこと
LINEbotに自分の部屋の気温を聞いたら返ってくるようにしたい！IoTやりたい！！！
#必要なもの
・Raspberry Pi 3 modelB
・DHT22（温度センサ）
・ブレットボード
・ジャンパー線
・LINEアカウント
※センサ類は秋月などでの購入をお勧めします。
#参考サイト
※参考サイト見れば全部できちゃう。
①[LINE Messaging APIをngrok経由でRaspberry Pi 3で使ってみる（サンプルbot編）](https://hakengineer.xyz/2017/10/10/post-425/)
②[温度/湿度センサーDHT22をRaspberry Piで使用する方法](http://blog.livedoor.jp/victory7com/archives/48343379.html)
#LINEbot作成
まず、LINEbotを作成するために[LINE Developer](https://developers.line.me/ja/)にログインをします。
メールアドレスとパスワードはLINEで設定したものになります。
①左にある新規プロバイダーをクリックしましょう。
![0改.jpg](https://qiita-image-store.s3.amazonaws.com/0/183723/9d75514a-9e7d-9411-64a4-695cd988896e.jpeg)

②プロバイダー名を決めて確認ボタンを押します。
<img src="https://qiita-image-store.s3.amazonaws.com/0/183723/249834d7-a7cd-b239-393b-79f982372404.jpeg" width=40%>

③Messaging APIをクリックします。
<img src="https://qiita-image-store.s3.amazonaws.com/0/183723/02f825dc-1a46-c216-f21a-95797bfdb971.jpeg" width=50%>

④アプリ名等、諸々入力します。お金をかけたくなければフリーにチェック。
<img src="https://qiita-image-store.s3.amazonaws.com/0/183723/4dc666bf-3586-9363-10c6-55fd175deba5.jpeg" width=50%>

⑤登録が終わったら諸々が表示されます。
<img src="https://qiita-image-store.s3.amazonaws.com/0/183723/adaf3aec-6585-29b6-f0c4-8bdd31df4325.jpeg" width=50%>
<img src="https://qiita-image-store.s3.amazonaws.com/0/183723/8425cbe9-d336-c9b9-2134-8571a9670a43.jpeg" width=50%>


[Webhook送信]　　　：利用する
[自動応答メッセージ]：利用しない
に設定をしておきましょう。

Webhook URLは表示されてないと思いますが、後で設定をするので大丈夫です。

QRコードで友達を追加して、とりあえず既読無視するLINEbotが完成しました。簡単。
LINEbotに関しては後程また設定をするので置いておきます。
#Raspberry Piの設定
※ここでは、既にRaspberryPiにOSがインストールされた前程で話を進めます。
##ngrokのインストール
ngrokはインターネットから自宅にあるサーバーを簡易的に公開するために使用するサービスのことです。しかも、無料で使えちゃう。
LINE Messaging APIはインターネットからhttpsでアクセスできる環境が必須なのでとても便利です。

ngrokを使用するためにまず以下のURLからアカウントを作成します。
https://ngrok.com/
ログインをすると以下のようなページが表示されると思います。
![6改.jpg](https://qiita-image-store.s3.amazonaws.com/0/183723/c91ed3af-a97d-eddb-3082-361f280e8f62.jpeg)

ここまで準備ができたらラズパイにngrokをインストールします。
ラズパイでターミナルを開き、先ほどのページでコピーしたアドレスをwgetして、unzipします。

```
$ wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-arm.zip
$ sudo unzip ngrok-stable-linux-arm.zip -d /usr/local/bin/
```

続いて、ngrokのページの③Connect your accountのコマンドをコピーして入力します。

```
$ cd
$ ./ngrok authtoken "コピーしたauthtoken"
```

以上でサーバーの準備が整いました。
##flaskとline-bot-sdkのインストール
LINEの中の人が作成してくれたサンプルbotを動作させるために必要なものをインストールします。

```
$ pip install flask
$ pip install line-bot-sdk
```

##サンプルbotを用意
以下のURLのサンプルbotをダウンロードし、適当な場所にapp.pyという名前で保存してください。
https://github.com/line/line-bot-sdk-python/blob/master/examples/flask-kitchensink/app.py
##変数の設定
app.pyの中には「LINE_CHANNEL_SECRET」「LINE_CHANNNEL_ACCESS_TOKEN」がありますが、これを自分のものに変更する必要があります。
<img src="https://qiita-image-store.s3.amazonaws.com/0/183723/1136ea94-942f-9d62-1448-460385c8b0c1.png" width=50%>
<img src="https://qiita-image-store.s3.amazonaws.com/0/183723/36606e87-57ee-4660-ed02-62d0a87db74f.png" width=50%>

上図のChannel Secretが「LINE_CHANNEL_SECRET」、アクセストークンが「LINE_CHANNNEL_ACCESS_TOKEN」にあたります。
これを環境変数にするためにターミナルで以下を入力します。

```
$ export LINE_CHANNEL_SECRET="自分のChannel Secret"
$ export LINE_CHANNNEL_ACCESS_TOKEN="自分のアクセルトークン"
```

このままではラズパイを再起動した際に環境変数がリセットされてしまうので、.profileの一番下に上記のコマンドを追加します。

```
$ cd
$ nano .profile
```

##サンプルアプリ(app.py)の実行
サンプルアプリを実行してLINEからのメッセージにオウム返しするかを確認します。
ラズパイで、コンソールを２つ立ち上げます。
１つ目のコンソール画面でapp.pyを実行します。

```
$ python app.py
* Running on http://127.0.0.1:8000/ (Press CTRL+C to quit)
```

この状態で、２つ目のコンソール画面で ngrok http 8000を実行します。

```
$ ngrok http 8000
grok by @inconshreveable (Ctrl+C to quit)

Session Status online
Account XXXXXX (Plan: Free)
Version 2.2.8
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding http://hogehoge.ngrok.io -> localhost:8000
Forwarding https://hogehoge.ngrok.io -> localhost:8000

Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
```

実行後に表示されるForwarding後の「https\://hogehoge.ngrok.io」をコピーしておきます。
※hogehogeは実際には長い文字列が表示されています。

コピーしたURLをLINE developersの「Channnel基本設定」画面の「Webhook URL」に入力します。
「hogehoge.ngrok.io/callback」
最後に/callbackを追加して下さい。
接続確認ボタンを押すと「Webhookが正常ではないHTTPステータスを返しました。」と表示されますがLINEからちゃんとオウム返しがされます。

##動作確認
LINEbotからオウム返しされるか確認します！

<img src="https://qiita-image-store.s3.amazonaws.com/0/183723/0554dc90-3f39-8ec1-bfb2-b0cda739c423.png" width=60%>

うおー！ちゃんとオウム返しされています！
これでオウム返しLINEbotが完成しました。
次はこのLINEbotを改良して部屋の気温を通知できるようにしましょう！

長くなったので続きは次の記事に記載します。
[Raspberry Pi 3+DHT22 で気温を通知するLINEbotを作る②](https://qiita.com/zakopuro/items/ed6720f4c27773cb58c7)