File "client.php"

Full path: /www/co2/csv_output/client.php
File size: 16.59 KiB (16993 bytes)
MIME-type: text/x-php
Charset: utf-8

Download   Open   Back

<?php

$data = file_get_contents('php://input');


$ddd = stripslashes($data);
$ddd = rtrim($ddd ,'}"');
$ddd = ltrim($ddd ,'"{');

$data_ = explode(',',$ddd);
$count_ = count($data_);

// $data: サーバからのリクエスト POST ボディデータ(フォーマット: json)
//   シシステムに合わせて、パース及び処理を記述するステムに合わせて、パース及び処理を記述する
//データ形式を整理
$data_row['NMEA'] = "";
for($i = 0;$i < $count_;$i++)
{
	if($i < 36)
	{
		if(($i == 2) || ($i == 3))
		{
			$data_json = array();
			$data_json = explode(':',$data_[$i]);
			$json_name = rtrim($data_json[0],'"');
			$json_name = ltrim($json_name,'"');
			$data_json[3]= rtrim($data_json[3],'"');
			$data_json[1] = ltrim($data_json[1],'"');
			$data_row[$json_name] = $data_json[1] .":" .$data_json[2].":" .$data_json[3] ;
		}
		else
		{		
			$data_json = array();
			$data_json = explode(':',$data_[$i]);
			$json_name = rtrim($data_json[0],'"');
			$json_name = ltrim($json_name,'"');
			if(!empty($data_json[1])) $json_value = rtrim($data_json[1],'"');
			$json_value = ltrim($json_value,'"');
			$data_row[$json_name] = $json_value;
		}
	}
	else
	{
		$data_row['NMEA'] .= "," .$data_[$i];
	}
	
}


//20210528
//デバイスIDによって登録先DBの変更
$device_list = array("lc10546","lc2473","lc2389","lc2733","lc1949","lc2355");
$device_ct = count($device_list);

for($d =0;$d < $device_ct;$d++)
{
	if(!strcmp($data_row['DEVICE_ID'] ,$device_list[$d]))
	{
		$id = $d +1;
	}
}

$DATA_TABLE = "gps.rtk_data" .$id;
$DATA_TABLE2 = "gps.rtk_data_1m" .$id;
$DATA_TABLE3 = "gps.rtk_data_1m_calc" .$id;
$DATA_TABLE4 = "gps.send_mail_address";
$DATA_TABLE5 = "gps.send_log";
$DATA_TABLE6 = "gps.real_time_data".$id;

$HOST = "localhost";
$DB = "ichimill";
$USER = "postgres";
$PASS = "postgres";

$CURRENT_PATH = "/www/gps_socket/" .$id;
$filename =  $CURRENT_PATH ."/csv/" .date("YmdH",time()) .".csv";
$filename_new = $CURRENT_PATH ."/new_data.csv";


//20211108 追加(警報レンジ)
$alarm_range = file_get_contents($CURRENT_PATH ."/alarm_range.txt");

$ppp = fopen("/www/gps_socket/access_ck.txt",'a');
fwrite($ppp,date("Y-m-d H:i:s",time()) ."_" .$id ."\n");
fclose($ppp);


if (!file_exists($filename)) {
	$fp = fopen($filename,"a");
	fwrite($fp,"顧客ID,端末ID,端末時刻,GPS時刻,受信サーバ時刻,緯度,経度,標高,楕円体高,測位状況,HDOP,イベントタイプID,イベント名,イベント名,バッテリ残量,バッテリ電圧,加速度X(RAW),加速度Y(RAW),加速度Z(RAW),加速度X,加速度Y,加速度Z,角速度X(RAW),角速度Y(RAW),角速度Z(RAW),角速度X,角速度Y,角速度Z,気圧,高度,端末庫内温度,信号受信電力,信号強度,受信品質,信号電力対干渉,NMEA" ."\n");
	fclose($fp);
}


