www.smiyasaka.com は、 2019 年2月から SSL 化し 通信を暗号化した方式で発信をしています。
● fswebcam で 定点カメラ( Web ライブカメラ )を実現する ● アクセス数 昨日 8 今日 5
  累計 21,806   

このページは、私が、定点カメラの映像を表示したいために、 fswebcam のインストール・設定に関
し、いろいろな関連サイトを検索し、試行錯誤してうまく動作した結果を忘備録としてまとめたもの
です。

H27.03.11 追記
現在 Linux のシステムは、CentOS 7.7.1908  64bit を使用しています。
ただし、この CentOS のバージョンでは、fswebcam-20100622 を使用しないとタイトル・タイムスタ
ンプに文字を表示することが出来ません。なお、カメラは、Logicool のUVC対応 USB カメラを使用し
ています。 

カメラ用ソフト・fswebcam と USB カメラの動作は、
VineLinux とCentOS , Fedora , Momonga Linux 7 Scientific Linux , Momonga Linux 等で、確認し
ています。ただし、BUFFALOのカメラは、VineLinux 6.X と CentOS 6.X, 7.X・Fedora・Momonga 
Linux 7 では、動作しません。

         ※※   下の映像は、fswebcam で実現した 1分更新の定点カメラの映像です。  ※※
         fswebcam のバージョンは、CentOS 7.X なので、fswebcam-20100622.tar.gz です。
=================================================================================
	目	次
  [○○○○]のクリックで、その項目の内容が目次の下に表示、再度クリックで非表示になります。
    本文を総て先読み非表示(折り畳み方式)し、目次のクリックで表紙する方式を採用しています。
                
---------------------------------------------------------------------------------
     ※ [ 総てを表示する ] ※ [ 総てを表示する 非表示 ] ※
      1. [ 使ったカメラ ] [ 使ったカメラ 非表示 ]
      2. [ fswebcam rpm ファイルでのインストールと設定 ] [ fswebcam rpm ファイルでのインストールと設定 非表示 ]
      3. [ 撮影・保存を実行するプログラム(シェルスクリプト)の作成 ] [ 撮影・保存を実行するプログラム(シェルスクリプト)の作成 非表示 ]
      4. [ 定点カメラとして、1分ごとに、写真を撮影させる設定 ] [ 定点カメラとして、1分ごとに、写真を撮影させる設定 非表示 ]
      5. [ ライブ定点カメラとして、ホームページが公開できるようにする ] [ ライブ定点カメラとして、ホームページが公開できるようにする 非表示 ]
      6. [ 10分毎の写真データの保存・消去 ] [ 10分毎の写真データの保存・消去 非表示 ]
      7. [ fswebcam でUSBカメラの明るさの補正方法 ] [ fswebcam でUSBカメラの明るさの補正方法 非表示 ]
      8. [ fswebcam ソースファイルでのインストールと文字化けの対策 ] [ fswebcam ソースファイルでのインストールと文字化けの対策 非表示 ]
      9. [ 定点カメラの設置位置の工夫 ] [ 定点カメラの設置位置の工夫 非表示 ]
      10. [ お断り・表示画面 ] [ お断り・表示画面 非表示 ]
      11. [ ミニ PC を使ってネットワークカメラシステム( 10 秒更新 )の作成 ] [ ミニ PC を使ってネットワークカメラシステム( 10 秒更新 )の作成 非表示 ]

---------------------------------------------------------------------------------
=================================================================================
  定点カメラを簡単に実現する方法
=================================================================================
方法は、ネットワーク対応のカメラを使うことです。このカメラは、同一 LAN 内では、動画を簡単に
再生できます。
ただし、同一の LAN 内からの公開は、出来ないようです。?  しかし、静止画なら実に簡単に、出来
ます。その方法は、カメラ自身に、サーバ機能があり、その中の機能で スケジュールによる静止画の
送信があり、FTP 機能で決まった時間ごとに指定した PCへ静止画を送出してくれることを利用すると
実に簡単に定点カメラが実現してしまいます。
ホームページ側での表示処理は、ただ書き込まれた jepgデータを指定するだけと、送られてくる時間
間隔に合わせたデータ更新だけの処理で済みます。 
インストールとかCRONTAB等難しい設定は、一切いりません。
CRONTABでは、最低の間隔は、1分ですが、1分以下での更新が可能になります。
(私のホームページでは、PC の負荷を考慮して10秒で静止画の更新をしています。)

私のホームページで、紹介していますので、見てください。その他の情報は、「親父の部屋」で紹介
しています。
---------------------------------------------------------------------------------
=================================================================================
  1.  使ったカメラ
=================================================================================
UVC(USB Video Class) 対応Webカメラ(BUFFALO 200万画素Webカメラ BSW20K06HBK) フォーカス固定
(130万画素よりはるかに鮮明です。当初は、ELECOMの130万画素を使用していました。)
UVC対応のカメラでしたら、必ず認識すると思います。  認識の確認は、cat /proc/bus/usb/devices
のコマンドを実行し、 "・・・USB PC Camera"の文字があればカメラは、認識されています。
(下記に、詳細を記述しています。)
参考:カメラは、近距離では、30万画素くらいでも良いのですが、風景では、200万画素以上の 固定
焦点の物を選んだ方が良いようです。
フォーカスのあるカメラは、風景の撮影では、ピントがあまくなります。
※ 白とびするUSBカメラに注意 ※  ( ※ 白とび とは、映像が、白ぽっくつぶれてしまうこと ※ )
BUFFALOのBSW20K06Hのカメラは、屋外を撮影しても、白とびしません(画像がチョット暗いのが
気になります。)が、ELECOMのUCAM-DLB200TAWHのカメラは、白とびが激しく、オートフォーカスさえ
まともに動きません。  130万画素のUCAM-DLU130HWHも白とびします。

どのカメラも室内撮影に関しては遜色(そんしょく)無く綺麗な映像が撮れます。 

明るさの補正をしてみましたが、BUFFALOのカメラの様に綺麗な画像には、成りませんでした。
BUFFALOのBSW20K06Hのカメラ映像は、チョット暗いので、+10% 程明るさ・コントラストを補正してみ
ました。

補正の仕方は、「 7. fswebcam でUSBカメラの明るさの補正方法 」で紹介しています。

※ Vine Linux6.1 でのUVC対応カメラの疑問 ※

同じUVC対応のカメラが、Vine Linux6.1では、ELECOMのカメラだけ動作し、BUFFALOのカメラは、
パターンエラーになり、動作しないことが、判明しました。
( 一回目の起動時だけは、正常に動作し、その後は、すべてエラーになります。)

