Orange Pi Zero로 Slack 전송의 정점 카메라를 만들어 보았다
11266 단어 RaspberryPiImageMagickorangepiIoT슬랙
Orange Pi Zero
를 사 받았으므로, USB 카메라와 연결해 놀아 보았습니다.Orange Pi란?
Orange Pi
는 Raspberry Pi
와 비슷한 느낌으로 Linux가 움직일 수 있는 소형 컴퓨터입니다.USB·LAN 케이블 넣는, WiFi라든지 붙어 있는, 약 800엔으로 우송료 포함으로 1000엔 조금, 싸다.
그 중에서는
armbian
라는 Debian계의 OS가 움직이고 있는 상태입니다.USB 카메라
구르고 있던 ELECOM의 카메라를 사용합니다.
웹캠을 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
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_TOKEN
와 SLACK_CHANNEL
에 Slack 로부터 취득한 것을 설정해 주세요잘하면 이런 식으로 게시됩니다.
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 애니 만들기 태스크 만들기
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
그리고 완성 된 것은 이것입니다.
끝
이번에
Orange Pi
를 처음 사용해 보았습니다만, 보통으로 Raspberry Pi
를 똑같이 사용할 수 있었다Raspberry Pi Zero W
도 발매되었습니다만, 전혀 구할 수 없기 때문에 대용으로 Orange Pi Zero
꽤 좋을지도 모른다일본에서는 이 WiFi 사용하면 기적 경찰에 화를 낼 수 있으므로 주의!
fabric 사용했지만, 이번에 필요 없었던 생각이 든다···
Reference
이 문제에 관하여(Orange Pi Zero로 Slack 전송의 정점 카메라를 만들어 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/narikei/items/1be8eacf5ee8905c6d3e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)