Help us understand the problem. What is going on with this article?

Amazon Dash Buttonでうんこなう

More than 3 years have 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円のデバイスで同様のことが実現できてしまうのは驚きです。

daikiojm
Blog: http://daikiojm.hatenablog.com Scrapbox: https://scrapbox.io/daikiojm
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away