2016년 12월 4일 일요일

라즈베리파이 기반 네트워크 감시 카메라

본 글은 라즈베리파이 기반 감시 카메라를 만드는 방법을 간략히 정리한다.

네트워크로 연결된 감시카메라는 최소 6~7만원, 모션 감지 등 고급 기능이 지원되는 제품은 몇 십만원 이상 넘어간다. 하지만, motion, motionPie(motion pie, 모션 파이), motionEye(motion eye, 모션 아이)를 이용하면, 몇 만원으로 고급 네트워크 연결 감시카메라를 매우 쉽게 만들어 사용할 수 있다.

이 글에서 사용한 재료는 다음과 같다.
  • 라즈베리파이 2 Model B
  • USB Camera 


아래 내용을 따라하기 전에, 반듯이 라즈베리파이의 유선이나 무선 네트워크가 제대로 설정되어 동작되고 있어야 한다. 무선 네트워크 사용 시 라즈베리파이와 motion에 접속하는 컴퓨터의 무선 네트워크 SSID가 동일해야 함에 주의한다.

참고로, 외부IP에서 접속하고 싶다면, 공유기 기능 등을 통해 외부IP 접속 설정이 가능하다. 그럼 집 밖에서 여행 중일 때도, 영상을 원격으로 모니터링할 수 있다.


motionEye 기반 감시카메라
motionEye는 motionPie란 감시카메라 패키지를 개선한 버전이다. motionEye를 사용하기 전에 라즈비안 운영체제 이미지를 mini SD 카드에 복사해 놓는다.
라즈비안 운영체제 이미지 복사 방법은 다음과 같다.
라즈비안 운영체제를 라즈베리파이에서 부팅한후, 터미널을 열어 다음 링크를 참고해, motionEye 패키지들을 설치한다.
motionEye 서비스를 시작한 후, 다른 컴퓨터에서 인터넷창에 라즈베리파이 IP주소와 8765포트를 입력하면, 다음과 같이 네트워크로 연결된 카메라 영상을 원격으로 확인할 수 있다.

motionEye 원격 CCTV 모니터링 화면

motionEye는 모니터링 화면의 변화에 따른 모션 인식과 모션이 감지되었을 때 행위(사진 캡쳐, 영상 녹화, 메일 전송 등)를 설정하는 기능이 있다. 다음은 모션이 감지되었을 때, 사진을 캡쳐하도록 설정한 모습이다. 


이렇게 모션에 따른 액션이 설정되면, 다음과 같이, 카메라 화면의 오른쪽 상단 아이콘 중 사진 버튼을 통해, 그 때 캡쳐된 사진을 확인할 수 있다. 모션 발생 시 동영상 녹화도 같은 방식으로 실행될 수 있다.



motionPie 기반 감시카메라
motionPie는 오픈소스 기반 감시 카메라 기능을 지원하는 패키지로 현재는 motionEye 버전까지 릴리즈된 상태이다. 다음 은 설치 방법을 알려주는 링크와 영상이다.

motionPi 기반 라즈베리파이 감시 카메라

motionPie는 라즈베리파이 이미지를 지원하므로, 그냥 mini SD 메모리 카드에 이미지를 복사해 넣으면 된다. 이미지는 다음 링크에서 다운로드할 수 있다. 
라즈베리파이용 motionPie로 부팅을 하고, 영상에서 말한 것처럼 설정하면 모션 감지, 스케쥴 등록 등 다양한 기능이 지원되는 네트워크 카메라를 사용할 수 있다.


motion 기반 감시 카메라
motion 패키지를 이용해도, 네트워크 연결되는 감시 카메라를 손쉽게 개발할 수 있다. motion 패키지는 apt-get install 로 손쉽게 설치되므로, 원격 감시 카메라를 만들 때 가장 일반적으로 사용되고 있다. 

다음은 이와 관련된 설치 방법을 알려주는 링크이다.   


지금까지 motionPie, motion을 간단히 설명해 보았다. 여기서 소개하는 기술을 잘 활용하면 매우 저렴한 비용으로 네트워크 연결 감시 카메라를 만들 수 있는 데다, 모션 인식까지 되므로, 여러모로 유용하게 사용할 수 있다.  

