2017/06/28

Amazon Dash ButtonをRaspberry piでIoTスイッチとして使う

■Amazon Dash Buttonの説明と入手

Amazon Dash Buttonとは、設定した商品をワンプッシュで注文できる便利アイテム。冷蔵庫に貼っておいて残りのビールが少なくなったら押す、といった使い方をするものです。
このボタン、プライム会員しか購入できません。プライム会員を解約しても注文はできるようですが、送料がかかってしまうため非会員でこのボタンを使う利点は"通常は"あまりありません。

しかし単純にハードウェアとして見てみるとこのDash Buttonはとても優秀です。
たったの500円ですが、設定さえ済ませれば単独でwifiに接続し注文のリクエストを送るという高度な動きをします。大きさは電池1つ程度で、1年は無充電で動く。
自分がこれと同じ機能の物を組み立てるとなると3千円以上はかかるだろうし、これと同じほど低消費電力の物を作るというのはちょっと難しい。

そんなわけでこのお得なIoTスイッチをゲットするためだけに、一ヶ月だけプライム会員になりました。本来の使い方をするつもりはないため、デザインで選び3個ほど購入。さすがのプライム対応で翌日届きました。

■Raspberry Piにnodeをインストール
ボタンが押された時に吐き出す信号をフックしてくれるプログラムは、すでに先人たちが整備してくれているものを使うだけ。自分はインストールするだけの簡単ハッキングです。ドアロック確認システムのために動いているRaspberry Pi zeroをサーバーとして使います。
まずはnodeのインストール。使いたいRaspberry Piのバージョンに合ったものを入れる必要があります。

Raspberry Pi A, B, B+, Zeroの場合
wget https://nodejs.org/dist/v4.0.0/node-v4.0.0-linux-armv6l.tar.gz
tar -xvf node-v4.0.0-linux-armv6l.tar.gz
cd node-v4.0.0-linux-armv6l

Raspberry Pi 3の場合
wget https://nodejs.org/dist/v4.3.2/node-v4.3.2-linux-armv6l.tar.gz
tar -xvf node-v4.3.2-linux-armv6l.tar.gz
cd node-v4.3.2-linux-armv6l

Raspberry Pi 2の場合
wget https://nodejs.org/dist/v4.0.0/node-v4.0.0-linux-armv7l.tar.gz
tar -xvf node-v4.0.0-linux-armv7l.tar.gz
cd node-v4.0.0-linux-armv7l

移動した先のフォルダから/usr/localに移動させます。
sudo cp -R * /usr/local/

バージョンを確認しておきます。
node -v

■dasherをインストール
node-dash-buttonというライブラリがありまして、これを使うとDash Buttonをフックしてプログラムを実行できます。
これをhttpリクエストに特化したラッピングをして使いやすくしたものがdasherです。
gitからとってきてインストール。

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

■Dash Buttonの設定
スマホを使い、Dash Buttonに対して自分の家のWLANにつなぐための設定をします。
設定の最後で商品を選ぶ画面になります。購入する商品を選択すれば、正規の仕組みでAmazonに発注されるようになります。
この記事の設定としては、ここでキャンセルして注文が失敗するようにしておきます。

■dasherにボタンを設定
dasherのフォルダの下で、script/find_buttonを実行します。
するといくつかのmacアドレスが表示されます。ボタンを押した後に表示されるアドレスから、これだというものを控えます。
このアドレスを、config.jsonに書き込みます。以下はIFTTTへイベントを投げる場合。

{"buttons":[
  {
    "name": "Notify",
    "address": "[Amazon Dash Button のmacアドレス]",
    "url": "https://maker.ifttt.com/trigger/[イベント名]/with/key/[IFTTTキー]",
    "method": "POST"
  }
]}

■IFTTT側の設定
config.jsonで決めたイベントを受けて通知を出すようなアプレットを適当に設定します。

■dasherを実行
以下コマンドで起動。
sudo npm start

ボタンを押すと、通知が出ます。

さて、これでDash ButtonのIoTスイッチ化が完了です。分解しなくても良く、マイコンを書き換えなくても良い、なんとも簡単な工作(?)でした。
あとはIFTTTアプレットをいい感じに設定すれば完成です。押したらLINEにコメントするとか、押したらその時間をGoogleスプレッドシートに記録するとかできます。
猫が定位置に座ったらツイート、みたいな仕組みもはんだ付け無しでできちゃいます。
何に使うかはまた考えるとして、今度はアウトプットのあるデバイスが欲しいなー。

