IoT なデバイス、littleBits の cloudbit を利用して、ChatOps 的なことをやってみます。
てことで
- slack で何かコマンドを入れる
- hubot に処理が渡る
- hubot から cloudbit へ信号を送る
というのを試してみました。
準備
- slack と hubot を連携できる環境を作っておく
- cloudbit のセットアップを済ませておく
(設定はここから → http://control.littlebitscloud.cc/) - cloudbit の Device ID と AccessToken を取得しておく (cloudbit設定画面の "SETTING" メニュー内にあります)
サンプルコード
hubot にこんな感じのコードを追加
_DEVICE_ID = 'cloudbitのデバイスID'
_ACCESS_TOKEN = 'cloudbitのアクセストークン'
module.exports = (robot) ->
robot.respond /cloudbit test/i, (msg) ->
data = JSON.stringify
percent: 100 # 信号の強さ
duration_ms: 1000 # 何ミリ秒信号を送るか
robot.http("https://api-http.littlebitscloud.cc/devices/#{_DEVICE_ID}/output")
.header('Authorization', "Bearer #{_ACCESS_TOKEN}")
.header('Accept', 'application/vnd.littlebits.v2+json')
.header('Content-Type', 'application/json')
.post(data) (err, res, body) ->
msg.send 'ピコーン'
post するデータの percent や duration_ms は、信号の強さと長さの指定です。適当な数字にしときます。
試す
slack で
hubot cloudbit test
と入力すれば、slack 〜 hubot 経由で cloudbit に信号が送られます。
Jenkins とか New Relic から slack にアラートが流れる → cloudbit 経由で音が鳴り響く! とかできるんじゃないかなー