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

このページは、私が、定点カメラの映像を表示したいために、 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 です。

※ 注 意 事 項 ※
コマンド・プログラム等を コピペ する時には、全角のスペース が、入っていることがありますので
半角に変換 してから、使用してください。

スマホ対策の為、長いコマンド・プログラム等を継続記号( linux は、"\" 、EXCELマクロは、"_" )で
故意に数行に分割している箇所が有ります。

目    次
[○○○○]のクリックで、その内容が目次の下に表示、再度クリックで非表示になります。

   ※ [ 総てを表示する ] ※ [ 総てを表示する 非表示 ] ※
   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 秒更新 )の作成 非表示 ]

 0. 定点カメラを簡単に実現する方法

方法は、ネットワーク対応のカメラを使うことです。このカメラは、同一 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年ほどで輝度調整が時々不調に なる現象が発生しました。
また、色合いも「青」が弱くなってきました。今現在のカメラは、平成27年の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側へ転送し、操作は、windows 7 側から 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
------------------ ------------- -----
Brightness12 (54%)   -126 - 126   
<--- 明るさ
Contrast 10 (60%)     1 - 16   
<--- コントラスト
Saturation16 (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 でも、同じような結果になりました。


  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 秒毎にアップロードするネットワークカメラのシステムを構築してみました。
このプログラムは、ホームページとは関係なく、cron で定時に動作させます。

構築手順は、下記の通りです。


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

  1. CentOS 7 のシステムを最小のシステム構成でインストールします。

  2. PC の時刻を日本標準時に同期させる Chrony の設定と起動をします。
  3. ファイル転送プログラム ftp と vsftpd をインストールします。
  4. USBカメラ用のプログラム fswebcom をインストールします。
  5. SELinux のモード設定は、disabled (制御無効)・enforcing(有効)どちらでもOKです。

    enforcing(有効)の場合には、SELinux のポリシーの設定をしてください。

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

 プログラムの作成は、シェルスクリプト( sh )を使用して作成しました。下記がその主要部分です。
 実際のプログラムは、下記のプログラムに画像を取得・転送をする時間帯の管理等のプログラムを追加しています。

 なお、ftp で使用するバッチファイルは、毎回同じ内容なので事前に別プログラムで作成しました。
 そのプログラムは、 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/△△△△/webcam/Font/VL-Gothic-Regular.ttf:26'\
   --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クライアント起動の際、自動ログイン実行を抑止。
# -v : FTPサーバーの処理後のメッセージを表示。
#==========================================

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

#==========================================


--------------------------------------------------

プログラム 2

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

※※ このプログラムは、バッチファイル作成の為、手動で一度だけ実行させます ※※

※※ 注意事項 ※※

 コマンド[ passive : パッシブモードを使用をOFFする ]は、CentOS 7.X では、 必要ですが、CentOS 8.X では、エラー( 425 Failed to establish connection. )が出ますので、削除してください。  ( 理由は、不明です。)

--------------------------------------------------
#!/bin/bash
#
#==========================================
#   ftp で画像データを転送用コマンドバッチファイルの作成
#==========================================

# FTP転送処理用コマンドバッチファイル名( フルパス指定 )
ftp_FILE="/home/△△△△/webcam/ftp_webcam.txt"
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 からサーバ機へのアップロードを有効にします。
#------------------------------------------------------
# コマンド[ passive ]は、CentOS 7.X では、必要ですが、
# CentOS 8.X では、エラーが出ますので、削除してください。
#-------------------------------------------------------
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へ戻る