Raspberry Pi 2 ã§ã¨ã¢ã³ã³æä½ï¼slack&hubotç·¨ï¼
ååã«ç¶ãã¦ãRaspberry Pi 2ã使ã£ã¦èªå® ã®ã¨ã¢ã³ã³ãæä½ããä»çµã¿ãæ§ç¯ãã¦ããã
ä»åã¯slackã¨hubotã飿ºããã¦å¤é¨ããã¨ã¢ã³ã³ãæä½ããããã«ããã
Raspberry Pi 2ã«hubotãã¤ã³ã¹ãã¼ã«ãã
Raspberry Pi 2ã«hubotãã¤ã³ã¹ãã¼ã«ãã¦ããã
$ mkdir homebot $ cd homebot $ sudo npm install -g hubot coffee-script yo generator-hubot
ã¤ã³ã¹ãã¼ã«å¾ãyoã§hubotã使ããã
$ yo hubot
è²ã èãããã®ã§é©å½ã«å ¥åããã°ããã¨æããã ä»åã¯slackã使ãã®ã§ãbot adapter: ã«ã¯ slack ã¨å ¥åããã
æ®éã«hubotãã¤ã³ã¹ãã¼ã«ããã¨ãããã©ã«ãã§hubot-heroku-keepalive ãæå¹ã«ãªã£ã¦ããããä»å㯠Raspberry Pi 2 ã§åããçºãä¸è¦ãªã®ã§ã¢ã³ã¤ã³ã¹ãã¼ã«ããã
$ npm uninstall hubot-heroku-keepalive --save
external-scripts.json ããã "hubot-heroku-keepalive" ãåé¤ããã
ã¾ããä»åã¯ãã¼ã¿ãæ°¸ç¶åããå¿
è¦ããªãã®ã§ "hubot-redis-brain" ãåé¤ããã
ããã¯ã好ã¿ã§ã
slackã¨hubotã®é£æº
slackå´ã®hubotè¨å®
slackã®ã¯ã©ã¤ã¢ã³ãã§ãwebãã¼ã¸ã§ãããã®ã§ã
[Menu] -> [Integrations] -> All Integrations ã® hubot ã® [view] ãã¿ã³ãæ¼ãã
hubotã®ã¦ã¼ã¶ã¼åãå ¥åãã¦[Add Hubot Integration]ãæ¼ã
[Add Hubot Integration]ãæ¼ãã¨è¨å®ç»é¢ã«ç§»è¡ããã
HUBOT_SLACK_TOKEN=xoxb-********* ãã³ãã¼ãã¦ããã
Raspberry Pi 2å´ã®è¨å®
Raspberry Pi 2ã«æ»ããbin/hubot ã«å ã»ã©ã®HUBOT_SLACK_TOKENã追å ããã
$ vim bin/hubot
export HUBOT_SLACK_TOKEN=xoxb-******
è¨å®ãä¿åããããhubotãèµ·åãã¦åä½ç¢ºèªããã
bin/hubot -a slack
slackã®#generalãã£ã³ãã«ã«ä½æããbotããã°ã¤ã³ãã¦ããã飿ºã¯æåãã¦ããã
ping ã¨æã£ã¦ PONG ã¨è¿äºãè¿ã£ã¦ãããæ£å¸¸ã«åä½ãã¦ããã®ã§ã䏿¦hubotãCTRL-Cã§æ¢ããã
hubotã«ç¬èªã³ãã³ãã追å ãã
ç¬èªã³ãã³ãã追å ããçºãscripts/以ä¸ã«ã¹ã¯ãªãããæ°è¦ä½æããã
é ã®æ¹ã®ã³ã¡ã³ãã®Description:ãæ¸ããªãã¨hubotèµ·åæã«è¦åãåºãã
# Description: # èªå® ã®ã¨ã¢ã³ã³ãæä½ãã # å¤é¨ã³ãã³ããå¼ã¶ããã®ã©ã¤ãã©ãª child_process = require 'child_process' # ã³ãã³ããåãä»ããã¦ã¼ã¶ã¼ã®ID(ã¦ã¼ã¶ã¼åã§ã¯ãªã) user_id_list = [ 'ã¦ã¼ã¶ã¼ID' ] # ã¨ã¢ã³ã³æä½é¢æ° aircon = (command, success, msg) -> if msg.message.user.id in user_id_list child_process.exec "irsend SEND_ONCE aircon #{command}", (error, stdout, stderr) -> if !error msg.reply "#{success}" else msg.reply "#{error}" else msg.reply 'ã主人æ§ä»¥å¤ã®ãæ¹ããã®ãå½ä»¤ã¯ãåãã§ãã¾ãã' module.exports = (robot) -> robot.respond /airon/i, (msg) -> aircon('on', 'ã¨ã¢ã³ã³ã®ã¹ã¤ãããå ¥ãã¾ãã', msg) robot.respond /airoff/i, (msg) -> aircon('off', 'ã¨ã¢ã³ã³ã®ã¹ã¤ãããåãã¾ãã', msg) robot.respond /cooler/i, (msg) -> aircon('cooler28', 'ãé¨å±ãå·ããã¦ããã¾ãã', msg) robot.respond /heater/i, (msg) -> aircon('heater26', 'ãé¨å±ãæãã¦ããã¾ãã', msg)
ä»äººã«ã¨ã¢ã³ã³ãæä½ãããã¨å°ãã®ã§ãç¹å®ã®ã¦ã¼ã¶ã¼IDããã®ãªã¯ã¨ã¹ãã®ã¿åãä»ããããã«ããã
管çç»é¢ãªã©ããèªåã®ã¦ã¼ã¶ã¼IDã®èª¿ã¹æ¹ãããããªãã£ãã®ã§ããªã¯ã¨ã¹ããåãåã£ã¦ãã°ã«åºãã¦ç¢ºèªããâ¦ã
ã¹ã¯ãªããã使ããããããä¸åº¦hubotãèµ·åããã
bin/hubot -a slack
å ã»ã©è¿½å ããã³ãã³ããhubotã«éãã
ã¨ã¢ã³ã³ãèµ·åãããæåï¼
ã¾ã¨ã
ãã£ããã§botã«ãé¡ããã¦èªå®
ã®ã¨ã¢ã³ã³ã®é»æºãå
¥ãã¦ãããã®ã¯ãèªå®
ã«å·äºãããã¿ããã§ã¨ã¦ãã¯ã¯ã¯ã¯ããã
ä»å¾ã®äºå®ã¨ãã¦ã¯ãRaspberry Pi 2ã«æ¸©åº¦ã»ã³ãµãä»ãã¦ãèªå®
ã®å®¤æ¸©ãæãã¦ããã£ãããå·æ¿ã«ãããææ¿ã«ãããèªåã§å¤æããããã«ãã¦ã¿ããã