この記事は、カノジョできないエンジニア Advent Calendar 2016 23日目の記事です。
1年前にこんな記事を書きました。
- IoTカノジョを作りました。@カノジョできないエンジニア Advent Calendar 2015 http://shanonim.hatenablog.com/entry/2015/12/09/000036
1周年なので、バージョンアップしてみたいと思います。
用意するもの
Arduino UNO
どこのご家庭にもある一般的なArduinoです。
PIRセンサー
LED
光ります。
Johnny-Five
その他
ジャンパー線、ブレッドボード、抵抗などはお好みのものをご用意ください。
IoTカノジョ 2.0
kanojyo.js
var five = require('johnny-five');
var SlackNode = require('slack-node');
var board = new five.Board();
var slackToken = "<your-slack-token>";
var slackNode = new SlackNode(slackToken);
var freq = 1000;
var waitTime = 0;
var hasPostedWelcomeMessage;
var hasPostedAngryMessage;
board.on('ready', function() {
var led = new five.Led(8);
var angryLed = new five.Led(7);
var sensor = new five.Sensor({
pin: 'A0',
freq: freq
});
sensor.on('data', function(){
if (waitTime > 5000) {
angryLed.on();
if (!hasPostedAngryMessage) {
postMessage("ちょっと遠くないかにゃ。");
hasPostedAngryMessage = true;
}
} else {
hasPostedAngryMessage = false;
}
if (this.value != 0) {
led.on();
if (!hasPostedMessage) {
postMessage("おかえりにゃ!")
hasPostedMessage = true;
waitTime = 0;
angryLed.off();
}
} else {
led.off();
hasPostedMessage = false;
waitTime += freq;
console.log("waitTime: " + waitTime);
}
});
});
function postMessage(message) {
slackNode.api('chat.postMessage', {
text: message,
channel: '#iot-kanojyo',
as_user: true
}, function(err, response) {
console.log(response);
});
}
近づくと話しかけてきます。近づかないと話しかけてくれません。
まとめ
良いお年を。