Raspberry Pi 3とDash Buttonでツイートする
備忘録も兼ねて初投稿です。
はじめに
先日のAmazonサイバーマンデーセールで運良く250円でDash Buttonを手に入れました。 ラズパイと組み合わせてIoTやるぞ!というわけで、2つ購入しました。1つ分の値段で2つ買えたのでAmazonは神。
- 出版社/メーカー: Amazon
- 発売日: 2017/06/26
- メディア: エレクトロニクス
- この商品を含むブログを見る
作業手順
- Dash Buttonのセットアップ
ここを参考にすれば問題ないはず。
2.DasherでIFTTTのWebhooksに連携してツイート
上記事で省いている前準備のIFTTTのアプレット作成とnode.js, npmのインストールの方法をまとめる。
IFTTTでアプレット作成
IFTTTで、ボタンを押した時のアクションを決める。 IFTTTを使うと、アプレットをいじるだけで色々応用できるので便利。 今回はツイートをポストすることにした。
新規アプレット作成
・メニューの「My Applets」→「New Applet」を選択
Webhooksトリガ作成
・「if this then that」のthisを選択
・検索ウィンドウから「Webhooks」を検索して選択[step1]
・Receive a web requestを選択[step2]
・Event Nameにイベント名を入力(ここではdashbutton)してCreate Triggerを選択
Tweetアクション作成
・「if this then that」のthatを選択
・Twitter(一番上の段にあるはず)を選択[Step3]
・Post a tweetを選択[step4]
・Tweet textにポストするツイート内容を記述してCreate Acrionを選択[step5] (今回はテキストウィンドウ右下のAdd ingredientから選んでvalue1とvalue2を追加しておく。)
・Finish
Webhooksキーの取得
・作成したアプレットのWebhooksアイコンをクリックしてWebhooksのページを開く
・右上のDocumentationを選択
・「Your key is:」以降が自分のWebhooksキーを確認 このページの「https://maker.ifttt.com/trigger/{イベント名}/with/key/{自分のキー}」 のURLにPOSTやGETでHTTPリクエストを投げるとトリガが呼び出される。ここをラズパイで実装する。
ラズパイの前準備
Dasherを使うにはnode.js, npmが必要なので、これらの最新版をインストールする。
DasherのREADMEには
ラズパイではapt-get install
でnodeとnpmはインストールできるが、バージョンが古いためnode-armを更新して最新版にするとあるが、この方法では上手くいかなかったので下記事の方法で更新した。
ボタンの定義
これもREADMEを見ながらconfig/config.json
をIFTTTのイベントに合うようにボタンを設定する。
{"buttons":[ { "name": "dashbutton", "address": "[Dash ButtonのMACアドレス]", "interface": "eth0", "timeout": "60000", "protocol": "udp", "url": "https://maker.ifttt.com/trigger/dashbutton/with/key/[Webhooksキー]", "method": "POST", "json": true, "body": {"value1": "Hello", "value2": "World!"} }
ここの設定で躓いたのが、eth0はラズパイを有線接続にしてIPを固定しなければならないというところである。以下の記事を参考にしてIPアドレスを固定した。
いざ実行
dasherディレクトリでsudo npm run start
を叩く。
$sudo npm run start
dasher@1.4.1 start /home/pi/git/dasher node app.js
[2017-12-17T16:05:19.978Z] dashbutton added.
これでボタンの待受状態になるので、ボタンを押すと...
[2017-12-17T16:05:28.268Z] dashbutton pressed. Count: 1
これでIFTTTのトリガが呼び出される。
そして以下のようなツイートがポストされれば成功!
"dashbutton" Hello World!
— いかすみ (@ikasumi_meron) 2017年12月17日