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
<?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を返却
?>