where('lable',$item['label'])->order("id","desc")->value("time"); $data[] = [ 'mac' => $mac, 'lable' => $item['label'], 'rssi' => $item['rssi'], 'time' => $item['time'], 'addTime' => time(), 'move' => $item['move'], 'step' => empty($item['step']) ? 0 : $item['step'], 'temperature' => empty($item['temperature']) ? 0 : $item['temperature'], //告警 'temperWarn' => empty($item['temperWarn']) ? 00 : $item['temperWarn'], // "interval_time"=>empty($onetime) ?0:($item['time']-$onetime) ]; } $tage = new TagHistory(); $tage->saveAll($data); json_success('上传成功'); } //储存数据到redis public function redis_to_mysql(){ $ues_redis=Cache::store('redis')->handler(); $dispose = new dispose($ues_redis); $text=null; while(1){ $jsonData= $ues_redis->rpop("mqtt_data"); if(empty($jsonData)){ sleep(1); continue; } debug_log("InAndOUT",'数据redis'.$jsonData); $data=json_decode($jsonData,true); $time=$data['time']; $mac=$data['devId']; //存入基站的最新时间 $dispose->setStations($mac,$time); $list=[]; $text=$text.$data['cnt']; if(strlen($text)<24){ continue; } while(strlen($text)>=24){ $da=substr($text,0,24); $t1 = substr($da,8,2)=='00'||substr($da,8,2)=='10'||substr($da,8,2)=='01' ? true:false; $t2 =substr($da,10,6)=="FFFFFF"||substr($da,10,6)=="000000" ?true:false; if($t1&&$t2){ $label= substr($da,0,8); $rssi1= substr($da,16,2); $rssi2= substr($da,18,2); $rssi3= substr($da,20,2); $rssi4= substr($da,22,2); $DA=[ 'mac' => $mac, 'label' =>$label, 'rssi1' => hexdec($rssi1), 'rssi2' => hexdec($rssi2), 'rssi3' => hexdec($rssi3), 'rssi4' => hexdec($rssi4), 'report_time'=>$time ]; $vs=false; $history_status=false; $DA['other_time']=date("Y-m-d H:i:s",$time); debug_log("label_log","cssh: ".json_encode($DA)); if($DA['rssi1']<=85||$DA['rssi2']<=85||$DA['rssi3']<=85||$DA['rssi4']<=85){ $history_status=true; } if($DA['rssi1']<=72||$DA['rssi2']<=72||$DA['rssi3']<=72||$DA['rssi4']<=72){ $vs=true; } $DA['rssi1']=$DA['rssi1']==255?100:$DA['rssi1']; $DA['rssi2']=$DA['rssi2']==255?100:$DA['rssi2']; $DA['rssi3']=$DA['rssi3']==255?100:$DA['rssi3']; $DA['rssi4']=$DA['rssi4']==255?100:$DA['rssi4']; $DA["rssi1"]=$DA["rssi1"]<=$DA["rssi3"]?$DA["rssi1"]:$DA["rssi3"]; $DA["rssi2"]=$DA["rssi2"]<=$DA["rssi4"]?$DA["rssi2"]:$DA["rssi4"]; /** * 缓存到redis历史数据 */ if(substr($da,8,2)=='01'&&$history_status&&$DA["rssi1"]!=$DA["rssi2"]){ debug_log("label_log","cache: ".json_encode($DA)); $diff= $DA["rssi1"]-$DA["rssi2"]; if(abs($diff)>2){ $dispose->set_label_history($DA); } debug_log("label_log","cache_diff: ".$diff); } if($vs&&(substr($da,8,2)=='01')){ try{ $DA= $dispose->check_data($DA); debug_log("label_log","xsj:".json_encode($DA)); $dispose->computeResout($DA); }catch(Exception $e){ debug_log("InAndOUT","抛出异常:".$e->getMessage()); } } $text=substr($text,24); }else{ $text=substr($text,1); } } } } /** * 清除数据 * * @return void */ public function clear_redis(){ while(1){ sleep(1); $redis=Cache::store('redis')->handler(); $dispose = new dispose($redis); $keylist= $dispose->getStations(); debug_log("clear_label","查询数据".json_encode($keylist)); if(empty($keylist)){ continue; } foreach($keylist as $station){ //结果key值 $key="res".$station; //存取旧的数据的reids数据 $catchkey=$station."station"; //获取该基站的所有key $keys= $redis->hKeys($key); if(empty($keys)){ continue; } foreach($keys as $item){ if( $json_data=$redis->hget($key,$item)){ debug_log("clear_label",'基站'.$station.'获取的数据'.'标签'.$item.$json_data); $json_data=json_decode($json_data,true); //列表 $a=$json_data['a']; //状态 $status=$json_data['status']; //是否形成进出考勤 $in_and_out=$json_data["in_and_out"]; //总数 $count= count($a); $time= $dispose->getNowStationTime($station); debug_log("clear_label","标签最新最新时间". date('Y-m-d H:i:s', $time)); if(($time-$json_data["time"])<=7){ debug_log("clear_label", $item.':'. "标签上报间隔没有超过7秒进行跳过"); continue; } if($count<5){ if($count>2){ debug_log("clear_label", $item.':'. "标签信号个数等于超过2个,参与计算"); $frist=$a[0]['dirt']; $end=$a[$count-1]['dirt']; if($frist!=$end){ debug_log("clear_label", $item.':'. "标签信号个数等于超过2个,参与计算,得出结果:".$frist); $dispose->network_push($station,$item,$a[$count-1]['time'],$frist==1?1:2); }else{ debug_log("clear_label", $item.':'. "标签信号个数没有超过2个,全部去清除"); } } }else{ $front=0; $back=0; $res=0; if($a[$count-3]['dirt']==1){ $front+=1; }else{ $back+=1; } if($a[$count-2]['dirt']==1){ $front+=1; }else{ $back+=1; } if($a[$count-1]['dirt']==1){ $front+=1; }else{ $back+=1; } if($front>$back){ $res=1; }else{ $res=2; } if($status['dirt']!=$res){ debug_log("clear_label", $item.':'. "最后一个信号,方向相反,得出结果,清除缓存数据"); $dispose->network_push($station,$item,$a[$count-1]['time'],$status['dirt']==1?1:2); }else{ //上午不做二次计算 if(empty($in_and_out)){ $res=$dispose->second_create_direction($station,$item); if(!empty($res)){ $res_time= $dispose->get_time_results($station,$item); $res_time= empty($res_time)?0:$res_time; $diff_time=$res['time']-$res_time; debug_log("clear_label", $item.':'. "间隔时间".$diff_time); //判断如果结果超过时间 if($diff_time>10){ debug_log("clear_label", $item.':'. "二次生成进出"); $dispose->network_push($station,$item,$res['time'],$res['dirt']); } }else{ //存入没有生成考勤时的初始防线 //获取朝前的最大值 //获取朝后的最大值 $frontMax= $dispose->get_label_history(4,$station,$item); $backMax= $dispose->get_label_history(5,$station,$item); $records=false; if($status['dirt']==1){ $records=$frontMax<65; } if($status['dirt']==2){ $records=$backMax<65; } if($records){ $dispose->no_check_data($station,$item,$status['dirt'],$a[$count-1]['time'],1); } } } //二次进出 debug_log("clear_label", $item.':'. "最后一个信号,方向没有变化,清除缓存数据"); } } //清除对应的键值对 //清空头部尾部历史 $dispose->get_label_history(3,$station,$item); $redis->hdel($key,$item); $redis->hdel($catchkey,$item); } } } } } /** * 远程推送数据 * * @return void */ public function remotePush(){ while(true){ $redis=Cache::store('redis')->handler(); $key="push_data"; $url="http://localhost:8115/api/accessReport"; sleep(2); while($data=$redis->lPop($key)){ if(!empty($data)){ debug_log($key,"远程推送的数据".$data); $url_res= curl_http_post($data,$url,false); $num=1; while($url_res==false){ $num++; $url_res= curl_http_post($data,$url,false); if($num>=3){ debug_log($key,"远程推送的地址".$url); debug_log($key,"连续推送三次失败,远程推送的数据".$data); break; } } debug_log($key,"远程返回结果".$url_res); } } } } public function redis_to_mysql_parea(){ $ues_redis=Cache::store('redis')->handler(); $text=""; $dispose = new dispose($ues_redis); while(1){ $jsonData= $ues_redis->rpop("mqtt_data_parea4rssi"); debug_log("pare_InAndOUT",'数据redis'.$jsonData); if(empty($jsonData)){ debug_log("pare_InAndOUT",'没有数据'); sleep(1); continue; } // debug_log("InAndOUT",$jsonData); $data=json_decode($jsonData,true); // debug_log("InAndOUT",$data['cnt']); $time=$data['time']; $mac=$data['devId']; $text=$text.$data['cnt']; if(strlen($text)<24){ continue; } $text = $this->handleMessage($text, $mac, $time, $ues_redis); } } public function redis_to_mysql_indoor(){ $ues_redis=Cache::store('redis')->handler(); $text=""; $dispose = new dispose($ues_redis); while(1){ $jsonData= $ues_redis->lpop("mqtt_data_indoor4rssi"); debug_log("indoor_InAndOUT",'mqtt数据redis'.$jsonData); if(!$jsonData){ debug_log("indoor_InAndOUT",'mqtt没有数据'); sleep(1); continue; } // debug_log("InAndOUT",$jsonData); $data=json_decode($jsonData,true); // debug_log("InAndOUT",$data['cnt']); $time=$data['time']; $mac=$data['devId']; $text=$text.$data['cnt']; if(strlen($text)<24){ continue; } // var_dump("before",microtime()); $text = $this->handleMessageIndoor($text, $mac, $time, $ues_redis); // var_dump("after",microtime()); } } //打印日志 public function temporary_label_log(){ $redis=Cache::store('redis')->handler(); // $key="temporary_label"; // $list= $redis->HgetAll($key); // debug_log($key,json_encode($list)); // debug_log($key,"所有的标签"); // foreach($list as $k=>$value){ // debug_log($key,json_encode([$k=>$value])); // } // debug_log($key,"所有总数".count($list)); // debug_log($key,"上报的标签"); // $i=0; // foreach($list as $k=>$value){ // if($value==2){ // debug_log($key,json_encode([$k=>$value])); // $i++; // } // } // debug_log($key,"正常上报的标签总数".$i); // debug_log($key,"补出的标签"); // $t=0; // foreach($list as $k=>$value){ // if($value==3){ // $t++; // debug_log($key,json_encode([$k=>$value])); // } // } // debug_log($key,"补出的标签总数".$t); // debug_log($key,"没有上报的的标签"); // $f=0; // foreach($list as $k=>$value){ // if($value==1){ // debug_log($key,json_encode([$k=>$value])); // $f++; // } // } // debug_log($key,"没有上报的的标签总数".$f); // // $redis->del($key); $dis= new dispose($redis); $dis->analysisLog(); } // public function temporary_label($redis,$label,$type){ // $key="temporary_label"; // if($type==1){ // $res= $redis->hGet($key,$label); // if($res==false){ // $redis->hSet($key,$label,1); // } // }else{ // $redis->hSet($key,$label,3); // } // } //消息处理--重点区域 public function handleMessage($text, $mac, $time, $ues_redis){ while(strlen($text)>=24){ $da=substr($text,0,24); $t1 = substr($da,8,2)=='00'||substr($da,8,2)=='10'||substr($da,8,2)=='01' ? true:false; $t2 =substr($da,10,6)=="FFFFFF"||substr($da,10,6)=="000000" ?true:false; if($t1&&$t2){ // var_dump($text); $rfid= substr($da,0,8); $rssi1= hexdec(substr($da,16,2)); $rssi2= hexdec(substr($da,18,2)); $rssi3= hexdec(substr($da,20,2)); $rssi4= hexdec(substr($da,22,2)); // $rc1 = ($rssi1 == 255 ? 0 : 1); // $rc2 = ($rssi2 == 255 ? 0 : 1); // $rc3 = ($rssi3 == 255 ? 0 : 1); // $rc4 = ($rssi4 == 255 ? 0 : 1); $DA=[ 'mac' => $mac, 'label' =>$rfid, 'rssi1' => $rssi1, 'rssi2' => $rssi2, 'rssi3' => $rssi3, 'rssi4' => $rssi4, 'report_time'=>$time ]; $field = $mac."_".$rfid; $info = $ues_redis->hget("parea_rfidinfos",$field); debug_log("pare_InAndOUT","数据:".json_encode($DA,true)); if($rssi1 ==255 && $rssi2 == 255 && $rssi3 == 255 && $rssi4 == 255){ debug_log("pare_InAndOUT","无效数据:".json_encode($DA,true)); }else{ if(!$info){ $info = [ "mac" => $mac, "id" => $rfid, "firs_time" => $time, "time" => $time, "status" => 2,//2出状态,1进状态 "rssi" => [ [ "front" => $rssi1, "behind" => $rssi2, "left" => $rssi3, "right" => $rssi4, "time" => $time ] ] ]; $ues_redis->hset("parea_rfidinfos",$field, json_encode($info,true)); debug_log("parea_rfidinfos_redis_set_record","redis更新记录".json_encode($info,true)); }else{ $info = json_decode($info,true); $config = $ues_redis->hget("anbang_four_wire", $info["mac"]); if (!$config) { # code... $config = [ "front_in" => 80, "behind_in" => 80, "left_in" => 80, "right_in" => 80, "front_out" => 255, "behind_out" => 255, "left_out" => 255, "right_out" => 255, "expInt" => 12, "effSigNum" => 6 ]; }else{ $config = json_decode($config,true); } // var_dump("+++++++++++++++++",$config); $info["time"] = $time; $newRssi = [ "front" => $rssi1, "behind" => $rssi2, "left" => $rssi3, "right" => $rssi4, "time" => $time ]; $rssisArr = $info["rssi"]; // var_dump("+++++++++++++++++", $time, $newRssi["time"]); foreach ($rssisArr as $k => $v) { # code... if( ($time - $v["time"] ) > $config['expInt'] ){ unset($rssisArr[$k]); } } // var_dump("+++++++++++++++++",$rssisArr); if(count($rssisArr) == $config['effSigNum']){ array_shift($rssisArr); array_push($rssisArr, $newRssi); }else{ array_push($rssisArr, $newRssi); } $rssisArr =array_values($rssisArr); // var_dump("+++++++++++++++++",$rssisArr); $info["rssi"] = $rssisArr; // var_dump("------------",$info["rssi"]); $cacCount = count($rssisArr); // if($cacCount > $EFF_SIG_NUM){ $sum1 = 0; $sum2 = 0; $sum3 = 0; $sum4 = 0; foreach ($rssisArr as $k => $v) { # code... $sum1 += ($v["front"] == 255 ? 90 : $v["front"]); $sum2 += ($v["behind"] == 255 ? 90 : $v["behind"]); $sum3 += ($v["left"] == 255 ? 90 : $v["left"]); $sum4 += ($v["right"] == 255 ? 90 : $v["right"]); } $info["avg"] = [ "front" => number_format( $sum1/$cacCount, 2 ), "behind" => number_format( $sum2/$cacCount, 2 ), "left" => number_format( $sum3/$cacCount, 2 ), "right" => number_format( $sum4/$cacCount, 2 ), ]; // var_dump($cacCount, $EFF_SIG_NUM, "dddddddd"); if ($cacCount == $config['effSigNum']) { # code... $info = $this->compAndPush($info ,$config, $ues_redis); } $ues_redis->hset("parea_rfidinfos",$field, json_encode($info,true)); debug_log("parea_rfidinfos_redis_set_record","redis更新记录".json_encode($info,true)); } } $text=substr($text,24); }else{ $text=substr($text,1); } } return $text ?$text : ""; } //消息处理--室内 public function handleMessageIndoor($text, $mac, $time, $ues_redis){ while(strlen($text)>=24){ $da=substr($text,0,24); $t1 = substr($da,8,2)=='00'||substr($da,8,2)=='10'||substr($da,8,2)=='01' ? true:false; $t2 =substr($da,10,6)=="FFFFFF"||substr($da,10,6)=="000000" ?true:false; if($t1&&$t2){ // var_dump($text); $rfid= substr($da,0,8); $rssi1= hexdec(substr($da,16,2)); $rssi2= hexdec(substr($da,18,2)); $rssi3= hexdec(substr($da,20,2)); $rssi4= hexdec(substr($da,22,2)); $DA=[ 'mac' => $mac, 'label' =>$rfid, 'rssi1' => $rssi1, 'rssi2' => $rssi2, 'rssi3' => $rssi3, 'rssi4' => $rssi4, 'report_time'=>$time ]; $field = $mac."_".$rfid; $info = $ues_redis->hget("indoor_rfidinfos",$field); debug_log("indoor_InAndOUT","数据:".json_encode($DA,true)); if($rssi1 ==255 && $rssi2 == 255 && $rssi3 == 255 && $rssi4 == 255){ debug_log("indoor_InAndOUT","无效数据:".json_encode($DA,true)); }else{ if(!$info){ $info = [ "mac" => $mac, "id" => $rfid, "first_time" => $time, "time" => $time, "status" => 2,//2出状态,1进状态 "rssi" => [ [ "front" => $rssi1, "behind" => $rssi2, "left" => $rssi3, "right" => $rssi4, "time" => $time ] ] ]; $ues_redis->hset("indoor_rfidinfos",$field, json_encode($info,true)); debug_log("indoor_rfidinfos_redis_set_record","redis更新记录".json_encode($info,true)); }else{ $info = json_decode($info,true); $config = $ues_redis->hget("anbang_four_wire", $info["mac"]); if (!$config) { # code... $config = [ "front_in" => 80, "behind_in" => 80, "left_in" => 80, "right_in" => 80, "front_out" => 255, "behind_out" => 255, "left_out" => 255, "right_out" => 255, "expInt" => 12, "effSigNum" => 6 ]; }else{ $config = json_decode($config,true); } // var_dump("+++++++++++++++++",$config); $info["time"] = $time; $newRssi = [ "front" => $rssi1, "behind" => $rssi2, "left" => $rssi3, "right" => $rssi4, "time" => $time ]; $rssisArr = $info["rssi"]; // var_dump("+++++++++++++++++", $time, $newRssi["time"]); foreach ($rssisArr as $k => $v) { # code... if( ($time - $v["time"] ) > $config['expInt'] ){ unset($rssisArr[$k]); } } // var_dump("+++++++++++++++++",$rssisArr); if(count($rssisArr) == $config['effSigNum']){ array_shift($rssisArr); array_push($rssisArr, $newRssi); }else{ array_push($rssisArr, $newRssi); } $rssisArr =array_values($rssisArr); // var_dump("+++++++++++++++++",$rssisArr); $info["rssi"] = $rssisArr; // var_dump("------------",$info["rssi"]); $cacCount = count($rssisArr); // if($cacCount > $EFF_SIG_NUM){ $sum1 = 0; $sum2 = 0; $sum3 = 0; $sum4 = 0; foreach ($rssisArr as $k => $v) { # code... $sum1 += ($v["front"] == 255 ? 90 : $v["front"]); $sum2 += ($v["behind"] == 255 ? 90 : $v["behind"]); $sum3 += ($v["left"] == 255 ? 90 : $v["left"]); $sum4 += ($v["right"] == 255 ? 90 : $v["right"]); } $info["avg"] = [ "front" => number_format( $sum1/$cacCount, 2 ), "behind" => number_format( $sum2/$cacCount, 2 ), "left" => number_format( $sum3/$cacCount, 2 ), "right" => number_format( $sum4/$cacCount, 2 ), ]; // var_dump($cacCount, $EFF_SIG_NUM, "dddddddd"); if ($cacCount == $config['effSigNum']) { # code... $info = $this->compAndPushIndoor($info ,$config, $ues_redis); } $ues_redis->hset("indoor_rfidinfos",$field, json_encode($info,true)); debug_log("indoor_rfidinfos_redis_set_record","redis更新记录".json_encode($info,true)); } } $text=substr($text,24); }else{ $text=substr($text,1); } } return $text ?$text : ""; } //判断进出和推送--室内考勤 public function compAndPushIndoor($info, $config, $ues_redis){ //标签多,数据多时候,判断完成后放入redis,异步推送,当前暂时直接推 // $config = $ues_redis->hget("anbang_four_wire", $info["mac"]); //{"front_in":44,"front_out":44,"behind_in":50,"behind_out":50,"left_in":55,"left_out":55,"right_out":44,"right_out":44} $avg = $info['avg']; $status = $info['status']; $flagIn = $avg["front"] < $config["front_in"] || $avg["behind"] < $config["behind_in"] || $avg["left"] < $config["left_in"] || $avg["right"] < $config["right_in"]; $flagOut = $avg["front"] > $config["front_out"] && $avg["behind"] > $config["behind_out"] && $avg["left"] > $config["left_out"] && $avg["right"] > $config["right_out"]; $url="http://localhost:8115/api/api/accessClassReport"; // $url="http://61.175.203.188:10001/api/accessClassReport"; // if($flagIn && $status == 2){ if($flagIn){ if ($info["pushTime"] && (time()-$info['pushTime']) < 120 ) { # code... return $info; } //推送进 $info['status'] = 1; $url_data = [ "mac" => $info["mac"], "data" => [ [ "label" => $info["id"], "time" => $info["time"], "dirt" => 1, "rssi" => $info["rssi"],//数组 [{"front":72,"behind":255,"left":255,"right":255,"time":1685067709},{"front":76,"behind":255,"left":255,"right":255,"time":1685067710}] "avg" => $info["avg"] //{"front":"77.17","behind":"90.00","left":"90.00","right":"90.00"} ] ] ]; $ues_redis->lpush("indoor_inoutres_push", json_encode($url_data)); $info['pushTime'] = time(); // debug_log("push_indoor_res","进推送依赖:".json_encode($info)); // $url_res= curl_http_post(json_encode($url_data),$url,false); // debug_log("push_indoor_res","远程返回结果".$url_res); } // if($info['id'] == "E2B15AD5"){ // var_dump($flagIn, $flagOut, $status, $avg["front"],$avg["behind"],$avg["left"], $avg["right"]); // } if($flagOut && $status == 1){ if ($info["pushTime"] && (time()-$info['pushTime']) < 5 ) { # code... return $info; } //推送出 $info['status'] = 2; $url_data = [ "mac" => $info["mac"], "data" => [ [ "label" => $info["id"], "time" => $info["time"], "dirt" => 2, "rssi" => $info["rssi"],//数组 [{"front":72,"behind":255,"left":255,"right":255,"time":1685067709},{"front":76,"behind":255,"left":255,"right":255,"time":1685067710}] "avg" => $info["avg"] //{"front":"77.17","behind":"90.00","left":"90.00","right":"90.00"} ] ] ]; $ues_redis->lpush("indoor_inoutres_push", json_encode($url_data)); // debug_log("push_indoor_res","出推送依赖:".json_encode($info)); // $url_res= curl_http_post(json_encode($url_data),$url,false); $info['pushTime'] = time(); // debug_log("push_indoor_res","远程返回结果".$url_res); } return $info; } //判断进出和推送 public function compAndPush($info, $config,$ues_redis){ //标签多,数据多时候,判断完成后放入redis,异步推送,当前暂时直接推 $avg = $info['avg']; $status = $info['status']; $flagIn = $avg["front"] < $config["front_in"] || $avg["behind"] < $config["behind_in"] || $avg["left"] < $config["left_in"] || $avg["right"] < $config["right_in"]; $flagOut = $avg["front"] > $config["front_out"] && $avg["behind"] > $config["behind_out"] && $avg["left"] > $config["left_out"] && $avg["right"] > $config["right_out"]; if($flagIn && $status == 2){ // if($flagIn){ $inoutIntFilter = $ues_redis->hget("anbang_four_wire", "anbang_4rssi_intFilter"); $inoutIntFilter = $inoutIntFilter ? $inoutIntFilter : 20; if ($info["pushTime"] && (time()-$info['pushTime']) < $inoutIntFilter ) { # code... return $info; } //推送进 $info['status'] = 1; $url_data = [ "mac" => $info["mac"], "data" => [ [ "label" => $info["id"], "time" => $info["time"], "first_time" => $info["first_time"], "dirt" => 1, "rssi" => $info["rssi"],//数组 [{"front":72,"behind":255,"left":255,"right":255,"time":1685067709},{"front":76,"behind":255,"left":255,"right":255,"time":1685067710}] "avg" => $info["avg"] //{"front":"77.17","behind":"90.00","left":"90.00","right":"90.00"} ] ] ]; // debug_log("pushPareaRes","进推送依赖:".json_encode($info)); // $url_res= curl_http_post(json_encode($url_data),$url,false); $ues_redis->lpush("parea_inoutres_push", json_encode($url_data)); $info['pushTime'] = time(); // debug_log("pushPareaRes","远程返回结果".$url_res); } // if($info['id'] == "E2B15AD5"){ // var_dump($flagIn, $flagOut, $status, $avg["front"],$avg["behind"],$avg["left"], $avg["right"]); // } if($flagOut && $status == 1){ if ($info["pushTime"] && (time()-$info['pushTime']) < 5 ) { # code... return $info; } //推送出 $info['status'] = 2; $url_data = [ "mac" => $info["mac"], "data" => [ [ "label" => $info["id"], "time" => $info["time"], "dirt" => 2, "rssi" => $info["rssi"],//数组 [{"front":72,"behind":255,"left":255,"right":255,"time":1685067709},{"front":76,"behind":255,"left":255,"right":255,"time":1685067710}] "avg" => $info["avg"] //{"front":"77.17","behind":"90.00","left":"90.00","right":"90.00"} ] ] ]; // debug_log("pushPareaRes","出推送依赖:".json_encode($info)); // $url_res= curl_http_post(json_encode($url_data),$url,false); $ues_redis->lpush("parea_inoutres_push", json_encode($url_data)); $info['pushTime'] = time(); // debug_log("pushPareaRes","远程返回结果".$url_res); } if($flagIn && $info['status'] == 1){ $inoutIntFilter = $ues_redis->hget("anbang_four_wire", "anbang_4rssi_intFilter"); $inoutIntFilter = $inoutIntFilter ? $inoutIntFilter : 20; if ($info["camPushTime"] && (time()-$info['camPushTime']) < $inoutIntFilter ) { # code... return $info; } //推送进 $url_data = [ "mac" => $info["mac"], "first_time" => $info["first_time"], "data" => [ [ "label" => $info["id"], "time" => $info["time"], "dirt" => 1, "rssi" => $info["rssi"],//数组 [{"front":72,"behind":255,"left":255,"right":255,"time":1685067709},{"front":76,"behind":255,"left":255,"right":255,"time":1685067710}] "avg" => $info["avg"] //{"front":"77.17","behind":"90.00","left":"90.00","right":"90.00"} ] ] ]; $ues_redis->lpush("parea_inoutres_push", json_encode($url_data)); $info["camPushTime"] = time(); } return $info; } public function test(){ try{ $ues_redis=Cache::store('redis')->handler(); $jsonData= $ues_redis->rpop("mqtt_data"); debug_log("InAndOUT","1212"); }catch(Exception $e){ var_dump($e->getMessage()); } } /** * 删除前1天的数据 * * @return void */ public function deleteHistory() { while(true) { $where[] = ['addTime','<',strtotime("-1 day")]; Db::name('tag_history')->where($where)->delete(); sleep(60*60*24); } } /** * 检测小程序版本版本 function * * @return void */ public function detectionVersion(){ $token = $_GET['token']; if (!$token || $token != '444333d3') { json_fail('缺少token或者token不对'); } $data["url"]="http://116.62.220.88:8112/static/app/蓝牙小程序/1.1.1/rl-release.apk"; $data["version"]="1.1.1"; json_success("查询版本成功",$data); } }