Bluetoothシャットダウンボタンを作る #300円でIoTボタン

# はじめに

- [わずか300円でIoTボタンを作る方法](https://qiita.com/vimyum/items/8b7548ca8cf45383c5b0)
- [通知が飛ぶIoTボタンを作ってみた](https://qiita.com/a_halka/items/050e81f6ef09546f5c4b)

ということで、私もビッグウェーブに乗ってみました。ダイソー３軒目にしてようやく発見。
 #横浜はダイソーがゴロゴロしてます

![remote-shutter.png](https://qiita-image-store.s3.amazonaws.com/0/203949/4945dd9a-6ee9-102d-b53b-a5336515575e.png)
だいぶちゃっちいです。けど用途を満たしてくれればOKです。
どれくらい持つか分かりませんが、お試し電池も付いています。

# 用途
RaspberryPi3 のシャットダウンボタンです。GPIOを塞ぎたくないので良いかと。

#ハード
- RaspberryPi3
- Bluetoothリモートシャッター（ダイソー 324円）

「 **リモートシャッター** 」本件ともネーミングが重なりGoodです。

#インストール
vimyumさんの「[わずか300円でIoTボタンを作る方法](https://qiita.com/vimyum/items/8b7548ca8cf45383c5b0)」でOK。

##Bluetooth周りのインストール

```
$ sudo apt-get install bluetooth
```
多分、最近のRaspbianでは不要だと思います。


##[Bluebutton](https://github.com/kinnalru/bluebutton)のインストール

```
$ sudo gem install bluebutton
```
すんなり行きました。

##Bluetooth の接続
```
$ bluetoothctl
[bluetooth]$ power on
[bluetooth]$ scan on
[NEW] Device XX:XX:XX:XX:XX:XX AB Shutter3
[bluetooth]$ pair XX:XX:XX:XX:XX:XX
[CHG] Device XX:XX:XX:XX:XX:XX Paired: yes
Pairing successful
[AB Shutter3            ]$ trust XX:XX:XX:XX:XX:XX
[CHG] Device FF:FF:1D:14:79:80 Trusted: yes
[AB Shutter3            ]$ quit
```

「XX:XX:XX:XX:XX:XX AB Shutter3」がリモートシャッターのアドレスです。
これとペアリング(pair)して、信頼済み(trust)に入れて完了。
ここまで一度通れば、RaspberryPiを再起動しても勝手にペアリングしてくれます。

##bluebutton の設定
設定と言っても、ボタンが押されたときの処理を記述するだけです。
まずは、本家の設定ファイルで動作確認。

```:~/.config/bluebutton
keyup=echo UP
keydown=echo DOWN
longup=echo LONG UP
longdown=echo LONG DOWN
```

とりあえず bluebutton 実行！

```
$ sudo bluebutton -d="Shutter3" -c ~/.config/bluebutton
Try to find device Shutter3...
Device Shutter3 find at /dev/input/event0
Unable to connect to X server
Reading events from /dev/input/event0...
DOWN #押した
UP
DOWN #長押しした
LONG DOWN
UP
LONG UP
```
![remote-shutter2.png](https://qiita-image-store.s3.amazonaws.com/0/203949/baf77979-85bf-b2d9-1e6d-ce941a858bd6.png)

うまく検知できたみたい。

#シャットダウン
いよいよシャットダウン実装。長押しに入れてみた。

```bash:~/.config/bluebutton
keyup=echo UP
keydown=echo DOWN
longup=echo LONG UP
longdown=sudo /home/pi/shutdown.py
```

shutdown.py を作成して、longdown に入れただけ。

```py:/home/pi/shutdown.py
#!/usr/bin/python
# coding:utf-8
import os

os.system("sudo shutdown -h now")
```

実行権限 #2017.12.07 追記
```chmod +x /home/pi/shutdown.py```

その前に、shutdown.py がちゃんと動くかコマンドを確認・・・OKシャットダウンした。

やっと、本番・・・

```
$ sudo bluebutton -d="Shutter3" -c ~/.config/bluebutton
```

長押し！・・・シャットダウンした！
あっけなくできてしまった。最後に、起動スクリプトの最後に追加。（絶対パスで）

```bash:/etc/rc.local
   :
   :
sudo bluebutton -d="Shutter3" -c /home/pi/.config/bluebutton &

exit 0
```

あと、すばらく放置するとペアリングが切れますが、何かボタンを押すと再接続されます。

#課題
ターミナル(TeraTerm)を開いていると、シャットダウンが分かるんだけど。
何も繋いでいないとホントに落ちたかが分かりづらいんです。
一応、リモートシャッターのLEDが１秒点滅を繰り返すので→ペアリングを失ったな→落ちたなという事で。
何かいい案があれば。


#SpecialThanks!!
[わずか300円でIoTボタンを作る方法](https://qiita.com/vimyum/items/8b7548ca8cf45383c5b0)
[kinnalru/bluebutton](https://github.com/kinnalru/bluebutton)
[通知が飛ぶIoTボタンを作ってみた](https://qiita.com/a_halka/items/050e81f6ef09546f5c4b)
[ラズパイでシャットダウンボタンを付ける(ついでに起動ボタン)](https://qiita.com/clses/items/e701c1cb6490751a6040)
[RaspberryPiにshutdownボタンを付けよう](http://jellyware.jp/kurage/raspi/shutdown_button.html)

#追記 2017.12.07
パスの修正 ~/.config/bluebutton
shutdown.pyの実行権限