【Raspberry pi】自宅スマートホーム化その2【EchoDot】
2019年5月5日の記事の続きです。
記事は↓
SLackとの連携
hubotというbotを使います。
hubotとは、raspberryに常駐してSlackに対してメッセージの受信や送信といった動きをしてくれます(たぶん)。
厳密にはもっとすごい子らしいけどまぁよくわからなくてもどうにかなるのがいいところです。
hubotの導入
下記ページを参考にさせていただきました。
hubotのスクリプト
hubotをインストールした下記スクリプトディレクトリにcoffeeスクリプトをつくりました。
/home/pi/hubot/pibot/scripts
とりあえずテスト用ということでtest.coffeeです。
中身はこんな感じにしました。
# Description
# A Hubot test script
#
# Configuration:
# None
#
# Commands:
# test
#
# Author:
# Di-nomodule.exports = (robot) ->
robot.respond /test/i, (msg) ->
msg.send 'test-OK'
robot.respond /mylighton/i, (msg) ->
@exec = require('child_process').exec
command = "python /var/www/html/irm.py -p -f /var/www/html/MyLight-ON.json"
msg.send "MyLight-sta.json"
@exec command, (error, stdout, stderr) ->
msg.send error if error?
msg.send stdout if stdout?
msg.send stderr if stderr?
robot.respond /mylightoff/i, (msg) ->
@exec = require('child_process').exec
command = "python /var/www/html/irm.py -p -f /var/www/html/MyLight-OFF.json"
msg.send "MyLight-end.json"
@exec command, (error, stdout, stderr) ->
msg.send error if error?
msg.send stdout if stdout?
msg.send stderr if stderr?
どうもよくわかってはいませんがとりあえず解説です。
最初にコメントで題名や作者等々書いています。これがないとhubotがエラーメッセージを出力するみたいです。まぁエラーが出たからと言って動作に支障はないみたいです。
「robot.respond /test/i, (msg) ->」
ここでslack上のメッセージの監視を行っております。
この場合”test”という単語があれば動作を行うという感じです。
「msg.send 'test-OK'」
見たまんまです。
”test-OK”というメッセージをslackに出力しています。
その1の記事でtestと言われたらというのは実はこのためです。
「@exec = require('child_process').exec
command = "python /var/www/html/irm.py -p -f /var/www/html/MyLight-OFF.json"」
pythonプログラムを動かいたいので、コマンドでpythonプログラムを起動します。
「@exec command, (error, stdout, stderr) ->
msg.send error if error?
msg.send stdout if stdout?
msg.send stderr if stderr?」
一応エラー系メッセージがでたら(でないでほしいけど)同じくslackに出力します。
そんなに難しいことをしていません。
たんにキーワードとなる単語のメッセージがきたら決まったpythonプログラムを動かすだけです。
とりあえずこれでAlexa~slack~raspberryまで来ました。
あとは赤外線関連ですがそれはその3でやります。