[ { "id": "eabb131d-8fd1-43a8-88d9-a198abfd3d42", "uid": "1", "name": "MQTT标准协议组件", "type": "device", "protocol": "mqtt", "jarFile": "iot-mqtt-component-0.4.5-SNAPSHOT.jar", "config": "{\"port\":1883,\"ssl\":false,\"type\":\"server\"}", "converter": "6260396d67aced2696184053", "converType": "custom", "state": "running", "createAt": 1650473458084 }, { "id": "6c095554-35e7-4e9d-a8d2-bb919e9479f4", "uid": "1", "name": "EMQX标准协议组件", "type": "device", "protocol": "mqtt", "jarFile": "iot-emqx-component-0.4.5-SNAPSHOT.jar", "config": "{\"port\":\"1884\",\"ssl\":false,\"type\":\"client\",\"subscribeTopics\":[\"/sys/+/+/s/#\",\"/sys/client/connected\",\"/sys/client/disconnected\",\"/sys/session/subscribed\",\"/sys/session/unsubscribed\"],\"authPort\":\"8088\",\"broker\":\"127.0.0.1\",\"clientId\":\"test\",\"username\":\"test\",\"password\":\"123\"}", "converter": "6260396d67aced2696184053", "converType": "custom", "state": "stopped", "createAt": 1653180468724 }, { "id": "3ababc5e-15e9-45a7-8f38-2a6afd45c780", "uid": "1", "name": "小度音箱接入组件", "type": "biz", "protocol": "http", "jarFile": "iot-http-biz-component-0.4.5-SNAPSHOT.jar", "config": "{\"port\":\"8084\"}", "converter": "", "converType": "", "state": "stopped", "createAt": 1650685502665 }, { "id": "2c089bb8-0412-449e-94f1-212d35a50219", "uid": "1", "name": "WEBSOCKET服务端", "type": "device", "protocol": "websocket", "jarFile": "iot-websocket-component-0.4.5-SNAPSHOT.jar", "config": "{\"port\":\"2454\",\"ssl\":false,\"type\":\"server\",\"ip\":\"\",\"url\":\"\",\"heartBeatTime\":10000,\"heartBeatData\":\"\",\"accessTokens\":[{\"id\":\"b4f02276-13d8-499d-89b3-8acd6330b310\",\"tokenName\":\"tokrn\",\"tokenStr\":\"NxW4nPt2SPnc87pdFXAQmCZY4Kb0nRsPDC6z4Qzpp1AtRWDJxg8iZMqFpcwZ2igi\"}]}", "converter": "d7e84930-5460-4638-aa3f-e0c2015628f4", "converType": "custom", "state": "stopped", "createAt": 1650685502665 } , { "id": "305a8b86-4566-4f2a-a57f-f84ca47471a1", "uid": "1", "name": "DLT645电表通讯组件", "type": "device", "protocol": "tcp", "jarFile": "iot-DLT645-component-0.4.5-SNAPSHOT.jar", "config": "{\"port\":2424,\"ssl\":false,\"type\":\"server\",\"parserType\":\"不处理\",\"parserConfiguration\":{\"delimited\":\"\",\"fix\":1,\"script\":\"\"},\"host\":\"127.0.0.1\"}", "converType": "static", "state": "stopped", "createAt": 1650685502665 }, { "id": "750da259-ff77-4869-a5a5-12a5433b0e4c", "config": "{\"port\":\"11883\",\"type\":\"server\"}", "converType": "custom", "converter": "50b0fdd0-9bc8-448d-a7cf-d3b1b4df944c", "createAt": 1689567633641, "jarFile": "iot-nb-component-0.4.5-SNAPSHOT.jar", "name": "铱塔智联-阿里透传组件", "protocol": "mqtt", "script": "!function (n) {\n \"use strict\";\n\n function d(n, t) {\n var r = (65535 & n) + (65535 & t);\n return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r\n }\n\n function f(n, t, r, e, o, u) {\n return d((u = d(d(t, n), d(e, u))) << o | u >>> 32 - o, r)\n }\n\n function l(n, t, r, e, o, u, c) {\n return f(t & r | ~t & e, n, t, o, u, c)\n }\n\n function g(n, t, r, e, o, u, c) {\n return f(t & e | r & ~e, n, t, o, u, c)\n }\n\n function v(n, t, r, e, o, u, c) {\n return f(t ^ r ^ e, n, t, o, u, c)\n }\n\n function m(n, t, r, e, o, u, c) {\n return f(r ^ (t | ~e), n, t, o, u, c)\n }\n\n function c(n, t) {\n var r, e, o, u;\n n[t >> 5] |= 128 << t % 32, n[14 + (t + 64 >>> 9 << 4)] = t;\n for (var c = 1732584193, f = -271733879, i = -1732584194, a = 271733878, h = 0; h < n.length; h += 16) c = l(r = c, e = f, o = i, u = a, n[h], 7, -680876936), a = l(a, c, f, i, n[h + 1], 12, -389564586), i = l(i, a, c, f, n[h + 2], 17, 606105819), f = l(f, i, a, c, n[h + 3], 22, -1044525330), c = l(c, f, i, a, n[h + 4], 7, -176418897), a = l(a, c, f, i, n[h + 5], 12, 1200080426), i = l(i, a, c, f, n[h + 6], 17, -1473231341), f = l(f, i, a, c, n[h + 7], 22, -45705983), c = l(c, f, i, a, n[h + 8], 7, 1770035416), a = l(a, c, f, i, n[h + 9], 12, -1958414417), i = l(i, a, c, f, n[h + 10], 17, -42063), f = l(f, i, a, c, n[h + 11], 22, -1990404162), c = l(c, f, i, a, n[h + 12], 7, 1804603682), a = l(a, c, f, i, n[h + 13], 12, -40341101), i = l(i, a, c, f, n[h + 14], 17, -1502002290), c = g(c, f = l(f, i, a, c, n[h + 15], 22, 1236535329), i, a, n[h + 1], 5, -165796510), a = g(a, c, f, i, n[h + 6], 9, -1069501632), i = g(i, a, c, f, n[h + 11], 14, 643717713), f = g(f, i, a, c, n[h], 20, -373897302), c = g(c, f, i, a, n[h + 5], 5, -701558691), a = g(a, c, f, i, n[h + 10], 9, 38016083), i = g(i, a, c, f, n[h + 15], 14, -660478335), f = g(f, i, a, c, n[h + 4], 20, -405537848), c = g(c, f, i, a, n[h + 9], 5, 568446438), a = g(a, c, f, i, n[h + 14], 9, -1019803690), i = g(i, a, c, f, n[h + 3], 14, -187363961), f = g(f, i, a, c, n[h + 8], 20, 1163531501), c = g(c, f, i, a, n[h + 13], 5, -1444681467), a = g(a, c, f, i, n[h + 2], 9, -51403784), i = g(i, a, c, f, n[h + 7], 14, 1735328473), c = v(c, f = g(f, i, a, c, n[h + 12], 20, -1926607734), i, a, n[h + 5], 4, -378558), a = v(a, c, f, i, n[h + 8], 11, -2022574463), i = v(i, a, c, f, n[h + 11], 16, 1839030562), f = v(f, i, a, c, n[h + 14], 23, -35309556), c = v(c, f, i, a, n[h + 1], 4, -1530992060), a = v(a, c, f, i, n[h + 4], 11, 1272893353), i = v(i, a, c, f, n[h + 7], 16, -155497632), f = v(f, i, a, c, n[h + 10], 23, -1094730640), c = v(c, f, i, a, n[h + 13], 4, 681279174), a = v(a, c, f, i, n[h], 11, -358537222), i = v(i, a, c, f, n[h + 3], 16, -722521979), f = v(f, i, a, c, n[h + 6], 23, 76029189), c = v(c, f, i, a, n[h + 9], 4, -640364487), a = v(a, c, f, i, n[h + 12], 11, -421815835), i = v(i, a, c, f, n[h + 15], 16, 530742520), c = m(c, f = v(f, i, a, c, n[h + 2], 23, -995338651), i, a, n[h], 6, -198630844), a = m(a, c, f, i, n[h + 7], 10, 1126891415), i = m(i, a, c, f, n[h + 14], 15, -1416354905), f = m(f, i, a, c, n[h + 5], 21, -57434055), c = m(c, f, i, a, n[h + 12], 6, 1700485571), a = m(a, c, f, i, n[h + 3], 10, -1894986606), i = m(i, a, c, f, n[h + 10], 15, -1051523), f = m(f, i, a, c, n[h + 1], 21, -2054922799), c = m(c, f, i, a, n[h + 8], 6, 1873313359), a = m(a, c, f, i, n[h + 15], 10, -30611744), i = m(i, a, c, f, n[h + 6], 15, -1560198380), f = m(f, i, a, c, n[h + 13], 21, 1309151649), c = m(c, f, i, a, n[h + 4], 6, -145523070), a = m(a, c, f, i, n[h + 11], 10, -1120210379), i = m(i, a, c, f, n[h + 2], 15, 718787259), f = m(f, i, a, c, n[h + 9], 21, -343485551), c = d(c, r), f = d(f, e), i = d(i, o), a = d(a, u);\n return [c, f, i, a]\n }\n\n function i(n) {\n for (var t = \"\", r = 32 * n.length, e = 0; e < r; e += 8) t += String.fromCharCode(n[e >> 5] >>> e % 32 & 255);\n return t\n }\n\n function a(n) {\n var t = [];\n for (t[(n.length >> 2) - 1] = void 0, e = 0; e < t.length; e += 1) t[e] = 0;\n for (var r = 8 * n.length, e = 0; e < r; e += 8) t[e >> 5] |= (255 & n.charCodeAt(e / 8)) << e % 32;\n return t\n }\n\n function e(n) {\n for (var t, r = \"0123456789abcdef\", e = \"\", o = 0; o < n.length; o += 1) t = n.charCodeAt(o), e += r.charAt(t >>> 4 & 15) + r.charAt(15 & t);\n return e\n }\n\n function r(n) {\n return unescape(encodeURIComponent(n))\n }\n\n function o(n) {\n return i(c(a(n = r(n)), 8 * n.length))\n }\n\n function u(n, t) {\n return function (n, t) {\n var r, e = a(n), o = [], u = [];\n for (o[15] = u[15] = void 0, 16 < e.length && (e = c(e, 8 * n.length)), r = 0; r < 16; r += 1) o[r] = 909522486 ^ e[r], u[r] = 1549556828 ^ e[r];\n return t = c(o.concat(a(t)), 512 + 8 * t.length), i(c(u.concat(t), 640))\n }(r(n), r(t))\n }\n\n function t(n, t, r) {\n return t ? r ? u(t, n) : e(u(t, n)) : r ? o(n) : e(o(n))\n }\n\n \"function\" == typeof define && define.amd ? define(function () {\n return t\n }) : \"object\" == typeof module && module.exports ? module.exports = t : n.md5 = t\n}(this);\nvar md5 = this.md5;\n/**\n 网关上线\n 订阅:/sys/hbtgIA0SuVw9lxjB/AA:BB:CC:DD:10/c/#\n\n 子设备注册:\n /sys/hbtgIA0SuVw9lxjB/AA:BB:CC:DD:10/s/register\n {\n \"id\": \"6\",\n \"params\":{\n \"productKey\":\"Rf4QSjbm65X45753\",\n \"deviceName\":\"ABC12400001\",\n \"model\":\"S1\"\n }\n }\n 子设备上线\n 订阅:/sys/Rf4QSjbm65X45753/ABC12400001/c/#\n\n 数据上报:\n /sys/Rf4QSjbm65X45753/ABC12400001/s/event/property/post\n {\n \"id\": \"6\",\n \"params\":{\n \"powerstate\": 1\n }\n }\n */\n\nvar registered = {};\n\nfunction getPkDn(clientId) {\n var arr = clientId.split(\"_\");\n return {\n pk: arr[0],\n dn: arr[1]\n };\n}\n\nfunction register(payload) {\n var auth = JSON.parse(payload);\n var arr = auth.clientid.split(\"_\");\n if (arr.length < 3) {\n throw new Error(\"incorrect clientid\");\n }\n\n var pk = arr[0];\n var dn = arr[1];\n var model = arr[2];\n\n var product = deviceBehaviour.getProductKey(pk)\n var pwd = md5(product.getProductSecret() + auth.clientid);\n\n if (pwd.toLocaleLowerCase() != auth.password.toLocaleLowerCase()) {\n throw new Error(\"incorrect password\" + \"pwd->\" + pwd + \" productSecret->\" + product.productSecret);\n }\n return {\n type: \"register\",\n data: {\n productKey: pk,\n deviceName: dn,\n model: model\n }\n };\n}\n\nfunction subRegister(topic, parent, payload) {\n var params = payload.params;\n var reply =\n {\n productKey: parent.productKey,\n deviceName: parent.deviceName,\n mid: \"0\",\n content: {\n topic: topic.replace(\"/s/\", \"/c/\") + \"_reply\",\n payload: JSON.stringify({\n id: \"0\",\n code: 0,\n data: {\n \"productKey\": params.productKey,\n \"deviceName\": params.deviceName\n }\n })\n }\n };\n\n return {\n type: \"register\",\n data: {\n productKey: parent.productKey,\n deviceName: parent.deviceName,\n subDevices: [{\n productKey: params.productKey,\n deviceName: params.deviceName,\n model: params.model\n }]\n },\n action: {\n type: \"ack\",\n content: JSON.stringify(reply)\n }\n };\n}\n\nfunction deviceStateChange(head, clientId, state) {\n var topic = head.topic;\n var device = getPkDn(clientId);\n\n var arr = topic.split('/');\n if (arr.length < 6) {\n throw new Error(\"incorrect topic\")\n }\n\n var pk = arr[2];\n var dn = arr[3];\n return {\n type: \"state\",\n data: {\n productKey: pk,\n deviceName: dn,\n state: state,\n parent: {\n productKey: device.pk,\n deviceName: device.dn,\n }\n }\n }\n}\n\nfunction disconnect(clientId) {\n var device = getPkDn(clientId);\n return {\n type: \"state\",\n data: {\n productKey: device.pk,\n deviceName: device.dn,\n state: \"offline\"\n }\n }\n}\n\nfunction ota(head, payload) {\n payload = JSON.parse(payload);\n var topic = head.topic;\n var arr = topic.split('/');\n if (arr.length < 6) {\n throw new Error(\"incorrect topic\")\n }\n\n var pk = arr[2];\n var dn = arr[3];\n return {\n type: \"ota\",\n data: {\n productKey: pk,\n deviceName: dn,\n mid: payload.id,\n content: {\n topic: topic,\n payload: payload\n }\n }\n }\n}\n\n//必须提供onReceive方法\nthis.onReceive = function (head, type, payload) {\n if (type == 'auth') {\n return register(payload);\n }\n\n if (type == 'subscribe') {\n return deviceStateChange(head, payload, 'online');\n }\n\n if (type == 'unsubscribe') {\n return deviceStateChange(head, payload, 'offline');\n }\n\n if (type == 'disconnect') {\n return disconnect(payload);\n }\n\n if (type == 'ota') {\n return ota(head, payload);\n }\n\n var topic = head['topic'];\n if (!topic) {\n throw new Error(\"topic is blank\")\n }\n\n var arr = topic.split('/');\n if (arr.length < 6) {\n throw new Error(\"incorrect topic\")\n }\n var pk = arr[2];\n var dn = arr[3];\n payload = JSON.parse(payload);\n\n //子设备注册\n if (topic.endsWith('/register')) {\n return subRegister(topic, {productKey: pk, deviceName: dn}, payload);\n }\n\n //数据上报\n var reply =\n {\n productKey: pk,\n deviceName: dn,\n mid: payload.id,\n content: {\n topic: topic.replace(\"/s/\", \"/c/\") + \"_reply\",\n payload: JSON.stringify({\n id: payload.id,\n method: payload.method + \"_reply\",\n code: 0,\n })\n }\n };\n\n var action = {};\n if (!topic.endsWith(\"_reply\")) {\n //需要回复的消息\n action = {\n type: \"ack\",\n content: JSON.stringify(reply)\n }\n }\n\n return {\n type: \"report\",\n data: {\n productKey: pk,\n deviceName: dn,\n mid: payload.id,\n content: {\n topic: topic,\n payload: payload\n }\n },\n action: action\n }\n}\n\nthis.onRegistered = function (regInfo, result) {\n}", "scriptTyp": null, "state": "stopped", "type": "device", "uid": "3" } ]