Bladeren bron

通讯组件修改

xiwa 3 jaren geleden
bovenliggende
commit
55154d615f

+ 6 - 0
pom.xml

@@ -247,6 +247,12 @@
                 <version>${project.version}</version>
             </dependency>
 
+            <dependency>
+                <groupId>cc.iotkit</groupId>
+                <artifactId>converter</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
         </dependencies>
     </dependencyManagement>
 

+ 5 - 0
protocol-gateway/component/pom.xml

@@ -24,6 +24,11 @@
             <artifactId>common</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>cc.iotkit</groupId>
+            <artifactId>converter</artifactId>
+        </dependency>
+
     </dependencies>
 
 </project>

+ 5 - 2
protocol-gateway/component/src/main/java/cc/iotkit/comp/AbstractComponent.java

@@ -1,10 +1,13 @@
 package cc.iotkit.comp;
 
+import cc.iotkit.converter.Converter;
 import lombok.Data;
 
 @Data
-public class AbstractComponent {
+public abstract class AbstractComponent implements Component {
 
-    protected MessageHandler messageHandler;
+    protected MessageHandler handler;
+
+    protected Converter converter;
 
 }

+ 6 - 0
protocol-gateway/component/src/main/java/cc/iotkit/comp/Component.java

@@ -1,5 +1,7 @@
 package cc.iotkit.comp;
 
+import cc.iotkit.converter.Converter;
+
 public interface Component {
 
     void create(String config);
@@ -12,4 +14,8 @@ public interface Component {
 
     void setHandler(MessageHandler handler);
 
+    void setConverter(Converter converter);
+
+    Converter getConverter();
+
 }

+ 1 - 1
protocol-gateway/component/src/main/java/cc/iotkit/comp/ComponentManager.java

@@ -22,7 +22,7 @@ public class ComponentManager {
         if (component == null) {
             return;
         }
-        component.setHandler(new MessageHandler(script));
+        component.setHandler(new MessageHandler(script, component.getConverter()));
         component.start();
     }
 

+ 8 - 1
protocol-gateway/component/src/main/java/cc/iotkit/comp/MessageHandler.java

@@ -2,6 +2,7 @@ package cc.iotkit.comp;
 
 import cc.iotkit.common.utils.JsonUtil;
 import cc.iotkit.comp.model.RegisterInfo;
+import cc.iotkit.converter.Converter;
 import jdk.nashorn.api.scripting.NashornScriptEngine;
 import jdk.nashorn.api.scripting.ScriptObjectMirror;
 import lombok.Data;
@@ -18,9 +19,12 @@ public class MessageHandler {
 
     private final String script;
 
+    private final Converter converter;
+
     @SneakyThrows
-    public MessageHandler(String script) {
+    public MessageHandler(String script, Converter converter) {
         this.script = script;
+        this.converter = converter;
         engine.eval(script);
     }
 
@@ -40,11 +44,14 @@ public class MessageHandler {
             if (rstType == null) {
                 return;
             }
+            //取脚本执行后返回的数据
             Object data = obj.get("data");
 
             if ("register".equals(rstType)) {
+                //注册数据
                 RegisterInfo regInfo = getData(data, RegisterInfo.class);
             } else if ("report".equals(rstType)) {
+                //上报数据
 
             }
 

+ 28 - 0
protocol-gateway/converter/pom.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>protocol-gateway</artifactId>
+        <groupId>cc.iotkit</groupId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>converter</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+
+    </dependencies>
+
+</project>

+ 8 - 0
protocol-gateway/converter/src/main/java/cc/iotkit/converter/Converter.java

@@ -0,0 +1,8 @@
+package cc.iotkit.converter;
+
+public interface Converter {
+
+    ThingModelMessage decode(String msg);
+
+
+}

+ 9 - 0
protocol-gateway/converter/src/main/java/cc/iotkit/converter/ScriptConverter.java

@@ -0,0 +1,9 @@
+package cc.iotkit.converter;
+
+public class ScriptConverter implements Converter {
+
+    public ThingModelMessage decode(String msg) {
+        return null;
+    }
+
+}

+ 62 - 0
protocol-gateway/converter/src/main/java/cc/iotkit/converter/ThingModelMessage.java

@@ -0,0 +1,62 @@
+package cc.iotkit.converter;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 物模型消息
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class ThingModelMessage {
+
+    private String productKey;
+
+    private String deviceName;
+
+    private String mid;
+
+    private String identifier;
+
+    private Map<String, Object> data;
+
+    /**
+     * 时间戳,设备上的事件或数据产生的本地时间
+     */
+    private Long occur;
+
+    /**
+     * 消息上报时间
+     */
+    private Long time;
+
+    public static ThingModelMessage from(Map<?,?> map) {
+        ThingModelMessage message = new ThingModelMessage();
+        message.setProductKey(getStr(map, "productKey"));
+        message.setDeviceName(getStr(map, "deviceName"));
+        message.setMid(getStr(map, "mid"));
+        message.setIdentifier(getStr(map, "identifier"));
+        Object data = map.get("data");
+        if (data instanceof Map) {
+            message.setData((Map<String, Object>) data);
+        } else {
+            message.setData(new HashMap<>());
+        }
+        return message;
+    }
+
+    private static String getStr(Map<?,?> map, String key) {
+        Object val = map.get(key);
+        if (val == null) {
+            return null;
+        }
+        return val.toString();
+    }
+}

+ 1 - 1
protocol-gateway/mqtt-component/src/main/java/cc/iotkit/comp/mqtt/MqttComponent.java

@@ -24,7 +24,7 @@ public class MqttComponent extends AbstractComponent {
 
     public void start() {
         try {
-            Future<String> future = vertx.deployVerticle(new MqttVerticle(mqttConfig, getMessageHandler()));
+            Future<String> future = vertx.deployVerticle(new MqttVerticle(mqttConfig, getHandler()));
             future.onSuccess((s -> {
                 deployedId = s;
                 countDownLatch.countDown();

+ 1 - 0
protocol-gateway/pom.xml

@@ -15,6 +15,7 @@
         <module>gateway-client</module>
         <module>protocol-server</module>
         <module>decode-function</module>
+        <module>converter</module>
     </modules>
 
     <properties>