H24.11.02  ELECOM UCAM-DLA200HWH 手動フォーカス・200万画素を試験的に購入。
Vine Linux6.1 で動作しました。BUFFALOと比較すると劣りますが、白とびも少ないです。
この機種は、妥協すれば使用出来そうです。難点は、フォーカスが、シャープすぎること。
ELECOMの三機種(UCAM-DLB200TAWH,UCAM-DLA200HWH,UCAM-DLU130HWH)が、 Vine Linux6.1   動作する
ことから、ELECOMのUVC対応のカメラは、すべて動作するのではないかと思われます。

他のLinuxで試したところ、CentOS6.1〜6.4、Fedora13〜17でも同じ現象になりました。
私の勝手の推測ですが、最新のカーネルのバージョンでは、BUFFALOのカメラは、使えないようです。
      ※※  参考ですが、motionの動画も試しましたが、同じでした。※※

H25.04.06 追加

Logicool C270 というUSBカメラを CentOS 6.4 で動かしてみました。
動作結果は、OK でした。ただし、輝度・明るさを Brightness=65% と Contrast=15% 位に調整しない
と綺麗な映像にはなりません。  ELECOM のカメラ様に、白とびは、無いようです。

H27.01.12 追加

Logicool C270 のカメラは、固定フォーカスですが、遠距離では、再調整が必要の様です。
 ( 今回、2個購入したら2個とも近距離は、良いのですが、遠距離では調整不良品でした。)
下記は、フォーカスを調整する方法です。分解すると保証がきかないのであくまでも自己責任で行っ
てください。

[ Logicool HD Webcam c270 カメラ フォーカス調整方法 ] の詳細は、
                                                 [ここをクリック]してください。

H27.03.12 追加

USB カメラの寿命に関しての報告
私のサーバ機では、Logicool C270 を使用していますが、2年ほどで輝度調整が時々不調になる現象
が発生しました。
また、色合いも「青」が弱くなってきました。今現在のカメラは、今年の3月の始めに交換したもの
で映を発信しています。
青空が綺麗に撮影されています。 下記の写真は、新旧のUSBカメラ( C270 )で雲の多い日に同時に同
じ風景を撮影した写真です。雲の見え方の違いが良く分かると思います。

	       新しいUSBカメラの映像                   2年ほど使用したUSBカメラの映像
cameradata.jpg  stop1.jpg
H29.08.06 追記 Logicool C270 のカメラ 平成 27 年 3 月に使用開始したカメラが、本日ダウンしました。 寿命としては、1 〜 2.5 年くらいです。再使用は出来るので予備機( 何時ダウンするかの危険があり ますが )としています。 ---------------------------------------------------------------------------------
=================================================================================
  2.  fswebcam rpm ファイルでのインストールと設定
=================================================================================
  CentOS でのインストールは、別ページで紹介していますので、メインメニューから、
  各ページにジャンプして参照してください。
---------------------------------------------------------------------------------
     ●  Vine Linux で fswebcam rpm ファイルをインストールする。

 fswebcamは、静止画を一回撮影するだけの機能しかないのですが、まずは、インストールします。
---------------------------------------------------------------------------------
 ○ インストールの準備
 fswebcam-20140113.tar.gz は、[ ここをクリックして ] ダウンロードしてください。
 fswebcam-20100622.tar.gz は、[ ここをクリックして ] ダウンロードしてください。
 私の場合、windows7側でダウンロードして、FFFTPで、Linux側へ転送し、操作は、windows7側から
 TeraTermで行いました。
 インストールの前に下記二つのモジュールをインストールします。
 直接インストールモジュールをrpm -ivh gd-2.0.35-5vl5.i386.rpmをインストールするか、
 # apt-get update or yum update
 # apt-get install gd or yum install gd	<---- これが無いとエラーがでます。
 で、インストールします。
---------------------------------------------------------------------------------
○ インストールコマンド	
 # rpm -Uvh fswebcam-20070108-1.i386.rpm 

※※ fswebcom のインストールの詳細 ※※

サイドメニューの各種 Linux の「 インストールとサーバ構築 」の「 fswebcom のインストールと定
点カメラの設定 」の項で各 Linux OS バージョンに合ったインストールの詳細を紹介しています。
特に「 依存関係のあるモジュール 」の事前インストールについては、良く確認してください。
---------------------------------------------------------------------------------
○ 動作確認
  下記のコマンドを実行する。
 #/usr/bin/fswebcam -p YUYV --top-banner --line-colour '#FF000000'\
 --banner-colour '#FF000000' -S 6 -r 640x480\
 --save /home/(ユーザー名)/jpagdata.jpg
 その結果、下記の様なメッセージがでれば、動作OKです。
 保存先は、最終行に記述されています。
 撮影結果は、jpagdata.jpgのファイル名で保存されているので、開いて確認します。
---------------------------------------------------------------------------------
 --- Opening /dev/video0...
 Trying source module v4l2...
 /dev/video0 opened.
 No input was specified, using the first.
 --- Capturing frame...
 Skipping 6 frames...
 Capturing 1 frames...
 Captured 7 frames in 0.20 seconds. (35 fps)
 --- Processing captured image...
 Putting banner at the top.
 Setting banner line colour to #FF000000.
 Setting banner background colour to #FF000000.
 Could not find/open font
 Could not find/open font
 Writing JPEG image to '/home/miyasaka/jpagdata.jpg'
---------------------------------------------------------------------------------
○ fswebcamのコマンドオプションの説明。 
 --top-banner タイトル・タイムスタンプは、上部に表示されます。
 --bottom-banner タイトル・タイムスタンプは、下部に表示されます。
 -d デバイス(初期値は、/dev/video0が設定されているので不要 
                                2台目は、--device '/dev/video1' と書きます。)
 -p 動画フォーマット(YUYV等)
 --top-banner バナーを画面上部に(デフォルトは下部) 非表示は--no-banner
 --line-colour 'カラーコード' デフォルトは赤、透明は#FF000000
 -S キャプチャ開始フレーム
 -r 解像度
 --font "フォントパス:フォントサイズ" 明示しないとバナー部に文字が表示できません。
 (VineLinux5 のパス /usr/share/fonts/alias/TrueType/MaruGo-Medium.ttf)
 --save /home/(ユーザー名)/webcam/test.jpg  保存先パス
 「-S」の指定なしで撮影するとホワイトバランスの調整が間に合わず映像が暗くなります。
  Webカメラの特性にもよりますが最低でも5~10フレーム位はおいたほうがいいでしょう。
 高級カメラでないので、これでも、ホワイトバランスが崩れるときが、あります。
 私の場合、8フレームにしています。

 他に、次の4つのホントがあります。
 1.Mincho-Medium.ttf, 2.Gothic-Medium.ttf, 3.FutoMin-Bold.ttf, 4.FutoGo-Bold.ttf
 下記の写真は、各ホントで、表示した時の文字です。
