2016年12月、何をトチ狂ったか amazon dash ボタンを大人買いしてしまいました。
さすがに年内にはなんとかしたい……ということで。
「やってみた」でメジャーなサイトが2つあったんですが、私のような中途半端な素人には苦労が多い感じでした。ので、まとめてみます。
用意するもの:
- Windows 10マシン
- VirtualBox
- その中にCentOS6のVM
- amazon dash
- 無線LAN環境
VMが反応するようにする
CentOS6のVMが反応するように、LANをブリッジアダプタにします。
dash-buttonモジュールをインストールする
npmをインストールしてみたら、バージョンが大変なことに。
[root@localhost ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
[root@localhost ~]# node --version
v0.10.46
[root@localhost ~]# npm --version
1.3.6
dash-buttonをインストールするには、npm6以上が必要なのに、なんだこのバージョンの差は……
# npm install -g n
# n latest
# npm update -g npm
http://qiita.com/zoeponta/items/a2e109304729ffa23d81 を参考に
[root@localhost ~]# gcc --version
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-17)
↓
gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-15)
バージョンを上げました。
yum install -y libpcap-devel
npm install --save dash-button
Chatworkでメッセージを投稿
requestパッケージをインストールします。
npm install request
const DashButton = require("dash-button");
const PHY_ADDR = "aa:bb:cc:dd:ee:ff";
let button = new DashButton(PHY_ADDR);
console.log("I'm listening'")
let i = 0;
function report() {
console.log("["+(i++)+"] It works.");
}
function cw() {
var request = require('request');
var room_id = '**room_id**';
var message = 'ボタンが押されました';
var options = {
url: 'https://api.chatwork.com/v1/rooms/'+room_id+'/messages',
headers: {
'X-ChatWorkToken': '**token**'
},
form: { body: message },
json: true
};
request.post(options, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}else{
console.log('error: '+ response.statusCode);
}
});
}
/*
以下が発火するイベントの指定部。
*/
button.addListener(() => {
cw();
});
上記をapp.jsで保存し、起動して待受状態にする。
node app.js
ボタンを押すと、しばらくしてChatworkにメッセージが表示される。
無事成功。
参考:
・テストスクリプトまでを参考にさせていただきました
http://qiita.com/takustaqu/items/8539b33780c9675c8657
・npm4以上に上がってから、さらに上げるときに参考にさせていただきました
http://parashuto.com/rriver/tools/updating-node-js-and-npm
・g++ 4.8 に上げるときに参考にさせていただきました
http://qiita.com/zoeponta/items/a2e109304729ffa23d81
・jsでChatworkメッセージの投稿をするのに参考にさせていただきました
https://liginc.co.jp/web/programming/node-js/123719