decode($body); // self::log($data, 'HeartBeatServer', self::$LOG_MAJOR); $bike_no = $_SESSION['bike_no']; if (!$bike_no) return []; $box_no = $data['box_no']; $is_low_battery_power = BikeMap::BATTERY_POWER_OK; $battery_power = $this->byVoltageGetElectric($data['battery_voltage'], $data['battery']['bike_soc']); if ($battery_power <= self::$max_ride_v) { // 低电量 $is_low_battery_power = BikeMap::BATTERY_POWER_LOW; //电量低报警信息 $this->warningLogBatteryLow($bike_no, $data['box_no'], ['battery_power' => $battery_power], $body, 'heart'); } $this->updateBikeData($box_no, 'BikeStatus', [ 'battery_power' => $battery_power, 'is_low_battery_power' => $is_low_battery_power, ], []); if ((!$data['bike_status']['is_huanche'])) { // 获取用户信息 $order = (new BikeStatusInfoSyncHandler($this->redis))->getRideBikeOrderInfo($bike_no); if (!$order) { //非法骑行 $num = $this->redis->incr('bike:illegal:open:' . $bike_no, 1); $this->redis->expire('bike:illegal:open:' . $bike_no, 120); BikeControl::closeLock($data['box_no']); if ($num > 5) { if (!$this->is_ep_min($box_no, 'bike:illegal:open:location', 20)) { $this->warningFF($bike_no, $data['box_no'], $data, $body); } } } } // if ($data['box_no'] === '003454406') return $this->response(); // if (!$this->is_ep_min($data['box_no'], 'heart', 30)) { // $cols['is_link'] = BikeMap::LINK_ONLINE; //// $cols['battery_power'] = $this->byVoltageGetElectric($data['battery_voltage']); // $cols['battery_power'] = $this->byVoltageGetElectric($data['battery_voltage'], $data['battery']['bike_soc']); // $cols['is_low_battery_power'] = BikeMap::BATTERY_POWER_OK; // if ($cols['battery_power'] <= self::$max_ride_v) { // // 低电量 // $cols['is_low_battery_power'] = BikeMap::BATTERY_POWER_LOW; // // //电量低报警信息 // $this->warningLogBatteryLow($bike_no, $data['box_no'], ['battery_power' => $cols['battery_power']], $body, 'heart'); // // } // $this->db->update('bikes')->where('box_no = ' . $data['box_no'])->cols($cols)->query(); // } else { // //换电池及时更新电量 // $openBatteryKey = "cache:open_battery:{$box_no}"; // if ($this->redis->exists($openBatteryKey)) { // $cols['is_link'] = BikeMap::LINK_ONLINE; //// $cols['battery_power'] = $this->byVoltageGetElectric($data['battery_voltage']); // $cols['battery_power'] = $this->byVoltageGetElectric($data['battery_voltage'], $data['battery']['bike_soc']); // $cols['is_low_battery_power'] = BikeMap::BATTERY_POWER_OK; // if ($cols['battery_power'] <= self::$max_ride_v) { // // 低电量 // $cols['is_low_battery_power'] = BikeMap::BATTERY_POWER_LOW; // } // // $this->db->update('bikes')->where('box_no = ' . $data['box_no'])->cols($cols)->query(); // } // } // // if ((!$data['bike_status']['is_huanche'])) { // // 获取用户信息 // $order = (new BikeStatusInfoSyncHandler($this->redis))->getRideBikeOrderInfo($bike_no); // if (!$order) { // //非法骑行 // $num = $this->redis->incr('bike:illegal:open:' . $bike_no, 1); // $this->redis->expire('bike:illegal:open:' . $bike_no, 120); // BikeControl::closeLock($data['box_no']); // // if ($num > 5) { // if (!$this->is_ep_min($box_no, 'bike:illegal:open:location', 20)) { // $this->warningFF($bike_no, $data['box_no'], $data, $body); // } // } // } // } return $this->response(); } /** * 解析装载的登录数据 * @param $body * @return array * User: Mead */ private function decode($body) { $i = 0; $box_no = $this->decodeBoxNo(self::stitching($body, $i, 5)); $i += 5; // 信号强度 // $signal_status = self::stitching($body, $i, 2); $i += 2; // 车辆状态 $bike_status = self::stitching($body, $i, 2); $i += 2; // 电池电压 $battery_voltage = self::stitching($body, $i, 2); $i += 2; // 相对SOC $soc = hexdec(self::stitching($body, $i, 1)); $i += 1; // 电池余量 $battery_mb_free = self::stitching($body, $i, 2); return [ 'box_no' => $box_no, 'bike_status' => $this->decodeBikeStatus($bike_status), 'battery_voltage' => $this->decodeBatteryVoltage($battery_voltage), 'battery' => [ 'bike_battery_mb_free' => $battery_mb_free, 'bike_soc' => $soc ] ]; } }