Parcourir la source

fix: 阿里透传-modbus组件

jay il y a 1 an
Parent
commit
0d1da6d928

+ 5 - 6
data/components/750da259-ff77-4869-a5a5-12a5433b0e4c/component.js

@@ -127,7 +127,7 @@ function register(payload) {
     var pwd = md5(product.getProductSecret() + auth.clientid);
 
     if (pwd.toLocaleLowerCase() != auth.password.toLocaleLowerCase()) {
-        throw new Error("incorrect password" + "pwd->" + pwd + " productSecret->" + product.productSecret);
+        throw new Error("incorrect password" + "pwd->" + pwd + " productSecret->" + product.getProductSecret());
     }
     return {
         type: "register",
@@ -271,7 +271,6 @@ this.onReceive = function (head, type, payload) {
     }
     var pk = arr[2];
     var dn = arr[3];
-    payload = JSON.parse(payload);
 
     //子设备注册
     if (topic.endsWith('/register')) {
@@ -283,12 +282,12 @@ this.onReceive = function (head, type, payload) {
         {
             productKey: pk,
             deviceName: dn,
-            mid: payload.id,
+            // mid: payload.id,
             content: {
                 topic: topic.replace("/s/", "/c/") + "_reply",
                 payload: JSON.stringify({
-                    id: payload.id,
-                    method: payload.method + "_reply",
+                    // id: payload.id,
+                    method: "thing.event.property.post",
                     code: 0,
                 })
             }
@@ -308,7 +307,7 @@ this.onReceive = function (head, type, payload) {
         data: {
             productKey: pk,
             deviceName: dn,
-            mid: payload.id,
+            mid: "3",
             content: {
                 topic: topic,
                 payload: payload

BIN
data/components/750da259-ff77-4869-a5a5-12a5433b0e4c/iot-nb-component-0.4.5-SNAPSHOT.jar


+ 9 - 19
data/converters/50b0fdd0-9bc8-448d-a7cf-d3b1b4df944c/converter.js

@@ -1,5 +1,5 @@
 var mid = 1;
-
+var COMMAD_UNKOWN = 0xff;    //未知的命令
 function getMid() {
     mid++;
     if (mid > 10000) {
@@ -11,8 +11,8 @@ function getMid() {
 this.decode = function (msg) {
     var content = msg.content;
     var topic = content.topic;
-    var bytes = arrayGroup(content.payload.params,2);
-    var byteData=content.payload.params;
+    var bytes = arrayGroup(content.payload,2);
+    var byteData=content.payload;
     if (topic.endsWith("/thing/model/up_raw")) {
         var data = arrayGroup(byteData, 2);
         var params = {};
@@ -149,16 +149,6 @@ this.decode = function (msg) {
             time: new Date().getTime(), //时间戳,消息上报时间
             data: params,
         };
-    }  else if (topic.indexOf("/event/") > 0) {
-        //事件上报
-    } else if (topic.endsWith("/service/property/set_reply")) {
-        //属性设置回复
-    } else if (topic.endsWith("/config/set_reply")) {
-        //设备配置设置回复
-    } else if (topic.endsWith("/config/get")) {
-        //设备配置获取
-    } else if (topic.endsWith("_reply")) {
-        //服务回复
     }
     return null;
 };
@@ -294,12 +284,12 @@ this.encode = function (service, device) {
         // payloadArray = payloadArray.concat(buffer_float32(prop_float)); //属性'prop_float'的值。
 
     }else if (method ==  'thing.event.property.post') { //设备上报数据返回结果,如果不需要回复,可以去除该内容
-        var code = json['code'];
-        payloadArray = payloadArray.concat(buffer_uint8(COMMAND_REPORT_REPLY)); //command字段
-        payloadArray = payloadArray.concat(buffer_int32(parseInt(id))); // ALink JSON格式 'id'
-        payloadArray = payloadArray.concat(buffer_uint8(code));
+        // var code = json['code'];
+        // payloadArray = payloadArray.concat(buffer_uint8(COMMAND_REPORT_REPLY)); //command字段
+        // payloadArray = payloadArray.concat(buffer_int32(parseInt(id))); // ALink JSON格式 'id'
+        // payloadArray = payloadArray.concat(buffer_uint8(code));
     } else { //未知命令,对于有些命令不做处理
-        var code = json['code'];
+        var code = "FF";
         payloadArray = payloadArray.concat(buffer_uint8(COMMAD_UNKOWN)); //command字段
         payloadArray = payloadArray.concat(buffer_int32(parseInt(id))); // ALink JSON格式 'id'
         payloadArray = payloadArray.concat(buffer_uint8(code));
@@ -313,7 +303,7 @@ this.encode = function (service, device) {
             payload: JSON.stringify({
                 id: deviceMid,
                 method: method += "property." + identifier,
-                params: payloadArray
+                params: ab2hex(payloadArray).toUpperCase()
             })
         }
     }

+ 2 - 1
iot-components/iot-nb-component/src/main/java/cc/iotkit/comp/nb/NBVerticle.java

@@ -23,6 +23,7 @@ import io.vertx.core.net.PemKeyCertOptions;
 import io.vertx.mqtt.*;
 import io.vertx.mqtt.messages.codes.MqttSubAckReasonCode;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.codec.binary.Hex;
 import org.apache.commons.lang3.StringUtils;
 
 import java.nio.charset.Charset;
@@ -148,7 +149,7 @@ public class NBVerticle extends AbstractVerticle {
                 // ack the subscriptions request
                 endpoint.unsubscribeAcknowledge(unsubscribe.messageId());
             }).publishHandler(message -> {
-                String payload = message.payload().toString(Charset.defaultCharset());
+                String payload =  Hex.encodeHexString(message.payload().getBytes());
                 log.info("Received message:{}, with QoS {}", payload,
                         message.qosLevel());
                 if (StringUtils.isBlank(payload)) {

+ 4 - 5
iot-components/iot-nb-component/src/main/resources/component.js

@@ -271,7 +271,6 @@ this.onReceive = function (head, type, payload) {
     }
     var pk = arr[2];
     var dn = arr[3];
-    payload = JSON.parse(payload);
 
     //子设备注册
     if (topic.endsWith('/register')) {
@@ -283,12 +282,12 @@ this.onReceive = function (head, type, payload) {
         {
             productKey: pk,
             deviceName: dn,
-            mid: payload.id,
+            // mid: payload.id,
             content: {
                 topic: topic.replace("/s/", "/c/") + "_reply",
                 payload: JSON.stringify({
-                    id: payload.id,
-                    method: payload.method + "_reply",
+                    // id: payload.id,
+                    method: "thing.event.property.post",
                     code: 0,
                 })
             }
@@ -308,7 +307,7 @@ this.onReceive = function (head, type, payload) {
         data: {
             productKey: pk,
             deviceName: dn,
-            mid: payload.id,
+            mid: "3",
             content: {
                 topic: topic,
                 payload: payload

+ 2 - 12
iot-components/iot-nb-component/src/main/resources/convert.js

@@ -11,8 +11,8 @@ function getMid() {
 this.decode = function (msg) {
     var content = msg.content;
     var topic = content.topic;
-    var bytes = arrayGroup(content.payload.params,2);
-    var byteData=content.payload.params;
+    var bytes = arrayGroup(content.payload,2);
+    var byteData=content.payload;
     if (topic.endsWith("/thing/model/up_raw")) {
         var data = arrayGroup(byteData, 2);
         var params = {};
@@ -149,16 +149,6 @@ this.decode = function (msg) {
             time: new Date().getTime(), //时间戳,消息上报时间
             data: params,
         };
-    }  else if (topic.indexOf("/event/") > 0) {
-        //事件上报
-    } else if (topic.endsWith("/service/property/set_reply")) {
-        //属性设置回复
-    } else if (topic.endsWith("/config/set_reply")) {
-        //设备配置设置回复
-    } else if (topic.endsWith("/config/get")) {
-        //设备配置获取
-    } else if (topic.endsWith("_reply")) {
-        //服务回复
     }
     return null;
 };