LoginSignup
6
8

More than 5 years have passed since last update.

Orange Pi ZeroでSlack送信の定点カメラを作ってみた

Last updated at Posted at 2017-03-26

会社の部活でOrange Pi Zeroを買ってもらったので、USBカメラと繋げて遊んでみました。

Orange Piとは

image

Orange PiRaspberry Piに似た感じでLinuxが動かせる小型コンピューターです。
image
USB・LANケーブル差せたる、WiFiとか付いてる、約800円で送料込みで1000円ちょっと、安い。

中ではarmbianというDebian系のOSが動いている状態です。

USBカメラ

転がってたELECOMのカメラを使います。

image

WebカメラをOrange Piで使う

USB接続を確認

USBカメラをOrange Piに接続する。

$ lsusb
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 056e:7016 Elecom Co., Ltd 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Elecomってやつがいるので、認識されてるみたい

Bus 002 Device 002: ID 056e:7016 Elecom Co., Ltd

fswebcamをインストール

とりあえずお手軽に撮影できるのでfswebcamをインストールします

$ apt install -y fswebcam

fswebcamで撮影してみる

$ fswebcam test.jpg
$ ls -l test.jpg 
-rw-r--r-- 1 root root 65560 Mar 26 19:29 test.jpg

test.jpg

armbianにはGUIが付いてないため、
画像の確認にはCyberDuckからSFTP経由でダウンロードすると簡単に見られるので便利です

撮影した画像をSlackに送信

pipインストール

$ python --version
Python 2.7.9

$ curl -kL https://bootstrap.pypa.io/get-pip.py | sudo python
$ pip --version
pip 9.0.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)

fabricインストール

$ apt install -y build-essential libssl-dev libffi-dev python-dev
$ pip install fabric
$ fab --version
Fabric 1.13.1
Paramiko 2.1.2

fabric経由で撮影

~/fabfile.py
from datetime import datetime
from fabric.api import local

def camera():
  d = datetime.now().strftime("%Y-%m-%d_%H-%M")
  filename = 'camera_' + d + '.jpg'
  local('fswebcam --no-banner --frame 5 --set 5 --resolution 640x512 ' + filename)
$ fab camera

slackに送信する

$ pip install slacker
~/fabfile.py
from datetime import datetime
from fabric.api import local
from slacker import Slacker

SLACK_TOKEN = 'xxxxxxxxxxxxxxxxxxxxx'
SLACK_CHANNEL = 'xxxxx'

def camera():
  d = datetime.now().strftime("%Y-%m-%d_%H-%M")
  filename = 'camera_' + d + '.jpg'
  local('fswebcam --no-banner --frame 10 --set 5 --resolution 640x512 ' + filename)

  slack = Slacker(SLACK_TOKEN)
  slack.files.upload(filename, channels=[SLACK_CHANNEL])

SLACK_TOKENSLACK_CHANNELにはSlackから取得したものを設定してください

うまくいくとこんな感じで投稿されます
スクリーンショット 2017-03-27 4.36.14.png

cronに登録して定期実行

$ crontab -e
crontab
* * * * * /usr/local/bin/fab camera >>/tmp/cron.log 2>>/tmp/cron-err.log

これで毎分撮影されるようになります

GIFアニメを作成してSlackに投稿する

毎分投稿されるとうざいのでGIFアニメにして10分毎にまとめて投稿されるようにしてみます。

ImageMagicをインストール

$ apt install -y imagemagick
$ convert -version
Version: ImageMagick 6.8.9-9 Q16 arm 2017-03-12 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC
Features: DPC Modules OpenMP
Delegates: bzlib cairo djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png rsvg tiff wmf x xml zlib

GIFアニ作成task作成

fabfileを少し修正して、GIFアニを作ってSlack投稿するtaskを新しく作ります

~/fabfile.py
from datetime import datetime
from fabric.api import local
from slacker import Slacker

SLACK_TOKEN = 'xxxxxxxxxxxxxxxxxxxxx'
SLACK_CHANNEL = 'xxxxx'

def camera():
  d = datetime.now().strftime("%Y-%m-%d_%H-%M")
  filename = 'camera_' + d + '.jpg'
  local('fswebcam --no-banner --frame 10 --set 5 --resolution 640x512 ' + filename)

def slack():
  filename = 'anime.gif'
  local('convert -delay 10 -loop 0 camera_*.jpg ' + filename)

  slack = Slacker(SLACK_TOKEN)
  slack.files.upload(filename, channels=[SLACK_CHANNEL])

  local('rm camera_*.jpg')

cronで10分毎に実行させるように登録

crontab
* * * * * /usr/local/bin/fab camera >>/tmp/cron.log 2>>/tmp/cron-err.log
*/10 * * * * /usr/local/bin/fab send >>/tmp/cron.log 2>>/tmp/cron-err.log

そしてできあがったのがこれ
test.gif

おわり

今回Orange Piを初めて使ってみましたが、普通にRaspberry Piを同じように使えた
Raspberry Pi Zero Wも発売されましたが、全く手に入らないので代用にOrange Pi Zeroけっこう良いかもしれない

日本ではこのWiFi使うと技適警察に怒られるので注意!
fabric使ったけど、今回いらなかった気がする・・・

6
8
0

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
6
8