if($count_)
{

	//================================================
	//	データベース接続
	//	備考		:	
	//	更新		:	2013/03/12 KMK-Yokosuka
	//================================================
	$conn = pg_connect("
		host	=	". $HOST. "
		dbname	=	". $DB. "
		user	=	". $USER. "
		password=	". $PASS. "
	");


	$CUSTOMER_ID = (!empty($data_row['CUSTOMER_ID']) ? $data_row['CUSTOMER_ID'] : "");
	$DEVICE_ID = (!empty($data_row['DEVICE_ID']) ? $data_row['DEVICE_ID'] : "");
	$DATE = (!empty($data_row['DATE']) ? $data_row['DATE'] : "");
	$GPS_DATE = (!empty($data_row['GPS_DATE']) ? $data_row['GPS_DATE'] : "");
	$SERVER_UNIXTIME = (!empty($data_row['SERVER_UNIXTIME']) ? $data_row['SERVER_UNIXTIME'] : "");
	$LATITUDE = (!empty($data_row['LATITUDE']) ? $data_row['LATITUDE'] : "");
	$LONGITUDE = (!empty($data_row['LONGITUDE']) ? $data_row['LONGITUDE'] : "");
	$GPS_ALTITUDE = (!empty($data_row['GPS_ALTITUDE']) ? $data_row['GPS_ALTITUDE'] : "");
	$GPS_ELLIPSOIDALHEIGHT = (!empty($data_row['GPS_ELLIPSOIDALHEIGHT']) ? $data_row['GPS_ELLIPSOIDALHEIGHT'] : "");
	$POSITION_TYPE_NAME = (!empty($data_row['POSITION_TYPE_NAME']) ? $data_row['POSITION_TYPE_NAME'] : "");
	$HDOP = (!empty($data_row['HDOP']) ? $data_row['HDOP'] : "");
	$EVENT_TYPE = (!empty($data_row['EVENT_TYPE']) ? $data_row['EVENT_TYPE'] : "");
	$EVENT_NAME_JP = (!empty($data_row['EVENT_NAME_JP']) ? $data_row['EVENT_NAME_JP'] : "");
	$EVENT_NAME_EN = (!empty($data_row['EVENT_NAME_EN']) ? $data_row['EVENT_NAME_EN'] : "");
	$POWER = (!empty($data_row['POWER']) ? $data_row['POWER'] : "");
	$VOLTAGE = (!empty($data_row['VOLTAGE']) ? $data_row['VOLTAGE'] : "");
	$ACCELERATION_RAW_X = (!empty($data_row['ACCELERATION_RAW_X']) ? $data_row['ACCELERATION_RAW_X'] : "");
	$ACCELERATION_RAW_Y = (!empty($data_row['ACCELERATION_RAW_Y']) ? $data_row['ACCELERATION_RAW_Y'] : "");
	$ACCELERATION_RAW_Z = (!empty($data_row['ACCELERATION_RAW_Z']) ? $data_row['ACCELERATION_RAW_Z'] : "");
	$ACCELERATION_X = (!empty($data_row['ACCELERATION_X']) ? $data_row['ACCELERATION_X'] : "");
	$ACCELERATION_Y = (!empty($data_row['ACCELERATION_Y']) ? $data_row['ACCELERATION_Y'] : "");
	$ACCELERATION_Z = (!empty($data_row['ACCELERATION_Z']) ? $data_row['ACCELERATION_Z'] : "");
	$GYRO_RAW_X = (!empty($data_row['GYRO_RAW_X']) ? $data_row['GYRO_RAW_X'] : "");
	$GYRO_RAW_Y = (!empty($data_row['GYRO_RAW_Y']) ? $data_row['GYRO_RAW_Y'] : "");
	$GYRO_RAW_Z = (!empty($data_row['GYRO_RAW_Z']) ? $data_row['GYRO_RAW_Z'] : "");
	$GYRO_X = (!empty($data_row['GYRO_X']) ? $data_row['GYRO_X'] : "");
	$GYRO_Y = (!empty($data_row['GYRO_Y']) ? $data_row['GYRO_Y'] : "");
	$GYRO_Z = (!empty($data_row['GYRO_Z']) ? $data_row['GYRO_Z'] : "");
	$PRESSURE = (!empty($data_row['PRESSURE']) ? $data_row['PRESSURE'] : "");
	$ALTITUDE = (!empty($data_row['ALTITUDE']) ? $data_row['ALTITUDE'] : "");
	$TEMPERATURE = (!empty($data_row['TEMPERATURE']) ? $data_row['TEMPERATURE'] : "");
	$RSRP = (!empty($data_row['RSRP']) ? $data_row['RSRP'] : "");
	$RSSI = (!empty($data_row['RSSI']) ? $data_row['RSSI'] : "");
	$RSRQ = (!empty($data_row['RSRQ']) ? $data_row['RSRQ'] : "");
	$SINR = (!empty($data_row['SINR']) ? $data_row['SINR'] : "");
	$NMEA = (!empty($data_row['NMEA']) ? $data_row['NMEA'] : "");


	$fp = fopen($filename,"a");
	$fp2 = fopen($filename_new,"w");
	fwrite($fp,$CUSTOMER_ID."," .$DEVICE_ID."," .$DATE."," .$GPS_DATE."," .$SERVER_UNIXTIME."," .$LATITUDE.",");
	fwrite($fp,$LONGITUDE."," .$GPS_ALTITUDE."," .$GPS_ELLIPSOIDALHEIGHT."," .$POSITION_TYPE_NAME."," .$HDOP."," .$EVENT_TYPE.",");
	fwrite($fp,$EVENT_NAME_JP."," .$EVENT_NAME_EN."," .$POWER."," .$VOLTAGE."," .$ACCELERATION_RAW_X."," .$ACCELERATION_RAW_Y.",");
	fwrite($fp,$ACCELERATION_RAW_Z."," .$ACCELERATION_X."," .$ACCELERATION_Y."," .$ACCELERATION_Z."," .$GYRO_RAW_X."," .$GYRO_RAW_Y.",");
	fwrite($fp,$GYRO_RAW_Z."," .$GYRO_X."," .$GYRO_Y."," .$GYRO_Z."," .$PRESSURE."," .$ALTITUDE.",");
	fwrite($fp,$TEMPERATURE."," .$RSRP."," .$RSSI."," .$RSRQ."," .$SINR."," .$NMEA."\n");

	fwrite($fp2,$CUSTOMER_ID."," .$DEVICE_ID."," .$DATE."," .$GPS_DATE."," .$SERVER_UNIXTIME."," .$LATITUDE.",");
	fwrite($fp2,$LONGITUDE."," .$GPS_ALTITUDE."," .$GPS_ELLIPSOIDALHEIGHT."," .$POSITION_TYPE_NAME."," .$HDOP."," .$EVENT_TYPE.",");
	fwrite($fp2,$EVENT_NAME_JP."," .$EVENT_NAME_EN."," .$POWER."," .$VOLTAGE."," .$ACCELERATION_RAW_X."," .$ACCELERATION_RAW_Y.",");
	fwrite($fp2,$ACCELERATION_RAW_Z."," .$ACCELERATION_X."," .$ACCELERATION_Y."," .$ACCELERATION_Z."," .$GYRO_RAW_X."," .$GYRO_RAW_Y.",");
	fwrite($fp2,$GYRO_RAW_Z."," .$GYRO_X."," .$GYRO_Y."," .$GYRO_Z."," .$PRESSURE."," .$ALTITUDE.",");
	fwrite($fp2,$TEMPERATURE."," .$RSRP."," .$RSSI."," .$RSRQ."," .$SINR.",'ttt'");


    fclose($fp);
    fclose($fp2);
    
//2022024 PTSサーバーへデータの転送
//---------------------------------------------------------------
//$dev_id = $data_row['DEVICE_ID'];
$send_data = $CUSTOMER_ID."," .$DEVICE_ID."," .$DATE."," .$GPS_DATE."," .$SERVER_UNIXTIME."," .$LATITUDE.",";
$send_data .= $LONGITUDE."," .$GPS_ALTITUDE."," .$GPS_ELLIPSOIDALHEIGHT."," .$POSITION_TYPE_NAME."," .$HDOP."," .$EVENT_TYPE.",";
$send_data .= $EVENT_NAME_JP."," .$EVENT_NAME_EN."," .$POWER."," .$VOLTAGE."," .$ACCELERATION_RAW_X."," .$ACCELERATION_RAW_Y.",";
$send_data .= $ACCELERATION_RAW_Z."," .$ACCELERATION_X."," .$ACCELERATION_Y."," .$ACCELERATION_Z."," .$GYRO_RAW_X."," .$GYRO_RAW_Y.",";
$send_data .= $GYRO_RAW_Z."," .$GYRO_X."," .$GYRO_Y."," .$GYRO_Z."," .$PRESSURE."," .$ALTITUDE.",";
$send_data .= $TEMPERATURE."," .$RSRP."," .$RSSI."," .$RSRQ."," .$SINR."," .$NMEA;

$url = 'http://www.ptgw3.net/400_ichimiru/recv/icm_recv.php';
$data = array(
    'data' => $send_data
);


//$header = array(
//        "Content-Type: application/x-www-form-urlencoded",
//        "Content-Length: ".strlen($data['data'])
//    );

$options = array('http' => array(
    'method' => 'POST',
//    'header' => implode("\r\n", $header),
    'content' => http_build_query($data),
));
$contents = file_get_contents($url, false, stream_context_create($options));
//---------------------------------------------------------------    

 	//■データベース登録処理
	$insert = "COPY " .$DATA_TABLE  ." FROM '" .$filename_new ."' WITH CSV;";
	$res = pg_query($conn, $insert);


	//■最新の緯度経度高さから60秒平均を引き、データベースへ登録
	$avg = "SELECT count(latitude),avg(latitude) as lat, avg(longitude) as lon, avg(gps_altitude) as alt ";
	$avg .= "FROM " .$DATA_TABLE2;
	$res_avg = pg_query($conn, $avg);
	$row_avg = pg_fetch_array($res_avg,0);
	
	$limit_t = 30;

	
	if($row_avg['count'] != 0)
	{
		//20211115 平均高さ-現在の最新の高さを取得
		$sel_new = "SELECT * FROM " .$DATA_TABLE3 ." order by gps_date desc limit 1";
		$res_new = pg_query($conn, $sel_new);
		$row_new = pg_fetch_array($res_new,0);
		$base_alt = $row_new['gps_altitude'];
		
		$out_lat = number_format($LATITUDE - $row_avg['lat'],9,".","");
		$out_lon = number_format($LONGITUDE -$row_avg['lon'],9,".","");
		$out_alt = number_format($GPS_ALTITUDE - $row_avg['alt'],6,".","");

		$t_now = strtotime($GPS_DATE);
		$t_st = file_get_contents($CURRENT_PATH ."/t_st.txt");		//現在の開始時間T(秒)
		$z_min = file_get_contents($CURRENT_PATH ."/z_min.txt");	//現在の最小の差分波高さ
		$z_max = file_get_contents($CURRENT_PATH ."/z_max.txt");	//現在の最大の差分波高さ

		if($limit_t < ($t_now - $t_st))
		{
			$fp_tst = fopen($CURRENT_PATH ."/t_st.txt","w");
			$fp_zmin = fopen($CURRENT_PATH ."/z_min.txt","w");
			$fp_zmax = fopen($CURRENT_PATH ."/z_max.txt","w");
			fwrite($fp_tst,$t_now);
			fwrite($fp_zmin,0);
			fwrite($fp_zmax,0);
			fclose($fp_tst);
			fclose($fp_zmin);
			fclose($fp_zmax);
			$t_st = file_get_contents($CURRENT_PATH ."/t_st.txt");		//現在の開始時間T(秒)
			$z_min = file_get_contents($CURRENT_PATH ."/z_min.txt");	//現在の最小の差分波高さ
			$z_max = file_get_contents($CURRENT_PATH ."/z_max.txt");	//現在の最大の差分波高さ
		}

		/*
		if($limit_t < ($t_unix - $t_st))
		{
			$fp_tst = fopen($CURRENT_PATH ."/t_st.txt","w");
			$fp_zmin = fopen($CURRENT_PATH ."/z_min.txt","w");
			$fp_zmax = fopen($CURRENT_PATH ."/z_max.txt","w");
			fwrite($fp_tst,"");
			fwrite($fp_zmin,0);
			fwrite($fp_zmax,0);
			fclose($fp_tst);
			fclose($fp_zmin);
			fclose($fp_zmax);
		}
		*/

		//20211115 リアルタイムの波高、周期の計算
		$fp_de = fopen($CURRENT_PATH ."/debug.txt","a");
		fwrite($fp_de,"st_" .$GPS_DATE ."__" .date("Y-m-d H:i:s" ,$t_st) ."__" .$t_now ."__" .$t_st ."__" .$base_alt ."__" .$out_alt  ."__" .$z_min ."__" .$z_max ."\n");
		if((($base_alt * $out_alt)  < 0) && ($out_alt > 0))
		{
			fwrite($fp_de,"1" ."\n");
			//T1記録
			//Export T1
			//Zmax,Zmin初期化、 T0記録
			$wave_height = $z_max - $z_min;
			$period = $t_now -$t_st;

			$fp_tst = fopen($CURRENT_PATH ."/t_st.txt","w");
			fwrite($fp_tst,$t_now);
			fclose($fp_tst);
			
			if($period != 0)
			{
				fwrite($fp_de,"export" ."\n");
				$insert4 = "INSERT INTO " .$DATA_TABLE6 ."(";
			    $insert4 .= "gps_date, wave_height,period)";
				$insert4 .= "VALUES (";
				$insert4 .= "'" .$GPS_DATE ."',";
				$insert4 .= $wave_height .",";
				$insert4 .= $period;
				$insert4 .= ")";
				$res4 = pg_query($conn, $insert4);
				
				$fp_zmin = fopen($CURRENT_PATH ."/z_min.txt","w");
				$fp_zmax = fopen($CURRENT_PATH ."/z_max.txt","w");
				fwrite($fp_zmin,0);
				fwrite($fp_zmax,0);
				fclose($fp_zmin);
				fclose($fp_zmax);
			}
		}
		else
		{
			fwrite($fp_de,"2" ."\n");
			 if($z_max < $out_alt)
			 {
			 	 fwrite($fp_de,"max_up" ."\n");
			 	//zmax更新
				$fp_zmax = fopen($CURRENT_PATH ."/z_max.txt","w");
				fwrite($fp_zmax,$out_alt);
				fclose($fp_zmax);
			 }
			 
			 if($z_min > $out_alt)
			 {
			 	 fwrite($fp_de,"min_up" ."\n");
				//zmin更新
				$fp_zmin = fopen($CURRENT_PATH ."/z_min.txt","w");
				fwrite($fp_zmin,$out_alt);
				fclose($fp_zmin);
			 }
		}

		fwrite($fp_de, "end_" .$GPS_DATE ."__" .date("Y-m-d H:i:s" ,$t_st) ."__" .$t_now ."__" .$t_st ."__" .$base_alt ."__" .$out_alt  ."__" .$z_min ."__" .$z_max ."\n");
		fclose($fp_de);
		
		$insert3 = "INSERT INTO " .$DATA_TABLE3 ."(";
	    $insert3 .= "gps_date, latitude, longitude, gps_altitude)";
		$insert3 .= "VALUES (";
		$insert3 .= "'" .$GPS_DATE ."',";
		$insert3 .= $out_lat  .",";
		$insert3 .= $out_lon  .",";
		$insert3 .= $out_alt ."";
		$insert3 .= ")";
		$res3 = pg_query($conn, $insert3);

		//20211108 追加 メール送信処理
		//$wave_height
		if($alarm_range < $wave_height)
//		if($alarm_range < $out_alt)
		{
			$sql3 = "SELECT * FROM " .$DATA_TABLE4 ." WHERE device_id=" .$id ." AND del_flag=0" ;
			$res3 = pg_query($conn, $sql3);
			$ct3 = pg_num_rows($res3);
			
			for($k =0;$k < $ct3;$k++)
			{
				$row3 = pg_fetch_array($res3,$k);
				$send = Mail_send($row3['mail_address'],$id);
				if($send)
				{
					$ins_sql2 = "INSERT INTO " .$DATA_TABLE5  ."(device_id, mail_address, send_datetime)";
					$ins_sql2 .= "VALUES (";
				    $ins_sql2 .= $id .",";
				    $ins_sql2 .= "'" .$row3['mail_address'] ."',";
				    $ins_sql2 .= "CURRENT_TIMESTAMP)";
				    $ins_res2 = pg_query($conn,$ins_sql2) or die("SQL ERROR!!<br />". $ins_sql2.pg_last_error());
			    }
			}
		}

		$gps_date_unix = strtotime($GPS_DATE);
		$delete_date = date("Y-m-d H:i:s", $gps_date_unix-60);
		
		$delete = "DELETE FROM " .$DATA_TABLE3 ." WHERE gps_date <= '" .$delete_date ."';";
		$res_del = pg_query($conn, $delete);
		
		/*
		$fp_a = fopen("coordinate_a_avg.txt","w");
		$fp_b = fopen("coordinate_b_avg.txt","w");
		
		$out_lat = number_format($LATITUDE - $row_avg['lat'],3,".","");
		$out_lon = number_format($LONGITUDE -$row_avg['lon'],3,".","");
		$out_alt = number_format($GPS_ALTITUDE - $row_avg['alt'],3,".","");
			
		fwrite($fp_a,$out_lat ."," .$out_lon);
		fwrite($fp_b,$out_alt);
		fcloce($fp_a);
		fcloce($fp_b);
		*/
	}
	
	
	//■グラフ用に60秒分のデータ保存データーベス
	$insert2 = "INSERT INTO " .$DATA_TABLE2 ."(";
    $insert2 .= "gps_date, latitude, longitude, gps_altitude)";
	$insert2 .= "VALUES (";
	$insert2 .= "'" .$GPS_DATE ."',";
	$insert2 .= $LATITUDE  .",";
	$insert2 .= $LONGITUDE  .",";
	$insert2 .= $GPS_ALTITUDE ."";
	$insert2 .= ")";

	if($LATITUDE) $res2 = pg_query($conn, $insert2);
	
	$gps_date_unix = strtotime($GPS_DATE);
	$delete_date = date("Y-m-d H:i:s", $gps_date_unix-60);
	
	$delete = "DELETE FROM " .$DATA_TABLE2 ." WHERE gps_date <= '" .$delete_date ."';";
	$res_del = pg_query($conn, $delete);
}
 
 

//●メール送信
function Mail_send($address_,$id_)
{
	//■内部文字エンコーディングを設定 
	mb_internal_encoding("ISO-2022-JP");

//	$data_ct = count($data_);
	
	//ヘッダー設定
	$header  = "From: " ."ブイ管理システム" ."<www@penta-02.ptgw.net>" ."\n";
	$header .= "Reply-To: " ."ブイ管理システム" ."<www@penta-02.ptgw.net>" ."\n";
	//$header.= "Cc: " .$send_to1 ."," .$send_to2 ."\n";
	//$header.= "Bcc: " ."'blue.puny@gmail.com'" ."\n";
	$header .= "Content-Type: text/html;charset=ISO-2022-JP" ."\n";
	$header .= "X-Mailer: myphpMail ". phpversion(). "\n";

	//件名設定
	$Subject = mb_convert_encoding("ブイ" .$id_ ,"ISO-2022-JP","UTF-8");

	//本文設定
//	$message = mb_convert_encoding("※このメールはシステム側から送信しています" ."<BR><BR>" ,"ISO-2022-JP","UTF-8");
//	$message .= mb_convert_encoding("【体温が37℃以上及び体調不良者のお知らせ】" ."<BR>" ,"ISO-2022-JP","UTF-8");
//	$message .= mb_convert_encoding("日時		 :" .$date_ ."<BR>" ,"ISO-2022-JP","UTF-8");
//	$message .= mb_convert_encoding("会社名		:" .$company_name_ ."<BR>" ,"ISO-2022-JP","UTF-8");
//	$message .= mb_convert_encoding("名前 		:" .$name_ ."<BR>" ,"ISO-2022-JP","UTF-8");

//	for($ii = 0;$ii < $data_ct;$ii= $ii+2)
//	{
//		$message .= mb_convert_encoding($data_[$ii] .":" .$data_[$ii+1] ."<BR>" ,"ISO-2022-JP","UTF-8");
//	}
//
//	$message = wordwrap($message, 70);

	//送信する
	if(mb_send_mail($address_, $Subject , $message,$header))
	{
		return 1;
	}

}

 
 // 処理終了後、ステータスコード:200を返却
?>

PHP File Manager