1 line
30 KiB
Plaintext
1 line
30 KiB
Plaintext
{"Id":155,"Name":null,"Description":null,"FirmwareVersion":"","InProgress":false,"MessageTypes":[{"Id":3662,"Code":"COMM","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":true,"NoOperation":false,"Type":0,"Template":"","HasTemplateGlobal":true,"ResponseTemplate":"80029999010181","TemplateGlobal":"800026<<hexdata>>","LongConnection":false,"HexString":true,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"","RegExGlobal":"^800026[^ ]*","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":3664,"Code":"ALTAM","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":1,"Template":"DINGTEK-ALTAM;<<imei>>;<<event_time>>;<<temperature>>;<<rsrp>>;<<batteryVoltage>>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^DINGTEK-ALTAM;[^;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":3665,"Code":"BATL","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":2,"Template":"DINGTEK-BATL;<<imei>>;<<event_time>>;<<temperature>>;<<rsrp>>;<<batteryVoltage>>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^DINGTEK-BATL;[^;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":3666,"Code":"CYC","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"DINGTEK-CYC;<<imei>>;<<event_time>>;<<temperature>>;<<rsrp>>;<<batteryVoltage>>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^DINGTEK-CYC;[^;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":3667,"Code":"INFO","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"DINGTEK-INFO;<<imei>>;<<event_time>>;<<firmware>>;<<periodicTime>>;<<cycleTime>>;<<batteryThreshold>>;<<simNumber>>;<<serverMode>>;<<serverAddress>>;<<serverPort>>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":2309,"Protocol":{"Id":155,"Code":"Dingtek Smoke","Version":"0.2","FirmwareVersion":"","Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":true},"Name":"cycle","TemplateSMS":null,"Template":"<<command>>","AckTemplate":null,"Operation":"var configs = [];\nAddValue(\"command\", \"8002999901\" + (('00' + Number(params.Cycles.Cycle).toString(16)).slice(-2)) + \"81\");\n//AddValue(\"command\", \"8002999908003C81\");\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":20,"Order":null},"CacheImei":false,"RegEx":"^DINGTEK-INFO;[^;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":3663,"Code":"ALSM","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":1,"Template":"DINGTEK-ALSM;<<imei>>;<<event_time>>;<<temperature>>;<<rsrp>>;<<batteryVoltage>>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^DINGTEK-ALSM;[^;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":3785,"Code":"TEST","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"DINGTEK-TEST;<<imei>>;<<event_time>>;<<temperature>>;<<rsrp>>;<<batteryVoltage>>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^DINGTEK-TEST;[^;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]}],"Commands":[{"Id":2311,"Name":"server","TemplateSMS":null,"Template":"<<command>>","AckTemplate":null,"Operation":"var configs = [];\nAddValue(\"command\", \"8002999906\" + params.ServerConfig.Server + \"81\");\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":false,"HexString":false,"Order":null,"SendAttempts":5,"ProtocolActionObjects":[],"Tags":[]},{"Id":2312,"Name":"batteryAlertLevel","TemplateSMS":null,"Template":"<<command>>","AckTemplate":null,"Operation":"var configs = [];\nAddValue(\"command\", \"8002999905\" + (('00' + Number(params.Battery.alertlevel).toString(16)).slice(-2)) + \"81\");\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":false,"HexString":false,"Order":null,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2309,"Name":"cycle","TemplateSMS":null,"Template":"<<command>>","AckTemplate":null,"Operation":"var configs = [];\nAddValue(\"command\", \"8002999901\" + (('00' + Number(params.Cycles.Cycle).toString(16)).slice(-2)) + \"81\");\n//AddValue(\"command\", \"8002999908003C81\");\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":null,"SendAttempts":20,"ProtocolActionObjects":[],"Tags":[]},{"Id":2313,"Name":"band","TemplateSMS":null,"Template":"<<command>>","AckTemplate":null,"Operation":"var configs = [];\nAddValue(\"command\", \"800299990H\" + params.Band.band + \"81\");\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":false,"HexString":false,"Order":null,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]}],"Operations":[{"Id":159,"Name":"smoke","Operation":"if (typeof localTesting === \"undefined\") {\n var localTesting = \"False\";\n}\nvar packetHead = rawFromBytes.slice(0, 2);\nvar forcedBit = rawFromBytes.slice(2, 4);\nvar deviceTyoe = rawFromBytes.slice(4, 6);\nvar reportType = rawFromBytes.slice(6, 8);\nvar packetLength = Number.parseInt(rawFromBytes.slice(8, 10), 16);\nvar endPacket = 10 + packetLength + packetLength;\nvar payload = rawFromBytes.slice(10, endPacket);\nvar packetTail = rawFromBytes.slice(12, 14);\nvar dataToReceiver = [];\nvar codeValues = [];\ndebug(\"packetHead = \" + packetHead);\ndebug(\"forcedBit = \" + forcedBit);\ndebug(\"deviceTyoe = \" + deviceTyoe);\ndebug(\"reportType = \" + reportType);\ndebug(\"packetLength = \" + packetLength);\nif (globalTemplate == \"True\") {\n switch (reportType) {\n case '01':\n var imei = \"\";\n var temp = 0.0;\n temp = Number.parseInt(payload.slice(0, 2), 16);\n if (temp > 127) temp = temp - 256;\n smokeStatus = payload.slice(2, 3);\n tamperStatus = payload.slice(3, 4);\n batteryStatus = payload.slice(5, 6);\n debug(\"smokeStatus =\" + smokeStatus);\n if (smokeStatus == \"1\") {\n eventNameTag = \"ALSM\";\n } else if (smokeStatus == \"2\") {\n eventNameTag = \"TEST\";\n } else if (tamperStatus == \"1\") {\n eventNameTag = \"ALTAM\";\n } else if (batteryStatus == \"1\") {\n eventNameTag = \"BATL\";\n } else {\n eventNameTag = \"CYC\";\n }\n batteryVoltage = Number.parseInt(payload.slice(6, 10), 16);\n rsrp = Buffer.from(payload.slice(10, 18), 'hex').readFloatLE();\n imei = payload.slice(18, 34).substring(1);\n timeStamp = Number.parseInt(payload.slice(34, 42), 16);\n frameCount = Number.parseInt(payload.slice(42, 46), 16);\n tail = payload.slice(46, 48);\n message = \"DINGTEK-\" + eventNameTag + ';' + imei + ';' + timeStamp + ';' + temp + ';' + rsrp + \";\" + batteryVoltage + \";\";\n break;\n case '02':\n eventNameTag = \"CYC\";\n var imei = \"\";\n var temp = 0.0;\n temp = Number.parseInt(payload.slice(0, 2), 16);\n if (temp > 127) temp = temp - 256;\n smokeStatus = payload.slice(2, 3);\n tamperStatus = payload.slice(3, 4);\n batteryStatus = payload.slice(4, 5);\n batteryVoltage = Number.parseInt(payload.slice(6, 10), 16);\n rsrp = Buffer.from(payload.slice(10, 18), 'hex').readFloatLE();\n imei = payload.slice(18, 34).substring(1);\n timeStamp = Number.parseInt(payload.slice(34, 42), 16);\n frameCount = Number.parseInt(payload.slice(42, 46), 16);\n tail = payload.slice(46, 48);\n message = \"DINGTEK-\" + eventNameTag + ';' + imei + ';' + timeStamp + ';' + temp + ';' + rsrp + \";\" + batteryVoltage + \";\";\n break;\n case '03':\n eventNameTag = \"INFO\";\n firmware = Number.parseInt(payload.slice(0, 2), 16) + \".\" + Number.parseInt(payload.slice(2, 4), 16);\n periodicTime = Number.parseInt(payload.slice(4, 6), 16);\n cycleTime = Number.parseInt(payload.slice(6, 10), 16);\n batteryThreshold = Number.parseInt(payload.slice(10, 12), 16);\n simNumber = payload.slice(13, 28);\n serverMode = payload.slice(28, 30);\n semicolon1 = payload.indexOf('3B', 30);\n semicolon2 = payload.indexOf('3B', semicolon1 + 1);\n serverAddress = hex_to_ascii(payload.slice(30, semicolon1));\n serverPort = Number.parseInt(payload.slice(semicolon1 + 2, semicolon2), 16);\n imei = payload.slice(semicolon2 + 2, semicolon2 + 18).substring(1);\n tail = payload.slice(semicolon2 + 18, semicolon2 + 20);\n message = \"DINGTEK-\" + eventNameTag + ';' + imei + ';' + moment.utc().unix() + ';' + firmware + ';' + periodicTime + ';' + cycleTime + \";\" + batteryThreshold + \";\";\n message = message + simNumber + \";\" + serverMode + \";\" + serverAddress + \";\" + serverPort + \";\";\n break;\n }\n sendMessageToLocalhostNoWait(message);\n AddValue(codeValues, \"imei\", imei);\n AddValue(codeValues, 'protocol_template', 'Dingtek_Smoke');\n AddValue(codeValues, 'product', serverParams.ProductName);\n} else {\n AddValue(codeValues, 'protocol_template', 'Dingtek_Smoke');\n AddValue(codeValues, 'product', serverParams.ProductName);\n}\nvar dataToReceiver = {\n 'values': codeValues\n};\nconsole.log(dataToReceiver);\n\nfunction AddValue(msgArray, p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n msgArray.push(cvpair);\n}\n\nfunction hex_to_ascii(str1) {\n var hex = str1.toString();\n var str = '';\n for (var n = 0; n < hex.length; n += 2) {\n str += String.fromCharCode(parseInt(hex.substr(n, 2), 16));\n }\n return str;\n}\n\nfunction debug(str) {\n if (localTesting === \"True\") {\n console.log(str);\n }\n}\n\nfunction sendMessageToLocalhostNoWait(str) { // sends message to system, closing connection after\n var server;\n if (localTesting === \"True\") {\n console.log('local testing - sending to acceptance server the message ... ');\n console.log(str);\n server = '52.174.17.77';\n } else {\n server = '127.0.0.1';\n }\n var c = net.createConnection(5678, server);\n c.on('error', function(error) {\n c = net.createConnection(5678, server);\n });\n c.write(`${str}`);\n c.end();\n}","Type":0,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":159,\"Name\":\"smoke\",\"Operation\":\"//Dingtek Smoke Ops\\nif (typeof localTesting === \\\"undefined\\\") {\\n var localTesting = \\\"False\\\";\\n}\\nvar packetHead = rawFromBytes.slice(0, 2);\\nvar forcedBit = rawFromBytes.slice(2, 4);\\nvar deviceTyoe = rawFromBytes.slice(4, 6);\\nvar reportType = rawFromBytes.slice(6, 8);\\nvar packetLength = Number.parseInt(rawFromBytes.slice(8, 10), 16);\\nvar endPacket = 10 + packetLength + packetLength;\\nvar payload = rawFromBytes.slice(10, endPacket);\\nvar packetTail = rawFromBytes.slice(12, 14);\\nvar dataToReceiver = [];\\nvar codeValues = [];\\ndebug(\\\"packetHead = \\\" + packetHead);\\ndebug(\\\"forcedBit = \\\" + forcedBit);\\ndebug(\\\"deviceTyoe = \\\" + deviceTyoe);\\ndebug(\\\"reportType = \\\" + reportType);\\ndebug(\\\"packetLength = \\\" + packetLength);\\nif (globalTemplate == \\\"True\\\") {\\n switch (reportType) {\\n case '01':\\n var imei = \\\"\\\";\\n var temp = 0.0;\\n temp = Number.parseInt(payload.slice(0, 2), 16);\\n if (temp > 127) temp = temp - 256;\\n smokeStatus = payload.slice(2, 3);\\n tamperStatus = payload.slice(3, 4);\\n batteryStatus = payload.slice(5, 6);\\n debug(\\\"smokeStatus =\\\" + smokeStatus);\\n if (smokeStatus == \\\"1\\\") {\\n eventNameTag = \\\"ALSM\\\";\\n } else if (smokeStatus == \\\"2\\\") {\\n eventNameTag = \\\"TEST\\\";\\n } else if (tamperStatus == \\\"1\\\") {\\n eventNameTag = \\\"ALTAM\\\";\\n } else if (batteryStatus == \\\"1\\\") {\\n eventNameTag = \\\"BATL\\\";\\n } else {\\n eventNameTag = \\\"CYC\\\";\\n }\\n batteryVoltage = Number.parseInt(payload.slice(6, 10), 16);\\n rsrp = Buffer.from(payload.slice(10, 18), 'hex').readFloatLE();\\n imei = payload.slice(18, 34).substring(1);\\n timeStamp = Number.parseInt(payload.slice(34, 42), 16);\\n frameCount = Number.parseInt(payload.slice(42, 46), 16);\\n tail = payload.slice(46, 48);\\n message = \\\"DINGTEK-\\\" + eventNameTag + ';' + imei + ';' + timeStamp + ';' + temp + ';' + rsrp + \\\";\\\" + batteryVoltage + \\\";\\\";\\n break;\\n case '02':\\n eventNameTag = \\\"CYC\\\";\\n var imei = \\\"\\\";\\n var temp = 0.0;\\n temp = Number.parseInt(payload.slice(0, 2), 16);\\n if (temp > 127) temp = temp - 256;\\n smokeStatus = payload.slice(2, 3);\\n tamperStatus = payload.slice(3, 4);\\n batteryStatus = payload.slice(4, 5);\\n batteryVoltage = Number.parseInt(payload.slice(6, 10), 16);\\n rsrp = Buffer.from(payload.slice(10, 18), 'hex').readFloatLE();\\n imei = payload.slice(18, 34).substring(1);\\n timeStamp = Number.parseInt(payload.slice(34, 42), 16);\\n frameCount = Number.parseInt(payload.slice(42, 46), 16);\\n tail = payload.slice(46, 48);\\n message = \\\"DINGTEK-\\\" + eventNameTag + ';' + imei + ';' + timeStamp + ';' + temp + ';' + rsrp + \\\";\\\" + batteryVoltage + \\\";\\\";\\n break;\\n case '03':\\n eventNameTag = \\\"INFO\\\";\\n firmware = Number.parseInt(payload.slice(0, 2), 16) + \\\".\\\" + Number.parseInt(payload.slice(2, 4), 16);\\n periodicTime = Number.parseInt(payload.slice(4, 6), 16);\\n cycleTime = Number.parseInt(payload.slice(6, 10), 16);\\n batteryThreshold = Number.parseInt(payload.slice(10, 12), 16);\\n simNumber = payload.slice(13, 28);\\n serverMode = payload.slice(28, 30);\\n semicolon1 = payload.indexOf('3B', 30);\\n semicolon2 = payload.indexOf('3B', semicolon1 + 1);\\n serverAddress = hex_to_ascii(payload.slice(30, semicolon1));\\n serverPort = Number.parseInt(payload.slice(semicolon1 + 2, semicolon2), 16);\\n imei = payload.slice(semicolon2 + 2, semicolon2 + 18).substring(1);\\n tail = payload.slice(semicolon2 + 18, semicolon2 + 20);\\n message = \\\"DINGTEK-\\\" + eventNameTag + ';' + imei + ';' + moment.utc().unix() + ';' + firmware + ';' + periodicTime + ';' + cycleTime + \\\";\\\" + batteryThreshold + \\\";\\\";\\n message = message + simNumber + \\\";\\\" + serverMode + \\\";\\\" + serverAddress + \\\";\\\" + serverPort + \\\";\\\";\\n break;\\n }\\n sendMessageToLocalhostNoWait(message);\\n AddValue(codeValues, \\\"imei\\\", imei);\\n AddValue(codeValues, 'protocol_template', 'Dingtek_Smoke');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n} else {\\n AddValue(codeValues, 'protocol_template', 'Dingtek_Smoke');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n}\\nvar dataToReceiver = {\\n 'values': codeValues\\n};\\nconsole.log(dataToReceiver);\\n\\nfunction AddValue(msgArray, p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n msgArray.push(cvpair);\\n}\\n\\nfunction hex_to_ascii(str1) {\\n var hex = str1.toString();\\n var str = '';\\n for (var n = 0; n < hex.length; n += 2) {\\n str += String.fromCharCode(parseInt(hex.substr(n, 2), 16));\\n }\\n return str;\\n}\\n\\nfunction debug(str) {\\n if (localTesting === \\\"True\\\") {\\n console.log(str);\\n }\\n}\\n\\nfunction sendMessageToLocalhostNoWait(str) { // sends message to system, closing connection after\\n var server;\\n if (localTesting === \\\"True\\\") {\\n console.log('local testing - sending to acceptance server the message ... ');\\n console.log(str);\\n server = '52.174.17.77';\\n } else {\\n server = '127.0.0.1';\\n }\\n var c = net.createConnection(5678, server);\\n c.on('error', function(error) {\\n c = net.createConnection(5678, server);\\n });\\n c.write(`${str}`);\\n c.end();\\n}\",\"Type\":0,\"ProtocolActionObjects\":[]}","Timestamp":1739804735}]}],"Groups":[{"Id":4101,"Parent":null,"Name":"Admin Settings","Json":"{\"description\":null,\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"ProtocolActionObjects":[]},{"Id":4102,"Parent":null,"Name":"Features","Json":"{\"description\":null,\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":4103,"Parent":{"Id":4101,"Name":"Admin Settings","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":4103,"Name":"Server Config","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4107,"Name":"Band","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Server Config","Json":"{\"description\":null,\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":4104,"Parent":{"Id":4102,"Name":"Features","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4104,"Name":"Cycles","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4105,"Name":"Battery","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Cycles","Json":"{\"description\":null,\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":4105,"Parent":{"Id":4102,"Name":"Features","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4104,"Name":"Cycles","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4105,"Name":"Battery","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Battery","Json":"{\"description\":null,\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":4107,"Parent":{"Id":4101,"Name":"Admin Settings","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":4103,"Name":"Server Config","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4107,"Name":"Band","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Band","Json":"{\"description\":null,\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]}],"GroupParams":[{"Id":5705,"Group":{"Id":4103,"Name":"Server Config","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4101,"Name":"Admin Settings","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":4107,"Name":"Band","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},"Name":"Server","Json":"{\"name\":\"Server\",\"default\":\"\",\"description\":\"Destination where device should send data\",\"type\":\"select\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":null,\"integerOnly\":null,\"isReadOnly\":null,\"isHidden\":null,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Which of the Oysta servers should the device send data to - default Production. \",\"options\":[{\"value\":\"52.174.17.77;5678;\",\"label\":\"Acceptance\"},{\"value\":\"52.232.85.255;5678;\",\"label\":\"Production\"}],\"toTranslate\":[\"name\",\"description\",\"helpText\",\"label\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":5706,"Group":{"Id":4104,"Name":"Cycles","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4102,"Name":"Features","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4105,"Name":"Battery","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},"Name":"Cycle","Json":"{\"name\":\"Cycle\",\"default\":\"\",\"description\":\"Cycle period in hours\",\"type\":\"number\",\"suffix\":\"hours\",\"prefix\":null,\"min\":1,\"max\":168,\"futureOnly\":null,\"integerOnly\":true,\"isReadOnly\":null,\"isHidden\":null,\"minLength\":null,\"maxLength\":null,\"helpText\":\"The device will send in a regular status report ( cycle ) after the number of hours specified. The default is 24, so once every day. Note Changing may affect Battery Life \",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":5707,"Group":{"Id":4105,"Name":"Battery","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4102,"Name":"Features","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4104,"Name":"Cycles","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},"Name":"alert level","Json":"{\"name\":\"alert level\",\"default\":\"\",\"description\":\"battery percentage for low battery alert\",\"type\":\"number\",\"suffix\":\"%\",\"prefix\":null,\"min\":1,\"max\":99,\"futureOnly\":null,\"integerOnly\":true,\"isReadOnly\":null,\"isHidden\":null,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Battery percentage at which the device should send in an alert saying the battery needs to be replaced. 20% is the default and should generally not be changed. \",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":5708,"Group":{"Id":4107,"Name":"Band","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4101,"Name":"Admin Settings","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":4103,"Name":"Server Config","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},"Name":"band","Json":"{\"name\":\"band\",\"default\":\"\",\"description\":\"Which network band should the device use ( 20 for UK usage)\",\"type\":\"select\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":null,\"integerOnly\":null,\"isReadOnly\":null,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Which network band should the device use ( 20 for UK usage), this should generally not be changed. \",\"options\":[{\"value\":\"00\",\"label\":\"All\"},{\"value\":\"03\",\"label\":\"3\"},{\"value\":\"05\",\"label\":\"5\"},{\"value\":\"08\",\"label\":\"8\"},{\"value\":\"14\",\"label\":\"20\"}],\"toTranslate\":[\"name\",\"description\",\"helpText\",\"label\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]}],"ProtocolChanges":[{"Version":"0.3","UserName":"Sean-Admin","Resource":"Operation","Name":"smoke","Message":"(Update) (smoke) comment only test commit","Timestamp":1739804735},{"Version":"0.3","UserName":"Sean-Admin","Resource":"Protocol","Name":null,"Message":"test pack - comment only","Timestamp":1739804761}],"ProtocolActionObjects":[],"Tags":[]} |