Edited at

Amazon Dash Buttonでうんこなう

More than 1 year has passed since last update.

数年前に作った「うんこなう」という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円のデバイスで同様のことが実現できてしまうのは驚きです。