댓글 16개:

  1. 설치가 안되요... 깃헛에서 하라는대로 했는데요...

    답글삭제
    답글
    1. https://github.com/ccrisan/motioneye/wiki/Install-On-Raspbian

      설치 안되는 부분이 어디인가요? 참고로, 무선 네트워크 사용 시 라즈베리파이와 motion에 접속하는 컴퓨터의 무선 네트워크 SSID가 동일해야 합니다.

      삭제
    2. pip install motioneye에서 오류(Command /usr/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip-build-Ey4Gmb/pycurl/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-sAh0kP-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /tmp/pip-build-Ey4Gmb/pycurl
      Storing debug log for failure in /root/.pip/pip.log) 이런 오류가 뜨다가 고쳤더니
      지금은 root@your-name:~# pip install motioneye
      -bash: /usr/bin/pip: No such file or directory 아예파일을 찾을수가 없습니다

      삭제
    3. 최근 일이 몰려 답장 못드렸습니다. 죄송합니다.
      아마 pycurl 라이브러리 패키지 설치에 오류가 있는 것 같습니다. 한번 아래처럼 재설치 해보세요.

      sudo apt-get -f install
      apt-get install python-pycurl

      참고로, 스택오버플로나 깃허브에 관련 이슈들이 올라와 있습니다. 참고하시길 바랍니다.
      https://stackoverflow.com/questions/40620463/issues-installing-motioneye-on-raspberry-pi-2
      https://www.google.co.kr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0ahUKEwj887m7w6DUAhVEVbwKHRuQAf4QFggrMAE&url=https%3A%2F%2Fgithub.com%2Fccrisan%2Fmotioneye%2Fissues%2F204&usg=AFQjCNGEf1A58gZxStyDsDWyJMK9M-LA5w&sig2=K0KfucCeFQBTJjVBxxtWSA
      http://pycurl.io/docs/latest/quickstart.html

      삭제
  2. 감사합니다 해결했습니다. 이 motion 프로그램 졸업작품에 써도되는 프로그램인가요??? 깃헙에 공유되있어서 적용해봤는데요

    답글삭제
    답글
    1. 오픈소스라 큰 문제는 없을 듯 합니다만.. 오픈소스 라이센스 정책에 따라 다릅니다. 만약 본인이 만든 제품을 판매해 돈을 버는 얻을 경우, 소스파일이나 readme 같은 곳에 인용을 표시를 하거나, 개발자 본인에게 알려달라고 하는 경우, 라이센스를 돈을 받고 파는 경우 등 다양합니다. 아애 명시를 안해도 되는 경우도 있고요. 참고하시길 바랍니다.

      삭제
  3. 프레임 향상 시키는법 있을까요 2~3프레임이라 너무 뚝뚝끊겨서요

    답글삭제
    답글
    1. 저는 초당 2~3 프레임 보다는 더 빨랐습니다. 이상하네요. 우선, WiFi 트래픽이 너무 많은지 속도 확인해 보세요. 성능 체크는 http://www.ntrexgo.com/archives/29335 링크 참고하시길 바랍니다. 오버클럭킹 등 속도 높이는 기법이 있습니다. motion 감지시에만 레코딩하도록 설정해 보시길 바랍니다.

      삭제
  4. 모션아이 시작하는 부분을 모르겟는데 어떻게 하는건가요?

    답글삭제
    답글
    1. 위에 글 처럼 IMG 구워서 부팅하셨나요? 이후에는 아래 링크에 있는 콘솔 명령으로 패키지 설치하시면 됩니다.

      https://github.com/ccrisan/motioneye/wiki/Install-On-Raspbian

      삭제
    2. 이미지는 해결했습니다 감사합니다.
      systemctl daemon-reload
      systemctl enable motioneye
      systemctl start motioneye
      이부분이 실행이 안되네요...

      Failed to restart motioneye.service:Access denien 라는 오류가 뜨네요...

      삭제
    3. 작성자가 댓글을 삭제했습니다.

      삭제
    4. ssh 사용 가능 하게 해놨는데 혹시 putty같은 프로그램 원격으로해서 한번 확인해주실수 있으신가요? qowotpqls@naver.com 여기로 답장주시면 감사하겠습니다 IP랑 ID , 비밀번호 알려드릴게요

      삭제
    5. 제가 해외출장중이라ㅎ 어렵습니다.

      삭제
  5. systemctl daemon-reload
    systemctl enable motioneye
    systemctl start motioneye
    이부분이 실행이 안되네요...

    Failed to restart motioneye.service:Access denien 라는 오류가 뜨네요...

    답글삭제
    답글
    1. failed to start service access denied raspberry pi 관련해, 접근 제어 관련된 몇몇 글들이 있습니다. 참고하시길 바랍니다.

      https://raspberrypi.stackexchange.com/questions/26720/access-denied-when-starting-systemd-service

      삭제