GuLiMmo
2024-08-28 738313e02d58600f065200cca533c30024520f21
空调开关
6 files modified
82 ■■■■■ changed files
src/api/device-cmd/index.ts 9 ●●●●● patch | view | raw | blame | history
src/api/drc.ts 8 ●●●●● patch | view | raw | blame | history
src/components/g-map/use-dock-control.ts 11 ●●●●● patch | view | raw | blame | history
src/types/airport-tsa.ts 8 ●●●●● patch | view | raw | blame | history
src/types/device-cmd.ts 22 ●●●●● patch | view | raw | blame | history
src/utils/device-cmd.ts 24 ●●●●● patch | view | raw | blame | history
src/api/device-cmd/index.ts
@@ -1,3 +1,12 @@
/*
 * @Author: GuLiMmo 2820890765@qq.com
 * @Date: 2024-03-12 17:59:03
 * @LastEditors: GuLiMmo 2820890765@qq.com
 * @LastEditTime: 2024-08-28 14:25:29
 * @FilePath: /drone-web/src/api/device-cmd/index.ts
 * @Description:
 * Copyright (c) 2024 by GuLiMmo, All Rights Reserved.
 */
import request, { IWorkspaceResponse } from '/@/api/http/request'
import { DeviceCmd, DeviceCmdItemAction } from '/@/types/device-cmd'
src/api/drc.ts
@@ -2,9 +2,9 @@
 * @Author: GuLiMmo 2820890765@qq.com
 * @Date: 2024-03-12 17:59:03
 * @LastEditors: GuLiMmo 2820890765@qq.com
 * @LastEditTime: 2024-08-27 16:56:00
 * @LastEditTime: 2024-08-27 17:10:11
 * @FilePath: /drone-web/src/api/drc.ts
 * @Description:
 * @Description:
 * Copyright (c) 2024 by GuLiMmo, All Rights Reserved.
 */
