diff --git a/iot-modules/iot-box-user-api/pom.xml b/iot-modules/iot-box-user-api/pom.xml
index 08cfdf4..ea9b65d 100644
--- a/iot-modules/iot-box-user-api/pom.xml
+++ b/iot-modules/iot-box-user-api/pom.xml
@@ -17,6 +17,11 @@
UTF-8
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
com.tuya
tuya-spring-boot-starter
diff --git a/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/controller/device/DeviceController.java b/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/controller/device/DeviceController.java
index 5c1ff3b..c8a2de5 100644
--- a/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/controller/device/DeviceController.java
+++ b/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/controller/device/DeviceController.java
@@ -1,6 +1,7 @@
package com.qiuguo.iot.user.api.controller.device;
import cn.hutool.crypto.digest.MD5;
+import com.alibaba.fastjson.JSONObject;
import com.qiuguo.iot.base.enums.DeviceTypeEnum;
import com.qiuguo.iot.base.utils.StringUtils;
import com.qiuguo.iot.data.entity.device.DeviceInfoEntity;
@@ -35,7 +36,7 @@ public class DeviceController {
@Resource
private DeviceBatchService deviceBatchService;
-
+
@Value("${device.timeout}")
private Long timeOut;//2分钟
diff --git a/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/service/TuyaDeviceConnector.java b/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/service/TuyaDeviceConnector.java
index 095c259..6a5c583 100644
--- a/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/service/TuyaDeviceConnector.java
+++ b/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/service/TuyaDeviceConnector.java
@@ -1,13 +1,15 @@
package com.qiuguo.iot.user.api.service;
import com.alibaba.fastjson.JSONObject;
+import com.google.gson.JsonArray;
import com.tuya.connector.api.annotations.Body;
import com.tuya.connector.api.annotations.DELETE;
import com.tuya.connector.api.annotations.GET;
import com.tuya.connector.api.annotations.POST;
import com.tuya.connector.api.annotations.PUT;
import com.tuya.connector.api.annotations.Path;
-import java.util.Map;
+import com.tuya.connector.api.annotations.Query;
+import java.util.List;
/**
* XXX
@@ -23,19 +25,19 @@ public interface TuyaDeviceConnector {
// 查询空间下设备列表
@GET("/v2.0/cloud/thing/space/device")
- JSONObject getDevicesBySpaceIds(String spaces);
+ JsonArray getDevicesBySpaceIds(@Query("space_ids") String spaces,@Query("page_size") Integer size);
// 控制设备动作
- @POST("/v2.0/cloud/thing/{device_id}/shadow/actions")
- JSONObject controlDevice(@Path("device_id") String deviceId, @Body JSONObject commands);
+ @POST("/v1.0/iot-03/devices/{device_id}/commands")
+ Object controlDevice(@Path("device_id") String deviceId, @Body JSONObject commands);
// 创建空间
@POST("/v2.0/cloud/space/creation")
- JSONObject creatSpace(@Body JSONObject jsonObject);
+ Long creatSpace(@Body JSONObject jsonObject);
// 删除空间
@DELETE("/v2.0/cloud/space/{space_id}")
- JSONObject deleteSpace(@Path("space_id") String spaceId);
+ Boolean deleteSpace(@Path("space_id") String spaceId);
// 查询空间
@GET("/v2.0/cloud/space/{space_id}")
@@ -43,6 +45,10 @@ public interface TuyaDeviceConnector {
// 修改空间信息
@PUT("/v2.0/cloud/space/{space_id}")
- JSONObject updateSpace(@Path("space_id") String spaceId, @Body JSONObject JSONObject);
+ Boolean updateSpace(@Path("space_id") String spaceId, @Body JSONObject JSONObject);
+
+ // 获取设备支持的指令集
+ @GET("/v1.0/iot-03/devices/{device_id}/functions")
+ Object getFunctions(@Path("device_id") String deviceId);
}
diff --git a/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/service/TuyaDeviceService.java b/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/service/TuyaDeviceService.java
new file mode 100644
index 0000000..48f020f
--- /dev/null
+++ b/iot-modules/iot-box-user-api/src/main/java/com/qiuguo/iot/user/api/service/TuyaDeviceService.java
@@ -0,0 +1,17 @@
+package com.qiuguo.iot.user.api.service;
+
+import org.springframework.stereotype.Service;
+
+/**
+ * XXX
+ *
+ * @author weiyachao
+ * @since 2023/9/19 15:13
+ */
+@Service
+public class TuyaDeviceService {
+
+
+
+
+}
diff --git a/iot-modules/iot-box-user-api/src/test/java/UserTest.java b/iot-modules/iot-box-user-api/src/test/java/UserTest.java
index ea30686..de1338c 100644
--- a/iot-modules/iot-box-user-api/src/test/java/UserTest.java
+++ b/iot-modules/iot-box-user-api/src/test/java/UserTest.java
@@ -1,4 +1,13 @@
+import com.alibaba.fastjson.JSONObject;
+import com.google.gson.JsonArray;
+import com.qiuguo.iot.user.api.IotBoxUserApiApplication;
+import com.qiuguo.iot.user.api.service.TuyaDeviceConnector;
import com.tuya.connector.api.annotations.Path;
+import java.util.Arrays;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
/**
* XXX
@@ -6,11 +15,83 @@ import com.tuya.connector.api.annotations.Path;
* @author weiyachao
* @since 2023/9/5 16:03
*/
-
+@SpringBootTest(classes = IotBoxUserApiApplication.class)
+@Slf4j
public class UserTest {
- public static void main(String[] args) {
+ public String deviceId = "6c4a153095be2b7f8baofp";
+ public String spaceId = "163257138";
+
+ @Autowired
+ private TuyaDeviceConnector tuyaDeviceConnector;
+
+ @Test
+ public void 获取设备支持的指令集() {
+ Object functions = tuyaDeviceConnector.getFunctions(deviceId);
+ System.out.println(functions);
+ }
+
+ @Test
+ public void 修改空间() {
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("name", "testname");
+ Boolean jsonObject1 = tuyaDeviceConnector.updateSpace(spaceId, jsonObject);
+ System.out.println(jsonObject1);
+ }
+
+ @Test
+ public void 查询空间() {
+ //40001900
+ JSONObject spaceInfo = tuyaDeviceConnector.getSpaceInfo("163258893");
+ System.out.println(spaceInfo);
+ }
+
+ @Test
+ public void 删除空间() {
+ //40001900
+ Boolean jsonObject = tuyaDeviceConnector.deleteSpace("163258893");
+ System.out.println(jsonObject);
+ }
+
+ @Test
+ public void 创建空间() {
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("name", "space1_2");
+ jsonObject.put("description", "space1_2的空间描述");
+ Long jsonObject1 = tuyaDeviceConnector.creatSpace(jsonObject);
+ System.out.println(jsonObject1);
+ }
+
+ @Test
+ public void 控制设备动作() {
+ JSONObject commands = new JSONObject();
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("code", "switch_led");
+ jsonObject.put("value", true);
+ JSONObject js2 = new JSONObject();
+ js2.put("code", "work_mode");
+ js2.put("value", "colour");
+ JSONObject js3 = new JSONObject();
+ js3.put("code", "bright_value_v2");
+ js3.put("value", 10);
+ commands.put("commands", Arrays.asList( js3));
+
+ Object controlDevice = tuyaDeviceConnector.controlDevice(deviceId,commands);
+ System.out.println(controlDevice);
+
+ }
+
+ @Test
+ public void 查询空间下设备列表() {
+ JsonArray devicesBySpaceIds = tuyaDeviceConnector.getDevicesBySpaceIds(spaceId, 20);
+ System.out.println(devicesBySpaceIds);
+ }
+
+ @Test
+ public void 查询设备信息() {
+ JSONObject byid = tuyaDeviceConnector.getByid(deviceId);
+ System.out.println(byid);
}
}
diff --git a/logs/iot-admin-http-api/error.log b/logs/iot-admin-http-api/error.log
index e1ec514..1fa95be 100644
--- a/logs/iot-admin-http-api/error.log
+++ b/logs/iot-admin-http-api/error.log
@@ -385,3 +385,5 @@ Caused by: java.util.concurrent.TimeoutException: null
2023-11:39:27.537 [reactor-tcp-nio-2] DEBUG o.h.e.r.e.r.r.R2dbcReactiveSqlExecutor - [lambda$null$9,146] []- ==> Updated: 1
2023-11:41:50.880 [reactor-http-nio-4] WARN r.n.h.s.HttpServerOperations - [warn,299] []- [a269f4cd, L:/127.0.0.1:8091 - R:/127.0.0.1:63946] Decoding failed: FULL_REQUEST(decodeResult: failure(java.lang.IllegalArgumentException: text is empty (possibly HTTP/0.9)), version: HTTP/1.0, content: UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeHeapByteBuf(ridx: 0, widx: 0, cap: 0))
GET /bad-request HTTP/1.0
+2023-13:09:09.449 [reactor-http-nio-13] WARN r.n.h.s.HttpServerOperations - [warn,299] []- [4cc312c1, L:/192.168.8.175:8091 - R:/192.168.8.246:52336] Decoding failed: FULL_REQUEST(decodeResult: failure(java.lang.IllegalArgumentException: text is empty (possibly HTTP/0.9)), version: HTTP/1.0, content: UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeHeapByteBuf(ridx: 0, widx: 0, cap: 0))
+GET /bad-request HTTP/1.0
diff --git a/logs/iot-admin-http-api/info.log b/logs/iot-admin-http-api/info.log
index e1ec514..1fa95be 100644
--- a/logs/iot-admin-http-api/info.log
+++ b/logs/iot-admin-http-api/info.log
@@ -385,3 +385,5 @@ Caused by: java.util.concurrent.TimeoutException: null
2023-11:39:27.537 [reactor-tcp-nio-2] DEBUG o.h.e.r.e.r.r.R2dbcReactiveSqlExecutor - [lambda$null$9,146] []- ==> Updated: 1
2023-11:41:50.880 [reactor-http-nio-4] WARN r.n.h.s.HttpServerOperations - [warn,299] []- [a269f4cd, L:/127.0.0.1:8091 - R:/127.0.0.1:63946] Decoding failed: FULL_REQUEST(decodeResult: failure(java.lang.IllegalArgumentException: text is empty (possibly HTTP/0.9)), version: HTTP/1.0, content: UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeHeapByteBuf(ridx: 0, widx: 0, cap: 0))
GET /bad-request HTTP/1.0
+2023-13:09:09.449 [reactor-http-nio-13] WARN r.n.h.s.HttpServerOperations - [warn,299] []- [4cc312c1, L:/192.168.8.175:8091 - R:/192.168.8.246:52336] Decoding failed: FULL_REQUEST(decodeResult: failure(java.lang.IllegalArgumentException: text is empty (possibly HTTP/0.9)), version: HTTP/1.0, content: UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeHeapByteBuf(ridx: 0, widx: 0, cap: 0))
+GET /bad-request HTTP/1.0
diff --git a/logs/iot-admin-http-api/warn.log b/logs/iot-admin-http-api/warn.log
index e1ec514..1fa95be 100644
--- a/logs/iot-admin-http-api/warn.log
+++ b/logs/iot-admin-http-api/warn.log
@@ -385,3 +385,5 @@ Caused by: java.util.concurrent.TimeoutException: null
2023-11:39:27.537 [reactor-tcp-nio-2] DEBUG o.h.e.r.e.r.r.R2dbcReactiveSqlExecutor - [lambda$null$9,146] []- ==> Updated: 1
2023-11:41:50.880 [reactor-http-nio-4] WARN r.n.h.s.HttpServerOperations - [warn,299] []- [a269f4cd, L:/127.0.0.1:8091 - R:/127.0.0.1:63946] Decoding failed: FULL_REQUEST(decodeResult: failure(java.lang.IllegalArgumentException: text is empty (possibly HTTP/0.9)), version: HTTP/1.0, content: UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeHeapByteBuf(ridx: 0, widx: 0, cap: 0))
GET /bad-request HTTP/1.0
+2023-13:09:09.449 [reactor-http-nio-13] WARN r.n.h.s.HttpServerOperations - [warn,299] []- [4cc312c1, L:/192.168.8.175:8091 - R:/192.168.8.246:52336] Decoding failed: FULL_REQUEST(decodeResult: failure(java.lang.IllegalArgumentException: text is empty (possibly HTTP/0.9)), version: HTTP/1.0, content: UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeHeapByteBuf(ridx: 0, widx: 0, cap: 0))
+GET /bad-request HTTP/1.0