$30 off During Our Annual Pro Sale. View Details »

ラズパイとスラックで作るミーティングスペースモニタリングツール

 ラズパイとスラックで作るミーティングスペースモニタリングツール

ラズパイとスラックで社内のミーティングスペースをモニタリングする装置を作りました。
@TFUG沖縄 vol. 4

ieiriyuki

July 20, 2019
Tweet

More Decks by ieiriyuki

Other Decks in How-to & DIY

Transcript

  1. RaspiとSlackでミーティング
    スペースのモニタリング
    2019-7-20
    家入雄樹

    View Slide

  2. 自己紹介
    名前: 家入雄樹
    所属: ブレインパッド
    職種: データサイエンティスト
    専門: データいじり
    そのほか: TFUG 福岡にも登壇しました
    http://blog.brainpad.co.jp/entry/2018/11/28/112907
    http://blog.brainpad.co.jp/entry/2019/07/09/110739
    GCPとAWSの資格とったりしました

    View Slide

  3. 合宿をしました
    6月に社内の有志で合宿を行いました。
    目的:
    ● 部署・役職を超えた交流
    ○ 入社1ヶ月 ~ 10年目
    ● 目標観の共有
    ○ 今後こうしたい
    ● これやりたい!をやる
    ○ 社内便利ツール
    3チームに分かれて取り組み

    View Slide

  4. もくもく組Aが取り組んだもの
    ラズパイとスラックでミーティングスペース確認するクン
    設計1人、開発3人

    View Slide

  5. ラズパイでミーティングスペースの確認
    社内のミーティングスペース(通称ファミレス席、会議室とは別)
    行ってみるまで空いてるか分からない
    お手軽に調べる装置が欲しい
    と言い続けて幾星霜
    作ったらええねん!
    空いてるかな...?
    空いてた!

    View Slide

  6. アーキテクチャ
    Raspberry Pi 3 B+
    - Linux
    -ランニングコストも電気代のみ
    - wifiでネット接続
    ①Chatの特定のチャンネル
    にコマンド投稿
    ②空間の撮影
    ファミレス席全体をカメラで撮影する
    APIでラズパイへ命令
    自席にいながら席の混雑状態がわかる
    WEBカメラor
    RasPi専用カメラ
    ③画像の確認
    撮影した画像をチャットに返す
    撮影指示
    API経由で画像表示

    View Slide

  7. チャットから指示を送る
    GitHub 製の hubot を使います。
    ラズパイ上でサーバーが動きます。
    ボットに対してメンションをすると写真を撮ってくれます。
    エンジニアの方が担当してくれました。
    (coffee script 何も分からない。Node.js 何も分からない...)
    https://hubot.github.com/

    View Slide

  8. コード: coffee script
    capture というコマンドを受け取ります
    execute.sh を実行します
    ‘Capturing done.’ と返信
    (エラーなどがあれば表示 )

    View Slide

  9. 画像を撮る
    fswebcamを使えば簡単に撮れます。
    ただし、撮影環境ごとにカメラの調整が必要です。
    (やっぱりここが難しい)
    参考: https://qiita.com/stkdev/items/992921572eefc7de4ad8
    https://www.raspberrypi.org/documentation/usage/webcams/

    View Slide

  10. コード: capture
    日時でファイル名を指定
    subprocess でカメラ撮影
    画像へのパスを返します

    View Slide

  11. Vision API で物体検知
    物体検知は object_localization を使います。
    name == ‘Person’ のみ数える。
    返り値が 0 ~ 1 スケールなのに注意。
    画像の編集はPILLOWを使います。
    公式ドキュメントは分かりやすいです。
    https://cloud.google.com/vision/docs/object-localizer?hl=ja

    View Slide

  12. コード: Vision API
    顔検出のチュートリアルを参考
    検出した顔情報を受け取ります
    顔情報に基づいて、 PILLOWで加工
    https://cloud.google.com/vision/docs/face-tutorial?hl=ja

    View Slide

  13. コード: Vision API
    公式ドキュメントのレスポンス例は、実
    際と異なっているが、このような形に
    なっている
    コードの方は正しい
    https://cloud.google.com/vision/docs/object-localizer?hl=ja

    View Slide

  14. コード: Vision API
    object_localization() を使います
    返ってきた JSON の
    localized_object_annotations が検出された物体
    そのうち、name == ‘Person’ であるものを抽出
    物体情報のリストを返します

    View Slide

  15. PILLOW で描画
    画像の編集は PILLOW を使います。
    公式ドキュメントを参考にしました。
    https://cloud.google.com/vision/docs/face-tutorial?hl=ja
    発表者編集

    View Slide

  16. コード: PILLOW
    object_localization() を使います
    返ってきた JSON の
    localized_object_annotations が検出された物体
    そのうち、name == ‘Person’ であるものを抽出
    (OpenCV なんていらないんだ ...!)

    View Slide

  17. スラックに送る
    files.upload API を使います。
    python の slack-client ライブラリなどもあるそうです。
    現状 ID などがベタ書きなのは要修正。
    https://api.slack.com/methods/files.upload

    View Slide

  18. PILLOW で編集された画像を送ります
    チャンネルやアクセストークンなども指定します
    コード: スラックへの送信

    View Slide

  19. デモ

    View Slide

  20. 終わりです
    ご静聴ありがとうございました !

    View Slide