<?php
/* 撮影画像保存ディレクトリ */
$dir = "/home/pi/sky/storage/";
/* 撮影回数の最大 */
$max = 36;
/* 撮影間隔 (分) ─ 60 の約数であること */
$interval = intval( $argv[1] );
/* 現地の東経(度) */
$longitude = [‥‥];
/* 日本標準時との時差 */
$d_min0 = round( ( 60 * ( $longitude - 135 ) / 15 ), 0 );
$d_min = $d_min0 % 60;
$d_hour = ( $d_min0 - $d_min )/ 60;
/* 現地現在時 */
$hour = intval( date( "H" ) );
$min = intval( date( "i" ) );
$min = $min + $d_min;
if( $min < 0 ){
$min = $min + 60;
$hour = $hour - 1;
}
elseif( $min >= 60 ){
$min = $min - 60;
$hour = $hour + 1;
}
/* 分が $interval で割り切れる時刻まで,待つ */
$min0 = intval( date( "i" ) );
while(1) {
if( ( $min % $interval ) == 0 ){
break;
}
if( $min0 != intval( date( "i" ) ){
$min0++;
$min++;
if( $min == 60 ){
$min = 0;
$hour++;
}
}
}
/* $interval 間隔で撮影 */
$counter = 0;
while(1) {
/* 撮影 */
$file_name = sprintf( '%02d', $hour )."-".sprintf( '%02d', $min ).".jpg";
$cmd = "raspistill -w 1600 -h 1500 -o ".$file_name;
exec( $cmd );
echo $file_name."\n";
$counter++;
if( $counter > $max ){
exit;
}
$min = $min + $interval;
if( $min == 60 ){
$min = 0;
$hour++;
}
/* $interval が経過するのを待つ */
$n = 0;
$min0 = intval( date( "i" ) );
while(1) {
if( $min0 != intval( date( "i" ) ){
$n++;
$min0++;
if( $n == $interval ){
break;
}
}
/* sleep */
$sec0 = intval( date( "s" ) );
$sleep_time = 55 - $sec0;
if( $sleep_time > 0 ){
sleep( $sleep_time );
}
}
}
?>
|
「<?php」を「<?」に代えることはできない。
──「<?」にして php -e で実行すると,ソースファイルの表示になる。
|