123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- <?php
- /**
- * Created by PhpStorm.
- * User: Mead
- * Date: 2019/9/3
- * Time: 8:05 PM
- */
- namespace App\Servers;
- use App\Maps\WarningLogMap;
- use App\Maps\WarningMap;
- use App\Models\BikeTraitModel;
- use App\Models\WarningLogTraitModel;
- class WarningServer extends BaseServer
- {
- use WarningLogTraitModel, BikeTraitModel;
- public function main($body)
- {
- $data = $this->decode($body);
- self::log($data, 'WarningServer', self::$LOG_MAJOR);
- $bike_no = $_SESSION['bike_no'];
- if (!$bike_no) return $this->response();
- $type = WarningLogMap::TYPE_DEFAULT;
- $error_grade = WarningLogMap::ERROR_GRADE_DEFAULT;
- switch ($data['warning']) {
- case WarningMap::WARNING_SPARE_BATTERY_LOW:
- //低电量
- $type = WarningLogMap::TYPE_BATTERY_LOW;
- $error_grade = WarningLogMap::ERROR_GRADE_MINOR;
- break;
- case WarningMap::WARNING_SHOCK:
- // 震动报警
- $type = WarningLogMap::TYPE_WARNING_BIKE_SHOCK;
- $error_grade = WarningLogMap::ERROR_GRADE_MINOR;
- break;
- case WarningMap::WARNING_FORCE_OPEN_ELECTRIC:
- //非法打开电车
- $type = WarningLogMap::TYPE_WARNING_BIKE_OPEN;
- $error_grade = WarningLogMap::ERROR_GRADE_CRITICAL;
- break;
- case WarningMap::WARNING_OUT_AREA_PLAY_VIDEO:
- //超出骑行区域
- $type = WarningLogMap::TYPE_BIKE_OUT_AREA;
- $error_grade = WarningLogMap::ERROR_GRADE_MINOR;
- break;
- case WarningMap::WARNING_BMS:
- // 电池信息报警
- $type = false;
- // $type = WarningLogMap::TYPE_WARNING_BMS;
- // $error_grade = WarningLogMap::ERROR_GRADE_MINOR;
- break;
- case WarningMap::WARNING_STOP_ELECTRIC:
- //断电报警
- $type = WarningLogMap::TYPE_WARNING_CLOSE_ELECTRIC;
- $error_grade = WarningLogMap::ERROR_GRADE_MINOR;
- break;
- case WarningMap::WARNING_OVER_SPEED:
- //超速
- $type = WarningLogMap::TYPE_WARNING_OVER_SPEED;
- $error_grade = WarningLogMap::ERROR_GRADE_DEFAULT;
- break;
- case WarningMap::WARNING_WHEEL_MOVEMENT:
- //移动报警
- $type = WarningLogMap::TYPE_WARNING_WHEEL_MOVE;
- $error_grade = WarningLogMap::ERROR_GRADE_MINOR;
- break;
- case WarningMap::WARNING_BIKE_TROUBLE:
- //车子故障
- $type = WarningLogMap::TYPE_WARNING_BIKE_TROUBLE;
- $error_grade = WarningLogMap::ERROR_GRADE_MAJOR;
- break;
- }
- if ($type !== false) {
- if ($this->is_throw_num_time($data['box_no'], 'warning_log_' . $type, 3, 10)) {
- $this->warningLog($bike_no, $data['box_no'], $data['status'], $body, $type, ($error_grade + 1));
- }
- $this->warningLog($bike_no, $data['box_no'], $data['status'], $body, $type, $error_grade);
- }
- 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;
- // 设备时间
- $box_time = $this->decodeTime(self::stitching($body, $i, 4));
- $i += 4;
- // 警告信息
- $warning_info = self::stitching($body, $i, 1);
- $i += 1;
- // 控制编码
- $controller_code = self::stitching($body, $i, 1);
- $i += 1;
- // 故障状态1
- $status1 = self::stitching($body, $i, 1);
- $i += 1;
- // 故障状态2
- $status2 = self::stitching($body, $i, 1);
- $i += 1;
- // 故障状态3
- $status3 = self::stitching($body, $i, 1);
- $i += 1;
- // 故障状态4
- $status4 = self::stitching($body, $i, 1);
- $i += 1;
- // 故障状态5
- $status5 = self::stitching($body, $i, 2);
- $i += 2;
- // 故障状态6
- $status6 = self::stitching($body, $i, 1);
- $i += 1;
- // 故障状态7
- $status7 = self::stitching($body, $i, 1);
- $i += 1;
- // 故障状态8
- $status8 = self::stitching($body, $i, 1);
- $i += 1;
- // 加速度数据
- $speed = self::stitching($body, $i, 2);
- $status8 = $this->decodeStatus8($status8);
- return [
- 'box_no' => $box_no,
- 'time' => $box_time,
- 'warning' => $warning_info,
- 'status' => $status8
- ];
- }
- }
|