From 48ea2dc42dfcc18b6b04f8204f870f3137333717 Mon Sep 17 00:00:00 2001 From: faq Date: Sat, 17 Sep 2022 12:37:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Djson=20=E5=8F=8D=E5=BA=8F?= =?UTF-8?q?=E5=88=97=E5=8C=96bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 + .../xiaomi2meidi/controller/AcController.java | 45 +++++- .../yxd/xiaomi2meidi/entity/LoginRspData.java | 20 +-- .../com.yxd/xiaomi2meidi/reflect-config.json | 153 ++++++++++++++++++ src/main/resources/logback-spring.xml | 4 +- 5 files changed, 205 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index d5057bc..2558bef 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # xiaomi2meidi + 使用方法参考 https://www.cnblogs.com/mysgk/p/16687363.html 如果登录出现 1020 状态码,并且在手机重新登录无效 ,可以尝试把 config.json 中的 appVersion/deviceId/deviceName/osVersion 设置为空字符串 + +配置修改后需重启程序 \ No newline at end of file diff --git a/src/main/java/com/yxd/xiaomi2meidi/controller/AcController.java b/src/main/java/com/yxd/xiaomi2meidi/controller/AcController.java index 7995f9f..082d2d8 100644 --- a/src/main/java/com/yxd/xiaomi2meidi/controller/AcController.java +++ b/src/main/java/com/yxd/xiaomi2meidi/controller/AcController.java @@ -3,6 +3,8 @@ import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.TypeReference; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.ObjectMapper; import com.yxd.xiaomi2meidi.anotation.TokenCheck; import com.yxd.xiaomi2meidi.cache.Gcache; import com.yxd.xiaomi2meidi.corn.RefreshToken; @@ -26,6 +28,7 @@ import static com.yxd.xiaomi2meidi.tracker.Common.HTTP_SERVER_IOT_SECRET; import static com.yxd.xiaomi2meidi.util.Utils.*; + /** * @author Administrator */ @@ -94,6 +97,24 @@ public MasRsp login() { MasRsp loginResp = JSON.parseObject(resp1, new TypeReference>() { }); +// ObjectMapper mapper = new ObjectMapper(); +// MasRsp loginResp = null; +// try { +// loginResp = mapper.readValue(resp1, new com.fasterxml.jackson.core.type.TypeReference>() { +// }); +// } catch (Exception e) { +// e.printStackTrace(); +// +// try { +// JavaType javaType = mapper.getTypeFactory().constructType(MasRsp.class, LoginRspData.class); +// mapper.readValue(resp1, javaType); +// } catch (Exception e1) { +// e1.printStackTrace(); +// throw new RuntimeException("json 转换异常"); +// } +// +// } + LoginRspData data = loginResp.getData(); String tokenPwd = data.getMdata().getTokenPwdInfo().getTokenPwd(); @@ -122,6 +143,12 @@ public MasRsp getDeviceList() throws IOException { String resp2 = doExecute(httpClient, request2); log.info("getDeviceListResp: " + resp2); checkResp(resp2); + +// ObjectMapper mapper = new ObjectMapper(); +// +// MasRsp homegroupRespObj = mapper.readValue(resp2, new com.fasterxml.jackson.core.type.TypeReference>() { +// }); + MasRsp homegroupRespObj = JSON.parseObject(resp2, new TypeReference>() { }); List appliance = homegroupRespObj.getData().getAppliance(); @@ -140,23 +167,28 @@ public MasRsp getDeviceList() throws IOException { @GetMapping("/togglePower") @TokenCheck - public void togglePower(String name,boolean state) throws IOException { + public void togglePower(String name, boolean state) throws IOException { + log.info("togglePower: name: " + name + " , state: " + state); List deviceList = Gcache.config.getDeviceList(); if (deviceList.isEmpty()) { - log.error("当前无设备列表"); - return; + log.error("当前无设备列表,尝试重新获取"); + getDeviceList(); } + deviceList = Gcache.config.getDeviceList(); + log.info("deviceList: " + JSON.toJSONString(deviceList)); String sn = ""; if (StringUtils.hasText(name)) { for (Device device : deviceList) { + log.info("togglePower: device.getName(): " + device.getName() + " , name: " + name + " ,equals: " + name.equals(device.getName())); if (name.equals(device.getName())) { sn = device.getApplianceCode(); } } } else { sn = deviceList.get(0).getApplianceCode(); - state =true; + state = true; + log.info("未指定空调名称,当前操作为打开第一个"); } PowerControl powerControl = new PowerControl(); @@ -172,7 +204,7 @@ public void togglePower(String name,boolean state) throws IOException { .build(); String resp2 = doExecute(httpClient, request2); - log.info("未指定空调名称,当前操作为打开第一个. togglePowerResp: " + resp2); + log.info(" togglePowerResp: " + resp2); } @TokenCheck @@ -202,7 +234,4 @@ public MasRsp getHomeList() { } - - - } diff --git a/src/main/java/com/yxd/xiaomi2meidi/entity/LoginRspData.java b/src/main/java/com/yxd/xiaomi2meidi/entity/LoginRspData.java index 277df54..a152bf3 100644 --- a/src/main/java/com/yxd/xiaomi2meidi/entity/LoginRspData.java +++ b/src/main/java/com/yxd/xiaomi2meidi/entity/LoginRspData.java @@ -14,15 +14,15 @@ public class LoginRspData { private UserInfo userInfo; - public LoginRspData(Long clusterId, String iotUserId, String isOldUse, String jwtToken, String key, LoginRspMData mdata, String uid, UserInfo userInfo) { - this.clusterId = clusterId; - this.iotUserId = iotUserId; - this.isOldUse = isOldUse; - this.jwtToken = jwtToken; - this.key = key; - this.mdata = mdata; - this.uid = uid; - this.userInfo = userInfo; - } +// public LoginRspData(Long clusterId, String iotUserId, String isOldUse, String jwtToken, String key, LoginRspMData mdata, String uid, UserInfo userInfo) { +// this.clusterId = clusterId; +// this.iotUserId = iotUserId; +// this.isOldUse = isOldUse; +// this.jwtToken = jwtToken; +// this.key = key; +// this.mdata = mdata; +// this.uid = uid; +// this.userInfo = userInfo; +// } } diff --git a/src/main/resources/META-INF/native-image/com.yxd/xiaomi2meidi/reflect-config.json b/src/main/resources/META-INF/native-image/com.yxd/xiaomi2meidi/reflect-config.json index 22af998..6c559ec 100644 --- a/src/main/resources/META-INF/native-image/com.yxd/xiaomi2meidi/reflect-config.json +++ b/src/main/resources/META-INF/native-image/com.yxd/xiaomi2meidi/reflect-config.json @@ -1,5 +1,158 @@ [ + { + "name": "com.yxd.xiaomi2meidi.entity.Appliance", + "allPublicFields": true, + "allDeclaredFields": true, + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "com.yxd.xiaomi2meidi.entity.ApplianceList", + "allPublicFields": true, + "allDeclaredFields": true, + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "com.yxd.xiaomi2meidi.entity.CommonReqData", + "allPublicFields": true, + "allDeclaredFields": true, + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "com.yxd.xiaomi2meidi.entity.Device", + "allPublicFields": true, + "allDeclaredFields": true, + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "com.yxd.xiaomi2meidi.entity.Home", + "allPublicFields": true, + "allDeclaredFields": true, + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "com.yxd.xiaomi2meidi.entity.HomeList", + "allPublicFields": true, + "allDeclaredFields": true, + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "com.yxd.xiaomi2meidi.entity.IotData", + "allPublicFields": true, + "allDeclaredFields": true, + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "com.yxd.xiaomi2meidi.entity.LoginIdRspData", + "allPublicFields": true, + "allDeclaredFields": true, + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "com.yxd.xiaomi2meidi.entity.LoginRspData", + "allPublicFields": true, + "allDeclaredFields": true, + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "com.yxd.xiaomi2meidi.entity.LoginRspMData", + "allPublicFields": true, + "allDeclaredFields": true, + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "com.yxd.xiaomi2meidi.entity.MasRsp", + "allPublicFields": true, + "allDeclaredFields": true, + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "com.yxd.xiaomi2meidi.entity.MucData", + "allPublicFields": true, + "allDeclaredFields": true, + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "com.yxd.xiaomi2meidi.entity.NewToken", + "allPublicFields": true, + "allDeclaredFields": true, + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "com.yxd.xiaomi2meidi.entity.PowerControl", + "allPublicFields": true, + "allDeclaredFields": true, + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "com.yxd.xiaomi2meidi.entity.Room", + "allPublicFields": true, + "allDeclaredFields": true, + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "com.yxd.xiaomi2meidi.entity.TokenPwdInfo", + "allPublicFields": true, + "allDeclaredFields": true, + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "com.yxd.xiaomi2meidi.entity.UserInfo", + "allPublicFields": true, + "allDeclaredFields": true, + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, { "name": "com.yxd.xiaomi2meidi.entity.Config", "allPublicFields": true, diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml index e9e88c0..3911141 100644 --- a/src/main/resources/logback-spring.xml +++ b/src/main/resources/logback-spring.xml @@ -20,7 +20,7 @@ - ${LOGS}/hello-world.log + ${LOGS}/logs.log @@ -30,7 +30,7 @@ - ${LOGS}/archived/hello-world-%d{yyyy-MM-dd}.%i.log.zip + ${LOGS}/archived/logs-%d{yyyy-MM-dd}.%i.log.zip 10MB