FutoGo-BoldFutoMin-Bold
FutoGo-Bold FutoMin-Bold
Gothic-MediumMaruGo-Medium
Gothic-Medium MaruGo-Medium
Mincho-Medium
Mincho-Medium

 参考    CentOS 5.8, 5.9,Scientific Linux 5.9, Momonga Linux7 では、パスが
	 --font '/usr/share/fonts/ja/TrueType/kochi-gothic-subst.ttf:32'に、なります。
         フォントは、他に kochi-mincho-subst.ttf があります。
         Fedora, CentOS 6.X では、パスが
	 --font '/usr/share/fonts/vlgothic/VL-Gothic-Regular.ttf:32'に、なります。

   H25.03.11現在、私が気に入って使用しているフォントは、VL-Gothic-Regular.ttfです。
   必要な方は、http://www.smiyasaka.com/Font/VL-Gothic-Regular.ttf でダウンロードして
   ください。

  ※ チョットしたアイデア ※
  フォントデータをホームページのデータと同じディレクトリに保存し、そこを参照するようにする
  とすると OS を換えてもパスを換える必要が無くなり便利になります。

---------------------------------------------------------------------------------
=================================================================================
  3.  撮影・保存を実行するプログラム(シェルスクリプト)の作成
=================================================================================
 組み込んだ機能

  1. 夜間は、停止させるので、断り写真を表示させるようにする
  2. カメラ故障時に断り写真を表示させるようにする。
  3. 毎日12時の写真をその日の年月日のファイル名で保存する。
        風景写真のスライドショー用として使用する。
  4. 10分毎の写真をその日の月日時分のファイル名で保存する。
        天気写真のスライドショー用として使用する。
  5. 撮影時の年月日時刻を右下に表示させるようにする。
  6.  最新のアメダス情報(我が地区の天気情報)を写真の左下に表示させるようにする。
  7.  日照時間等から、天気区分( 快晴・晴・晴曇・曇・雨+雨量 )を表示するようにする。
最新のアメダス情報・撮影時の年月日時刻は、こんな具合になります。
( 17時から 6時の間は、表示しません。了承ください。 )
    以下の記述をコピーすれば使用できます。(ドメイン)は、あなたの環境に合わせてください。
    ファイルのパスは、VineLinux 5の場合です。
    webcamというディレクトリィをホームページと同じところに、作り下記のシェルスクリプトを
    webcam.shというファイル名で書込みます。
○ fswebcamのコマンドオプションの設定
    -r 1280x1024			解像度は、カメラの最高解像度にします。
    --line-colour '#FF000000' 		こうしないと、下部に赤線がでます。
    --banner-colour '#FF000000'		こうすると、 上の線が消えます。
    --font '/usr/share/fonts/alias/TrueType/MaruGo-Medium.ttf:40' フォントの指定
     --title "四国の宮坂家のライブカメラ"   画面の左下にタイトルがでます。
     ※※ fswebcam-20070108-1.i386.rpm では、日本語の文字化けが起こります。
     fswebcam-20091224, 20100401. 20100622 の tar.gz は、日本語の文字化け
     は、起こりません。
    --timestamp '%Y-%m-%d %H:%M (%Z)'の(%Z)は、タイムゾーン(JST)が表示します。
○ 下記が、私が作成した撮影・保存を実行するプログラム(シェルスクリプト)です。
     H25年7月末から、タイトル文字に私の地区の気温と天気を書込むように変更しました。
     使用する時には、USB カメラの認識情報をあなたのカメラに合わせてください。
     下記のプログラムでは、
                  BUFFALO  USB Camera BSW20K06H
                  ELECOM   USB Camera UCAM-DLA200HWH, UCAM-DLU130HWH
                  Logicool USB Camera C270sCW
     の機種は、認識して動作します。
     なお、天気情報の取得方法については、公開していませんので研究してみてください。

[ CentOS 5.X, 6.X 用プログラム ] の詳細は、[ここをクリック]してください。

H26.12月現在
  CentOS 7.0 に fswebcam-20100622.tar.gz をインストールし、USB カメラは、Logicool USB 
  Camera  C270sCW を使用して下記のプログラム(シェルスクリプト)で定点カメラを運用してい
  ます。

  このプログラムは、if then else を数多く使用しているので分かりやすくするため、
                                  else と fi が、何処の if からかコメントを入れています。

    ( /var/www/html/www.smiyasaka.com は、httpd.conf での、DocumentRoot のパスです。 )

[ CentOS 7.X 用プログラム ] の詳細は、[ここをクリック]してください。

    ※ 17:00〜17:05にしているのは、万が一17:00でのチェックがかからなかった時の為です。
○ 文字フォントの指定

  文字を表示させるに、使用文字のフォントを指定する必要があります。
 VineLinux5でのパスは、/usr/share/fonts/alias/TrueType/MaruGo-Medium.ttf
 CentOS5でのパスは、/usr/share/fonts/ja/TrueType/kochi-gothic-subst.ttf
 --font '/usr/share/fonts/alias/TrueType/MaruGo-Medium.ttf:32'の :32 は、
 文字の表示サイズです。( タイトルとタイムスタンプでは、文字の表示サイズが違うので釣合いの
 とれるサイズにしてください。)
 現在は、フォントデータをホームページのデータと同じディレクトリに保存して使用しています。
 OS を替えてもパスを替えることが無くなります。
 右下の位置指定は、--bottom-banner 文字色(白)の指定は、--text-colour '#FFFFFF'

○ 表示フォームの指定

 --timestamp '%Y-%m-%d %H:%M (%Z)'の(%Z)は、タイムゾーン(JST)が表示します。
 このように、すると yyy-mm-dd HH:MM (JST)と表示します。

○ catコマンドの実行結果

 #cat /proc/bus/usb/devices
  ( CentOS 7.0では、cat /sys/kernel/debug/usb/devices になります。) 

  T:  Bus=05 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
  B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
  D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
             省略
  D:  Ver= 2.00 Cls=ef(unk. ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
  P:  Vendor=2084 ProdID=0009 Rev=10.11
  S:  Manufacturer=Syntek
  S:  Product=BUFFALO  BSW20K06H USB PC Camera
  S:  SerialNumber=STK00001
  C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
  		省略
○ 認識の有無の判定は、grepコマンドで下記の様にします。

 1.) 判定手法 その 1

  ( " S:  Product=BUFFALO  BSW20K06H USB PC Camera " の文字列があるかで、判定します。)
   USB1=$(grep "S:  Product=BUFFALO  BSW20K06H USB PC Camera" /var/www/html/
	(ドメイン)/webcam/ketsuka.txt)

  USBカメラを付けた時と付けない時に、catコマンド( cat /proc/bus/usb/devices )で取得した内
  容を解析してUSBカメラの認識がどの様な内容になっているかを確認します。

  USBカメラが、変われば、USBカメラの認識の認識結果も変わりますので、grepコマンドで判定する
  為の文字列も使用するカメラに合わせる必要があります。

  ちなみに、Logicool USB Camera C270sCW の  USBカメラの場合、判定用文字列は、
              "S:  SerialNumber=E981E810"
             予備の Logicool USB Camera C270 は、
              "S:  SerialNumber=49333B40" です。

              ELECOM USB Camera の  USBカメラの場合、判定用文字列は、
                     UCAM DLA200H ---> "S:  Product=Venus USB2.0 Camera"
                     UCAM DLU130H ---> "S:  Product=USB2.0 Camera"
   になっています。

 2.) 判定手法 その 2

  H26.11 からは、lsusbというコマンドでUSBカメラの接続情報を取得する方法に変更しました。
