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

Amazon Dash Button を使って、会社で離席中にボタンを押してもらってChatworkに通知する

More than 3 years have passed since last update.

Amazon Dash Button を使って、会社で離席中にボタンを押してもらってChatworkに通知する

最近、会議とか席以外での開発やら不定期なお昼とかで席にいる時間が少なくなってきております。
そこで、予定が入っていないのに、あの人どこに行った??すぐに話したいのにーという問題を解消するために、Amazonで最近発売されたDashButtonを使ってなんとかできないかを考えました。
そして、タイトルの通り、離席中のときにボタンを押してもらうとすぐにChatworkに通知が行くようなシステムを作ってみました。
自身初のIoT!

必要技術&用語解説

技術

  • Amazon Dash Button(なんのボタンでもOK)
  • Node.js(6.X)
  • ChatworkAPI

DashButtonのセットアップ

まず、届いたAmazon Dash Buttonはこちら。
IMG_3942.JPG
(ボタンはなんでもいいけど、ファブリーズにしてしまったw)

ドキュメント通りにセットアップしていきますー

通常通りにセットアップしていきます。
IMG_3943.PNG

ここでこの画面になったら商品選択する画面なので、右上の☓をおしてキャンセル。
(ファブリーズ大量w)
IMG_3944.PNG

きちんと、セットアップができたらこういった画面になるはず!
IMG_3945.PNG

これでDashButtonのセットアップは完了!

通知をしてみる

まずは、Dashからの通知がきちんとサーバとかした自身のPCに接続されるかのテストをします。
今回は、node-dash-buttonというnpmがすでにあるので、そちらを使っていきます。

mkdir dash-chat
cd dash-chat
npm init --yes
npm install node-dash-button

※ プロジェクト名はdash-chatにします。

そして、一旦接続ができるのか確認をします。

$ sudo node node_modules/node-dash-button/bin/findbutton
Password:
Watching for arp & udp requests on your local network, please try to press your dash now
Dash buttons should appear as manufactured by 'Amazon Technologies Inc.'
Possible dash hardware address detected: a2:63:b4:05:b3:43 Manufacturer: Amazon Technologies Inc. Protocol: udp
Possible dash hardware address detected: a2:63:b4:05:b3:43 Manufacturer: Amazon Technologies Inc. Protocol: arp
Possible dash hardware address detected: 00:24:a5:f4:e2:44 Manufacturer: BUFFALO.INC Protocol: arp
Possible dash hardware address detected: 70:56:81:b1:02:d7 Manufacturer: Apple 

これをやることで、通信している中身をみることができるみたいです。

そして、AmazonDashButtonを押すと、下記のMacアドレスを取得することができます。

Possible dash hardware address detected: a2:63:b4:05:b3:43 Manufacturer: Amazon Technologies Inc. Protocol: udp

この中にあるa2:63:flag_ba:05:b3:43こいつが重要で、このMacアドレスを控えておきます。

そして、通信ができているのが確認できたため、今回はChatworkに送るので、index.jsを作成してコーディングしていきます。

まずは必要なモジュールをインストール

npm install request
index.js
'use strict';

console.log('Loading function');

var request = require('request');
var dashButton = require('node-dash-button');
// macアドレス
var macAddr = "a2:63:b4:05:b3:43";

var apiToken = 'your chatwork api';
var roomId = 'your room id';

var dash = dashButton(macAddr, null, null, 'all');
dash.on("detected", function () {
  // chatwork用
  var message = '緊急事態発生!すぐに席に戻ってきて!';
  if (message !== '') {
    // chatwork側に飛ばす処理
    var options = {
      url: 'https://api.chatwork.com/v1/rooms/' + roomId +'/messages',
      headers: {
        'X-ChatWorkToken': apiToken
      },
      form : {body : message},
      useQuerystring: true
    };

    console.log('Sending message');

    request.post(options, function (err, res, body) {
      if (!err && res.statusCode == 200) {
        console.log('done');
      } else {
        console.log('error');
      } 
    });
  }
  console.log("Dash Button Pushed!!");
});

これで、Dashボタンが押されたらChatworkに「緊急事態発生!すぐに席に戻ってきて!」という文字列が発射される予定です。

sudo node index.js

こちらを実行していきます。

そして、Dashボタンを押すと・・・

スクリーンショット 2016-12-18 16.23.28.png

なんと、にゃごぴー(Botさん)がきちんと通知をしてくれました!
これで席にいなくてもきちんと通知を受け取ってすぐに席に行ってあげることができます!
(連打しないでねw)

すでに、モジュールもあったので、とても簡単でした!

まとめ

他にも色々ネタを考えてました!

とくにLine通知と連携して緊急呼び出しボタン(ナースコール的な?)とかそういうのに使えるんじゃないかなーと個人的には思ってます。

今度時間があったらLine Message APIをつかってやってみようと思います。

また、Dashボタンやすいし、次のときに500円引きで買えるので、この記事を書きながらもう一個ポチってしまいました。

zwirky
a-hikkoshi
当社は、親会社である株式会社エイチームの経営理念をそのままに、引越しの比較サービス開始以降、大切にしてきた「三方よし」の理念を基本として、世の中に求められるサービスの創造を目指します。 一緒に働けるエンジニアを募集しております。下記URLよりご応募ください。 https://bit.ly/3lwf7QJ
https://hikkoshi.a-tm.co.jp/
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした