package xiaozhi.modules.device.dto; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.Getter; import lombok.Setter; @Data @Schema(description = "设备OTA检测版本返回体,包含激活码要求") public class DeviceReportRespDTO { @Schema(description = "服务器时间") private ServerTime server_time; @Schema(description = "激活码") private Activation activation; @Schema(description = "错误信息") private String error; @Schema(description = "固件版本信息") private Firmware firmware; @Schema(description = "WebSocket配置") private Websocket websocket; @Schema(description = "MQTT Gateway配置") private MQTT mqtt; @Getter @Setter public static class Firmware { @Schema(description = "版本号") private String version; @Schema(description = "下载地址") private String url; } public static DeviceReportRespDTO createError(String message) { DeviceReportRespDTO resp = new DeviceReportRespDTO(); resp.setError(message); return resp; } @Setter @Getter public static class Activation { @Schema(description = "激活码") private String code; @Schema(description = "激活码信息: 激活地址") private String message; @Schema(description = "挑战码") private String challenge; } @Getter @Setter public static class ServerTime { @Schema(description = "时间戳") private Long timestamp; @Schema(description = "时区") private String timeZone; @Schema(description = "时区偏移量,单位为分钟") private Integer timezone_offset; } @Getter @Setter public static class Websocket { @Schema(description = "WebSocket服务器地址") private String url; @Schema(description = "WebSocket 认证 token") private String token; } @Getter @Setter public static class MQTT { @Schema(description = "MQTT 配置网址") private String endpoint; @Schema(description = "MQTT 客户端唯一标识符") private String client_id; @Schema(description = "MQTT 认证用户名") private String username; @Schema(description = "MQTT 认证密码") private String password; @Schema(description = "ESP32 发布消息的主题") private String publish_topic; @Schema(description = "ESP32 订阅的主题") private String subscribe_topic; } }