( CentOS 5.X では、lsusbというコマンドが使えませんので「その 1 」の方法を使用して下さい。)
  更に、コマンドの実行結果は、テキストファイルに書込むのを止め直接変数に書込むようにしまし
  た。  ちなみに、Logicool USB Camera C270sCW の  USBカメラの場合、判定用文字列は、
              "Bus 001 Device 003: ID 046d:0825 Logitech, Inc. Webcam C270"

              ELECOM USB Camera の  USBカメラの場合、判定用文字列は、
              "Bus 001 Device 006: ID 056e:700a Elecom Co., Ltd"

  になっています。    判定部分のプログラムは、こんな具合に簡素に成りました。
---------------------------------------------------------------------------------

    # CentOS 6.X, CentOS 7.0 共通
    	USB=$(/usr/bin/lsusb)    <----  コマンドの実行は、フルパスで書きます。
    # Logicool USB Camera C270sCW        フルパスの確認は、コマンド locate lsusb
      USB1=$(echo ${USB} | grep "Logitech")                    で確認できます。
              if [ ! -z "${USB1}" ]
                 then
                   echo "Logicool"    <----  手動起動の時の確認用です。
              fi
    #
    # ELECOM USB Camera
         if [ -z "${USB1}" ]
            then
            	USB1=$(echo ${USB} | grep "Elecom")
              if [ ! -z "${USB1}" ]
                 then
                   echo "ELECOM"      <----  手動起動の時の確認用です。
              fi
         fi
    #
    # USBカメラが動作している時には、抽出文字列が$USB1にセットされる。
    #
      if [ -z "${USB1}" ]
         then
		USB カメラが接続されていない時の処理をする。
		exit 
      else
                以下に、webcam の処理プログラムを記述する。
      fi
---------------------------------------------------------------------------------
●  断り写真・故障時写真の作成・保存
   作成は、Excelのワードアート文字を使用しデザインしたものをPDFで出力してから、フリーソフト
   ( 4Videosoft Free PDF to JPEG Converter )で、JPGに変換トリミング等で修正して行いました。
   断り写真は、適宜作成し、stop.jpgという名でwebcamのフォルダに保存しておきます。
   故障断り写真は、適宜作成し、ngcamera.jpgという名でwebcamのフォルダに保存しておきます。

   2019.12現在 ホームページの切取には、[ 切り取り & スケッチ ] を使用して切取って
    jpeg の写真データにして使用しています。

---------------------------------------------------------------------------------
=================================================================================
  4.  定点カメラとして、1分ごとに、写真を撮影させる設定
=================================================================================
  ( /var/www/html/www.smiyasaka.com は、httpd.conf での、DocumentRoot のパスです。 )
    ○ ディレクトリーをwebcamに移動し、権限・オーナーを変更します。
	#cd /var/www/html/www.smiyasaka.com/webcam/
 	# chmod 755 webcam.sh
	# chown -R (ユーザー名):(ユーザー名) webcam.sh
    ○ crontabへの登録
	作成したシェルスクリプトを6時から17時の間、1分毎に実行するようにします。
	#crontab -e
*/1 6-18 * * * /var/www/html/www.smiyasaka.com/webcam/webcam.sh > /dev/null 2>&1

     タイトルの日本語が文字化けするときには、下記の様にしてください。

     */1 6-18 * * * /var/www/html/www.smiyasaka.com/webcam/webcam.sh …………
                            ↓↓↓
     */1 6-18 * * * export LANG=ja_JP.eucJP; /var/…………/webcam.sh > /dev/null 2>&1

> /dev/null 2>&1 を必ず付けてください。これを付けないと、実行した時のメッセージが、root 宛
てのメールになって保存され、沢山たまります。
※ cronへ登録 6時から18時の間、1分毎に実行させます。(終わりを18時しているのは、17時になって
  から、断り写真 stop.jpg をライブ写真の替わりに設定するため。)

---------------------------------------------------------------------------------
=================================================================================
  5.  ライブ定点カメラとして、ホームページが公開できるようにします。
=================================================================================
ホームページの写真等の再表示は、同一ファイル名の時は、キャシュされたデータが表示されるので、
元の写真が更新されても、ライブ写真になりませんので、ホームページを表示する側で強制的に、デ
ータの更新をさせる必要があります。
その方法は、画像を表示するホームページの<head>と、</head>の間に、

            <meta http-equiv="Refresh" content="○○"> の 一行を入れるだけです。

これで、○○秒毎にページデータが、強制的に更新され、ライブ定点カメラが、実現できます。
私の場合、>更新時間 ○○ は、30 秒にしています。
---------------------------------------------------------------------------------
●  全体のディレクトリ構成例は以下のとおりです(カッコ内はアクセス権の設定値)。 
	#【ディレクトリ構成】 
        #------------------------------------------------------------
        #|    /var/www/html/(ドメイン)/webcam.html                  |
        #|                      |                                   |
        #|                      +-- webcam            [777]         |
        #|                             +-- webcam.sh  [755]         |
        #|                             +-- camdata.jpg              |
        #|                             +-- stop.jpg                 |
        #|                             +-- ngcamera.jpg             |
        #|                             +-- ketsuka.txt [666]        |
        #|                             +-- webcamday   [777]        |
        #|                                                          |
        #------------------------------------------------------------
	○ ドメイン・ユーザー名等は、あなたの環境に合わせて下さい。
	  総ての設定は、私の環境(VineLinux5.2)での、設定値です。
---------------------------------------------------------------------------------
	●  ホームページの記述は、下記の通りです。参考にしてください。
