|
crontab の設定は、下記のようにしています。
*/1 6-18 * * * /○○○○/webcam10.sh > /dev/null 2>&1
下記のプログラムの名称は、webcam10.sh にしています。
( ○○○○ : ホームページのパス、△△△ : ユーザー名 )
#!/bin/bash
####------------------------------------------------------------------
#### 1分撮影 +10秒毎撮影
####
#### fswebcamによる静止画の取り込み。
#### 17:00 から 6:00の間、運用休止して、断り写真にする。
#### 12:00に取った写真をwebcamdayにDAYyyyymmdd.jpgで
#### 毎日保存する。
#### 6:00に取った写真をwebcam0600にDAYyyyymmdd.jpgで
#### 毎日保存する。
#### 10分毎に取った写真をwebcamminにMINyyyymmdd.jpgで
#### 毎日上書き保存する。
#### USBカメラ動作不良の時、故障写真(ngcamera.jpg)にする。
#### 変数名には、分かり易くするため {} を付けました。
####
####------------------------------------------------------------------
#
Kymd="DAY$(date +%Y%m%d).jpg" # date(yyyymmdd)
Kyear=$(date +%Y) # 年(yyyy)
Kmonth=$(date +%m) # 月(mm)
Kday=$(date +%d) # 日(mmdd)
Khour=$(date +%H) # 時(00-23)
Kmm=$(date +%M) # 分(00-59)
K1200m=$(date +%H%M) # 時(00-23)分(00-59)
Kmd=$(date +%m%d) # 月日(mmdd)
www="/○○○○" # Dir pass1
home="/home/△△△/www" # Dir pass2
INFILE60="${www}/webcam/camdata.jpg" # 1分撮影
INFILE10="${www}/snapshot.jpg" # 10秒毎撮影
#
K_flg="on" # 起動フラグ
# 現在時刻 (単位 : 分)
K_Now_time=`expr ${Khour} \* 60 + ${Kmm} \* 1`
# スタート時刻 6:00 (単位 : 分)
K_Start=`expr 6 \* 60`
# 終了時刻 17:30 (単位 : 分)
K_End=`expr 17 \* 60 + 45 \* 1`
#---------------------------------------------------------------------
# 6:00時から17:45時まで撮影( K_flg="on" )する
#----------------------------- Main Start -------------------------
#
if [ ${K_Now_time} -ge ${K_Start} \
-a ${K_Now_time} -le ${K_End} ];
then
K_flg="on" # 起動フラグ
else
#---------------------------------------------------------------------
# 時間外の処理
# 17:46からは stop.jpg を ---> camdata.jpg に書込みする。
# 但し、一度書込んだら、二度目からは、パスさせる。
#---------------------------------------------------------------------
if [ ${K_flg} = "on" ];
then
\cp ${www}/webcam/stop.jpg ${INFILE60}
\cp ${www}/webcam/stop.jpg ${INFILE10}
K_flg="off"
fi
fi # Main End
#
#---------------------------------------------------------------------
#-------- Main1 Start -- K_flg="on" の時に実行させる ------------
#---------------------------------------------------------------------
if [ ${K_flg} = "on" ];
then
#---------------------------------------------------------------------
# ( ( 分 + 5 ) ÷ 10 ) × 10 の整数計算をする
# 分を10分単位にする
#---------------------------------------------------------------------
#
KMmm=`expr \( \( ${Kmm} + 5 \) / 10 \) \* 10`
#
Khmm=${Khour}
#echo "Khmm : ${Khmm}"
if [ ${KMmm} -eq 0 ]; # 0分は、"00"にする
then
KMmm="00"
else
if [ ${KMmm} -eq 60 ]; # 60分の時 "時 + 1"にする
then
KMmm="00" # 分は、"00"にする
Khmm=`expr ${Khou}r + 1`
Kcnt=${#Khmm} # 文字数取得
if [ ${Kcnt} -eq 1 ];
then
Khmm="0${Khmm}" # 一桁の時、"0"を追加する
fi
fi
fi
#---------------------------------------------------------------------
#
KKmm="${Kmd}${Khmm}${KMmm}" # "月日"+"時"+"分"
Khm="${Khmm}${KMmm}" # "時"+"分"
# MINmmdd.jpg
Khhmm="${www}/webcammin/MIN${KKmm}.jpg"
#
Kminute=$(date +%M) # 分
#
#---------------------------------------------------------------------
# lsusbコマンドでUSBカメラの接続情報を取得する。
# その中に"Logitech"の記述があるかないかでUSBカメラの動作を
# 判断する。
# CentOS 6.X 用, CentOS 7.0 用
USB=$(/usr/bin/lsusb)
# Logicool USB Camera C270sCW
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に
# セットされる。
#---------------------------------- camera Start -------------------
if [ -z "${USB1}" ];
then
\cp ${www}/webcam/ngcamera.jpg ${INFILE60}
\cp ${www}/webcam/ngcamera.jpg ${INFILE10}
echo "camera NG"
exit
else
#---------------------------------------------------------------------
# yahoo の温度を表示させる。
#---------------------------------------------------------------------
# yahoo の温度データは、別プログラムで取得しています。
#
Y_file=$(cat /○○○○/TXT/myyahoo.txt)
#echo Read Data ${Y_file}
#
ary=(`echo ${Y_file}`) # 配列へ代入
#
#時刻:${ary[0]} 温度:${ary[1]} 雨量:${ary[2]}
#風速:${ary[3]} 日照時間:${ary[4]}
# 数値文字列を数値に変換する。
Kjikan=${ary[0]}
Kame=${ary[2]}
Mame=${ary[2]}
Ksun=${ary[4]}
#echo jikan = ${Kjikan}
#echo ame = ${Kame}
#echo sun = ${Ksun}
# 数字以外を削除する
Kjikan=$(echo ${Kjikan} | sed -e "s/[^0-9]//g")
# 簡易的に数字以外を削除する
Kjikan=`expr ${Kjikan} / 1`
#
# ex 10時のデータが 1024 になるので 100 で割って小数点で
# 分割した。
# 計算結果は、余りなしの整数値になる。
#
Kjikan100=`expr ${Kjikan} / 100`
#echo jikan 2 = ${Kjikan}
# 0 の時には、24 が無いので元のデータをセットする。
if [ ${Kjikan100} -eq 0 ]
then
Kjikan=${Kjikan}
else
Kjikan=${Kjikan100}
fi
#---------------------------------------------------------------------
# 不要な文字列を削除する
Kame=$(echo ${Kame} | sed -e "s/[^0-9]//g")
Kjikan=`expr ${Kjikan} / 1`
Kame=`expr ${Kame} / 1`
#
Ksun=$(echo ${Ksun} | sed -e "s/[^0-9]//g")
# ${Ksun}="" の判定
if [ -z ${Ksun} ];
then
Ksun=0
else
Ksun=`expr ${Ksun} / 1`
fi
#echo "Ksun = ${Ksun}"
#---------------------------------------------------------------------
# 天気の種分けを判定する。
#---------------------------------------------------------------------
#
#---------------------------------- Tenki Start ---------------------
if [ ${Kame} -ne 0 ];
then
T_3="雨("${Mame}"mm)" # "rainy" + (雨量)
else
# fine or cloudy
if [ ${Kjikan} -ge 7 -o ${Kjikan} -le 18 ];
then
if [ ${Kame} -eq 0 -a ${Ksun} -gt 50 ];
then
if [ ${Ksun} -gt 59 ];
then
T_3="快晴" # "very fine"
else
T_3="晴" # "fine"
fi
else
if [ ${Ksun} -gt 5 ];
then
T_3="曇/晴" #"cloudy/fine"
if [ ${Ksun} -gt 35 ];
then
T_3="晴/曇" #"fine/cloudye"
fi
else
T_3="曇" #"cloudy"
fi
fi
else
T_3="_"
fi
fi
#---------------------------------- Tenki END -----------------------
fi
#---------------------------------- camera End ---------------------
# タイトル文字列の合成( スペースは、使えない )
T_00="__"
T_0="_"
T_1="時現在"
T_2="度"
T_4="天気"
Title=${T_00}${Kjikan}${T_1}${T_0}${ary[1]}\
${T_2}${T_0}${T_4}${T_0}${T_3
#---------------------------------------------------------------------
# 1 分更新処理
#
/usr/bin/fswebcam -p YUYV --bottom-banner\
--line-colour '#FF000000'\
--banner-colour '#FF000000' -S 4 -r 1280x960\
--title ${Title}\
--font '/○○○○/Font/VL-Gothic-Regular.ttf:32'\
--text-colour '#FFFF00'\
-s Brightness=65%\
-s Contrast=15%\
--timestamp '%Y-%m-%d %H:%M' --jpeg 95\
--save ${INFILE60}
#
#---------------------------------------------------------------------
# 12:11 と 12:12に保存する処理
#---------------------------------------------------------------------
if [ ${K1200m} -eq 1211 -o ${K1200m} -eq 1212 ];
then
\cp ${INFILE60} ${www}/webcamday/${Kymd}
chown △△△:△△△ ${www}/webcamday/${Kymd}
#
\cp ${INFILE60} \
${home}/webcamday/DAY${Kyear}${Kmonth}/${Kymd}
chown △△△:△△△ \
${home}/webcamday/DAY${Kyear}${Kmonth}/${Kymd}
fi
#---------------------------------------------------------------------
# 10分毎に保存する処理
# 定刻に、写真が取得できない時があるので、
# 連続2回取るようにする。
#---------------------------------------------------------------------
#echo ${Kminute}
#echo ${Khhmm}
case ${Kminute} in
59|00) cp ${INFILE60} ${Khhmm};; # 00分
09|10) cp ${INFILE60} ${Khhmm};; # 10分
19|20) cp ${INFILE60} ${Khhmm};; # 20分
29|30) cp ${INFILE60} ${Khhmm};; # 30分
39|40) cp ${INFILE60} ${Khhmm};; # 40分
49|50) cp ${INFILE60} ${Khhmm};; # 50分
esac
#---------------------------------------------------------------------
fi # 1 分更新処理 End
#---------------------------------------------------------------------
#
for i in `seq 1 6`;do # 10 秒毎繰り返し処理
#---------------------------------------------------------------------
#
#
/usr/bin/fswebcam -p YUYV --bottom-banner\
--line-colour '#FF000000'\
--banner-colour '#FF000000' -S 2 -r 960x720\
--title ${Title}\
--font '/○○○○/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 ${INFILE10}
#
#---------------------------------------------------------------------
#
if [ ${i} -eq 6 ]; then
break # 強制終了
fi
sleep 8s; # 10 秒待って繰り返し処理実行 上記処理時間を考慮
done;
#
#---------------------------------------------------------------------
|
|