0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

fswebcamで撮影した画像をtwythonを使ってツイートする (環境構築)

Last updated at Posted at 2017-09-25

動機

元々は、文ちゃん(文鳥)の住んでるケージ周辺の日中の環境(温度・湿度)をモニターしたかったのが始まり。
その為、ラズパイでLチカから勉強し始めたんだけど、色々自理由をつけていつの間にかフェードアウト。。。
しばらくして、ラズパイとUSBカメラが接続できて、写真をキャプチャ出きる事を知り、
何かできそうなのでやってみようと方向転換。

よって今回の最終目標を、
写真で文ちゃんの日中の挙動をカメラで定期的に撮影し、Twitterに投稿する。そして仕事場から見て楽しむ:heart:
とした。

目次

  1. 使った機材
  2. 環境構築(ラズパイ&開発環境) 
  3. アプリ開発
  4. コードの置き場所とbotの紹介

※記事を書いていて長くなってきたので、今回は2.環境構築までに留める。

使用機材

  1. Raspberry Pi3 Model B
  2. エレコム WEBカメラ 200万画素 マイク内蔵
  3. 文ちゃん d17fJOxh_400x400.jpg

ラズパイ側の環境構築

ログなどを取り忘れていたので、主に参考にしたサイトのリンクのみ・・・

ラズパイのバージョン

raspberrypi% uname -a
Linux raspberrypi 4.9.50-v7+ #1035 SMP Wed Sep 13 23:16:24 BST 2017 armv7l GNU/Linux

外から接続することを考えて公開鍵認証のみのログインに変更

Raspberry Piに公開鍵認証を使ってssh接続する

crontabがエラーを吐いて実行されていなかったので、postfixをインストールし解決

Cronの使い方

時刻同期を修正

  • crontabの実行時間にズレがあったので、ntp.confのサーバの設定を近くのサーバに修正&サービスを再起動し確認。

    ntp.conf
    # pool.ntp.org maps to about 1000 low-stratum NTP servers.  Your server will
    # pick a different set every time it starts up.  Please consider joining the
    # pool: <http://www.pool.ntp.org/join.html>
    server ntp1.eonet.ne.jp
    server ntp2.eonet.ne.jp
    
  • 動作確認

    raspberrypi% ntpq -p
         remote           refid      st t when poll reach   delay   offset  jitter
    ==============================================================================
    *ntp1.eonet.ne.j 133.243.238.164  2 u  887 1024  377   10.998   -0.098   0.973
    +ntp2.eonet.ne.j 133.243.238.244  2 u  211 1024  377   11.798    0.015  50.588
    
    

fswebcamをインストール

USBカメラでキャプチャを行うためのアプリをインストール&キャプチャできる事を確認。

  • インストール

    raspberrypi% sudo apt-get install fswebcam
    
  • USBカメラが接続されているか確認。 Device 004で認識されている。

    raspberrypi% lsusb
    Bus 001 Device 004: ID 056e:7016 Elecom Co., Ltd
    Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 
    Fast Ethernet Adapter
    Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    
  • キャプチャできる事を確認。

    raspberrypi% fswebcam hoge.jpg
    --- Opening /dev/video0...
    Trying source module v4l2...
    /dev/video0 opened.
    No input was specified, using the first.
    Adjusting resolution from 384x288 to 352x288.
    --- Capturing frame...
    Captured frame in 0.00 seconds.
    --- Processing captured image...
    Writing JPEG image to 'hoge.jpg'.
    

auth.logをみると案の定アタックを受けているので、fail2banを導入 (2017.10.13追記)

  • インストール

    raspberrypi% sudo apt-get install fail2ban
    raspberrypi% cd fail2ban
    raspberrypi% pwd
    /etc/fail2ban
    
  • jail.confをjail.localをコピーし設定

    raspberrypi% sudo cp jail.conf jail.local
    
  • DEFAULTのbantimeを10分(600秒) -> 一日(86400秒)に変更

    raspberrypi% diff jail.conf jail.local
    30c30
    < bantime  = 600
    ---
    > bantime  = 86400
    
  • 再起動

    raspberrypi% sudo systemctl restart fail2ban
    
  • 起動確認

    aspberrypi% systemctl status fail2ban
    ● fail2ban.service - LSB: Start/stop fail2ban
       Loaded: loaded (/etc/init.d/fail2ban)
       Active: active (running) since 金 2017-10-13 21:38:56 JST; 13min ago
      Process: 11001 ExecStop=/etc/init.d/fail2ban stop (code=exited, status=0/SUCCESS)
      Process: 11017 ExecStart=/etc/init.d/fail2ban start (code=exited, status=0/SUCCESS)
      CGroup: /system.slice/fail2ban.service
           └─11029 /usr/bin/python /usr/bin/fail2ban-server -b -s /var/run/fail2ban/fail2ban.sock -p /var/run/fail2ban/fail2ban.pid
    
  • 参考リンク
    DoS攻撃/DDoS攻撃からサーバーを守る方法(fail2banのススメ)


システム関連の設定はここまで。開発言語はライブラリの豊富さと触ってみたいという興味からpython3を選択。
そして、環境構築も知りたかったので下記の内容で構築。

  • 使用言語 : python ver.3.6.1
  • バージョン管理 : pyenv
  • ライブラリ管理 : virtualenv

pyenvのインストール

  • pythonのバージョンを動的に切り替えるようにpyenvを導入
    Raspberry PiでのPython 3.5環境構築

  • インストール後にコマンドが実行できるか確認。

    raspberrypi% pyenv --version
    pyenv 1.0.10-22-g3292200
    
  • pythonインストール完了後に、ver.3.6.1をGlobalに設定

    raspberrypi% pyenv install 3.6.1
    pyenv: /home/pi/.pyenv/versions/3.6.1 already exists
    continue with installation? (y/N) y
    Downloading Python-3.6.1.tar.xz...
    -> https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
    Installing Python-3.6.1...
    Installed Python-3.6.1 to /home/pi/.pyenv/versions/3.6.1
    
    raspberrypi% pyenv global 3.6.1
    raspberrypi% pyenv versions
      system
      2.7.9
      3.5.1
    * 3.6.1 (set by /home/pi/.pyenv/version)
    

virtualenvをpipでインストール

```
raspberrypi% pip install virtualenv
Collecting virtualenv
  Downloading virtualenv-15.1.0-py2.py3-none-any.whl (1.8MB)
    100% |████████████████████████████████| 1.8MB 143kB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-15.1.0
raspberrypi% pip list
---- 省略 ----
virtualenv (15.1.0)
```
0
2
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
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?