Amazon Dash Buttonでうんこなう

  • 16
    いいね
  • 0
    コメント

数年前に作った「うんこなう」というIoTデバイス??の代わりに、Amazon Dash Buttonを使ってみました。
当時作ったものはこんな感じ↓

うんこなう

dashボタンのセットアップ

こちらの投稿を参考にさせてもらいました。
Amazon Dash ButtonをただのIoTボタンとして使う

上記投稿の「ボタンセットアップ」までを行います。

Twitter APIのセットアップ

Twitterで新規アプリケーションを登録する

「うんこなう」する(つぶやく)アカウントでTwitterにログインした状態で、以下のURLにアクセスします。
https://apps.twitter.com/

「Create New App」から新しいアプリケーションを作成します。

APIキーを取得

ダッシュボードのアプリケーションの一覧から今回作成したアプリケーションをクリック
「Keys and Access Tokens」から「Create my access token」というボタンをクリック
表示された以下の値をメモ

  • consumer key
  • consumer secret
  • access token
  • access token secret

プロジェクトのセットアップとnode.jsモジュールをインストール

プロジェクトの作成

$ mkdir dash-unko-now
$ cd dash-unko-now
$ npm init --yes

必要なモジュールをnpmからインストールします。

Amazon Dash Button

今回は、dash-buttonを使用します。
ドキュメントを参考にDash ButtonのMACアドレスを取得しておきます。

$ npm install --save dash-button

Twitter

twitter apiを叩くのに使います。

$ npm install --save twitter

日付

日付、時刻をいい感じに表示させるのに使います。

$ npm install --save date-utils

実装

といっても、dash-buttonというモジュールがDash Buttonを簡単に扱えるようにしてくれているので、コードはこれだけ。
ボタン押下イベントを受け、TwitterモジュールからTwitter APIにツイートをポストします。

config.json
{
    "twitter_credentials": {
        "consumer_key": "1234567890abcdefghABCDEFG",
        "consumer_secret": "1234567890abcdefghijkABCDEFGHIJKxxxxxxxxxXXXXXXXXX",
        "access_token_key": "123456789099999999-1234567890abcdefghijkABCDEFGHIJ",
        "access_token_secret": "1234567890abcdefghijkABCDEFGHIJKxxxxxxxxxXXXX"
    },
    "mac_address": "Dash ButtonのMACアドレス"
}
index.js
'use strict';

require("date-utils");
const DashButton = require("dash-button");
const Twitter = require("twitter");
const config  = require("./config.json");

// twitter client
var client = new Twitter({
    consumer_key: config.twitter_credentials.consumer_key,
    consumer_secret: config.twitter_credentials.consumer_secret,
    access_token_key: config.twitter_credentials.access_token_key,
    access_token_secret: config.twitter_credentials.access_token_secret
});

// button constructor
let button = new DashButton(config.mac_address);


console.log("Stand by...");

// button push listener
button.addListener(() => {
    var dt = new Date();
    var outputDate = dt.toFormat("YYYY/MM/DD HH24:MI:SS");
    var tweet = "うんこなう。\n" + "[" + outputDate + "にうんこをしました。" + "]";
    client.post('statuses/update', {status:tweet}, function(error, tweet, response) {
        if(error) throw error;
        console.log(response);
    });
});

うんこしてみる

用を足した際にDash Buttonを押下します。

imb_E3944652-D506-4AB5-BA14-5CF20698A234.gif

作る前からわかっていたことだけど、ボタン押下をイベントにTwitterに定型文をポストするだけです...
3年前に同様のことを実現しようとしたら、AruduinoやらRaspberryPiやらを使わなければでしたが、
500円のデバイスで同様のことが実現できてしまうのは驚きです。