www.smiyasaka.com  は、2022 年 11月から Oracle LInux 8.X にOSを変更しました。

CentOS 6.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)にする。
##   fwebcamにketsuka.txtのファイルを作り、属性を
##   666にしておく。
##   カメラは、BUFFALO  BSW20K06H USB PC Camera
####-----------------------------------------------------------------
#
Kymd="DAY$(date +%Y%m%d).jpg"		#  date(yyyymmdd)
Kyear=$(date +%Y)			# 年(yyyy)
Khour=$(date +%H)			# 時(00-23)
Kmm=$(date +%M)				# 分(00-59)
K1200m=$(date +%H%M)			# 時(00-23)分(00-59)
Kmd=$(date +%m%d)			# 月日(mmdd)
#--------------------------------------------------------------------
#		6 時 から 17 時まで撮影する
#------------------------------------- Main Start -------------------
if [ $Khour -ge 6 -a $Khour -lt 17 ];    #  Main (A)
   then
#
#--------------------------------------------------------------------
#	( ( 分 + 5 ) ÷ 10 ) × 10 の整数計算をする
# 		分を10分単位にする
#--------------------------------------------------------------------
#
KMmm=`expr \( \( $Kmm + 5 \) / 10 \) \* 10`
#
Khmm=$Khour
#echo "Khmm : $Khmm"
   if [ $KMmm -eq 0 ];		# (A)  0分は、"00"にする
      then
		KMmm="00"
   else                         # (A)
	if [ $KMmm -eq 60 ];	    # (B) 60分の時 "時+1"にする
	   then
		KMmm="00"		# 分は、"00"にする
		Khmm=`expr $Khour + 1`
		Kcnt=${#Khmm}		# C) 文字数取得
		if [ $Kcnt -eq 1 ];
		   then
			Khmm="0$Khmm"	# 一桁の時、"0"を追a? 
		fi                      # (C)
	fi                          # (B)
   fi                            # (A)
#--------------------------------------------------------------------
#
# 文字列 "月日"+"時"+"分"に、する
KKmm="$Kmd$Khmm$KMmm"	
# 文字列 "時"+"分"に、する
Khm="$Khmm$KMmm"	
##  MINmmdd.jpg
Khhmm = \
 "/var/www/html/www.smiyasaka.com/\
   webcammin/MIN$KKmm.jpg"
#
Kminute=$(date +%M)			# 分
INFILE = "/var/www/html/www.smiyasaka.com/\
          webcam/camdata.jpg"
#
#--------------------------------------------------------------------
#  catコマンドでUSBの情報を取得する。
#  その中に "S:  Product=BUFFALO  
#                          BSW20K06H USB PC Camera"の
#  記述があるかないかでUSBカメラの動作を判断する。
#--------------------------------------------------------------------
#
   ketsuka="/var/www/html/www.smiyasaka.com/\
             webcam/ketsuka.txt"
   cat /proc/bus/usb/devices > $ketsuka

 USB1=$(grep "S: \
 Product=BUFFALO  BSW20K06H USB PC Camera" $ketsuka)
# ELECOM USB Camera
   if [ -z "$USB1" ];
      then
	USB1=$(grep "S:  Product=USB2.0 Camera" $ketsuka)
   fi
# ELECOM USB Camera
   if [ -z "$USB1" ];
      then
	USB1=$(grep "S:  Product=Venus USB2.0\
                                        Camera" $ketsuka)
   fi
# Logicool USB Camera C270sCW
   if [ -z "$USB1" ];
      then
	USB1=$(grep "S:  SerialNumber=E981E810" $ketsuka)
   fi
# Logicool USB Camera C270 H25.10.28
   if [ -z "$USB1" ];
      then
	USB1=$(grep "S:  SerialNumber=49333B40" $ketsuka)
   fi
#
#
# USBカメラが動作している時には、抽出文字列が$USB1に
# セットされる。
#
#echo USB1 Data = $USB1
   if [ -z "$USB1" ];
    then
      cp /var/www/html/www.smiyasaka.com/webcam/\
          ngcamera.jpg $INFILE
      #echo "camera NG"
	exit 
    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]}
#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
# H26.03.03 追加 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="" の判定 ( ""/0 でエラーに成る為の対策 )
if [ -z $Ksun ];
   then
      Ksun=0
   else
      Ksun=`expr $Ksun / 1`
fi
echo "Ksun = $Ksun"
#-------------------------------------------------------------------
T_00="__"
T_0="_"
T_1="時現在"
T_2="度"
T_4="天気"
#-------------------------------------------------------------------
#  	天気の種分けを判定する。  雨量を追加 
#----------------------------------- Tenki Start -------------------
  if [ $Kame -ne 0 ];                    # Tenki (A)
     then
        T_3="雨("$Mame"mm)"    #"rainy" + (雨量)
  else                                  # Tenki (A)
       #------------------------------------------------------------
       #  快晴,晴,曇/晴,晴/曇の判定
       #  7 時~ 18 時の間は、天気表示しない
       #------------------------------------------------------------
       if [ $Kjikan -ge 7 -o $Kjikan -le 18 ];     # Tenki (B)
          then
          #---------------------------------------------------------
          #  日照時間が無い時(---)には、天気表示しない。
          #---------------------------------------------------------
          T_3="_"
          T_4="_"
          #
          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)
                      #---------------------------------------------
                      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                                    # Tenki (D)
          fi                                         # Tenki (C)
       #-------------------------------------------------------------
       else                                       # Tenki (B)
               T_3="_"
               T_4="_"
       fi                                         # Tenki (B)
  fi                                    # Tenki (A)
  #----------------------------------- Tenki END --------------------
fi             # camera
#------------------------------------ camera END --------------------
#
#  タイトル文字合成  __○時現在_○度_天気○
#
Title=$T_00$Kjikan$T_1$T_0${ary[1]}$T_2$T_0$T_4$T_0$T_3
#
#-----------------------   CentOS 6.5  ----------------------------
#-- BUFFALO  Brightness=55% Contrast=60%  -r 1280x1024 --
#-- 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
#
#--------------------------------------------------------------------
#	6:00 と 6:01に保存する処理   日の出と太陽の位置を見る
#--------------------------------------------------------------------
    if [ $K1200m -eq 0600 -o $K1200m -eq 0601 ];
           then
        cp $INFILE \
           /var/www/html/www.smiyasaka.com/|
            webcam0600/$Kymd
        chown miyasaka:miyasaka\
 /var/www/html/www.smiyasaka.com/webcam0600/$Kymd
  fi
#--------------------------------------------------------------------
#	11:59 と 12:00に保存する処理
#--------------------------------------------------------------------
    if [ $K1200m -eq 1211 -o $K1200m -eq 1212 ];
           then
      cp $INFILE \
         /var/www/html/www.smiyasaka.com/webcamday/$Kymd
      chown miyasaka:miyasaka\
 /var/www/html/www.smiyasaka.com/webcamday/$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 (A)
#--------------------------------------------------------------------
# 17:00~17:05の間だけ(終了画面)
#          stop.jpg ---> camdata.jpg をする。
#--------------------------------------------------------------------

    if [ $Khour -ge 17 ];
       then
	  Tday="1705"
	  if [ `expr $K1200m \<$Tday` = 1 ];
             then
	   cp /var/www/html/www.smiyasaka.com/webcam/\
               stop.jpg $INFILE
	  fi
    fi
fi        # Main (A)
#-------------------------------------  Main END --------------------

^