この記事は最終更新日より2年以上経過しています。内容が古くなっている可能性があります。

【フレキシブル基板にチャレンジ!】新3Dプリンター編[2]:監視カメラ

【フレキシブル基板にチャレンジ】シリーズ とは
エレファンテック技術ブログ新企画、東工大の学生が初めてフレキシブル基板を使って、実際に電子工作する試行錯誤のレポートをお届けします。
電卓編、ロボットアーム編に続き、次のシリーズとして新3Dプリンター編のスタートです。今後ともよろしくお願いします!

【フレキシブル基板にチャレンジ】シリーズ 記事を全部見る

ご挨拶

どうも、高橋です。

前回ちょっとだけ触れた、Raspberry Piを用いた監視カメラについてのお話です。基板の話は一回も出てこないけど…

 

3Dプリントにおけるモニターの意味

悲しいことに、3Dプリンターにはエラーがつきものです。原因としてはプレートの水平の調整をしていなかったとか、フィラメントが切れたとか、あるいは違うフィラメントの設定で送っていたとか…そういうミスがあると、印刷が途中で止まってしまったり、あるいは最初の方でフィラメントがプレートからめくれあがってノズルに絡みついてもうぐちゃぐちゃ…なんてことも。

印刷に15時間かかるモノをセットして意気揚々と帰宅、翌日確認しに来てみたら…

△15時間かけて作ったゴミ

 

人間がずっと張り付いていられればいいんですが、そうもいかないのでとりあえず画像としてだけでも印刷の様子を確認出来たらいいですね、ということで作ってみました。

Raspberry Pi

ご存知の方も多いとは思いますが、Raspberry PiとはLinuxの乗った小さいコンピュータのようなものです。

モニタも無ければ電源ボタンも無く、ストレージは自分でmicroSDを挿さなければいけませんが、無線LANやUSB機器、HDMI出力やGPIO(汎用入出力)を備えており電子工作とIoTをやる人にとっては非常に便利なデバイスです。

まあ今回はUSBカメラを使うだけなのでGPIOとか要らないんですが

ところで、Elephantechは社内連絡にSlackを導入しているため、Slackのbot経由で監視出来たらいいなあという願望が。でもSlackのbotを一から作る力は無いので何か手軽なツールないかなあと探していたところ、割とすぐに出てきました。

https://hubot.github.com/

 

早速製作

手順としては、

  1. Raspberry PiにHubotをインストール
  2. HubotとSlackを連携させる
  3. Hubotに写真を撮る機能を持たせる
  4. Hubotを自動で起動するように設定する

となります。

以下参考文献。

https://qiita.com/rarapo/items/aeb60d2f315be245911f

https://www.kabegiwablog.com/entry/2017/09/26/113000

https://qiita.com/KeitaMoromizato/items/d9130b3f6c04292c129d

だいたいここに書いてあることをやればできた(投げやり)

ただちょくちょくうまくいかない点があったのでそこだけ解説します。

 

とりあえず、根幹であるBotの実行プログラム、sample.coffeeが以下になります。

module.exports = (robot) ->
  robot.respond /camera/, (msg) ->
    @exec = require('child_process').exec
    command = "fswebcam sample.jpg;
    curl -F file=@/home/pi/mybot/sample.jpg -F channels=xxxxxxxx -F token=xoxb-9999(改行)
999999999999-XXXXXXXXXXXXXXXXXXXXXXXX https://slack.com/api/files.upload"
    msg.send "just a moment..."
    @exec command, (error, stdout, stderr) ->
      msg.send error if error?

改行のところは実際には改行なんてしてないです

この、赤字で示したcameraのところを任意のキーワードにすることで、そのキーワードに反応してその下のコードが実行されます。

fswebcamで写真を撮影し、それをcurlコマンドで… この-Fって何でしょうね

とりあえずtokenと実際に写真を送りたいチャンネルのIDを指定することで、just a moment… と送った後に写真が送信されてきます。

 

ただ、自動起動の設定で躓いたので追記。3つ目のページの手順1のbin/hubotの書き換えについて、

#!/bin/sh

set -e

npm install
export PATH="node_modules/.bin:node_modules/hubot/node_modules/.bin:$PATH"

forever start -c coffee node_modules/.bin/hubot -a slack
# exec node_modules/.bin/hubot "$@"

となっているところを

#!/bin/sh

set -e

npm install
export PATH="node_modules/.bin:node_modules/hubot/node_modules/.bin:$PATH"

export HUBOT_SLACK_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

forever start -c coffee node_modules/.bin/hubot -a slack
# exec node_modules/.bin/hubot "$@"

と変更。加えて、手順2の/etc/init.d/hubotの編集のところの

#!/bin/sh
DIR="hubotのディレクトリパスを書く"
cd $DIR
sudo -u pi ./bin/hubot

を、

#!/bin/sh
DIR="hubotのディレクトリパスを書く"
cd $DIR
sudo ./bin/hubot --adapter slack

と変更。

これで動くようになりました!

 

稼働の様子

こういう感じで、リプの形でメッセージを飛ばすと写真を返してくれます。

これでチャンネル内の誰でも監視カメラが使えるようになりました!!

 

余談

消灯確認にも使えるっていう話。

一台6000円くらいで出来るので、1フロアに1台置いてもいいんじゃないでしょうか?