LoginSignup
16
14

More than 5 years have passed since last update.

Amazon Dash Buttonでうんこなう

Last updated at Posted at 2016-12-12

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

16
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
14