IoT
おうちハック
LineNotify
AmazonDashButton

Amazon Dash Buttonで「ご飯できたよ」ボタンを作る

More than 1 year has passed since last update.

今更ながらADB(AmazonDashButton)を手に入れたので書きます。

J( 'ー`)し「たかし~ご飯よ~」

をAmazonDashButtonを使ってLINEで通知するというものです。
既出の情報と技術を組み合わせてオリジナル感を出しています。

あと初投稿なので指摘とかあったらどうぞ。

経緯

先日のAmazonPrimeDayで100円で売ってたのでテンションが上ってたくさん買った。

準備

Linux環境で行います。それに伴って以下のような準備ができている前提で進めます。

  • Linuxのインストール(RaspberryPiなどでもOK)
  • LINENotifyのAPIキーの取得

長くなる(面倒くさい)ので省略します。この辺りの記事が参考になります。

[超簡単]LINE notify を使ってみる

Dashボタンの登録からメッセージ送信まで

既出の情報ばかりですが、一応書きます。

ボタン登録

基本的にはAmazon公式のDash Buttonをセットアップする通りにやればできます。
ただし、最後までセットアップすると普通に商品が届くのでこの画面で閉じます。

node.jsを入れる(2017/07/29追記)

リンクを貼ってましたがすぐに書けそうだったので書きます。
とは言ってもdasherのREADME.mdに書いてあることそのままです。

$ sudo apt-get install libpcap-dev
$ sudo apt-get install npm

$ sudo apt-get install node
$ wget http://node-arm.herokuapp.com/node_latest_armhf.deb 
$ sudo dpkg -i node_latest_armhf.deb

これでnpm等のインストールができます。
初めてdasher使った時ここで躓いたのですが、簡単でしたね…

Dasherを入れる(2017/07/29追記)

必要な処理はすべてDasherを使って行います。
DasherはDashボタンからのARPを検知して、任意の処理を実行してくれる便利なやつです。
GithubよりCloneするだけです。Cloneしてinstallするだけです。

$ git clone https://github.com/maddox/dasher.git
$ cd dasher
$ sudo npm install

MACアドレスを調べる

先程のDasherに調べるためのスクリプトが用意されています。

$ cd dasher
$ sudo ./script/find_button
Watching for arp & udp requests on your local network, please try to press your dash now
Dash buttons should appear as manufactured by 'Amazon Technologies Inc.'

ここでボタンを押すと下にMACアドレスが表示されます。
いっぱい出てきて分からない場合は、このようなサイトでベンダーを調べましょう。

処理を書く

config.jsonにどのボタンが押された時に、何をするのかを書きます。
書き方はconfig.example.jsonにあります。

$ vim dasher/config/config.json

以下設定例

config.json
{"buttons":[
    {
    "name": "Notify",
    "address": "ee:ee:ee:ee:ee:ee",
    "url": "https://notify-api.line.me/api/notify",
    "method": "POST",
    "headers": {"Authorization": "Bearer <LINEToken>"},
    "formData": {"message": "ご飯よ~"}
    }
]}

実行してみる

$ cd dasher
$ sudo npm run start

> dasher@1.4.1 start /home/pi/dasher
> node app.js

[2017-07-23T07:03:14.690Z] dash button added.

ボタンを押すとLINENotifyよりメッセージが届きます。

おまけ(dasherをデーモン登録)

みんな大好きserviceコマンド使いたくないですか?使いたいですよね。
dasherをサービス登録して使えるようにします。中の人が書いてくれてるwikiを見ながら進めます。

$ sudo vim /etc/init.d/dasher

でファイルを作成して、これをコピペします。
3行目と12~14行目の箇所は適宜書き換えます。
以下設定例

/etc/init.d/dasher
#!/bin/sh
### BEGIN INIT INFO
# Provides: dasher
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

dir="/home/pi/dasher"
cmd="npm run start"
user="root"
...

権限を設定して登録します。

$ sudo chmod 755 /etc/init.d/dasher
$ sudo update-rc.d dasher defaults

あとは実行するだけ。

$ sudo service dasher start

これでserviceコマンドを使ってdasherを起動したり終了したりできます。
自動起動に設定したりすると便利そうですね。

まとめ

初めてのQiita、初めてのMarkdownで戸惑いながら書きました。
続くかどうかは知りませんが、これからもメモ程度にかければなと思います。