File "recv_org.php"

Full path: /www/sonar/recv_org.php
File size: 9.46 KiB (9690 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("lc5269","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;
$HOST = "192.168.100.153";
$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";

$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);
    
 	//■データベース登録処理
	$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);
	
	if($row_avg['count'] != 0)
	{
		
		$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,".","");
		
		$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);
		
		$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);
}
 
 

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

PHP File Manager