こんにちは、筆者です。2月は更新できませんでした…。申し訳ないっ!さて、タイトルにあるように、今回は『Raspberry Pi』と『Amazon Dash Button』を使ってLチカをしていきたいと思います。
Raspberry Piにパッケージインストール
先にRaspberry Piの設定をしなければなりません。自分は『Python遣い見習い(下級)』なので積極的にPythonを使っていきます。便利なパッケージがありましたので今回は『amazon-dash』というものを使っていきます。
$ sudo pip install amazon-dash
動かない方はたぶんScapyが入ってないのでこちらも入れます。
$ sudo pip install scapy
Amazon Dash Buttonの設定
スマホから『Amazonアプリ』を起動して、『アカウントサービス』を選択します。下の方に『Dash端末 -> 新しい端末をセットアップ』とありますので、指示に従ってください。最後に商品を選ぶ項目になりますが、そこはキャンセルでお願いします。
以下の記事が参考になるかと思います。
『Amazon Dash Buttonの仕組みとハック – https://qiita.com/dkawashi/items/e6621c4b712b509c73ec』
DiscoveryモードでAmazon Dashを見つけ出す
ディスカバリーといえば真っ先に浮かぶのはCSの某チャンネル…。さて、Amazon Dashを見つけ出しましょう!ブロードキャストの受け取り方式は他と変わりないと思いますが、パッケージに付いてるんですから使っちゃいましょう…!
$ sudo amazon-dash discovery
括弧書きで(Amazon Device)と書かれています。Amazonが設定しているMACアドレスを導き出すことができます(しかもわかりやすい!)。自分は今回3つのAmazon Dash Buttonをポチポチ押したので3つ検出していることがわかります。
このMACアドレスはコピペしておいてくださいね。後々使いますんで…。
LチカPythonを作る
GPIOの説明とかはすっ飛ばします。ぐぐって見てください。今回は3つのボタンに役割を与えるので、gpio1.pyからgpio2, gpio3まで作ります。GPIOのPINしか変わりませんのでgpio1.pyしか記述しません。
$ sudo vi gpio1.py
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
#button1
#ここでGPIOのピンを指定
gpio_n = 3
GPIO.setmode(GPIO.BOARD)
GPIO.setup(gpio_n, GPIO.OUT)
num = 0
while num < 100:
GPIO.output(gpio_n, True)
time.sleep(0.04)
GPIO.output(gpio_n, False)
time.sleep(0.04)
num += 1
amazon-dashに実装するまえに、ほんとにチカるか試してみてくださいね。whileをtrueにしてもいいけど止まらなくなるのでご注意。
筆者のこんなかんじ。
amazon-dashを設定
さて、そろそろ実行まであと一歩!YAML記述なのでご注意あれ(YAMLなのでMACアドレスの最後にも:をつけないとエラー吐きますぜ)。先程メモったMACアドレスを落とし込んで落とし込んでください。たぶんpyスプリクトは相対より絶対でやったほうが後々いいかも。おまかせですけど。あとsudoで作ってください。
$ sudo vi amazon-dash.yml
# amazon-dash.yml
# ---------------
settings:
delay: 10
devices:
88:**:**:**:**:01:
name: button1
user: pi
cmd: "sudo python /home/pi/gpio1.py"
68:**:**:**:**:97:
name: button2
user: pi
cmd: "sudo python /home/pi/gpio2.py"
b4:**:**:**:**:01:
name: button3
user: pi
cmd: "sudo python /home/pi/gpio3.py"
amazon-dashを起動しちゃおう!
ついにやっちゃう時が!きたれり。
$ sudo amazon-dash run
ちょっとまってからAmazon Dash Buttonをポチポチしてみてください。チカると思います。
一応、動画貼っておきます
真ん中の緑のやつは、電源ランプなので関係ないっす。
レスポンスそんなに悪くないと思うですよ!不安なのはルートディレクトリに設定ファイル入れてることかな。
さて、これで電源取れない所もIoT化できそう!
Raspberry PiとAmazon Dashの組み合わせに期待あれ! pic.twitter.com/8iL9wJT4rW
— 自作パソコン学 (@basic1929) 2018年3月11日
さてこれで一応終了です。ありがとうございました。
自動起動にしたい
なんちゃって、自動起動の設定も一応のせときます。
$ sudo vi /etc/rc.local
#exitより前に追加してください。
nohup amazon-dash run &
exit 0
自分の場合、ルート直下に置かないと起動してくれなかった。ホントはやりたくないんだけど。自己責任で。
$ sudo cp /home/pi/amazon-dash.yml /amazon-dash.yml
これでいちいちコマンド操作しなくても電源投入と同時にやってくれます。
これで最後かな。結構テケトーな記事になったので、あとで修繕予定。
以上。