CentOS 7.X 用プログラム

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

#!/bin/sh
####-----------------------------------------------------------------------------
####    fswebcamによる静止画の取り込み。
####    17:00 〜 6:00の間、運用休止して、断り写真にする。
####	12:00に取った写真をwebcamdayにDAYyyyymmdd.jpgで
####	毎日保存する。
####	6:00に取った写真をwebcam0600にDAYyyyymmdd.jpgで
####	毎日保存する。
####	10分毎に取った写真をwebcamminにMINyyyymmdd.jpgで
####	毎日上書き保存する。(IEの一時ファイルの更新対策)
####	USBカメラ動作不良の時、故障写真(ngcamera.jpg)にする。
####	webcamにketsuka.txtのファイルを作り、属性を
####	666にしておく。
####    変数名には、分かり易くするため {} を付けました。
####-----------------------------------------------------------------------------
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="/var/www/html/www.smiyasaka.com"   # Dir pass1
home="/home/miyasaka/www"               # Dir pass2
INFILE="${www}/webcam/camdata.jpg"      # Save Dir
#--------------------------------------------------------------------------------
#		6時から17時まで撮影する
#-------------------------------------  Main START ------------------------------
#
if [ ${Khour} -ge 6 -a ${Khour} -lt 17 ];
   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"を追a? 
		fi
	fi
   fi
#--------------------------------------------------------------------------------
#
KKmm="${Kmd}${Khmm}${KMmm}"	        # 文字列 "月日"+"時"+"分"に、する
Khm="${Khmm}${KMmm}"			# 文字列 "時"+"分"に、する
#
Khhmm="${www}/webcammin/MIN${KKmm}.jpg"	#  MINmmdd.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}にセットされる。
# 	無い時は、カメラ接続無しの為、処理終了させる。
#echo USB1 Data = ${USB1}
#------------------------------------ camera Start ------------------------------
 if [ -z "${USB1}" ];
      then
	\cp ${www}/webcam/ngcamera.jpg ${INFILE}
	#echo "camera NG"
	exit             # 表示処理終了
#------------------------------------ camera Else -------------------------------
  else                   # camera
#--------------------------------------------------------------------------------
#  yahoo の温度を表示させる。
#--------------------------------------------------------------------------------
Y_file=$(cat /var/www/html/www.smiyasaka.com/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]}
#
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 ];                   # Tenki (A)
     then
        T_3="雨("$Mame"mm)"    #"rainy" + (雨量)
  else                                  # Tenki (A) else
       #------------------------------------------------------------
       #  快晴,晴,曇/晴,晴/曇の判定
       #  7 時〜 18 時の間は、天気表示しない
       #------------------------------------------------------------
       if [ $Kjikan -ge 7 -o $Kjikan -le 18 ];     # Tenki (B)
          then
          #---------------------------------------------------------
          #  日照時間が無い時(---)には、天気表示しない。
          #---------------------------------------------------------
          T_3="_"
          #
          if [ ${ary[4]} != "---"];                    # Tenki (C)
             then
               T_4="天気"
               if [ $Kame -eq 0 -a $Ksun -gt 50 ];           # Tenki (D)
                  then
                      #---------------------------------------------
                      if [ $Ksun -gt 59 ];
                         then
                             T_3="快晴"    # "very fine"
                         else
                             T_3="晴"      # "fine"
                      fi
                      #---------------------------------------------
               else      # Tenki (D) else
                      #---------------------------------------------
                      if [ $Ksun -gt 5 ];
                         then
                               T_3="曇/晴"           #"cloudy/fine"
                               if [ $Ksun -gt 35 ];
                                  then
                                      T_3="晴/曇"    #"fine/cloudy"
                               fi
                      else
                               T_3="曇"              #"cloudy"
                      fi
                      #----------------------------------------------
               fi                                           # Tenki (D)
          fi                                          # Tenki (C)
       #----------------------------------------------
       else                                       # Tenki (B) else
               T_3="_"
       fi                                         # Tenki (B)
  fi                                    # Tenki (A)
#----------------------------------- Tenki 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}
#
#----------------------------   CentOS 7.0  -------------------------------------
#---------- ELECOM   Brightness=45% Contrast=40%  -r 1280x1024 ------------------
#---------- Logicool Brightness=65% Contrast=15%  -r 1280x960  ------------------
#
    /usr/bin/fswebcam -p YUYV --bottom-banner --line-colour '#FF000000'
	--banner-colour '#FF000000' -S 6 -r 1280x960\
        --title ${Title}\
        --font '/var/www/html/www.smiyasaka.com/VL-Gothic-Regular.ttf:32'\
	--text-colour '#FFFF00'\
        -s Brightness=65%\
        -s Contrast=15%\
	-timestamp '%Y-%m-%d %H:%M' --jpeg 95 --save ${INFILE}
#------------------------------------ camera END --------------------------------
fi
#--------------------------------------------------------------------------------
#		6:00 と 6:01に保存する処理   日の出と太陽の位置を見る
#--------------------------------------------------------------------------------
   if [ ${K1200m} -eq 0600 -o ${K1200m} -eq 0601 ];
    then
      \cp ${INFILE} ${home}webcam0600/DAY${Kyear}${Kmonth}/${Kymd}
      chown miyasaka:miyasaka ${home}/webcam0600/DAY${Kyear}${Kmonth}/${Kymd}
   fi
#---------------------------------------------------------------------------------
#		12:11 と 12:12に保存する処理
#---------------------------------------------------------------------------------
   if [ ${K1200m} -eq 1211 -o ${K1200m} -eq 1212 ];
    then
      \cp ${INFILE} ${www}/webcamday/${Kymd}
      chown miyasaka:miyasaka ${www}/webcamday/${Kymd}
      # H26.09.17 Save home Dir
      \cp ${INFILE} ${home}/webcamday/DAY${Kyear}${Kmonth}/${Kymd}
      chown miyasaka:miyasaka ${home}/webcamday/DAY${Kyear}${Kmonth}/${Kymd}
   fi
#---------------------------------------------------------------------------------
#		10分毎に保存する処理
#	定刻に、写真が取得できない時があるので、連続3回取るようにする。
#---------------------------------------------------------------------------------
#echo ${Kminute}
#echo ${Khhmm}
	case  ${Kminute} in
		59|00) cp ${INFILE} ${Khhmm};;		# 00分
		09|10) cp ${INFILE} ${Khhmm};;		# 10分
		19|20) cp ${INFILE} ${Khhmm};;		# 20分
		29|30) cp ${INFILE} ${Khhmm};;		# 30分
		39|40) cp ${INFILE} ${Khhmm};;		# 40分
		49|50) cp ${INFILE} ${Khhmm};;		# 50分
	esac
#------------------------------------ Main else ---------------------------------
else   # Main else
#--------------------------------------------------------------------------------
#		17:00〜17:05の時刻 stop.jpg ---> camdata.jpg をする。
#--------------------------------------------------------------------------------
	
	if [ ${Khour} -ge 17 ];
         then
		Tday="1705"
		if [ `expr ${K1200m} \< ${Tday}` = 1 ];
        	 then
	    		\cp ${www}/webcam/stop.jpg ${INFILE}
		fi
	fi
#--------------------------------------------------------------------------------
fi
#-------------------------------------  Main END --------------------------------

TOPへ戻る