From 432e1ed230d853bcd1c92108f5e4525244c8f953 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Tue, 27 Jan 2026 20:03:51 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E3=80=90iot=E3=80=91=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95=EF=BC=9A=E4=BC=98=E5=8C=96=E5=8D=95?= =?UTF-8?q?=E6=B5=8B=E8=B4=A8=E9=87=8F=EF=BC=88=E6=A0=BC=E5=BC=8F=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...rectDeviceCoapProtocolIntegrationTest.java | 1 + ...ewayDeviceCoapProtocolIntegrationTest.java | 2 + ...ySubDeviceCoapProtocolIntegrationTest.java | 1 + ...rectDeviceHttpProtocolIntegrationTest.java | 1 + ...ewayDeviceHttpProtocolIntegrationTest.java | 2 + ...ySubDeviceHttpProtocolIntegrationTest.java | 1 + ...rectDeviceMqttProtocolIntegrationTest.java | 7 +- ...ewayDeviceMqttProtocolIntegrationTest.java | 8 +- ...ySubDeviceMqttProtocolIntegrationTest.java | 7 +- ...irectDeviceTcpProtocolIntegrationTest.java | 2 + ...tewayDeviceTcpProtocolIntegrationTest.java | 3 + ...aySubDeviceTcpProtocolIntegrationTest.java | 2 + ...irectDeviceUdpProtocolIntegrationTest.java | 2 + ...tewayDeviceUdpProtocolIntegrationTest.java | 2 + ...aySubDeviceUdpProtocolIntegrationTest.java | 2 + ...eviceWebSocketProtocolIntegrationTest.java | 9 +- ...eviceWebSocketProtocolIntegrationTest.java | 10 +- ...eviceWebSocketProtocolIntegrationTest.java | 9 +- .../resources/mqtt-websocket-test-client.html | 888 ------------------ 19 files changed, 50 insertions(+), 909 deletions(-) delete mode 100644 yudao-module-iot/yudao-module-iot-gateway/src/test/resources/mqtt-websocket-test-client.html diff --git a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/coap/IotDirectDeviceCoapProtocolIntegrationTest.java b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/coap/IotDirectDeviceCoapProtocolIntegrationTest.java index b8f912607e..baf97a9345 100644 --- a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/coap/IotDirectDeviceCoapProtocolIntegrationTest.java +++ b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/coap/IotDirectDeviceCoapProtocolIntegrationTest.java @@ -49,6 +49,7 @@ public class IotDirectDeviceCoapProtocolIntegrationTest { private static final int SERVER_PORT = 5683; // ===================== 直连设备信息(根据实际情况修改,从 iot_device 表查询子设备) ===================== + private static final String PRODUCT_KEY = "4aymZgOTOOCrDKRT"; private static final String DEVICE_NAME = "small"; private static final String DEVICE_SECRET = "0baa4c2ecc104ae1a26b4070c218bdf3"; diff --git a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/coap/IotGatewayDeviceCoapProtocolIntegrationTest.java b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/coap/IotGatewayDeviceCoapProtocolIntegrationTest.java index 10bcca74fb..19c10cfc18 100644 --- a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/coap/IotGatewayDeviceCoapProtocolIntegrationTest.java +++ b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/coap/IotGatewayDeviceCoapProtocolIntegrationTest.java @@ -58,6 +58,7 @@ public class IotGatewayDeviceCoapProtocolIntegrationTest { private static final int SERVER_PORT = 5683; // ===================== 网关设备信息(根据实际情况修改,从 iot_device 表查询网关设备) ===================== + private static final String GATEWAY_PRODUCT_KEY = "m6XcS1ZJ3TW8eC0v"; private static final String GATEWAY_DEVICE_NAME = "sub-ddd"; private static final String GATEWAY_DEVICE_SECRET = "b3d62c70f8a4495487ed1d35d61ac2b3"; @@ -68,6 +69,7 @@ public class IotGatewayDeviceCoapProtocolIntegrationTest { private static final String GATEWAY_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwcm9kdWN0S2V5IjoibTZYY1MxWkozVFc4ZUMwdiIsImV4cCI6MTc2OTg2NjY3OCwiZGV2aWNlTmFtZSI6InN1Yi1kZGQifQ.nCLSAfHEjXLtTDRXARjOoFqpuo5WfArjFWweUAzrjKU"; // ===================== 子设备信息(根据实际情况修改,从 iot_device 表查询子设备) ===================== + private static final String SUB_DEVICE_PRODUCT_KEY = "jAufEMTF1W6wnPhn"; private static final String SUB_DEVICE_NAME = "chazuo-it"; private static final String SUB_DEVICE_SECRET = "d46ef9b28ab14238b9c00a3a668032af"; diff --git a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/coap/IotGatewaySubDeviceCoapProtocolIntegrationTest.java b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/coap/IotGatewaySubDeviceCoapProtocolIntegrationTest.java index c10bb772c6..4d21515e69 100644 --- a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/coap/IotGatewaySubDeviceCoapProtocolIntegrationTest.java +++ b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/coap/IotGatewaySubDeviceCoapProtocolIntegrationTest.java @@ -51,6 +51,7 @@ public class IotGatewaySubDeviceCoapProtocolIntegrationTest { private static final int SERVER_PORT = 5683; // ===================== 网关子设备信息(根据实际情况修改,从 iot_device 表查询子设备) ===================== + private static final String PRODUCT_KEY = "jAufEMTF1W6wnPhn"; private static final String DEVICE_NAME = "chazuo-it"; private static final String DEVICE_SECRET = "d46ef9b28ab14238b9c00a3a668032af"; diff --git a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/http/IotDirectDeviceHttpProtocolIntegrationTest.java b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/http/IotDirectDeviceHttpProtocolIntegrationTest.java index f4869873c8..5c12f126fa 100644 --- a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/http/IotDirectDeviceHttpProtocolIntegrationTest.java +++ b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/http/IotDirectDeviceHttpProtocolIntegrationTest.java @@ -43,6 +43,7 @@ public class IotDirectDeviceHttpProtocolIntegrationTest { private static final int SERVER_PORT = 8092; // ===================== 直连设备信息(根据实际情况修改,从 iot_device 表查询子设备) ===================== + private static final String PRODUCT_KEY = "4aymZgOTOOCrDKRT"; private static final String DEVICE_NAME = "small"; private static final String DEVICE_SECRET = "0baa4c2ecc104ae1a26b4070c218bdf3"; diff --git a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/http/IotGatewayDeviceHttpProtocolIntegrationTest.java b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/http/IotGatewayDeviceHttpProtocolIntegrationTest.java index 948a5efa3a..e22802bb8e 100644 --- a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/http/IotGatewayDeviceHttpProtocolIntegrationTest.java +++ b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/http/IotGatewayDeviceHttpProtocolIntegrationTest.java @@ -52,6 +52,7 @@ public class IotGatewayDeviceHttpProtocolIntegrationTest { private static final int SERVER_PORT = 8092; // ===================== 网关设备信息(根据实际情况修改,从 iot_device 表查询网关设备) ===================== + private static final String GATEWAY_PRODUCT_KEY = "m6XcS1ZJ3TW8eC0v"; private static final String GATEWAY_DEVICE_NAME = "sub-ddd"; private static final String GATEWAY_DEVICE_SECRET = "b3d62c70f8a4495487ed1d35d61ac2b3"; @@ -62,6 +63,7 @@ public class IotGatewayDeviceHttpProtocolIntegrationTest { private static final String GATEWAY_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwcm9kdWN0S2V5IjoibTZYY1MxWkozVFc4ZUMwdiIsImV4cCI6MTc2OTg2NjY3OCwiZGV2aWNlTmFtZSI6InN1Yi1kZGQifQ.nCLSAfHEjXLtTDRXARjOoFqpuo5WfArjFWweUAzrjKU"; // ===================== 子设备信息(根据实际情况修改,从 iot_device 表查询子设备) ===================== + private static final String SUB_DEVICE_PRODUCT_KEY = "jAufEMTF1W6wnPhn"; private static final String SUB_DEVICE_NAME = "chazuo-it"; private static final String SUB_DEVICE_SECRET = "d46ef9b28ab14238b9c00a3a668032af"; diff --git a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/http/IotGatewaySubDeviceHttpProtocolIntegrationTest.java b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/http/IotGatewaySubDeviceHttpProtocolIntegrationTest.java index 7bb83a52b9..eb53736ed6 100644 --- a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/http/IotGatewaySubDeviceHttpProtocolIntegrationTest.java +++ b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/http/IotGatewaySubDeviceHttpProtocolIntegrationTest.java @@ -45,6 +45,7 @@ public class IotGatewaySubDeviceHttpProtocolIntegrationTest { private static final int SERVER_PORT = 8092; // ===================== 网关子设备信息(根据实际情况修改,从 iot_device 表查询子设备) ===================== + private static final String PRODUCT_KEY = "jAufEMTF1W6wnPhn"; private static final String DEVICE_NAME = "chazuo-it"; private static final String DEVICE_SECRET = "d46ef9b28ab14238b9c00a3a668032af"; diff --git a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/mqtt/IotDirectDeviceMqttProtocolIntegrationTest.java b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/mqtt/IotDirectDeviceMqttProtocolIntegrationTest.java index 640572eceb..39d5a88c8e 100644 --- a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/mqtt/IotDirectDeviceMqttProtocolIntegrationTest.java +++ b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/mqtt/IotDirectDeviceMqttProtocolIntegrationTest.java @@ -55,17 +55,18 @@ public class IotDirectDeviceMqttProtocolIntegrationTest { private static final int SERVER_PORT = 1883; private static final int TIMEOUT_SECONDS = 10; + private static Vertx vertx; + // ===================== 编解码器(MQTT 使用 Alink 协议) ===================== + private static final IotDeviceMessageCodec CODEC = new IotAlinkDeviceMessageCodec(); // ===================== 直连设备信息(根据实际情况修改,从 iot_device 表查询) ===================== + private static final String PRODUCT_KEY = "4aymZgOTOOCrDKRT"; private static final String DEVICE_NAME = "small"; private static final String DEVICE_SECRET = "0baa4c2ecc104ae1a26b4070c218bdf3"; - // ===================== 全局共享 Vertx 实例 ===================== - private static Vertx vertx; - @BeforeAll public static void setUp() { vertx = Vertx.vertx(); diff --git a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/mqtt/IotGatewayDeviceMqttProtocolIntegrationTest.java b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/mqtt/IotGatewayDeviceMqttProtocolIntegrationTest.java index 57ed6a7779..9da9c74d95 100644 --- a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/mqtt/IotGatewayDeviceMqttProtocolIntegrationTest.java +++ b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/mqtt/IotGatewayDeviceMqttProtocolIntegrationTest.java @@ -63,22 +63,24 @@ public class IotGatewayDeviceMqttProtocolIntegrationTest { private static final int SERVER_PORT = 1883; private static final int TIMEOUT_SECONDS = 10; + private static Vertx vertx; + // ===================== 编解码器(MQTT 使用 Alink 协议) ===================== + private static final IotDeviceMessageCodec CODEC = new IotAlinkDeviceMessageCodec(); // ===================== 网关设备信息(根据实际情况修改,从 iot_device 表查询网关设备) ===================== + private static final String GATEWAY_PRODUCT_KEY = "m6XcS1ZJ3TW8eC0v"; private static final String GATEWAY_DEVICE_NAME = "sub-ddd"; private static final String GATEWAY_DEVICE_SECRET = "b3d62c70f8a4495487ed1d35d61ac2b3"; // ===================== 子设备信息(根据实际情况修改,从 iot_device 表查询子设备) ===================== + private static final String SUB_DEVICE_PRODUCT_KEY = "jAufEMTF1W6wnPhn"; private static final String SUB_DEVICE_NAME = "chazuo-it"; private static final String SUB_DEVICE_SECRET = "d46ef9b28ab14238b9c00a3a668032af"; - // ===================== 全局共享 Vertx 实例 ===================== - private static Vertx vertx; - @BeforeAll public static void setUp() { vertx = Vertx.vertx(); diff --git a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/mqtt/IotGatewaySubDeviceMqttProtocolIntegrationTest.java b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/mqtt/IotGatewaySubDeviceMqttProtocolIntegrationTest.java index f16fa6c4ba..08c93a5664 100644 --- a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/mqtt/IotGatewaySubDeviceMqttProtocolIntegrationTest.java +++ b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/mqtt/IotGatewaySubDeviceMqttProtocolIntegrationTest.java @@ -57,17 +57,18 @@ public class IotGatewaySubDeviceMqttProtocolIntegrationTest { private static final int SERVER_PORT = 1883; private static final int TIMEOUT_SECONDS = 10; + private static Vertx vertx; + // ===================== 编解码器(MQTT 使用 Alink 协议) ===================== + private static final IotDeviceMessageCodec CODEC = new IotAlinkDeviceMessageCodec(); // ===================== 网关子设备信息(根据实际情况修改,从 iot_device 表查询子设备) ===================== + private static final String PRODUCT_KEY = "jAufEMTF1W6wnPhn"; private static final String DEVICE_NAME = "chazuo-it"; private static final String DEVICE_SECRET = "d46ef9b28ab14238b9c00a3a668032af"; - // ===================== 全局共享 Vertx 实例 ===================== - private static Vertx vertx; - @BeforeAll public static void setUp() { vertx = Vertx.vertx(); diff --git a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/tcp/IotDirectDeviceTcpProtocolIntegrationTest.java b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/tcp/IotDirectDeviceTcpProtocolIntegrationTest.java index 98060d3c61..af4ba31e65 100644 --- a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/tcp/IotDirectDeviceTcpProtocolIntegrationTest.java +++ b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/tcp/IotDirectDeviceTcpProtocolIntegrationTest.java @@ -57,10 +57,12 @@ public class IotDirectDeviceTcpProtocolIntegrationTest { private static final int TIMEOUT_MS = 5000; // ===================== 编解码器选择(修改此处切换 JSON / Binary) ===================== + // private static final IotDeviceMessageCodec CODEC = new IotTcpJsonDeviceMessageCodec(); private static final IotDeviceMessageCodec CODEC = new IotTcpBinaryDeviceMessageCodec(); // ===================== 直连设备信息(根据实际情况修改,从 iot_device 表查询) ===================== + private static final String PRODUCT_KEY = "4aymZgOTOOCrDKRT"; private static final String DEVICE_NAME = "small"; private static final String DEVICE_SECRET = "0baa4c2ecc104ae1a26b4070c218bdf3"; diff --git a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/tcp/IotGatewayDeviceTcpProtocolIntegrationTest.java b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/tcp/IotGatewayDeviceTcpProtocolIntegrationTest.java index 6c21de749e..adbbff76cf 100644 --- a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/tcp/IotGatewayDeviceTcpProtocolIntegrationTest.java +++ b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/tcp/IotGatewayDeviceTcpProtocolIntegrationTest.java @@ -65,15 +65,18 @@ public class IotGatewayDeviceTcpProtocolIntegrationTest { private static final int TIMEOUT_MS = 5000; // ===================== 编解码器选择(修改此处切换 JSON / Binary) ===================== + private static final IotDeviceMessageCodec CODEC = new IotTcpJsonDeviceMessageCodec(); // private static final IotDeviceMessageCodec CODEC = new IotTcpBinaryDeviceMessageCodec(); // ===================== 网关设备信息(根据实际情况修改,从 iot_device 表查询网关设备) ===================== + private static final String GATEWAY_PRODUCT_KEY = "m6XcS1ZJ3TW8eC0v"; private static final String GATEWAY_DEVICE_NAME = "sub-ddd"; private static final String GATEWAY_DEVICE_SECRET = "b3d62c70f8a4495487ed1d35d61ac2b3"; // ===================== 子设备信息(根据实际情况修改,从 iot_device 表查询子设备) ===================== + private static final String SUB_DEVICE_PRODUCT_KEY = "jAufEMTF1W6wnPhn"; private static final String SUB_DEVICE_NAME = "chazuo-it"; private static final String SUB_DEVICE_SECRET = "d46ef9b28ab14238b9c00a3a668032af"; diff --git a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/tcp/IotGatewaySubDeviceTcpProtocolIntegrationTest.java b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/tcp/IotGatewaySubDeviceTcpProtocolIntegrationTest.java index a7fcc654a6..31473d14b7 100644 --- a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/tcp/IotGatewaySubDeviceTcpProtocolIntegrationTest.java +++ b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/tcp/IotGatewaySubDeviceTcpProtocolIntegrationTest.java @@ -58,10 +58,12 @@ public class IotGatewaySubDeviceTcpProtocolIntegrationTest { private static final int TIMEOUT_MS = 5000; // ===================== 编解码器选择(修改此处切换 JSON / Binary) ===================== + private static final IotDeviceMessageCodec CODEC = new IotTcpJsonDeviceMessageCodec(); // private static final IotDeviceMessageCodec CODEC = new IotTcpBinaryDeviceMessageCodec(); // ===================== 网关子设备信息(根据实际情况修改,从 iot_device 表查询子设备) ===================== + private static final String PRODUCT_KEY = "jAufEMTF1W6wnPhn"; private static final String DEVICE_NAME = "chazuo-it"; private static final String DEVICE_SECRET = "d46ef9b28ab14238b9c00a3a668032af"; diff --git a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/udp/IotDirectDeviceUdpProtocolIntegrationTest.java b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/udp/IotDirectDeviceUdpProtocolIntegrationTest.java index 680512ad36..42e28b0dee 100644 --- a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/udp/IotDirectDeviceUdpProtocolIntegrationTest.java +++ b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/udp/IotDirectDeviceUdpProtocolIntegrationTest.java @@ -58,10 +58,12 @@ public class IotDirectDeviceUdpProtocolIntegrationTest { private static final int TIMEOUT_MS = 5000; // ===================== 编解码器选择(修改此处切换 JSON / Binary) ===================== + private static final IotDeviceMessageCodec CODEC = new IotTcpJsonDeviceMessageCodec(); // private static final IotDeviceMessageCodec CODEC = new IotTcpBinaryDeviceMessageCodec(); // ===================== 直连设备信息(根据实际情况修改,从 iot_device 表查询子设备) ===================== + private static final String PRODUCT_KEY = "4aymZgOTOOCrDKRT"; private static final String DEVICE_NAME = "small"; private static final String DEVICE_SECRET = "0baa4c2ecc104ae1a26b4070c218bdf3"; diff --git a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/udp/IotGatewayDeviceUdpProtocolIntegrationTest.java b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/udp/IotGatewayDeviceUdpProtocolIntegrationTest.java index e58f5bbc55..aa0db66205 100644 --- a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/udp/IotGatewayDeviceUdpProtocolIntegrationTest.java +++ b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/udp/IotGatewayDeviceUdpProtocolIntegrationTest.java @@ -64,10 +64,12 @@ public class IotGatewayDeviceUdpProtocolIntegrationTest { private static final int TIMEOUT_MS = 5000; // ===================== 编解码器选择(修改此处切换 JSON / Binary) ===================== + private static final IotDeviceMessageCodec CODEC = new IotTcpJsonDeviceMessageCodec(); // private static final IotDeviceMessageCodec CODEC = new IotTcpBinaryDeviceMessageCodec(); // ===================== 网关设备信息(根据实际情况修改,从 iot_device 表查询网关设备) ===================== + private static final String GATEWAY_PRODUCT_KEY = "m6XcS1ZJ3TW8eC0v"; private static final String GATEWAY_DEVICE_NAME = "sub-ddd"; private static final String GATEWAY_DEVICE_SECRET = "b3d62c70f8a4495487ed1d35d61ac2b3"; diff --git a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/udp/IotGatewaySubDeviceUdpProtocolIntegrationTest.java b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/udp/IotGatewaySubDeviceUdpProtocolIntegrationTest.java index ff775196ff..948024e25f 100644 --- a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/udp/IotGatewaySubDeviceUdpProtocolIntegrationTest.java +++ b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/udp/IotGatewaySubDeviceUdpProtocolIntegrationTest.java @@ -59,10 +59,12 @@ public class IotGatewaySubDeviceUdpProtocolIntegrationTest { private static final int TIMEOUT_MS = 5000; // ===================== 编解码器选择(修改此处切换 JSON / Binary) ===================== + private static final IotDeviceMessageCodec CODEC = new IotTcpJsonDeviceMessageCodec(); // private static final IotDeviceMessageCodec CODEC = new IotTcpBinaryDeviceMessageCodec(); // ===================== 网关子设备信息(根据实际情况修改,从 iot_device 表查询子设备) ===================== + private static final String PRODUCT_KEY = "jAufEMTF1W6wnPhn"; private static final String DEVICE_NAME = "chazuo-it"; private static final String DEVICE_SECRET = "d46ef9b28ab14238b9c00a3a668032af"; diff --git a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/websocket/IotDirectDeviceWebSocketProtocolIntegrationTest.java b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/websocket/IotDirectDeviceWebSocketProtocolIntegrationTest.java index 9121207bdc..2a830b755a 100644 --- a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/websocket/IotDirectDeviceWebSocketProtocolIntegrationTest.java +++ b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/websocket/IotDirectDeviceWebSocketProtocolIntegrationTest.java @@ -55,17 +55,18 @@ public class IotDirectDeviceWebSocketProtocolIntegrationTest { private static final String WS_PATH = "/ws"; private static final int TIMEOUT_SECONDS = 5; - // 编解码器 + private static Vertx vertx; + + // ===================== 编解码器选择 ===================== + private static final IotDeviceMessageCodec CODEC = new IotWebSocketJsonDeviceMessageCodec(); // ===================== 直连设备信息(根据实际情况修改,从 iot_device 表查询) ===================== + private static final String PRODUCT_KEY = "4aymZgOTOOCrDKRT"; private static final String DEVICE_NAME = "small"; private static final String DEVICE_SECRET = "0baa4c2ecc104ae1a26b4070c218bdf3"; - // Vert.x 实例 - private static Vertx vertx; - @BeforeAll public static void setUp() { vertx = Vertx.vertx(); diff --git a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/websocket/IotGatewayDeviceWebSocketProtocolIntegrationTest.java b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/websocket/IotGatewayDeviceWebSocketProtocolIntegrationTest.java index 464efb0f44..e0fcc7a044 100644 --- a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/websocket/IotGatewayDeviceWebSocketProtocolIntegrationTest.java +++ b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/websocket/IotGatewayDeviceWebSocketProtocolIntegrationTest.java @@ -63,22 +63,24 @@ public class IotGatewayDeviceWebSocketProtocolIntegrationTest { private static final String WS_PATH = "/ws"; private static final int TIMEOUT_SECONDS = 5; - // 编解码器 + private static Vertx vertx; + + // ===================== 编解码器选择 ===================== + private static final IotDeviceMessageCodec CODEC = new IotWebSocketJsonDeviceMessageCodec(); // ===================== 网关设备信息(根据实际情况修改,从 iot_device 表查询网关设备) ===================== + private static final String GATEWAY_PRODUCT_KEY = "m6XcS1ZJ3TW8eC0v"; private static final String GATEWAY_DEVICE_NAME = "sub-ddd"; private static final String GATEWAY_DEVICE_SECRET = "b3d62c70f8a4495487ed1d35d61ac2b3"; // ===================== 子设备信息(根据实际情况修改,从 iot_device 表查询子设备) ===================== + private static final String SUB_DEVICE_PRODUCT_KEY = "jAufEMTF1W6wnPhn"; private static final String SUB_DEVICE_NAME = "chazuo-it"; private static final String SUB_DEVICE_SECRET = "d46ef9b28ab14238b9c00a3a668032af"; - // Vert.x 实例 - private static Vertx vertx; - @BeforeAll public static void setUp() { vertx = Vertx.vertx(); diff --git a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/websocket/IotGatewaySubDeviceWebSocketProtocolIntegrationTest.java b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/websocket/IotGatewaySubDeviceWebSocketProtocolIntegrationTest.java index 4903d13cfe..8368940a6d 100644 --- a/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/websocket/IotGatewaySubDeviceWebSocketProtocolIntegrationTest.java +++ b/yudao-module-iot/yudao-module-iot-gateway/src/test/java/cn/iocoder/yudao/module/iot/gateway/protocol/websocket/IotGatewaySubDeviceWebSocketProtocolIntegrationTest.java @@ -56,17 +56,18 @@ public class IotGatewaySubDeviceWebSocketProtocolIntegrationTest { private static final String WS_PATH = "/ws"; private static final int TIMEOUT_SECONDS = 5; - // 编解码器 + private static Vertx vertx; + + // ===================== 编解码器选择 ===================== + private static final IotDeviceMessageCodec CODEC = new IotWebSocketJsonDeviceMessageCodec(); // ===================== 网关子设备信息(根据实际情况修改,从 iot_device 表查询子设备) ===================== + private static final String PRODUCT_KEY = "jAufEMTF1W6wnPhn"; private static final String DEVICE_NAME = "chazuo-it"; private static final String DEVICE_SECRET = "d46ef9b28ab14238b9c00a3a668032af"; - // Vert.x 实例 - private static Vertx vertx; - @BeforeAll public static void setUp() { vertx = Vertx.vertx(); diff --git a/yudao-module-iot/yudao-module-iot-gateway/src/test/resources/mqtt-websocket-test-client.html b/yudao-module-iot/yudao-module-iot-gateway/src/test/resources/mqtt-websocket-test-client.html deleted file mode 100644 index e0853ac6bf..0000000000 --- a/yudao-module-iot/yudao-module-iot-gateway/src/test/resources/mqtt-websocket-test-client.html +++ /dev/null @@ -1,888 +0,0 @@ - - - - - - MQTT WebSocket 测试客户端 - - - -
-
-

🚀 MQTT WebSocket 测试客户端

-

RuoYi-Vue-Pro IoT 模块 - MQTT over WebSocket 在线测试工具

-
- - -
-

📌 标准协议格式说明

-
    -
  • Topic 格式:/sys/{productKey}/{deviceName}/thing/property/post
  • -
  • Client ID 格式:{productKey}.{deviceName} 例如:zOXKLvHjUqTo7ipD.ceshi001 -
  • -
  • Username 格式:{deviceName}&{productKey} 例如:ceshi001&zOXKLvHjUqTo7ipD -
  • -
  • 消息格式(Alink 协议): -
    -{
    -  "id": "消息 ID(唯一标识)",
    -  "version": "1.0",
    -  "method": "thing.property.post",
    -  "params": {
    -    "temperature": 25.5,
    -    "humidity": 60
    -  }
    -}
    -
  • -
  • 常用 Topic(下行 - 服务端推送): -
      -
    • 属性设置:/sys/{pk}/{dn}/thing/property/set
    • -
    • 服务调用:/sys/{pk}/{dn}/thing/service/invoke
    • -
    • 配置推送:/sys/{pk}/{dn}/thing/config/push
    • -
    • OTA 升级:/sys/{pk}/{dn}/thing/ota/upgrade
    • -
    -
  • -
  • 常用 Topic(上行 - 设备上报): -
      -
    • 状态更新:/sys/{pk}/{dn}/thing/state/update
    • -
    • 属性上报:/sys/{pk}/{dn}/thing/property/post
    • -
    • 事件上报:/sys/{pk}/{dn}/thing/event/post
    • -
    • OTA 进度:/sys/{pk}/{dn}/thing/ota/progress
    • -
    -
  • -
-
- -
- -
-

📡 连接配置

- -
- ⚫ 未连接 -
- -
- - - WebSocket 地址,支持 ws:// 和 wss:// -
- -
- - - 格式:{productKey}.{deviceName} -
- -
- - - 格式:{deviceName}&{productKey} -
- -
- - - 设备的认证密钥(Device Secret) -
- -
- - - -
- - -
-
-
0
-
发送消息数
-
-
-
0
-
接收消息数
-
-
-
0
-
错误次数
-
-
-
- - -
-

📤 消息发布

- -
- - -
- -
- - - 标准格式:/sys/{productKey}/{deviceName}/thing/property/post -
- -
- - -
- -
- - - - Alink 协议格式:id(消息 ID)、version(协议版本)、method(方法)、params(参数) - -
- -
- - -
- -

📥 主题订阅

- -
- - -
- -
- - - 标准格式:/sys/{productKey}/{deviceName}/thing/method 或使用通配符 - /sys/+/+/# -
- -
- - -
- -
- - -
-
- - -
-

📝 日志输出

-
-
-
-
- - - - - - - - -