2017/06/13

【報告】上田テーブルゲーム会 5/7

5月7日日曜日、上田テーブルゲーム会がありました。
今回も前回に引き続き20名後半の人数になり、席が足りなくなってしまい申し訳ありませんでした。
8月からは会場を増やして対応したいと考えていますので、ぜひまたご参加いただけますようよろしくお願いします。

今回僕は朝から昼過ぎまでの参加でした。
まずは『ギャンブラーギャンブル』。これは昔懐かしの、「せーの、5!」とか言いながら親指を立てた数を当てるあのゲームっぽいシステム。親は自分の出す数を公開したり、合計数を+1/ー1できたりします。
自分の「当たり」の数を自分で選んでいくので軽いながらも組み立て感があって楽しいです。
 その頃別の卓では『パンデミック・キュア』などが遊ばれてました。
『インフェルノ』もやってましたね。
次に遊んだのが『WHY FIRST? / 2位じゃだめなんですか?』誰を何マス進めるか、一斉に決め、2位になった人が得点できるという内容。
わいわいと遊んで楽しかったんだけど、5ラウンドやって1ポイントもとれず。
ほっぴーさんが『アグリコラ』を初心者の方2人にインスト。ファミリールールです。
自分も一緒に説明しつつ、考えたりしながらほぼ1ゲーム見ていました。一人はかまど、一人は暖炉で37点・36点という結果でした。
こちらは『ブラフ』。
神田さんデザインの『六次化農村』。ゲムマに先立って遊ばれていました。テストプレイで遊んだあのゲームが、本当に美しいコンポーネントになっていて感動です。
それにしても、テストプレイしたときの内容がほぼそのまま製品化されているところにも感心しました。
こちらは『UNUSUAL SUSPECTS』。
『カタン』4人戦。
別のテーブルではトランプの『ナポレオン』が遊ばれていました。
こちらは参加させていただいた『キャッシュ・アンド・ガンズ』。銃を向け合って脱落者を決め、残った者達でお金を分け、最終的にたくさん稼いだ人が勝ちというゲーム。
なかなか楽しかったです。
少し遅れた報告になってしまいましたが、参加していだだいた皆様、今回もありがとうございました。
ぜひまた一緒に遊びましょう!

2017/05/08

【募集】上田テーブルゲーム会 6/18

ようこそ信州アグリコラ部へ!部についてのくわしい説明はこちらです。
アナウンス等はtwitterにて行っています。
初めて参加してみたいなと思っている方、いつも遊びに来ていただいている方、次回ゲーム会にぜひぜひ遊びに来てください!
今回もいろいろな方に楽しんでいただけますよう、いろいろなゲームを用意しています。
ぜひ一緒に奥深いボードゲーム、カードゲームの世界を楽しみましょう!


日時 … 2017/6/18 () 10:00〜20:00
会場 … サントミューゼ (上田市交流文化芸術センター) (map) 第1会議室
場所代等は参加者で頭割りにしています。午前中の参加100円、昼間の参加200円、夕方の参加100円を目安にしています。
初参加の場合や短時間の参加の場合はいただいていません。

ゲームの進行がスムーズになるよう、ニックネームを書いた名札の着用をお願いしています。名札は会場で用意しておりますので、ご協力お願いします。
スタッフがゲームを用意しています。それに限らず、持ち寄ったゲームの中から参加者で相談し選んでプレイしましょう。

以前のレポートはこちらです。

途中参加・途中退場可能です。
途中からの場合、進んでいるゲームが終わるまで待っていただくことになるかと思いますのでご承知おきください。
何時くらいに行くよ、と連絡いただければ調整できるかもしれません。

会場ホームページはこちら。会場には無料駐車場があります。

注意事項
  • 第1会議室内は飲食不可です。ロビー等会場施設内にお弁当などを食べることができるスペースがありますので、飲食はそちらにてお願いします。
  • マルチ商法や宗教の類への勧誘等、他の参加者の迷惑になる行為は禁止とします。
  • その他マナー等で問題がある方にはお願いの上、退出していただく場合があります。
昼の時間にはアリオまで行って食事を取ってきたり、軽食を買ってきてロビーのテーブルを利用するといった方が多いです。
テーブルや椅子の並び替えが必要な場合などがありましたらご協力くださいますようお願いします。

質問やリクエスト等などございましたら、 コメント欄またはtwitterにてご連絡ください。

それではご参加お待ちしております!