Python
RaspberryPi
IoT
ダイソー

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

More than 1 year has passed since last update.

はじめに

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

remote-shutter.png
だいぶちゃっちいです。けど用途を満たしてくれればOKです。
どれくらい持つか分かりませんが、お試し電池も付いています。

用途

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

ハード

  • RaspberryPi3
  • Bluetoothリモートシャッター(ダイソー 324円)

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

インストール

vimyumさんの「わずか300円でIoTボタンを作る方法」でOK。

Bluetooth周りのインストール

$ sudo apt-get install bluetooth

多分、最近のRaspbianでは不要だと思います。

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

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

シャットダウン

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

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

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

/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

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

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

exit 0

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

課題

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

SpecialThanks!!

わずか300円でIoTボタンを作る方法
kinnalru/bluebutton
通知が飛ぶIoTボタンを作ってみた
ラズパイでシャットダウンボタンを付ける(ついでに起動ボタン)
RaspberryPiにshutdownボタンを付けよう

追記 2017.12.07

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