| | |
| | | |
| | | private static final String SUCCESS_CODE = "200"; |
| | | private static final String TOKEN_EXPIRED_CODE = "10002"; |
| | | private static final String PTZ_CURRENT_OPERATION_FAILED_CODE = "60006"; |
| | | private static final long TOKEN_EXPIRE_ADVANCE_MS = 5 * 60 * 1000L; |
| | | private static final Integer[] PTZ_STOP_DIRECTIONS = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; |
| | | |
| | | @Value("${ezviz.open.base-url:https://open.ys7.com}") |
| | | private String baseUrl; |
| | |
| | | form.put("speed", normalizePtzSpeed(speed)); |
| | | JSONObject result = postFormWithToken("/api/lapp/device/ptz/start", form); |
| | | if (isCurrentOperationFailed(result)) { |
| | | postFormWithToken("/api/lapp/device/ptz/stop", form); |
| | | stopAllPtzDirections(deviceSerial, channelNo); |
| | | result = postFormWithToken("/api/lapp/device/ptz/start", form); |
| | | } |
| | | return result; |
| | |
| | | private boolean isCurrentOperationFailed(JSONObject result) { |
| | | return result != null |
| | | && !SUCCESS_CODE.equals(result.getString("code")) |
| | | && StringUtils.hasText(result.getString("msg")) |
| | | && result.getString("msg").contains("当前操作失败"); |
| | | && (PTZ_CURRENT_OPERATION_FAILED_CODE.equals(result.getString("code")) |
| | | || StringUtils.hasText(result.getString("msg")) && result.getString("msg").contains("当前操作失败")); |
| | | } |
| | | |
| | | private void stopAllPtzDirections(String deviceSerial, Integer channelNo) { |
| | | for (Integer direction : PTZ_STOP_DIRECTIONS) { |
| | | Map<String, Object> form = new LinkedHashMap<>(); |
| | | form.put("deviceSerial", deviceSerial); |
| | | form.put("channelNo", channelNo == null ? 1 : channelNo); |
| | | form.put("direction", direction); |
| | | postFormWithToken("/api/lapp/device/ptz/stop", form); |
| | | } |
| | | } |
| | | |
| | | /** |