いかすみ's備忘録

ただの備忘録です。

Raspberry Pi 3とDash Buttonでツイートする

備忘録も兼ねて初投稿です。

はじめに

先日のAmazonサイバーマンデーセールで運良く250円でDash Buttonを手に入れました。 ラズパイと組み合わせてIoTやるぞ!というわけで、2つ購入しました。1つ分の値段で2つ買えたのでAmazonは神。

赤いきつねうどん Dash Button

赤いきつねうどん Dash Button

作業手順

  1. Dash Buttonのセットアップ

qiita.com

ここを参考にすれば問題ないはず。

2.DasherでIFTTTのWebhooksに連携してツイート

qiita.com

上記事で省いている前準備のIFTTTのアプレット作成とnode.js, npmのインストールの方法をまとめる。

IFTTTでアプレット作成

IFTTTで、ボタンを押した時のアクションを決める。 IFTTTを使うと、アプレットをいじるだけで色々応用できるので便利。 今回はツイートをポストすることにした。

新規アプレット作成

・メニューの「My Applets」→「New Applet」を選択

Webhooksトリガ作成

・「if this then that」のthisを選択

・検索ウィンドウから「Webhooks」を検索して選択[step1]

f:id:ikasumimln:20171217224348p:plain

Receive a web requestを選択[step2]

Event Nameにイベント名を入力(ここではdashbutton)してCreate Triggerを選択

f:id:ikasumimln:20171217225048p:plain

Tweetアクション作成

・「if this then that」のthatを選択

Twitter(一番上の段にあるはず)を選択[Step3]

Post a tweetを選択[step4]

Tweet textにポストするツイート内容を記述してCreate Acrionを選択[step5] (今回はテキストウィンドウ右下のAdd ingredientから選んでvalue1とvalue2を追加しておく。)

f:id:ikasumimln:20171217230847p:plain

Finish

Webhooksキーの取得

・作成したアプレットのWebhooksアイコンをクリックしてWebhooksのページを開く

・右上のDocumentationを選択 f:id:ikasumimln:20171217232937p:plain

・「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を更新して最新版にするとあるが、この方法では上手くいかなかったので下記事の方法で更新した。

qiita.com

ボタンの定義

これも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アドレスを固定した。

hombre-nuevo.com

いざ実行

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のトリガが呼び出される。

f:id:ikasumimln:20171218010758p:plain

そして以下のようなツイートがポストされれば成功!