---------------------------------------------------------------------------------
    <head<title>四国の宮坂家 Live Camera</title><!--2011/11/11 作成-->
    <link rel="shortcut icon" href="favicon.ico">
		省略
	<meta http-equiv="Refresh" content="30">
    </head> 
    <style type="text/css"><!--
    	/* 表示領域 枠線設定 */
    table.wakusen {border: solid 1px #649633; border-collapse: collapse;}
   	--></style>
  </head>
    <body>
    <div>
  <table class="wakusen" border="1" width="100%"><col width="100%">
  <tr>
  <td align="left" valign="top">
  <img  alt="表示領域" src="./webcam/camdata.jpg" width="394" height="260" >
         title="鬼北町の今の風景写真を表示中">
  </td>
  </tr>
  </table>
  </div></body>
  </HTML>
---------------------------------------------------------------------------------
H26.03.22 追記

上記の方法でホームページを公開するとページ全体が 30 秒ごとに更新されるので、パソコンによっ
ては、チラツキの発生や処理が遅い時には、画面全体がゆっくり更新されてしまうので良くありませ
んでした。
それらを少しでも改善する為に現在では、iframe を使用して映像の部分だけ更新させる方法に変更し
ました。

iframe を使用する利点は、30 秒ごとの画面更新が表示領域だけになるので、チラツキが軽減される
ことです。
下記にその方法の要点を紹介します。
    
     ※※  本体ページの HTML  ※※

		省略
    本体ページでは、30 秒毎の画面更新は、不要になります。
	<meta http-equiv="Refresh" content="30">
    </head> 
    
    <body>
    <div>
  <table border="0" width="100%"><col width="100%">
  <tr><td align="left" valign="top">
    iframe の枠線・スクロールバーは、表示なし・余白なしにします。
  <iframe src="./○○○○.html" frameborder="0" scrolling="no" marginwidth="0"
         marginheight="0" width="497" height="366">表示できません。</iframe>
  </td></tr>
  </table>
  </div></body></HTML>

    ※※  iframeからリンクするページ(○○○○.html)の HTML  ※※
    写真の枠線は、こちら側で設定します。
		省略
    30 秒毎の画面更新は、ここで設定します。
	<meta http-equiv="Refresh" content="30">
    </head> 
    <style type="text/css"><!--
    	/* 表示領域 枠線設定 */
    table.wakusen {border: solid 1px #649633; border-collapse: collapse;}
   	--></style>
  </head>
    <body>
    <div>
  <table class="wakusen" border="0" width="100%"><col width="100%">
  <tr><td align="left">
  <img src = "./webcam/camdata.jpg"  width="494" height="362"
         title="鬼北町の今の風景写真を表示中" alt="鬼北町の今の風景写真を表示中>
  </td></tr>
  </table>
  </div></body>
  </HTML>

---------------------------------------------------------------------------------
=================================================================================
  6.  10分毎の写真データの保存・消去
=================================================================================
昨日の記録写真をバックアップし、削除し、更に、8日前保存データを削除します。、
/var/www/のルート上に、下記のシェルスクリプトを作ります。私の場合、cd /var/www/system/とし
ています。
---------------------------------------------------------------------------------

  #!/bin/sh
  #----------------------------------------
  #	8日前の保存データを削除する。
  #----------------------------------------
  DAY_8AGO=`/bin/date --date '8day ago' +%Y%m%d`		# yyyymmdd
  AGO_8File="DAY$DAY_8AGO"
  rm -rf /var/www/html/FhotoDay/${AGO_8File}  > /dev/null 2>&1
  #----------------------------------------
  #	昨日の日付で記録写真を保存する。
  #----------------------------------------
  DAY_AGO=`/bin/date --date '1day ago' +%Y%m%d`		# yyyymmdd
  #echo "${DAY_AGO}"
  AGO_File="FhotoDay/DAY${DAY_AGO}"				# DAYyyyymmdd
  cp -rf /var/www/html/www.smiyasaka.com/webcammin
                                      /var/www/html/www.smiyasaka.com/${AGO_File}
  #----------------------------------------
  #	写真データ(*.jpg)を総て削除する。
  #----------------------------------------
  p=`find /var/www/html/www.smiyasaka.com/webcammin/ -name "*.jpg" | cut -f 1 -d ' '`
  #	区切り=" "をカットして、抽出ファイルを無条件に1つずつ削除していく
  for i in ${p}
  do
      rm -fr ${i}
  done
  #
---------------------------------------------------------------------------------
  ○ ディレクトリーをsysytemに移動し、権限・オーナーを変更します。
    chmod 755 JPGdata_del.sh
  ○cron に登録、5時に保存・削除するようにします。
    crontab -e
    0 5 * * * /var/www/system/JPGdata_del.sh

---------------------------------------------------------------------------------
=================================================================================
  7.  fswebcam でUSBカメラの明るさの補正方法
=================================================================================
	○ fswebcam でUSBカメラの明るさの補正方法は、-s のオプション設定でします。
           輝度・コントラストの補正は、同時にすることが可能です。
           設定は、0 〜 100% の範囲です。補正は、現在の設定値を確認してから行ってください。

           補正例
	       p="/var/www/html/www.smiyasaka.com/webcam/camdata.jpg"
	       /usr/bin/fswebcam -p YUYV --bottom-banner --line-colour '#FF000000'\
                    --banner-colour '#FF000000' -S 8 -r 1280x1024\
                    --font '/usr/share/fonts/alias/TrueType/MaruGo-Medium.ttf:40'\
                    --text-colour '#FFFFFF'\
                    -s Brightness=55%\      <---- 明るさ
                    -s Contrast=60%\        <---- コントラスト
                    --timestamp '%Y-%m-%d %H:%M (%Z)' --jpeg 95 --save $p

           鮮やかさ・色合い・ホワイトバランス・ガンマ・ゲインの補正も出来るようです。

           補正を入れての実行結果

           --- Opening /dev/video0...
           Trying source module v4l2...
           /dev/video0 opened.
           No input was specified, using the first.
           Setting Brightness to 12 (54%).     <---- 明るさ
           Setting Contrast to 10 (60%).       <---- コントラスト
           --- Capturing frame...
           Skipping 6 frames...
           Capturing 1 frames...
           Captured 7 frames in 0.80 seconds. (8 fps)
           --- Processing captured image...
           Putting banner at the bottom.
           Setting banner line colour to #FF000000.
           Setting banner background colour to #FF000000.
           Setting font to /usr/share/fonts/alias/TrueType/Mincho-Medium.ttf:40.
           Setting banner text colour to #FFFFFF.
           Setting timestamp "%Y-%m-%d %H:%M (%Z)".
           Setting output format to JPEG, quality 95
           Writing JPEG image to '/var/www/html/www.smiyasaka.com/webcam/camdata.jpg'.

	○ fswebcam の現在の設定値の確認は、下記コマンドで行います。

           # fswebcam --list-controls

           設定値の表示例

           --- Opening /dev/video0...
           Trying source module v4l2...
           /dev/video0 opened.
           No input was specified, using the first.
           Available Controls        Current Value   Range
           ------------------        -------------   -----
           Brightness                12 (54%)        -126 - 126      <---- 明るさ
           Contrast                  10 (60%)        1 - 16          <---- コントラスト
           Saturation                16 (31%)        1 - 48          <---- 鮮やかさ
           Hue                       0 (50%)         -10 - 10        <---- 色合い
           White Balance Temperature, Auto True      True | False    <---- ホワイトバランス
           Gamma                     1               1 - 6           <---- ガンマ
           Gain                      0               0 - 7           <---- ゲイン
           Adjusting resolution from 384x288 to 352x288.
           --- Capturing frame...
           Captured frame in 0.00 seconds.
           --- Processing captured image...
           There are unsaved changes to the image.

 ※ 参考情報 ※
      USB カメラの輝度・明るさ・解像度の設定値 ( 私のサーバ機で使用している設定値です。)

      BUFFALO  BSW20K06H 200万画素
               CentOS 5.9、Scientific Linux 5.9 の時には、このカメラを使用しています。
               このカメラのオートフォーカスは、遠近両方に合うようです。
               Brightness=55%  Contrast=60%  1280x1024

      ELECOM   UCAM-DLA200HWH 200万画素
               全体的に絵が鮮明でないので使用していません。
               このカメラのオートフォーカスは、あまい感じです。
               Brightness=30%  Contrast=15%  1280x1024

      Logicool C270 120万画素
               CentOS 6.X からは、このカメラを使用しています。
               このカメラの固定フォーカスは、遠方に合うようです。
               このカメラ固定フォーカスといっても、分解するとフォーカスが調整できるように
               なっています。
               Brightness=65%  Contrast=15%  1280x960

---------------------------------------------------------------------------------
=================================================================================
  8.  fswebcam ソースファイルでのインストールと文字化けの対策
=================================================================================

  ○ fswebcam-20091224 〜 fswebcam-20140113をソースファイルでインストールしてみました。

     依存するパッケージが、3〜5個要ります。
     それらのインストールは、yum か、直接ダウンロードします。
     yum の時は、

                yum -y install gd gd-devel

     でします。これでも不足パッケージが有る時には、下記を追加インストールします。

                yum -y install libXpm libjpeg-turbo-devel libXpm-devel

     直接ダウンロードは、下記から、出来ます。パッケージ名をクリックしてください。

  @ CentOS 5.X, Sceintific Linux 5.X 等のバージョンの時 [ i386.rpm のパッケージ ]

     gd-2.0.33-9.4.el5_4.2.i386.rpm
     libXpm-devel-3.5.5-3.i386.rpm
     gd-devel-2.0.33-9.4.el5_4.2.i386.rpm

     3個の i386.rpm のパッケージは、依存関係があるので下記の順序でインストールしてください。

     cd /usr/local/src/; \
     rpm -ivh gd-2.0.33-9.4.el5_4.2.i386.rpm; \
     rpm -ivh libXpm-devel-3.5.5-3.i386.rpm; \
     rpm -ivh gd-devel-2.0.33-9.4.el5_4.2.i386.rpm

  A CentOS 6.X 等のバージョンの時

     [ i686.rpm のパッケージ ]
     libXpm-3.5.10-2.el6.i686.rpm
     libjpeg-turbo-devel-1.2.1-1.el6.i686.rpm 
     libXpm-devel-3.5.10-2.el6.i686.rpm
     gd-2.0.35-11.el6.i686.rpm
     gd-devel-2.0.35-11.el6.i686.rpm

     5個の i686.rpm のパッケージは、依存関係があるので下記の順序でインストールしてください。

     cd /usr/local/src/; \
     rpm -ivh libXpm-3.5.10-2.el6.i686.rpm; \
     rpm -ivh libjpeg-turbo-devel-1.2.1-1.el6.i686.rpm; \
     rpm -ivh libXpm-devel-3.5.10-2.el6.i686.rpm; \
     rpm -ivh gd-2.0.35-11.el6.i686.rpm; \
     rpm -ivh gd-devel-2.0.35-11.el6.i686.rpm

  B CentOS 7.0 x86_64 のバージョンの時
     ( このバージョンでは、fswebcam-20100622 を使用します。)
     ( 事前に yum groupinstall て "Base" と "Additional Development" を実行している時 )
     [ x86_64.rpm のパッケージ ]
     fswebcam-20100622.tar.gz
     gd-progs-2.0.35-26.el7.x86_64.rpm
     gd-devel-2.0.35-26.el7.x86_64.rpm

     cd /usr/local/src; \
     rpm -Uvh gd-progs-2.0.35-26.el7.x86_64.rpm; \
     rpm -Uvh gd-devel-2.0.35-26.el7.x86_64.rpm

※ H26.01.28 追記

   CentOS 6.5 で update 後、
   libjpeg-turbo-devel-1.2.1-1.el6.i686.rpm のインストールで依存性のエラーが出る時には、
   libjpeg-turbo-devel-1.2.1-3.el6_5.i686.rpm をここから、ダウロードして入れ替えてみてくだ
   さい。
   私のサーバ機での検証では、上手くいきました。

  ○ fswebcam-20110717のインストール

     tar zxvf fswebcam-20110717.tar.gz; \
     cd ./fswebcam-20110717
     ./configure --prefix=/usr

     以下で、終われば、OK 
     ------------------------------------------------------
     checking for gdImagePngEx in -lgd... yes

        Buffer type ........... 16 bit
        PNG support ........... yes
        JPEG support .......... yes
        Freetype 2.x support .. yes
        V4L1 support .......... yes
        V4L2 support .......... yes

     configure: creating ./config.status
     config.status: creating Makefile
     config.status: creating config.h
     ------------------------------------------------------
     make && make install
     以下で、終われば、OK 
     ------------------------------------------------------
     mkdir -p /usr/bin
     mkdir -p /usr/share/man/man1
     install -m 755 fswebcam /usr/bin
     install -m 644 fswebcam.1.gz /usr/share/man/man1

  ○ タイトルに日本語を使うと文字化けする( cronで実行時 )という、問題が発生しました。

            解決方法は、下記に追記( H26.03.01 )しました。

     Linux は、Scientific Linux 5.9 を使用、文字コードをeucコードにしても、だめでした。
     四角が、文字分表示、漢字に変換されないようです。ただ、直接コマンドで、実行すると漢字が
     表示します。
     cron とコマンドどちらも、root 権限のはずだが????他のバージョンの fswebcam を試してみました。文字化けの結果は、下記のとおりです。
     各バージョンの fswebcam のインストールテストは、Linux は、Scientific Linux 5.9 で 
     fswebcam-20110717 と同じ条件でしました。
     参考データ : CentOS 6.4, 6.5 でも、同じような結果になりました。( H25.03.27 )

     fswebcam-20091224.tar.gz  タイトルの日本語OK
     fswebcam-20100401.tar.gz  タイトルの日本語OK
     fswebcam-20100622.tar.gz  タイトルの日本語OK
     fswebcam-20101118.tar.gz  タイトルの日本語NG
     fswebcam-20110717.tar.gz  タイトルの日本語NG
     fswebcam-20140113.tar.gz  タイトルの日本語NG

 ソースファイルのダウンロードは、ファイル名のクリックでダウンロードできるようにしてあります。

H26.03.01 追記
     2014年 1月にリリースされたバージョンを試してみました。
     インストールは、 CentOS 6.5 と同じ方法でOKです。
     fswebcam-20140113.tar.gz  タイトルの日本語は、文字化けしました。
                 この原因と対策方法が、分かりましたので紹介します。
     fswebcam-20101118.tar.gz,
                fswebcam-20110717.tar.gz も同じ方法で文字化け解決しました。

H26.09.22 追記
     CentOS 7.0 では、下記の対策をしても、文字化けどころか文字も表示しませんでした。
     文字化け対策の不要なバージョン( fswebcam-20100622等 )を使用する必要があります。

原因 : cron で実行されるコマンドは、root 権限で実行されるので、文字コードは、システムが持っ
     ている環境変数の文字コードLANG( 初期値 : ja_JP.UTF-8 )を使用して実行されます。
     ( CentOS 6.5 のシステムで、cronで echo $LANG を実行させ確認してみました。)
     このコードは、英語だけなので、当然文字化けが起こります。
     テキストモード( GMONE )でログインした時には、ユーザーの環境変数の文字コードが使用される
     ので、文字化けは、起こりません。
     ユーザーの文字コード環境変数は、/etc/sysconfig/i18n の中を書換えることにより変更できま
     す。 ( 私のサーバ機の環境では、ja_JP.eucJP にしています。 )

対策 : cron で実行するコマンドにシステムの文字コード環境変数を変更するコマンドを下記の様に追
     加して webcam.sh が実行する時だけ、文字コードを eucJP に変更させます。
     私のサーバ機の環境では、EUCコードを使用しているのでシステムが使用する文字コードも EUCコ
     ードに変更しました。

     */1 6-18 * * * /var/www/html/www.smiyasaka.com/webcam/webcam.sh
                            ↓↓↓
     */1 6-18 * * * export LANG=ja_JP.eucJP; /var/www/html/…………/webcam.sh

 ※  参考情報 ※
  fswebcam のバージョンの入替は、tar, configure, make, make install をするだけで入替ります。
---------------------------------------------------------------------------------
2018.01.28 追記

 2018.01.26 カーネルのアップデートで fswebcam のタイトルの日本語表示が文字化けになりました。
 CentOS 7.4 のカーネルのバージョンは、 Kernel 3.10.0-693.17.1.el7.x86_64 です。
 色々対策してみましたが、解決しないので現在は、タイトルを英語表記にして一時的にしのいでいま
 す。

 2018.01.29 上記の対策方法が判明しました。

 漢字変換アプリ nkf で fswebcam を実行するプログラムのソースコードを調べたら Shift_JIS コー
 ド
 した。
 今まで Shift_JIS コード でもOKだったのがアップデートで突然使用できなくなったようです。 
 私がテキストエディタとして使用している TeraPad の文字コード調べたら、Shift_JIS コードでし
 た。      
 fswebcam のようにプログラム内で日本語を使用している場合、プログラムのソースコードを配慮す
 る必 要があるということです。 ( ちなみに日本語版 CentOS の内部コードは、UTF-8 です。)

 対策は、プログラムのソースコードを下記コマンドで UTF-8 に変換し、上書きしただけです。
 実行コマンドに export LANG=ja_JP.eucJP; を付けても文字化けは、解消しませんでした。

 変換コマンドは、    nkf -w --overwrite ○○○○.sh  です。○○○○は、プログラムソース名。
                         ( -w : 文字コード UTF-8 の指定、--overwrite : 上書き保存の指定 )
プログラムのソースコードは、コマンド nkf -g ○○○○.sh  で調べます。

 nkf のインストール・設定等の詳細は、「CentOS-7-x86_64-DVD.iso のインストールとサーバ構築」
 の 「16. 漢字コード変換用に nkf のインストール」で解説しています。
---------------------------------------------------------------------------------
=================================================================================
  9. 定点カメラの設置位置の工夫
=================================================================================

 私の定点カメラは、リビングの西側の窓の内側に設置しています。
 窓は、今はやりの断熱用の二重ガラスでない為、冬場は室内と室外の温度差で直ぐに結露してしまい
 ます。
 この解決方法として、カメラを窓の端の高い位置でガラスにギリギリまで接近させた位置に取付けて
 います。
 朝日の入り込みも低減できるメリットもあります。
 なお、ガラスと間隔は、窓を開閉できる位置にしています。理想は、ガラスに密着させたかったので
 すが、レンズのへこみに小さなクモが入り込み巣を作って悪さをするのでメンテナンスのために、窓
 を開閉できる位置にしています。
 
外からのカメラ設置場所写真
もう一つカメラよっては、問題になることがあります。それは、私が使用しているカメラの動作表示 用 の LED が カメラ前面に付いているため、外が暗いときに、窓に映り込み映像に入り込み事です。 対策は、黒のマジックで塗るか、テープでマスキングする方法があります。私の場合、後者採用して います。 ( 2015年からは、カメラを分解した時に、LED 自身に黒のマジックでマスキングしています。)
---------------------------------------------------------------------------------
=================================================================================
  10.  お断り・表示画面
=================================================================================
お断り:プログラムの作り方等、私の技術レベルで作成したてますので、無駄等があるとおもいます。
さらに、研究し良いものを作るべき、努力していく予定です。
カメラの設置に関して、多数のサイトを見ましたが、ゼロから最後までわかり易く記述されたサイト
が無かったので、この通りにすれば実現できるように、私がした事・感じたことを紹介してみました。
----------------------------------------------------------------------------------
	        こんな具合に、表示されます。              お断り写真
cameradata.jpg stop1.jpg USBカメラ動作不良時のお断り写真 ngcame.jpg
---------------------------------------------------------------------------------
=================================================================================
  11.ミニ PC を使ってネットワークカメラシステム( 10 秒更新 )の作成
=================================================================================
市販のネットワークカメラにコスパ的に良いものが見つからなかったので、予備のサーバ機を使って
静止画を 10 秒毎にアップロードするネットワークカメラのシステムを構築してみました。 構築手
順は、下記の通りです。 

@ 下記手順で最小限の CentOS 7 のシステムを構築します。

   1. CentOS 7 のシステムを最小のシステム構成でインストールします。
   2. PC の時刻を日本標準時に同期させる Chrony の設定と起動をします。
   3. ファイル転送プログラム ftp をインストールします。
   4. USBカメラ用のプログラム fswebcom をインストールします。
   5. SELinux のモード設定は、disabled (制御無効)にします。

A USBカメラからの画像の取得とサーバ機への転送をするプログラムの作成

   プログラムの作成は、シェルスクリプト( sh )を使用して作成しました。下記がその主要部分です。
   実際のプログラムは、下記のプログラムに画像を取得・転送をする時間帯の管理等のプログラムを
   追加しています。
   なお、バッチファイルを毎回作成するのは無駄なので事前にプログラムで作成しました。
   そのプログラムは、 webcam_batch.sh (プログラム名 2)で事前に一度だけ実行させています。
   転送先サーバーIPアドレス・ログイン情報: ユーザ名・ログイン情報: パスワード等は、貴方の環
   境に合わせてください。
   ちなみに、ログイン情報: ユーザ名・ログイン情報: パスワードは、Tera Term にログインする時
   と同   じユーザ名・パスワードを設定します。
   ftp の実行は、各コマンド・情報をバッチファイルとして作成してそのバッチファイルで実行して
   います。
   使用した USBカメラは、サーバ機と同じ機種 Logicool のUVC対応 USB カメラ C270 を使用しまし
   た。

   プログラム 1 
     webcam.sh    このプログラムで画像データ取り込みと サーバ機へのアップロードを行います。
     通常キャプチャ開始フレームは、6 回目にしていますが、下記の場合は、2 回目にしています。
---------------------------------------------------------------------------------
#!/bin/bash
#
INFILE="home/webcam/camdata.jpg"     # 画像データ取り込みディレクトリとファイル名
#================================================================================
#           Logicool Brightness=65% Contrast=15%  -r 640x480  --font:24
#           フォントデータは、/home に保存しています。
#================================================================================

#----------------------------------- camera Start -------------------------------
        /usr/bin/fswebcam -p YUYV --bottom-banner --line-colour '#FF000000'\
		--banner-colour '#FF000000' -S 2 -r 640x480\
                --font '/home/Font/VL-Gothic-Regular.ttf:24'\
		--text-colour '#FFFF00'\
                -s Brightness=65%\
                -s Contrast=15%\
		--timestamp '%Y-%m-%d %H:%M:%S' --jpeg 95 --save ${INFILE}
#------------------------------------ camera End --------------------------------

#================================================================================
#   ftp で画像データのアップロード
#   転送処理は、コマンドをバッチ形式で実行させる。バッチファイルは、事前に作成済み。
#   -n    読み込むコマンドバッチファイル(フルパス)を指定しています。
#================================================================================

     ftp -n < /home/webcam/ftp_webcam.txt   # ftp 転送手順をバッチファイルで実行する。

#================================================================================
---------------------------------------------------------------------------------

   プログラム 2 
    webcam_batch.sh   このプログラムで、コマンドバッチファイル ftp_webcam.txt を作成します。

     ※※ このプログラムは、バッチファイル作成の為、手動で一度だけ実行させます ※※
---------------------------------------------------------------------------------
#!/bin/bash
#
#================================================================================
#        ftp で画像データを転送用コマンドバッチファイルの作成
#================================================================================

ftp_FILE="ftp_webcam.txt"                # FTP転送処理用コマンドバッチファイル名
S_FILE1="camdata.jpg"                    # HTML転送元ファイル名
S_FILE2="snapshot.jpg"                   # HTML転送先ファイル名
S_DIR1="/home/webcam"                    # 転送元ファイルディレクトリ

S_HOST="192.168.0.XX"                    # 転送先サーバーIPアドレス
User_Name="△△△△△△"                 # 転送先サーバーログイン情報: ユーザ名
Pass_Word="○○○○○○"                 # 転送先サーバーログイン情報: パスワード

S_DIR2="/var/www/html/httpd_prgram"      # 転送先の保存先ディレクトリ

#============================================================================
# ftp 転送実行のコマンドバッチファイル作成  ---> ftp_FILE="ftp_webcam.txt" 
#============================================================================

echo "open ${S_HOST}" > ${ftp_FILE}                  # サーバ機に接続する
# ftp 起動時  passiveモードは、on なので off にします。
# 本 PC からサーバ機へのアップロードを有効にします。
echo "passive" >> ${ftp_FILE}
echo "user ${User_Name} ${Pass_Word}" >> ${ftp_FILE} # 指定したユーザー名でログイン

echo "cd ${S_DIR2}" >> ${ftp_FILE}                   # アップロード先のディレクトリに移動
# PC 内のファイルをアップロードする
echo "put ${S_DIR1}/${S_FILE1} ${S_DIR2}/${S_FILE2}" >> ${ftp_FILE} 

echo "close" >> ${ftp_FILE}                          # サーバ機から切断する
echo "bye" >> ${ftp_FILE}                            #「ftp」コマンドを終了

#======================================================================================
---------------------------------------------------------------------------------

B 上記プログラム(仮に、プログラム名を webcam.sh としておきます。保存先を /home/webcam/ と
   します。)を10 秒毎に起動する為、crontab の裏技??を使用して設定します。   
   for と sleep コマンドを使用します。
   設定は、下記の通りです。約 10 秒毎にプログラムが実行されます。

   ↓ 実行時間帯指定         ↓ ブログラムを起動する間隔( 秒 )     ↓ 起動プログラムの
                                                                                フルパス
* 6-18 * * * for i in `seq 0 10 59`;do (sleep ${i} ; /home/webcam/webcam.sh\
  > /dev/null 2>&1 ) ; done;

2018.02.07 追加  [ 10 秒毎の起動方法を改良 ]

   上記の裏技もどきでは、約10秒の間隔が得られないので、crotab は、単に 1 分毎のプログラムの
   起動にしてプログラム内で、for 文( 6 回繰り返す処理 )と sleep( 処理の待機 ) コマンドで 
   約10秒毎に 6 回繰り返すように改良しました。
   
   #!/bin/bash の後に for 文 をプログラムの終わりに sleep を追加しました。
   crontab の設定は、下記の通りで 6時から18時の間、単に 1 分毎の起動だけです。

* 6-18 * * * /home/webcam/webcam.sh  > /dev/null 2>&1

   プログラムの改良点

#!/bin/bash
for i in `seq 1 6`;do   #  6 回繰り返す処理

    ( 上記のブログラム 1 [ webcam.sh ]  )

  if [ ${i} -eq 6 ]; then
     break               # 6 回実行したら即終了させる。
  fi
  sleep 8s;              # 10 秒待って繰り返し処理実行 プログラム本体の処理時間を考慮して
                            8 秒にしています。
done;

C サーバ機側のホームページの設定

   10 秒毎に表示を切り替える為、下記の 1 行を <head>……</head>に追加します。

   <meta http-equiv="Refresh" content="9">    <---- 同期の関係で 9 秒にしています。

上記 @ から C の手順で 10 秒毎に画像データをアップロードするネットワークカメラのシステムを
構築することが出来ます。CP の負荷も軽く快適に動作しています。

※※ 注意事項 ※※
  転送先のサーバ機の SELinux のモードが enforcing に成っている時、ftpd_full_access が off に
  成っているとアップロードが拒否されますので、必ず ftpd_full_access --> on にしてアップロード
  してください。
---------------------------------------------------------------------------------
下記は、 プログラム 1 : webcam.sh のプログラムの全文です。

[ ネットワークカメラシステムプログラム ] の詳細は、[ここをクリック]してください。


※※ 下の映像は、上記の方法で実現した 10 秒更新のネットワークカメラシステムの映像です。※※




TOPへ戻る