diff --git a/plugins/yudao-module-iot-plugin-http-1.0.0.jar b/plugins/yudao-module-iot-plugin-http-1.0.0.jar
index c504342cf8..2d1f7be1b0 100644
Binary files a/plugins/yudao-module-iot-plugin-http-1.0.0.jar and b/plugins/yudao-module-iot-plugin-http-1.0.0.jar differ
diff --git a/yudao-module-iot/yudao-module-iot-api/pom.xml b/yudao-module-iot/yudao-module-iot-api/pom.xml
index 9b47273814..ab492729c5 100644
--- a/yudao-module-iot/yudao-module-iot-api/pom.xml
+++ b/yudao-module-iot/yudao-module-iot-api/pom.xml
@@ -30,11 +30,17 @@
provided
-
-
+
- org.pf4j
+ com.fasterxml.jackson.core
+ jackson-databind
+ provided
+
+
+
+ org.pf4j
pf4j-spring
+
org.slf4j
@@ -43,13 +49,6 @@
-
-
- com.fasterxml.jackson.core
- jackson-databind
- provided
-
-
org.springframework.boot
diff --git a/yudao-module-iot/yudao-module-iot-biz/pom.xml b/yudao-module-iot/yudao-module-iot-biz/pom.xml
index 66710ae910..1ac3f915a0 100644
--- a/yudao-module-iot/yudao-module-iot-biz/pom.xml
+++ b/yudao-module-iot/yudao-module-iot-biz/pom.xml
@@ -64,25 +64,19 @@
yudao-spring-boot-starter-excel
-
-
- io.vertx
- vertx-core
-
-
+
io.vertx
vertx-web
-
+
- org.eclipse.paho
+ org.eclipse.paho
org.eclipse.paho.client.mqttv3
-
- org.pf4j
+ org.pf4j
pf4j-spring
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/plugin/UnifiedConfiguration.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/plugin/config/UnifiedConfiguration.java
similarity index 88%
rename from yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/plugin/UnifiedConfiguration.java
rename to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/plugin/config/UnifiedConfiguration.java
index 0c12525916..849b6b16ff 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/plugin/UnifiedConfiguration.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/plugin/config/UnifiedConfiguration.java
@@ -1,6 +1,6 @@
-package cn.iocoder.yudao.module.iot.framework.plugin;
+package cn.iocoder.yudao.module.iot.framework.plugin.config;
-import cn.iocoder.yudao.module.iot.framework.plugin.listener.CustomPluginStateListener;
+import cn.iocoder.yudao.module.iot.framework.plugin.core.CustomPluginStateListener;
import lombok.extern.slf4j.Slf4j;
import org.pf4j.spring.SpringPluginManager;
import org.springframework.beans.factory.annotation.Value;
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/plugin/listener/CustomPluginStateListener.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/plugin/core/CustomPluginStateListener.java
similarity index 92%
rename from yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/plugin/listener/CustomPluginStateListener.java
rename to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/plugin/core/CustomPluginStateListener.java
index 4542868b03..9833a815b6 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/plugin/listener/CustomPluginStateListener.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/plugin/core/CustomPluginStateListener.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.module.iot.framework.plugin.listener;
+package cn.iocoder.yudao.module.iot.framework.plugin.core;
import lombok.extern.slf4j.Slf4j;
import org.pf4j.PluginStateEvent;
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/plugin/PluginStart.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/plugin/core/PluginStart.java
similarity index 97%
rename from yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/plugin/PluginStart.java
rename to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/plugin/core/PluginStart.java
index 8298789e5c..680d7c3069 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/plugin/PluginStart.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/plugin/core/PluginStart.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.module.iot.framework.plugin;
+package cn.iocoder.yudao.module.iot.framework.plugin.core;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils;
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/aspect/TaosAspect.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/tdengine/core/TaosAspect.java
similarity index 95%
rename from yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/aspect/TaosAspect.java
rename to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/tdengine/core/TaosAspect.java
index 61b03dc42e..d83f34d04c 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/aspect/TaosAspect.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/tdengine/core/TaosAspect.java
@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.module.iot.framework.aspect;
+package cn.iocoder.yudao.module.iot.framework.tdengine.core;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
diff --git a/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-common/pom.xml b/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-common/pom.xml
index c02d266797..ccf010f24e 100644
--- a/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-common/pom.xml
+++ b/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-common/pom.xml
@@ -18,35 +18,24 @@
-
- cn.iocoder.boot
- yudao-common
+ org.springframework.boot
+ spring-boot-starter
-
+
cn.iocoder.boot
yudao-module-iot-api
${revision}
-
- org.projectlombok
- lombok
-
-
+
org.springframework
spring-web
-
-
- org.springframework.boot
- spring-boot-starter
-
-
-
+
io.vertx
vertx-web
diff --git a/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/pom.xml b/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/pom.xml
index b939428166..8da327c2a3 100644
--- a/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/pom.xml
+++ b/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/pom.xml
@@ -16,6 +16,7 @@
${project.artifactId}
+
物联网 插件模块 - http 插件
@@ -31,7 +32,7 @@
-
+
org.apache.maven.plugins
maven-antrun-plugin
@@ -75,7 +76,7 @@
-
+
org.apache.maven.plugins
maven-jar-plugin
@@ -94,7 +95,7 @@
-
+
org.springframework.boot
spring-boot-maven-plugin
@@ -121,21 +122,13 @@
-
-
cn.iocoder.boot
yudao-module-iot-plugin-common
${revision}
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
-
+
io.vertx
vertx-web
diff --git a/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/src/main/java/cn/iocoder/yudao/module/iot/plugin/http/HttpPluginSpringbootApplication.java b/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/src/main/java/cn/iocoder/yudao/module/iot/plugin/http/HttpPluginSpringbootApplication.java
index f2dbbde790..8f0c5c7a73 100644
--- a/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/src/main/java/cn/iocoder/yudao/module/iot/plugin/http/HttpPluginSpringbootApplication.java
+++ b/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/src/main/java/cn/iocoder/yudao/module/iot/plugin/http/HttpPluginSpringbootApplication.java
@@ -1,9 +1,7 @@
package cn.iocoder.yudao.module.iot.plugin.http;
-import cn.iocoder.yudao.module.iot.plugin.http.upstream.IotDeviceUpstreamServer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
-import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@@ -15,16 +13,15 @@ import org.springframework.context.ConfigurableApplicationContext;
public class HttpPluginSpringbootApplication {
public static void main(String[] args) {
- SpringApplication application = new SpringApplication(HttpPluginSpringbootApplication.class);
- application.setWebApplicationType(WebApplicationType.NONE);
- ConfigurableApplicationContext context = application.run(args);
+ ConfigurableApplicationContext context = SpringApplication.run(HttpPluginSpringbootApplication.class, args);
// 手动获取 VertxService 并启动
// TODO @haohao:可以放在 bean 的 init 里么?回复:会和插件模式冲突 @芋艿,测试下
- IotDeviceUpstreamServer vertxService = context.getBean(IotDeviceUpstreamServer.class);
- vertxService.start();
+ // TODO @haohao:貌似去掉,没有问题额。。。
+// IotDeviceUpstreamServer vertxService = context.getBean(IotDeviceUpstreamServer.class);
+// vertxService.start();
- log.info("[HttpPluginSpringbootApplication] 独立模式启动完成");
+ log.info("[main][独立模式启动完成]");
}
}
\ No newline at end of file
diff --git a/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/src/main/java/cn/iocoder/yudao/module/iot/plugin/http/config/IotHttpVertxPlugin.java b/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/src/main/java/cn/iocoder/yudao/module/iot/plugin/http/config/IotHttpVertxPlugin.java
index 0da7241ef7..fe789af52d 100644
--- a/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/src/main/java/cn/iocoder/yudao/module/iot/plugin/http/config/IotHttpVertxPlugin.java
+++ b/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/src/main/java/cn/iocoder/yudao/module/iot/plugin/http/config/IotHttpVertxPlugin.java
@@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.iot.plugin.http.config;
import cn.hutool.core.lang.Assert;
import cn.hutool.extra.spring.SpringUtil;
import cn.iocoder.yudao.module.iot.api.device.IotDeviceUpstreamApi;
-import cn.iocoder.yudao.module.iot.plugin.http.upstream.IotDeviceUpstreamServer;
import lombok.extern.slf4j.Slf4j;
import org.pf4j.PluginWrapper;
import org.pf4j.spring.SpringPlugin;
@@ -11,6 +10,7 @@ import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
+// TODO @芋艿:完善注释
/**
* 负责插件的启动和停止,与 Vert.x 的生命周期管理
*/
@@ -30,8 +30,9 @@ public class IotHttpVertxPlugin extends SpringPlugin {
Assert.notNull(pluginContext, "pluginContext 不能为空");
// 2. 启动 Vert.x
- IotDeviceUpstreamServer vertxService = pluginContext.getBean(IotDeviceUpstreamServer.class);
- vertxService.start();
+ // TODO @haohao:貌似去掉,没有问题额。。。
+// IotDeviceUpstreamServer vertxService = pluginContext.getBean(IotDeviceUpstreamServer.class);
+// vertxService.start();
log.info("[HttpVertxPlugin][HttpVertxPlugin 插件启动成功...]");
} catch (Exception e) {
@@ -44,11 +45,11 @@ public class IotHttpVertxPlugin extends SpringPlugin {
log.info("[HttpVertxPlugin][HttpVertxPlugin 插件停止开始...]");
try {
// 停止服务器
- ApplicationContext pluginContext = getApplicationContext();
- if (pluginContext != null) {
- IotDeviceUpstreamServer vertxService = pluginContext.getBean(IotDeviceUpstreamServer.class);
- vertxService.stopServer();
- }
+// ApplicationContext pluginContext = getApplicationContext();
+// if (pluginContext != null) {
+// IotDeviceUpstreamServer vertxService = pluginContext.getBean(IotDeviceUpstreamServer.class);
+// vertxService.stop();
+// }
log.info("[HttpVertxPlugin][HttpVertxPlugin 插件停止成功...]");
} catch (Exception e) {
diff --git a/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/src/main/java/cn/iocoder/yudao/module/iot/plugin/http/config/IotPluginHttpAutoConfiguration.java b/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/src/main/java/cn/iocoder/yudao/module/iot/plugin/http/config/IotPluginHttpAutoConfiguration.java
index 3ecc2dc923..388ad8ac41 100644
--- a/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/src/main/java/cn/iocoder/yudao/module/iot/plugin/http/config/IotPluginHttpAutoConfiguration.java
+++ b/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/src/main/java/cn/iocoder/yudao/module/iot/plugin/http/config/IotPluginHttpAutoConfiguration.java
@@ -7,7 +7,9 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
- * 插件与独立运行都可复用的配置类
+ * IoT 插件 HTTP 的专用自动配置类
+ *
+ * @author haohao
*/
@Configuration
public class IotPluginHttpAutoConfiguration {
@@ -19,8 +21,8 @@ public class IotPluginHttpAutoConfiguration {
@Value("${plugin.http.server.port:8092}")
private Integer port;
- @Bean
- public IotDeviceUpstreamServer vertxService(IotDeviceUpstreamApi deviceUpstreamApi) {
+ @Bean(initMethod = "start", destroyMethod = "stop")
+ public IotDeviceUpstreamServer deviceUpstreamServer(IotDeviceUpstreamApi deviceUpstreamApi) {
return new IotDeviceUpstreamServer(port, deviceUpstreamApi);
}
diff --git a/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/src/main/java/cn/iocoder/yudao/module/iot/plugin/http/downstream/IotDeviceDownstreamHandlerImpl.java b/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/src/main/java/cn/iocoder/yudao/module/iot/plugin/http/downstream/IotDeviceDownstreamHandlerImpl.java
index 91604c6b3c..816a172537 100644
--- a/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/src/main/java/cn/iocoder/yudao/module/iot/plugin/http/downstream/IotDeviceDownstreamHandlerImpl.java
+++ b/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/src/main/java/cn/iocoder/yudao/module/iot/plugin/http/downstream/IotDeviceDownstreamHandlerImpl.java
@@ -7,6 +7,14 @@ import cn.iocoder.yudao.module.iot.api.device.dto.control.downstream.IotDeviceSe
import cn.iocoder.yudao.module.iot.plugin.common.downstream.IotDeviceDownstreamHandler;
import org.springframework.stereotype.Component;
+/**
+ * HTTP 插件的 {@link IotDeviceDownstreamHandler} 实现类
+ *
+ * 但是:由于设备通过 HTTP 短链接接入,导致其实无法下行指导给 device 设备,所以基本都是直接返回失败!!!
+ * 类似 MQTT、WebSocket、TCP 插件,是可以实现下行指令的。
+ *
+ * @author 芋道源码
+ */
@Component // TODO @芋艿:后续统一处理
public class IotDeviceDownstreamHandlerImpl implements IotDeviceDownstreamHandler {
diff --git a/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/src/main/java/cn/iocoder/yudao/module/iot/plugin/http/upstream/IotDeviceUpstreamServer.java b/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/src/main/java/cn/iocoder/yudao/module/iot/plugin/http/upstream/IotDeviceUpstreamServer.java
index 113c54e2de..e6f4dbb270 100644
--- a/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/src/main/java/cn/iocoder/yudao/module/iot/plugin/http/upstream/IotDeviceUpstreamServer.java
+++ b/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/src/main/java/cn/iocoder/yudao/module/iot/plugin/http/upstream/IotDeviceUpstreamServer.java
@@ -51,7 +51,7 @@ public class IotDeviceUpstreamServer {
/**
* 停止所有
*/
- public void stopServer() {
+ public void stop() {
log.info("[stop][开始关闭]");
try {
// 关闭 HTTP 服务器
diff --git a/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/src/main/java/cn/iocoder/yudao/module/iot/plugin/http/upstream/router/IotDevicePropertyReportVertxHandler.java b/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/src/main/java/cn/iocoder/yudao/module/iot/plugin/http/upstream/router/IotDevicePropertyReportVertxHandler.java
index 91700f40b4..e35d13bf4c 100644
--- a/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/src/main/java/cn/iocoder/yudao/module/iot/plugin/http/upstream/router/IotDevicePropertyReportVertxHandler.java
+++ b/yudao-module-iot/yudao-module-iot-plugins/yudao-module-iot-plugin-http/src/main/java/cn/iocoder/yudao/module/iot/plugin/http/upstream/router/IotDevicePropertyReportVertxHandler.java
@@ -10,21 +10,22 @@ import cn.iocoder.yudao.module.iot.enums.device.IotDeviceStateEnum;
import io.vertx.core.Handler;
import io.vertx.ext.web.RequestBody;
import io.vertx.ext.web.RoutingContext;
+import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import java.time.LocalDateTime;
import java.util.Map;
+/**
+ * IoT 设备属性上报的 Vert.x Handler
+ */
+@RequiredArgsConstructor
@Slf4j
public class IotDevicePropertyReportVertxHandler implements Handler {
public static final String PATH = "/sys/:productKey/:deviceName/thing/event/property/post";
- private final IotDeviceUpstreamApi deviceDataApi;
-
- public IotDevicePropertyReportVertxHandler(IotDeviceUpstreamApi deviceDataApi) {
- this.deviceDataApi = deviceDataApi;
- }
+ private final IotDeviceUpstreamApi deviceUpstreamApi;
@Override
public void handle(RoutingContext ctx) {
@@ -51,7 +52,7 @@ public class IotDevicePropertyReportVertxHandler implements Handler