添加空调状态

This commit is contained in:
孙小云 2026-01-21 18:28:21 +08:00
parent 833c8e5cec
commit 372a289cf7
2 changed files with 53 additions and 1 deletions

View File

@ -89,6 +89,20 @@ public class DeviceTelemetry {
}
);
public static final TelemetryKey<Integer> Cover_State = TelemetryKey.of(
"cover_state",
Integer.class,
value -> {
if (value == null) return null;
if (value instanceof Number) {
return ((Number) value).intValue();
}
return Integer.parseInt(value.toString());
}
);
/**
* 网络速率 {"unit_name":"千字节每秒 / KB/s"}
*/
@ -466,7 +480,8 @@ public class DeviceTelemetry {
Alternate_land_point_Latitude,
Alternate_land_point_Longitude,
Environment_Temperature,
Network_State_Rate
Network_State_Rate,
Cover_State
);
}

View File

@ -16,6 +16,7 @@ import com.ruoyi.device.service.dto.DockDetailDTO;
import com.ruoyi.device.api.enums.AircraftStatusEnum;
import com.ruoyi.device.api.enums.DockStatusEnum;
import com.ruoyi.device.api.enums.NetworkTypeEnum;
import com.ruoyi.device.api.enums.AirConditionerStatusEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -213,6 +214,16 @@ public class BufferDeviceImpl implements IBufferDeviceService
}
});
// 设置硬件状态数据
// 空调状态枚举值0-空闲模式1-制冷模式2-制热模式3-除湿模式等
telemetryMap.get(DeviceTelemetry.AIR_CONDITIONER_STATE)
.ifPresent(telemetryValue -> {
Integer stateCode = telemetryValue.getValue();
if (stateCode != null) {
dto.setAirConditionerStatus(mapAirConditionerState(stateCode));
}
});
return dto;
}
@ -258,6 +269,32 @@ public class BufferDeviceImpl implements IBufferDeviceService
}
}
/**
* 将空调状态代码映射到 AirConditionerStatusEnum
* @param stateCode 空调状态代码
* @return 空调状态枚举的 code
*/
private String mapAirConditionerState(Integer stateCode) {
if (stateCode == null) {
return null;
}
// 只映射主要的四种模式其他状态返回 null
switch (stateCode) {
case 0:
return AirConditionerStatusEnum.IDLE.getCode();
case 1:
return AirConditionerStatusEnum.COOLING.getCode();
case 2:
return AirConditionerStatusEnum.HEATING.getCode();
case 3:
return AirConditionerStatusEnum.DEHUMIDIFYING.getCode();
default:
// 其他状态准备模式退出模式等不映射
return null;
}
}
private AircraftDetailDTO getChangeAbleAirDetailDTO(String deviceIotId)
{