LoginSignup
1

More than 5 years have passed since last update.

littlebitsでリモートハウスとさらにつながる- slackからlittlebitsでカメラを動かす-

Last updated at Posted at 2016-12-17

追記

cloudbitは技適に対応していない、という指摘があったので運用を止めました。知らなかった:frowning2:日本国内の人はお気をつけください。


この記事はlittleBits Advent Calendar 2016の17日の記事です。

はじめに

毎日家にいるのだが、咳をしても声をかけてくれる人がいないのは寂しい。し、人の目がないとついついだらだらしてしまう。なので、平日は友人数人とビデオチャット(appear.in)でつなぎっぱなしにしています。家が拡張された感じでけっこうよいです。しかし、ずっとPCの前にいるわけでもないので単に壁が映っている時間も結構あり、味気ない。なので、見ている人がネット越しにカメラを動かすことができるようにしました。専用UIを作るよりslackので動かす方が便利だろうということで、slackのbotを入力として使おうと思います。

まぁ普通の家でやるのは気持ち悪いという人が多いと思うんですが、会社にカメラをつないでおいてリモートワーク先の人が様子をわかりやすくする、とかシェアオフィスで誰が飽きているのか見てから行く、とかそういうのにも使えるのではないでしょうか。

作ったもの

Slackのbotに話しかけるとカメラの角度を変えてくれる。角度は0~100の値をbotに言うと、90°を100として動いてくれます。

キャプチャ.PNG
https://www.youtube.com/watch?v=LJvZCmJn2qg

Slack->hubot->littlebitsAPI->cloudbits->サーボモーター、という感じで動きます。

IFTTTでの連携もやってみたが、遅延が大きく使いづらかったのでlittlebitsAPIを利用しました。IFTTTでやるだけなら10分の1くらいの手間でできます。

作り方

little bitsをセットする

cloudbitsの設定

http://control.littlebitscloud.cc/ にアクセスして、案内の通りにやっていけば簡単に設定できます。PCのUSBからだと電力が足りなくて設定に失敗するので注意。
設定後、USBアダプタ->電源ユニット->cloudbits->サーボモーター、とlittlebitsをつなぎます。

hubotとslackと連携させる

http://qiita.com/mochidamochiko/items/29c2d77715d8a1ff062a
上記の記事を参考にさせていただきました。細かいところでつまずきましたが、この辺についてはたくさん記事がある(&自分がよくわからない)ので割愛します。

hubotとcloudbitを連携させる

http://qiita.com/matsuoshi/items/319d271af7240fb59e8c
上記の記事を参考にさせていただきました。

cloudbitの設定画面からDevice ID と AccessTokenを取得。Heroku のダッシュボード > Settingsから環境変数に登録。

_DEVICE_ID = process.env.DEVICE_ID # 環境変数はherokuに登録したものを呼び出す
_ACCESS_TOKEN = process.env.ACCESS_TOKEN # 環境変数はherokuに登録したものを呼び出す

module.exports = (robot) ->
  robot.respond /rotate camera to (.*)/i, (msg) ->
    voltageValue = msg.match[1] 
    data = JSON.stringify
      percent: voltageValue # 電圧の高さ0100%で指定
      duration_ms: -1 # -1で電圧をあげっぱなしにする

    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 'OK, rotate it to ' + voltageValue # チャットから動かす量を取得
      console.error err
      console.log body

これで、@bot名 rotate it to 値(1~100)と話しかけるとその位置にモーターが動くようになりました。

カメラを付ける

適当にあった重い缶の蓋をカットし、サーボモーターをボルトとナットで固定しました。
20161218033040.jpg

カメラはとりあえずガムテープでくっつけただけです。できることがわかったので3Dプリンターでアダプターでも作ろうかなと思っています。
20161218033241.jpg

これから

現状、細かい動き(5だけ動かすとか)ができないのが弱点。あと、エラーのときはbotがちゃんと喋るようにできると良いです。ハード面は、今はガムテープで止めてるのでちゃんとアダプタを作りたいなぁと思っています。

とりあえずしばらく運用してみて様子を見ます。

今回はid:htomineのちからをだいぶん借りました。ありがとう!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1