import request, { IWorkspaceResponse } from '/@/api/http/request'
@@ -12,7 +12,6 @@
// DRC 链路
const DRC_API_PREFIX = '/control/api/v1'
const workspaceId: string = localStorage.getItem(ELocalStorageKey.WorkspaceId) || ''
export interface PostDrcBody {
  client_id?: string // token过期时,用于续期则必填
@@ -30,6 +29,7 @@
// 获取 mqtt 连接认证
export async function postDrc (body: PostDrcBody): Promise<IWorkspaceResponse<DrcParams>> {
  const workspaceId: string = localStorage.getItem(ELocalStorageKey.WorkspaceId) || ''
  const resp = await request.post(`${DRC_API_PREFIX}/workspaces/${workspaceId}/drc/connect`, body)
  return resp.data
}
@@ -51,6 +51,7 @@
// 进入飞行控制 (建立drc连接&获取云控控制权)
export async function postDrcEnter (body: DrcEnterBody): Promise<IWorkspaceResponse<DrcEnterResp>> {
  const workspaceId: string = localStorage.getItem(ELocalStorageKey.WorkspaceId) || ''
  const resp = await request.post(`${DRC_API_PREFIX}/workspaces/${workspaceId}/drc/enter`, body)
  return resp.data
}
@@ -62,6 +63,7 @@
// 退出飞行控制 (退出drc连接&退出云控控制权)
export async function postDrcExit (body: DrcExitBody): Promise<IWorkspaceResponse<null>> {
  const workspaceId: string = localStorage.getItem(ELocalStorageKey.WorkspaceId) || ''
  const resp = await request.post(`${DRC_API_PREFIX}/workspaces/${workspaceId}/drc/exit`, body)
  return resp.data
}
src/components/g-map/use-dock-control.ts
@@ -1,6 +1,15 @@
/*
 * @Author: GuLiMmo 2820890765@qq.com
 * @Date: 2024-03-12 17:59:03
 * @LastEditors: GuLiMmo 2820890765@qq.com
 * @LastEditTime: 2024-08-28 14:24:20
 * @FilePath: /drone-web/src/components/g-map/use-dock-control.ts
 * @Description:
 * Copyright (c) 2024 by GuLiMmo, All Rights Reserved.
 */
import { message } from 'ant-design-vue'
import { ref } from 'vue'
import { postSendCmd } from '/@/api/device-cmd'
import { postSendCmd, postSendCmdAirConditionerOn } from '/@/api/device-cmd'
import { DeviceCmd, DeviceCmdItemAction } from '/@/types/device-cmd'
export function useDockControl () {
src/types/airport-tsa.ts
@@ -78,3 +78,11 @@
  SDR = 0, // sdr模式
  FourG_FUSION_MODE = 1, // 4G融合模式
}
// 空调模式
export enum AirConditioningModeEnum {
  CLOSE = 0, // 空闲模式
  COOL = 1, // 制冷
  HEAT = 2, // 制热
  DEHUMIDIFY = 3, // 除湿
}
src/types/device-cmd.ts
@@ -1,4 +1,4 @@
import { AlarmModeEnum, BatteryStoreModeEnum, DroneBatteryModeEnum, LinkWorkModeEnum } from '/@/types/airport-tsa'
import { AlarmModeEnum, BatteryStoreModeEnum, DroneBatteryModeEnum, LinkWorkModeEnum, AirConditioningModeEnum } from '/@/types/airport-tsa'
// 机场指令集
export enum DeviceCmd {
  // 简单指令
@@ -24,9 +24,10 @@
  BatteryStoreModeSwitch = 'battery_store_mode_switch', // 电池保养
  DroneBatteryModeSwitch = 'battery_maintenance_switch', // 飞行器电池保养
  SdrWorkModeSwitch = 'sdr_workmode_switch', // 增强图传
  AirConditioningModeSwitch = 'air_conditioner_mode_switch'// 空调模式开关
}
export type DeviceCmdItemAction = AlarmModeEnum | BatteryStoreModeEnum | DroneBatteryModeEnum | LinkWorkModeEnum
export type DeviceCmdItemAction = AlarmModeEnum | BatteryStoreModeEnum | DroneBatteryModeEnum | LinkWorkModeEnum | AirConditioningModeEnum
export interface DeviceCmdItem{
  label: string, // 标题
@@ -162,6 +163,15 @@
    func: 'sdrWorkMode',
    loading: false,
  },
  {
    label: '空调模式',
    status: '关',
    operateText: '打开',
    cmdKey: DeviceCmd.AirConditioningModeSwitch,
    action: AirConditioningModeEnum.COOL,
    func: 'airConditionerSwitch',
    loading: false,
  }
]
export enum DeviceCmdStatusText {
@@ -260,6 +270,14 @@
  SdrWorkModeFourGCloseText = '关闭中...',
  SdrWorkModeFourGCloseFailedText = '开',
  SdrWorkModeFourCloseBtnText = '开启',
  // 空调模式
  AirConditionerModeCoolNormalText = '关',
  AirConditionerModeCoolInProgressText = '切换中...',
  AirConditionerModeCoolFailedText = '切换失败',
  AirConditionerModeHeatText = '制热',
  AirConditionerModeCoolText = '制冷',
  AirConditionerModeDehumdidfyText = '除湿',
}
// cmd ws 消息状态
src/utils/device-cmd.ts
@@ -1,4 +1,4 @@
import { DroneBatteryModeEnum, DroneBatteryStateEnum, LinkWorkModeEnum } from './../types/airport-tsa'
import { DroneBatteryModeEnum, DroneBatteryStateEnum, LinkWorkModeEnum, AirConditioningModeEnum } from './../types/airport-tsa'
import { DeviceInfoType } from '/@/types/device'
import { DeviceCmd, DeviceCmdItem, DeviceCmdExecuteInfo, DeviceCmdStatusText, DeviceCmdExecuteStatus } from '/@/types/device-cmd'
import { AirportStorage, CoverStateEnum, PutterStateEnum, ChargeStateEnum, SupplementLightStateEnum, AlarmModeEnum, BatteryStoreModeEnum } from '/@/types/airport-tsa'
@@ -44,6 +44,8 @@
      getDroneBatteryMode(cmdItem, dock)
    } else if (cmdItem.cmdKey === DeviceCmd.SdrWorkModeSwitch) { // 增强图传开关
      getSdrWorkNode(cmdItem, dock)
    } else if (cmdItem.cmdKey === DeviceCmd.AirConditioningModeSwitch) {
      airConditionerSwitch(cmdItem, dock)
    }
  })
}
@@ -136,6 +138,26 @@
  cmdItem.status = value
}
// 空调模式开关
function airConditionerSwitch (cmdItem: DeviceCmdItem, airportProperties: any) {
  const conditionerState: number | string | any = airportProperties?.basic_osd?.air_conditioner?.air_conditioner_state || 0
  if (conditionerState === 0) {
    cmdItem.status = DeviceCmdStatusText.AirConditionerModeCoolNormalText
  }
  if (conditionerState === 1) {
    cmdItem.status = DeviceCmdStatusText.AirConditionerModeCoolText
    cmdItem.action = AirConditioningModeEnum.CLOSE
  }
  if (conditionerState === 2) {
    cmdItem.status = DeviceCmdStatusText.AirConditionerModeHeatText
    cmdItem.action = AirConditioningModeEnum.CLOSE
  }
  if (conditionerState === 3) {
    cmdItem.status = DeviceCmdStatusText.AirConditionerModeDehumdidfyText
    cmdItem.action = AirConditioningModeEnum.CLOSE
  }
}
// 获取机场存储容量
// {
// "total": 10000, // 单位:KB