From 52d725e6f7901c1b9cde5276f4ad5e4b379db7f6 Mon Sep 17 00:00:00 2001 From: oysta_intellicare Date: Wed, 6 Nov 2024 13:00:11 +0000 Subject: [PATCH] (Update) (Initialise from Factory Settings) change sleep to online deep sleep --- badge | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/badge b/badge index a97cc92..bca8751 100644 --- a/badge +++ b/badge @@ -1 +1 @@ -{"Id":230,"Name":null,"Description":null,"FirmwareVersion":null,"InProgress":false,"MessageTypes":[{"Id":7310,"Code":"ACK-FTSSMS5","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 14502:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5306,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise From Factory Settings SMS 5","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n command = 'setparam ';\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"CommandToUpdateId":null,"ParentId":5298,"Parent":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"HasAck":true,"HexString":false,"SendAttempts":9,"Order":8},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 14502:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7309,"Code":"ACK-FTSSMS7","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 13011:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5307,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise From Factory Settings SMS 7","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n command = 'setparam ';\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"CommandToUpdateId":null,"ParentId":5298,"Parent":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"HasAck":true,"HexString":false,"SendAttempts":9,"Order":10},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 13011:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7308,"Code":"ACK-FTSSMS4","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 14482:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5308,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise From Factory Settings SMS 4","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n command = 'setparam ';\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"CommandToUpdateId":null,"ParentId":5298,"Parent":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"HasAck":true,"HexString":false,"SendAttempts":9,"Order":7},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 14482:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7307,"Code":"ACK-FTSSMS3","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 14080:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5309,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise From Factory Settings SMS 3","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n command = 'setparam ';\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"CommandToUpdateId":null,"ParentId":5298,"Parent":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"HasAck":true,"HexString":false,"SendAttempts":9,"Order":6},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 14080:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7306,"Code":"ACK-FTSSMS2","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 14032:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5310,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise From Factory Settings SMS 2","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettingsSMS2 == 'true') {\n command = 'setparam ';\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"CommandToUpdateId":null,"ParentId":5298,"Parent":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"HasAck":true,"HexString":false,"SendAttempts":9,"Order":5},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 14032:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7305,"Code":"ACK-FTSSMS6","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 13019:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5311,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise From Factory Settings SMS 6","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n command = 'setparam ';\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"CommandToUpdateId":null,"ParentId":5298,"Parent":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"HasAck":true,"HexString":false,"SendAttempts":9,"Order":9},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 13019:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7304,"Code":"ACK-CYCSMS2","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 10150:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5313,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Cycle Interval SMS 2","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.CycleSettings.CycleInterval) {\n command = 'setparam ';\n var num = 10000;\n var minPeriod = params.CycleSettings.CycleInterval * 60;\n var minSavedRecords = 1;\n var sendPeriod = 60;\n var minDistance = 0;\n var minAngle = 0;\n var minSpeedDelta = 0;\n for (x = 0; x < 3; x++) {\n var stop = `${num}:${minPeriod};${(num + 4)}:${minSavedRecords};${(num + 5)}:${sendPeriod};`;\n var moving = `${(num + 50)}:${minPeriod};${(num + 51)}:${minDistance};${(num + 52)}:${minAngle};${(num + 53)}:${minSpeedDelta};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\n if (x == 1) {\n command += moving;\n }\n if (x > 1) {\n command = command + stop + moving;\n }\n num = num + 100;\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValueSMS(\"data\", commandSMS);\n AddValue(\"data\", commandGprs);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\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}\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}","AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"CommandToUpdateId":null,"ParentId":5293,"Parent":{"Id":5293,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Cycle Interval","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nvar num = 10000;\nvar minPeriod = params.CycleSettings.CycleInterval * 60;\nvar minSavedRecords = 1;\nvar sendPeriod = 60;\nvar minDistance = 0;\nvar minAngle = 0;\nvar minSpeedDelta = 0;\nvar stop = `${num}:${minPeriod};${(num + 4)}:${minSavedRecords};${(num + 5)}:${sendPeriod};`;\nvar moving = `${(num + 50)}:${minPeriod};${(num + 51)}:${minDistance};${(num + 52)}:${minAngle};${(num + 53)}:${minSpeedDelta};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command += stop}`;\n} else {\n commandSMS = ` ${command += stop}`;\n}\ncommand = command.slice(0, -1);\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":27},"HasAck":true,"HexString":false,"SendAttempts":9,"Order":28},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 10150:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7303,"Code":"ACK-APN","Name":"ACK-APN","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 2001:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5290,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"APN","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar apnString = params.APNConfig.APN.split(',');\nvar apn = apnString[0];\nvar apn_username = apnString[1];\nvar apn_password = apnString[2];\nvar serverString = params.APNConfig.Server.split(',');\nvar domain = serverString[0];\nvar port = serverString[1];\nvar message = \"\";\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 2001:${apn};2002:${apn_username};2003:${apn_password};2004:${domain};2005:${port};2006:0`;\n} else {\n message = ` setparam 2001:${apn};2002:${apn_username};2003:${apn_password};2004:${domain};2005:${port};2006:0`;\n}\nAddValue(\"data\", message);\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":2,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":false,"SendAttempts":4,"Order":0},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 2001:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7302,"Code":"ACK-PC1","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 10004:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5285,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Pre Config 1","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"//This command will be sent by SMS\nvar configs = [];\nvar message = \"\";\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 10004:1;10000:60;10005:60;10050:60;10051:0;10052:0;10053:0;10054:1;10055:60;10100:60;10104:1;10105:60;10150:60;10200:60;`;\n} else {\n message = \" setparam 10004:1;10000:60;10005:60;10050:60;10051:0;10052:0;10053:0;10054:1;10055:60;10100:60;10104:1;10105:60;10150:60;10200:60;\";\n}\nAddValue(\"data\", message);\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":2,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":false,"SendAttempts":9,"Order":1},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 10004:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7301,"Code":"ACK-DR","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,All records are erased<>","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5287,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Delete Records","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar message = \"\"\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} deleterecords`\n} else {\n message = \" deleterecords\"\n}\nAddValue(\"data\", message);\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":2,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":false,"SendAttempts":2,"Order":3},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,All records are erased[^d]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7300,"Code":"ACK-PROX","Name":"ACK-Proximity","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 320:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5289,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Proximity","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"var configs = [];\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = '';\nif (params.Proximity.EnableDisableProximity == 'true') {\n var call = 0;\n if (params.Proximity.Call == 'true') {\n call = 1;\n }\n //If the proximity is active, GPS Sleep mode cannot be active. If proximity is not, we can use GPS Sleep mode to extend battery life\n //320(BT Home Zone):1(Enabled);322(BLE Geofence):4(Proximity);323(Pre-alarm):(s);324(RSSI):(dBm);1115(Non stop scan):(0 dis/ 1 enabled);1100(Update frequency):();1113(BLE Scan duration):();1114(Scan retries until error):();1110(BT Power level):();1111(BLE broadcasting service ID):();1000():();1112(BLE connecton protocol):(0 Prohibit/ 1 allow);325(Generate event):2(On Both);326(Call to):(0 No call/ 1 SOS Numnber);102(Sleep Mode):0(Disabled)\n command = ascii_to_hexa('setparam 320:1;322:4;323:' + params.Proximity.Prealarm + ';324:-72;1115:0;1100:5;1113:5;1114:30;1110:3;1111:1000;1112:0;325:2;326:' + params.Proximity.Call + ';102:0');\n} else {\n //320(BT Home Zone):1(Enabled)\n command = ascii_to_hexa('setparam 320:0');\n}\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\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}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":30},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 320:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7299,"Code":"ACK-GV(Get Version)","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,Ver:<>","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5292,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Get Version","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'getver';\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":14},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,Ver:[^:]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7298,"Code":"ACK-PWD","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 3003:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5291,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Password","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000'\nvar packetLengt = ''\nvar codec = '0C'\nvar quantityOfCommands = '01'\nvar commandType = '05'\nvar commandSize = ''\nvar command = 'setparam '\nif (params.SMSPassword.Login) {\n command += '3003:' + params.SMSPassword.Login + ';'\n} else {\n command += '3003:;'\n}\nif (params.SMSPassword.Password) {\n command += '3004:' + params.SMSPassword.Password + ';'\n} else {\n command += '3004:;'\n}\nvar commandSMS = ''\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\n} else {\n commandSMS = ` ${command}`\n}\ncommand = ascii_to_hexa(command)\nvar commandEndSymbol = '0D0A'\nvar quantityOfCommands = '01'\nvar CRC = ''\nx = (command.length + commandEndSymbol.length) / 2\ny = (('00000000' + x.toString(16)).slice(-8))\ncommandSize = y\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\ny2 = (('00000000' + x2.toString(16)).slice(-8))\npacketLengt = y2\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":2,"Order":21},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 3003:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7297,"Code":"ACK-CS (Call Settings)","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 3020:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5304,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Call Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000'\nvar packetLengt = ''\nvar codec = '0C'\nvar quantityOfCommands = '01'\nvar commandType = '05'\nvar commandSize = ''\nvar command = 'setparam '\n//3020 - Outgoing call in loud speaker (1 active, 0 inactive)\n//13051 - Normal Speaker Volume\n//13052 - Loud Speaker Volume\n//14310 - Call Active Indicator (0 Disabled, 1 Enabled)\n//14240 - Outgoing call Indicator (0 Disabled, 1 Enabled)\n//14030 - Incoming call Indicator (0 Disabled, 1 Enabled)\nif (params.CallSettings.OneWayCall == 'true') {\n command += '3020:1;13052:0;13051:0;14310:0;14240:0;14030:0'\n} else {\n command += '3020:0;13052:50;13051:50;14310:1;14240:1:14030:1'\n}\nvar commandSMS = ''\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\n} else {\n commandSMS = ` ${command}`\n}\ncommand = ascii_to_hexa(command)\nvar commandEndSymbol = '0D0A'\nvar quantityOfCommands = '01'\nvar CRC = ''\nx = (command.length + commandEndSymbol.length) / 2\ny = (('00000000' + x.toString(16)).slice(-8))\ncommandSize = y\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\ny2 = (('00000000' + x2.toString(16)).slice(-8))\npacketLengt = y2\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":2,"Order":20},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 3020:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7296,"Code":"ACK-SMS-GI","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"RTC:<>","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5303,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Get Info","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'getinfo';\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":13},"CacheImei":false,"RegEx":"^RTC:[^:]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7295,"Code":"ACK-GI (Get Info)","Name":"ACK-Get Info","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,RTC:<>","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5303,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Get Info","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'getinfo';\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":13},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,RTC:[^:]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7294,"Code":"ACK-NM","Name":"ACK-Non Movement","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 12106<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5302,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Movement","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"var configs = [];\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nif (params.Movement.EnableDisableMovement === \"false\") {\n command += '12106:0';\n} else if (params.Movement.EnableDisableMovement === \"true\") {\n command += '12106:1;12108:0' + ';12107:' + params.Movement.Timeout;\n}\nif (params.NoMovement.EnableDisableNoMovement === \"false\") {\n command += '12106:0';\n} else if (params.NoMovement.EnableDisableNoMovement === \"true\") {\n command += '12106:1;12108:1' + ';12107:' + params.NoMovement.Timeout; + '12109:' + params.NoMovement.PreAlarm;\n}\ncommand = ascii_to_hexa(command);\n//var command = ascii_to_hexa('setparam 1170:1;1171:1;1172:+447845658205')\n//var command = ascii_to_hexa('getinfo')\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\n//console.log(x)\ny = (('00000000' + x.toString(16)).slice(-8));\n//console.log(y)\ncommandSize = y;\n//console.log(commandSize.length)\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\n//console.log(x2)\ny2 = (('00000000' + x2.toString(16)).slice(-8));\n//console.log(y2)\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\n//prueba = hexStringToString('0C010500000009676574696E666F0D0A01')\n//console.log(CRC16(prueba).toString(16).toUpperCase())\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\n//console.log(message)\nAddValue(\"data\", message);\n//AddValue(\"data\", 'test');\n//msg.push(message);\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}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":19},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 12106[^ ]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7293,"Code":"ACK-SDS","Name":"ACK-Speed Dial","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 600<<->>;130<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5301,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Speed Dial Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\n//6001: phone number\n//13017: Button 1 behaviour (8 call)\n//13037: Call to\nif (params.SpeedDialButton.EnableDisableSpeedDialButton == 'true') {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n} else {\n command += '6001:;13017:0';\n}\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":24},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 600[^ ]*;130[^ ]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7292,"Code":"ACK-WHL","Name":"ACK-Whitelist","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 4000:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5300,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"White List","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nvar count = 4000;\nfor (var contact in params.WhiteList) {\n command += count + ':' + params.WhiteList[contact].Number + ';';\n count++;\n}\n//Delete last character\ncommand = command.slice(0, -1);\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":25},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 4000:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7291,"Code":"ACK-ALSP","Name":"ACK-Overspeed","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 11100:<>;","HasTemplateGlobal":false,"ResponseTemplate":"","TemplateGlobal":"","LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5299,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"OverSpeeding Options","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nif (params.OverSpeedingSettings.EnableDisableOverSpeedingSettings == 'true') {\n command += '11100:2';\n if (params.OverSpeedingSettings.MaxSpeed) {\n command += ';11104:' + Math.round(params.OverSpeedingSettings.MaxSpeed / 3.6);\n }\n} else {\n command += '11100:0';\n}\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\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}\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":21},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 11100:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7290,"Code":"ACK-SOSN (SOS Number)","Name":"ACK-SOS Number","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 6000:+<<->>;4198:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5297,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"SOS Options","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nif (params.SOSSettings.SOSNumber) {\n command += '6000:' + params.SOSSettings.SOSNumber;\n command += ';4198:' + params.SOSSettings.SOSNumber;\n command += ';11711:1;4199:+447781482635;';\n}\nif (params.SOSSettings.SOSAction == '0') {\n command += '11712:1;12105:1;606:1;';\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n}\nif (params.SOSSettings.SOSAction == '1') {\n command += '11712:0;12105:0;606:0;605:0';\n}\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":11},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 6000:\\+[^;,]*;4198:[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7289,"Code":"ACK-CYC","Name":"ACK-Cycle","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 10000:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5293,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Cycle Interval","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nvar num = 10000;\nvar minPeriod = params.CycleSettings.CycleInterval * 60;\nvar minSavedRecords = 1;\nvar sendPeriod = 60;\nvar minDistance = 0;\nvar minAngle = 0;\nvar minSpeedDelta = 0;\nvar stop = `${num}:${minPeriod};${(num + 4)}:${minSavedRecords};${(num + 5)}:${sendPeriod};`;\nvar moving = `${(num + 50)}:${minPeriod};${(num + 51)}:${minDistance};${(num + 52)}:${minAngle};${(num + 53)}:${minSpeedDelta};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command += stop}`;\n} else {\n commandSMS = ` ${command += stop}`;\n}\ncommand = command.slice(0, -1);\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":27},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 10000:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7288,"Code":"ACK-ICA (Incoming Call Action)","Name":"ACK-Incoming Call","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 3005:<<->>;14033:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5294,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Incoming Call Action","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000'\nvar packetLengt = ''\nvar codec = '0C'\nvar quantityOfCommands = '01'\nvar commandType = '05'\nvar commandSize = ''\nvar command = 'setparam '\nvar vibration = 0;\nvar ringtone = 0;\nvar behaviour = 0;\nif (params.IncomingCalls.Action) {\n command += '3005:' + params.IncomingCalls.Action + ';'\n}\nif (params.IncomingCalls.Vibration == 'true') {\n vibration = 1;\n}\nif (params.IncomingCalls.Ringtone == 'true') {\n ringtone = 2;\n}\nbehaviour = ringtone + vibration\ncommand += '14033:' + behaviour + ';'\nvar commandSMS = ''\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\n} else {\n commandSMS = ` ${command}`\n}\ncommand = ascii_to_hexa(command)\nvar commandEndSymbol = '0D0A'\nvar quantityOfCommands = '01'\nvar CRC = ''\nx = (command.length + commandEndSymbol.length) / 2\ny = (('00000000' + x.toString(16)).slice(-8))\ncommandSize = y\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\ny2 = (('00000000' + x2.toString(16)).slice(-8))\npacketLengt = y2\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":2,"Order":15},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 3005:[^;,]*;14033:[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":7288,\"Code\":\"ACK-ICA (Incoming Call Action)\",\"Name\":\"ACK-Incoming Call\",\"MessageCode\":\"ACK\",\"NeedAck\":false,\"IsAck\":true,\"IsFailAck\":false,\"IsAckHexString\":false,\"NoOperation\":false,\"Type\":0,\"Template\":\"GH5200-COD12,<>,New value 3005:<>;\",\"HasTemplateGlobal\":false,\"ResponseTemplate\":null,\"TemplateGlobal\":null,\"LongConnection\":true,\"HexString\":false,\"AckFirst\":false,\"ScaipH\":false,\"DoNotSendCommands\":false,\"ProtocolsLibraryMethod\":null,\"ProtocolsLibraryMethodArgs\":null,\"Command\":{\"Id\":5294,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"1.0\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Incoming Call Action\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000'\\nvar packetLengt = ''\\nvar codec = '0C'\\nvar quantityOfCommands = '01'\\nvar commandType = '05'\\nvar commandSize = ''\\nvar command = 'setparam '\\nvar vibration = 0;\\nvar ringtone = 0;\\nvar behaviour = 0;\\n// enable or disable incoming calls\\nif (params.IncomingCalls.Action) {\\n command += '3005:' + params.IncomingCalls.Action + ';'\\n}\\n// 14030 - Incoming call Indicator (0 Disabled, 1 Enabled)\\nif (params.CallSettings.OneWayCall == 'true') {\\n command += '14030:0;'\\n} else {\\n command += '14030:1;'\\n}\\nif (params.IncomingCalls.Vibration == 'true') {\\n vibration = 1;\\n}\\nif (params.IncomingCalls.Ringtone == 'true') {\\n ringtone = 2;\\n}\\nbehaviour = ringtone + vibration\\ncommand += '14033:' + behaviour + ';'\\nvar commandSMS = ''\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\\n} else {\\n commandSMS = ` ${command}`\\n}\\ncommand = ascii_to_hexa(command)\\nvar commandEndSymbol = '0D0A'\\nvar quantityOfCommands = '01'\\nvar CRC = ''\\nx = (command.length + commandEndSymbol.length) / 2\\ny = (('00000000' + x.toString(16)).slice(-8))\\ncommandSize = y\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\ny2 = (('00000000' + x2.toString(16)).slice(-8))\\npacketLengt = y2\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":2,\"Order\":15},\"CacheImei\":false,\"RegEx\":\"^GH5200-COD12,[^,]*,New value 3005:[^;,]*;\",\"RegExGlobal\":\"\",\"IsDeviceUpdate\":false,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728466130}],"Tags":[]},{"Id":7287,"Code":"ACK-RPBB","Name":"ACK-Report By Button","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 13048:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5295,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Report Position By Button","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = '';\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\n //Configure the Button to send position. Configure also the vibration when pressed\n command = 'setparam 13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\n} else {\n command = 'setparam 13049:0';\n}\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":23},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 13048:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":7287,\"Code\":\"ACK-RPBB\",\"Name\":\"ACK-Report By Button\",\"MessageCode\":\"ACK\",\"NeedAck\":false,\"IsAck\":true,\"IsFailAck\":false,\"IsAckHexString\":false,\"NoOperation\":false,\"Type\":0,\"Template\":\"GH5200-COD12,<>,New value 13023:<>;\",\"HasTemplateGlobal\":false,\"ResponseTemplate\":null,\"TemplateGlobal\":null,\"LongConnection\":true,\"HexString\":false,\"AckFirst\":false,\"ScaipH\":false,\"DoNotSendCommands\":false,\"ProtocolsLibraryMethod\":null,\"ProtocolsLibraryMethodArgs\":null,\"Command\":{\"Id\":5295,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"1.0\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Report Position By Button\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = '';\\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\\n //Configure the Button to send position. Configure also the vibration when pressed\\n //setparam 13048:2;13049:16 configures the Button IO Feature, not the button itself, should be: 13023:14\\n // command = 'setparam 13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\\n command = 'setparam 13023:11;14440:1;14442:5;14443:1;14444:1000;14445:300;14446:300;14447:1';\\n} else {\\n command = 'setparam 13049:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":9,\"Order\":23},\"CacheImei\":false,\"RegEx\":\"^GH5200-COD12,[^,]*,New value 13023:[^;,]*;\",\"RegExGlobal\":\"\",\"IsDeviceUpdate\":false,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1727711460},{"Type":1,"NewValue":"{\"Id\":7287,\"Code\":\"ACK-RPBB\",\"Name\":\"ACK-Report By Button\",\"MessageCode\":\"ACK\",\"NeedAck\":false,\"IsAck\":true,\"IsFailAck\":false,\"IsAckHexString\":false,\"NoOperation\":false,\"Type\":0,\"Template\":\"GH5200-COD12,<>,New value 13048:<>;\",\"HasTemplateGlobal\":false,\"ResponseTemplate\":null,\"TemplateGlobal\":null,\"LongConnection\":true,\"HexString\":false,\"AckFirst\":false,\"ScaipH\":false,\"DoNotSendCommands\":false,\"ProtocolsLibraryMethod\":null,\"ProtocolsLibraryMethodArgs\":null,\"Command\":{\"Id\":5295,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"1.0\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Report Position By Button\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\\n command += '13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\\n} else {\\n command += '13049:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":9,\"Order\":23},\"CacheImei\":false,\"RegEx\":\"^GH5200-COD12,[^,]*,New value 13048:[^;,]*;\",\"RegExGlobal\":\"\",\"IsDeviceUpdate\":false,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728402542}],"Tags":[]},{"Id":7286,"Code":"ACK-ALA","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 13020:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5296,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Amber Alert Options","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nif (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n //13020 - Button 2. 1 click (25 - Amber Alert On)`\n //13021 - Button 2. 2 click (26 - Amber Alert Off)\n command += '13020:25;13021:26;';\n //14420 - Key 2 Action Activated(1-Enabled), 14430 - Key 2 Action Deactivated(1-Enabled)\n command += '14420:1;14430:1';\n //603-Order Priority. 1(Record)\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n} else if (params.AmberAlert.EnableDisableAmberAlert === \"false\") {\n command += '13020:0;13021:0;';\n}\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":12},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 13020:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7285,"Code":"ACK-FTS (Factory Settings)","Name":"ACK-Initialise Factory","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 107:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 107:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7284,"Code":"ACK-PC2","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 10151:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5286,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Pre Config 2","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"//This command will be sent by SMS\nvar configs = [];\nvar message = \"\";\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 10151:0;10152:0;10153:0;10154:1;10155:60;10200:60;10204:1;10205:60;10250:60;10251:0;10252:0;10253:0;10254:1;10255:60;102:0;103:10;`;\n} else {\n message = \" setparam 10151:0;10152:0;10153:0;10154:1;10155:60;10200:60;10204:1;10205:60;10250:60;10251:0;10252:0;10253:0;10254:1;10255:60;102:1;103:10;\";\n}\nAddValue(\"data\", message);\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":2,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":false,"SendAttempts":9,"Order":2},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 10151:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7283,"Code":"RTL","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GPS:<> Sat:<> Lat:<> Long:<> Alt:<> Speed:<> Dir:<<->> Date: <> Time: <>","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5288,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Real Time Location","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"//This command will be sent by SMS\nvar configs = [];\nvar message = \"\";\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} getgps`;\n} else {\n message = \" getgps\";\n}\nAddValue(\"data\", message);\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":2,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":false,"SendAttempts":9,"Order":22},"CacheImei":false,"RegEx":"^GPS:[^ ]* Sat:[^ ]* Lat:[^ ]* Long:[^ ]* Alt:[^ ]* Speed:[^ ]* Dir:[^ ]* Date: [^ ]* Time: [^ ]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7282,"Code":"PWRF","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-PWRF,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-PWRF,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7281,"Code":"CHK","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-HTB,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-HTB,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7280,"Code":"ACK-SMS-GV","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"Ver:<>","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^Ver:[^:]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7279,"Code":"ACK-SMS-DR","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"All records are erased","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^All records are erased","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7278,"Code":"ACK-SMS","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"New value <>","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^New value [^ ]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7277,"Code":"ACK-ALFSMS3","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 12101:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 12101:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7276,"Code":"ACK-ALFSMS2","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 14390:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 14390:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7275,"Code":"ACK-ALF","Name":"ACK-Fall Alert","MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 12100:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 12100:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":7275,\"Code\":\"ACK-ALF\",\"Name\":\"ACK-Fall Alert\",\"MessageCode\":\"ACK\",\"NeedAck\":false,\"IsAck\":true,\"IsFailAck\":false,\"IsAckHexString\":false,\"NoOperation\":false,\"Type\":0,\"Template\":\"GH5200-COD12,<>,New value 12100:<>;\",\"HasTemplateGlobal\":false,\"ResponseTemplate\":null,\"TemplateGlobal\":null,\"LongConnection\":true,\"HexString\":false,\"AckFirst\":false,\"ScaipH\":false,\"DoNotSendCommands\":false,\"ProtocolsLibraryMethod\":null,\"ProtocolsLibraryMethodArgs\":null,\"Command\":{\"Id\":5283,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"1.0\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Fall Alarm Options\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \\\"false\\\") {\\n command += '12100:0;';\\n var commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n} else if (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \\\"true\\\") {\\n if (params.FallAlarmSettings.EnableDisableByButtons == 'true') {\\n //Configure Button 1 and button 2 to turn On and Off the feature. Also, the vibration when changed the behaviours.\\n command += '12100:0;';\\n command += '13019:2;13022:3;';\\n } else {\\n command += '12100:1;';\\n command += '13019:0;13022:0;';\\n }\\n var commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n command += '14390:1;14392:5;14393:1;14391:1;14397:1;14430:1;14432:5;14433:1;14431:1;14437:1;';\\n if (params.FallAlarmSettings.Position) {\\n command += '12101:' + params.FallAlarmSettings.Position + ';';\\n }\\n if (params.FallAlarmSettings.Angle) {\\n command += '12102:' + params.FallAlarmSettings.Angle + ';';\\n }\\n if (params.FallAlarmSettings.Timeout) {\\n command += '12103:' + params.FallAlarmSettings.Timeout + ';';\\n }\\n if (params.FallAlarmSettings.SilentPreAlarmDelay) {\\n command += '12111:' + params.FallAlarmSettings.SilentPreAlarmDelay + ';';\\n }\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:0;14320:0;14173:0;14323:0;';\\n }\\n command += '7222:0;12104:1';\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":9,\"Order\":16},\"CacheImei\":false,\"RegEx\":\"^GH5200-COD12,[^,]*,New value 12100:[^;,]*;\",\"RegExGlobal\":\"\",\"IsDeviceUpdate\":false,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1729517990}],"Tags":[]},{"Id":7274,"Code":"ALA-O","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-ALA-O,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-ALA-O,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7273,"Code":"PWRN","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-PWRN,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-PWRN,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7272,"Code":"COD8","Name":"Generic COD8","MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD8,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-COD8,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7271,"Code":"ALA-C","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-ALA-C,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":"","LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-ALA-C,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7270,"Code":"CYC","Name":"Cycle","MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-CYC,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-CYC,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7269,"Code":"PBB","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-PBB,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-PBB,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7268,"Code":"PROXS","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":1,"Template":"GH5200-PROXS,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;Proximity_violation_source=<>;Proximity_duration=<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-PROXS,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;Proximity_violation_source=[^;;]*;Proximity_duration=[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7267,"Code":"PROX","Name":"Proximity","MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":1,"Template":"GH5200-PROX,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-PROX,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7266,"Code":"PROXE","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-PROXE,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;Proximity_violation_source=<>;Proximity_duration=<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-PROXE,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;Proximity_violation_source=[^;;]*;Proximity_duration=[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7265,"Code":"ALA-S","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-ALA-S,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-ALA-S,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7264,"Code":"ALSP","Name":"Alarm Speed","MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":1,"Template":"GH5200-ALSP,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":"","LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-ALSP,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7263,"Code":"ALMV","Name":"Movement","MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-ALMV,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-ALMV,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7262,"Code":"ALA","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":1,"Template":"GH5200-ALA,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":true,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-ALA,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7261,"Code":"ALF","Name":"Alarm Fall","MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":1,"Template":"GH5200-ALF,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-ALF,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7260,"Code":"ZNI","Name":"Zone In","MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":1,"Template":"+RESP:ZIN,<>,<>,<>,<>,<>,<>,<>,<>$","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"\\+RESP:ZIN,[^,]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^\\$,]*\\$","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7259,"Code":"ALSOS","Name":"Alarm Emergency","MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":1,"Template":"GH5200-ALSOS,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-ALSOS,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7258,"Code":"STC","Name":"Start Communication","MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":true,"NoOperation":false,"Type":0,"Template":"GH5200-STC,<>,<>","HasTemplateGlobal":true,"ResponseTemplate":"<>","TemplateGlobal":"000F<>","LongConnection":true,"HexString":true,"AckFirst":true,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-STC,[^,]*,[^,]*","RegExGlobal":"^000F[^F]*","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7257,"Code":"COD8-Global","Name":"Codec8","MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":true,"NoOperation":false,"Type":0,"Template":"","HasTemplateGlobal":true,"ResponseTemplate":"<>","TemplateGlobal":"00000000<>","LongConnection":true,"HexString":true,"AckFirst":true,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"","RegExGlobal":"^00000000[^ ]*","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7256,"Code":"ZNO","Name":"Zone Out","MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":1,"Template":"+RESP:ZOUT,<>,<>,<>,<>,<>,<>,<>,<>$","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"\\+RESP:ZOUT,[^,]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^\\$,]*\\$","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7255,"Code":"ALNM","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-ALNM,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-ALNM,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7254,"Code":"NACT","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"+RESP:NACT,<>,<>$","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":"\\+RESP:NACT,[^,]*,[^\\$,]*\\$","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7312,"Code":"PWRF","Name":null,"MessageCode":"ACK","NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,Shutdown has been initiated","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,Shutdown has been initiated","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[{"Type":0,"NewValue":"{\"Id\":7312,\"Code\":\"PWRF\",\"Name\":null,\"MessageCode\":\"ACK\",\"NeedAck\":false,\"IsAck\":true,\"IsFailAck\":false,\"IsAckHexString\":false,\"NoOperation\":false,\"Type\":0,\"Template\":\"GH5200-COD12,<>,Shutdown has been initiated\",\"HasTemplateGlobal\":false,\"ResponseTemplate\":null,\"TemplateGlobal\":null,\"LongConnection\":true,\"HexString\":false,\"AckFirst\":false,\"ScaipH\":false,\"DoNotSendCommands\":false,\"ProtocolsLibraryMethod\":null,\"ProtocolsLibraryMethodArgs\":null,\"Command\":null,\"CacheImei\":false,\"RegEx\":\"^GH5200-COD12,[^,]*,Shutdown has been initiated\",\"RegExGlobal\":\"\",\"IsDeviceUpdate\":false,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725899787}],"Tags":[]},{"Id":7313,"Code":"BT","Name":null,"MessageCode":"BT","NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-BT,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-BT,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[{"Type":0,"NewValue":"{\"Id\":7313,\"Code\":\"BT\",\"Name\":null,\"MessageCode\":\"BT\",\"NeedAck\":false,\"IsAck\":false,\"IsFailAck\":false,\"IsAckHexString\":false,\"NoOperation\":false,\"Type\":0,\"Template\":\"GH5200-BT,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>\",\"HasTemplateGlobal\":false,\"ResponseTemplate\":null,\"TemplateGlobal\":null,\"LongConnection\":true,\"HexString\":false,\"AckFirst\":false,\"ScaipH\":false,\"DoNotSendCommands\":true,\"ProtocolsLibraryMethod\":null,\"ProtocolsLibraryMethodArgs\":null,\"Command\":null,\"CacheImei\":false,\"RegEx\":\"^GH5200-BT,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*\",\"RegExGlobal\":\"\",\"IsDeviceUpdate\":false,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725899916}],"Tags":[]}],"Commands":[{"Id":5313,"Name":"Cycle Interval SMS 2","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.CycleSettings.CycleInterval) {\n command = 'setparam ';\n var num = 10000;\n var minPeriod = params.CycleSettings.CycleInterval * 60;\n var minSavedRecords = 1;\n var sendPeriod = 60;\n var minDistance = 0;\n var minAngle = 0;\n var minSpeedDelta = 0;\n for (x = 0; x < 3; x++) {\n var stop = `${num}:${minPeriod};${(num + 4)}:${minSavedRecords};${(num + 5)}:${sendPeriod};`;\n var moving = `${(num + 50)}:${minPeriod};${(num + 51)}:${minDistance};${(num + 52)}:${minAngle};${(num + 53)}:${minSpeedDelta};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\n if (x == 1) {\n command += moving;\n }\n if (x > 1) {\n command = command + stop + moving;\n }\n num = num + 100;\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValueSMS(\"data\", commandSMS);\n AddValue(\"data\", commandGprs);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\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}\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}","CommandToUpdate":null,"Parent":{"Id":5293,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Cycle Interval","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nvar num = 10000;\nvar minPeriod = params.CycleSettings.CycleInterval * 60;\nvar minSavedRecords = 1;\nvar sendPeriod = 60;\nvar minDistance = 0;\nvar minAngle = 0;\nvar minSpeedDelta = 0;\nvar stop = `${num}:${minPeriod};${(num + 4)}:${minSavedRecords};${(num + 5)}:${sendPeriod};`;\nvar moving = `${(num + 50)}:${minPeriod};${(num + 51)}:${minDistance};${(num + 52)}:${minAngle};${(num + 53)}:${minSpeedDelta};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command += stop}`;\n} else {\n commandSMS = ` ${command += stop}`;\n}\ncommand = command.slice(0, -1);\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":27},"AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"HasAck":true,"HexString":false,"Order":28,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5313,\"Name\":\"Cycle Interval SMS 2\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nvar commandGprs = '';\\nvar notSend = false;\\nif (params.CycleSettings.CycleInterval) {\\n command = 'setparam ';\\n var num = 10000;\\n var minPeriod = params.CycleSettings.CycleInterval * 60;\\n var minSavedRecords = 1;\\n var sendPeriod = 60;\\n var minDistance = 0;\\n var minAngle = 0;\\n var minSpeedDelta = 0;\\n for (x = 0; x < 3; x++) {\\n var stop = `${num}:${minPeriod};${(num + 4)}:${minSavedRecords};${(num + 5)}:${sendPeriod};`;\\n var moving = `${(num + 50)}:${minPeriod};${(num + 51)}:${minDistance};${(num + 52)}:${minAngle};${(num + 53)}:${minSpeedDelta};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\\n if (x == 1) {\\n command += moving;\\n }\\n if (x > 1) {\\n command = command + stop + moving;\\n }\\n num = num + 100;\\n }\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\\n notSend = true;\\n }\\n AddValueSMS(\\\"data\\\", commandSMS);\\n AddValue(\\\"data\\\", commandGprs);\\n}\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS,\\n notSend: notSend\\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}\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\",\"CommandToUpdate\":null,\"Parent\":{\"Id\":5293,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"0.9\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Cycle Interval\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nvar num = 10000;\\nvar minPeriod = params.CycleSettings.CycleInterval * 60;\\nvar minSavedRecords = 1;\\nvar sendPeriod = 60;\\nvar minDistance = 0;\\nvar minAngle = 0;\\nvar minSpeedDelta = 0;\\nvar stop = `${num}:${minPeriod};${(num + 4)}:${minSavedRecords};${(num + 5)}:${sendPeriod};`;\\n//var moving = `${(num + 50)}:${minPeriod};${(num + 51)}:${minDistance};${(num + 52)}:${minAngle};${(num + 53)}:${minSpeedDelta};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\\nvar moving = `${(num + 50)}:${minPeriod};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command += stop + moving}`;\\n} else {\\n commandSMS = ` ${command += stop + moving}`;\\n}\\ncommand = command.slice(0, -1);\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":9,\"Order\":27},\"AvoidResending\":false,\"FollowParentSentType\":true,\"SendingType\":0,\"HasAck\":true,\"HexString\":false,\"Order\":28,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725964883}],"Tags":[{"Id":2082,"Name":"twentyninethCommand","BackendAction":"CommandPriority","Value":"28"}]},{"Id":5312,"Name":"Fall Alarm SMS 3","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar commandSMS = '';\nvar command = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \"true\") {\n command = 'setparam ';\n if (params.FallAlarmSettings.Position) {\n command += '12101:' + params.FallAlarmSettings.Position + ';';\n }\n if (params.FallAlarmSettings.Angle) {\n command += '12102:' + params.FallAlarmSettings.Angle + ';';\n }\n if (params.FallAlarmSettings.Timeout) {\n command += '12103:' + params.FallAlarmSettings.Timeout + ';';\n }\n if (params.FallAlarmSettings.SilentPreAlarmDelay) {\n command += '12111:' + params.FallAlarmSettings.SilentPreAlarmDelay + ';';\n }\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:0;14320:0;14173:0;14323:0;';\n }\n command += '7222:0;12104:1';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\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}\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}","CommandToUpdate":null,"Parent":{"Id":5283,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Fall Alarm Options","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \"false\") {\n command += '12100:0;';\n var commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n} else if (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \"true\") {\n if (params.FallAlarmSettings.EnableDisableByButtons == 'true') {\n //Configure Button 1 and button 2 to turn On and Off the feature. Also, the vibration when changed the behaviours.\n command += '12100:0;';\n command += '13019:2;13022:3;';\n } else {\n command += '12100:1;';\n command += '13019:0;13022:0;';\n }\n var commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14390:1;14392:5;14393:1;14391:1;14397:1;14430:1;14432:5;14433:1;14431:1;14437:1;';\n if (params.FallAlarmSettings.Position) {\n command += '12101:' + params.FallAlarmSettings.Position + ';';\n }\n if (params.FallAlarmSettings.Angle) {\n command += '12102:' + params.FallAlarmSettings.Angle + ';';\n }\n if (params.FallAlarmSettings.Timeout) {\n command += '12103:' + params.FallAlarmSettings.Timeout + ';';\n }\n if (params.FallAlarmSettings.SilentPreAlarmDelay) {\n command += '12111:' + params.FallAlarmSettings.SilentPreAlarmDelay + ';';\n }\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:0;14320:0;14173:0;14323:0;';\n }\n command += '7222:0;12104:1';\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":16},"AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"HasAck":true,"HexString":false,"Order":18,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5312,\"Name\":\"Fall Alarm SMS 3\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar commandSMS = '';\\nvar command = '';\\nvar commandGprs = '';\\nvar notSend = false;\\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \\\"true\\\") {\\n command = 'setparam ';\\n if (params.FallAlarmSettings.Position) {\\n command += '12101:' + params.FallAlarmSettings.Position + ';';\\n }\\n if (params.FallAlarmSettings.Angle) {\\n command += '12102:' + params.FallAlarmSettings.Angle + ';';\\n }\\n if (params.FallAlarmSettings.Timeout) {\\n command += '12103:' + params.FallAlarmSettings.Timeout + ';';\\n }\\n if (params.FallAlarmSettings.SilentPreAlarmDelay) {\\n command += '12111:' + params.FallAlarmSettings.SilentPreAlarmDelay + ';';\\n }\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:0;14320:0;14173:0;14323:0;';\\n }\\n command += '7222:0;12104:1';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\\n notSend = true;\\n }\\n AddValue(\\\"data\\\", commandGprs);\\n AddValueSMS(\\\"data\\\", commandSMS);\\n}\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS,\\n notSend: notSend\\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}\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\",\"CommandToUpdate\":null,\"Parent\":{\"Id\":5283,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"0.9\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Fall Alarm Options\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \\\"false\\\") {\\n command += '12100:0;';\\n var commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n} else if (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \\\"true\\\") {\\n if (params.FallAlarmSettings.EnableDisableByButtons == 'true') {\\n //Configure Button 1 and button 2 to turn On and Off the feature. Also, the vibration when changed the behaviours.\\n command += '12100:0;';\\n command += '13019:2;13022:3;';\\n } else {\\n command += '12100:1;';\\n command += '13019:0;13022:0;';\\n }\\n var commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n command += '14390:1;14392:5;14393:1;14391:1;14397:1;14430:1;14432:5;14433:1;14431:1;14437:1;';\\n if (params.FallAlarmSettings.Position) {\\n command += '12101:' + params.FallAlarmSettings.Position + ';';\\n }\\n if (params.FallAlarmSettings.Angle) {\\n command += '12102:' + params.FallAlarmSettings.Angle + ';';\\n }\\n if (params.FallAlarmSettings.Timeout) {\\n command += '12103:' + params.FallAlarmSettings.Timeout + ';';\\n }\\n if (params.FallAlarmSettings.SilentPreAlarmDelay) {\\n command += '12111:' + params.FallAlarmSettings.SilentPreAlarmDelay + ';';\\n }\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:0;14320:0;14173:0;14323:0;';\\n }\\n command += '7222:0;12104:1';\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":9,\"Order\":16},\"AvoidResending\":false,\"FollowParentSentType\":true,\"SendingType\":0,\"HasAck\":true,\"HexString\":false,\"Order\":18,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725964993}],"Tags":[{"Id":2087,"Name":"nineteenthCommand","BackendAction":"CommandPriority","Value":"18"}]},{"Id":5311,"Name":"Initialise From Factory Settings SMS 6","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n command = 'setparam ';\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"HasAck":true,"HexString":false,"Order":9,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5311,\"Name\":\"Initialise From Factory Settings SMS 6\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nvar commandGprs = '';\\nvar notSend = false;\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n command = 'setparam ';\\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \\\"true\\\") {\\n command += '13019:2;13022:3;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n } else {\\n command += '13019:0;13022:0;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n }\\n if (params.ReportPositionByButton.ReportPositionByButton === \\\"true\\\") {\\n command += '13048:2;13049:16;';\\n } else {\\n command += '13049:0;';\\n }\\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \\\"true\\\") {\\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\\n } else {\\n command += '6001:;13017:0;';\\n }\\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\\n notSend = true;\\n }\\n AddValue(\\\"data\\\", commandGprs);\\n AddValueSMS(\\\"data\\\", commandSMS);\\n}\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS,\\n notSend: notSend\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":{\"Id\":5298,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"0.9\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Initialise from Factory Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n var zero = '00000000';\\n var packetLengt = '';\\n var codec = '0C';\\n var quantityOfCommands = '01';\\n var commandType = '05';\\n var commandSize = '';\\n command = '';\\n command = 'setparam ';\\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\\n command += '13050:100;'; //13050(Indication Vloume %), \\n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\\n if (params.CallSettings.OneWayCall == 'true') {\\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n } else {\\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n }\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \\n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \\n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \\n if (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n command += '13020:25;13021:26;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n } else {\\n command += '13020:0;13021:0;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n }\\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \\\"true\\\") {\\n command += '13019:2;13022:3;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n } else {\\n command += '13019:0;13022:0;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n }\\n if (params.ReportPositionByButton.ReportPositionByButton === \\\"true\\\") {\\n command += '13048:2;13049:16;';\\n } else {\\n command += '13049:0;';\\n }\\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \\\"true\\\") {\\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\\n } else {\\n command += '6001:;13017:0;';\\n }\\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\\n command = ascii_to_hexa(command);\\n var commandEndSymbol = '0D0A'\\n var quantityOfCommands = '01'\\n var CRC = ''\\n x = (command.length + commandEndSymbol.length) / 2\\n y = (('00000000' + x.toString(16)).slice(-8))\\n commandSize = y\\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\n y2 = (('00000000' + x2.toString(16)).slice(-8))\\n packetLengt = y2\\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\n}\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":9,\"Order\":4},\"AvoidResending\":false,\"FollowParentSentType\":true,\"SendingType\":0,\"HasAck\":true,\"HexString\":false,\"Order\":9,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725963772}],"Tags":[{"Id":2076,"Name":"tenthCommand","BackendAction":"CommandPriority","Value":"9"}]},{"Id":5310,"Name":"Initialise From Factory Settings SMS 2","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettingsSMS2 == 'true') {\n command = 'setparam ';\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"HasAck":true,"HexString":false,"Order":5,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5310,\"Name\":\"Initialise From Factory Settings SMS 2\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nvar commandGprs = '';\\nvar notSend = false;\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettingsSMS2 == 'true') {\\n command = 'setparam ';\\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\\n notSend = true;\\n }\\n AddValue(\\\"data\\\", commandGprs);\\n AddValueSMS(\\\"data\\\", commandSMS);\\n}\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS,\\n notSend: notSend\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":{\"Id\":5298,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"0.9\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Initialise from Factory Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n var zero = '00000000';\\n var packetLengt = '';\\n var codec = '0C';\\n var quantityOfCommands = '01';\\n var commandType = '05';\\n var commandSize = '';\\n command = '';\\n command = 'setparam ';\\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\\n command += '13050:100;'; //13050(Indication Vloume %), \\n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\\n if (params.CallSettings.OneWayCall == 'true') {\\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n } else {\\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n }\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \\n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \\n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \\n if (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n command += '13020:25;13021:26;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n } else {\\n command += '13020:0;13021:0;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n }\\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \\\"true\\\") {\\n command += '13019:2;13022:3;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n } else {\\n command += '13019:0;13022:0;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n }\\n if (params.ReportPositionByButton.ReportPositionByButton === \\\"true\\\") {\\n command += '13048:2;13049:16;';\\n } else {\\n command += '13049:0;';\\n }\\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \\\"true\\\") {\\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\\n } else {\\n command += '6001:;13017:0;';\\n }\\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\\n command = ascii_to_hexa(command);\\n var commandEndSymbol = '0D0A'\\n var quantityOfCommands = '01'\\n var CRC = ''\\n x = (command.length + commandEndSymbol.length) / 2\\n y = (('00000000' + x.toString(16)).slice(-8))\\n commandSize = y\\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\n y2 = (('00000000' + x2.toString(16)).slice(-8))\\n packetLengt = y2\\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\n}\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":9,\"Order\":4},\"AvoidResending\":false,\"FollowParentSentType\":true,\"SendingType\":0,\"HasAck\":true,\"HexString\":false,\"Order\":5,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725963049}],"Tags":[{"Id":2072,"Name":"sixthCommand","BackendAction":"CommandPriority","Value":"5"}]},{"Id":5309,"Name":"Initialise From Factory Settings SMS 3","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n command = 'setparam ';\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"HasAck":true,"HexString":false,"Order":6,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5309,\"Name\":\"Initialise From Factory Settings SMS 3\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nvar commandGprs = '';\\nvar notSend = false;\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n command = 'setparam ';\\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\\n notSend = true;\\n }\\n AddValue(\\\"data\\\", commandGprs);\\n AddValueSMS(\\\"data\\\", commandSMS);\\n}\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS,\\n notSend: notSend\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":{\"Id\":5298,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"0.9\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Initialise from Factory Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n var zero = '00000000';\\n var packetLengt = '';\\n var codec = '0C';\\n var quantityOfCommands = '01';\\n var commandType = '05';\\n var commandSize = '';\\n command = '';\\n command = 'setparam ';\\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\\n command += '13050:100;'; //13050(Indication Vloume %), \\n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\\n if (params.CallSettings.OneWayCall == 'true') {\\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n } else {\\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n }\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \\n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \\n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \\n if (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n command += '13020:25;13021:26;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n } else {\\n command += '13020:0;13021:0;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n }\\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \\\"true\\\") {\\n command += '13019:2;13022:3;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n } else {\\n command += '13019:0;13022:0;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n }\\n if (params.ReportPositionByButton.ReportPositionByButton === \\\"true\\\") {\\n command += '13048:2;13049:16;';\\n } else {\\n command += '13049:0;';\\n }\\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \\\"true\\\") {\\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\\n } else {\\n command += '6001:;13017:0;';\\n }\\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\\n command = ascii_to_hexa(command);\\n var commandEndSymbol = '0D0A'\\n var quantityOfCommands = '01'\\n var CRC = ''\\n x = (command.length + commandEndSymbol.length) / 2\\n y = (('00000000' + x.toString(16)).slice(-8))\\n commandSize = y\\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\n y2 = (('00000000' + x2.toString(16)).slice(-8))\\n packetLengt = y2\\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\n}\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":9,\"Order\":4},\"AvoidResending\":false,\"FollowParentSentType\":true,\"SendingType\":0,\"HasAck\":true,\"HexString\":false,\"Order\":6,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725963077}],"Tags":[{"Id":2073,"Name":"seventhCommand","BackendAction":"CommandPriority","Value":"6"}]},{"Id":5308,"Name":"Initialise From Factory Settings SMS 4","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n command = 'setparam ';\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"HasAck":true,"HexString":false,"Order":7,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5308,\"Name\":\"Initialise From Factory Settings SMS 4\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nvar commandGprs = '';\\nvar notSend = false;\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n command = 'setparam ';\\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \\n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \\n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\\n notSend = true;\\n }\\n AddValue(\\\"data\\\", commandGprs);\\n AddValueSMS(\\\"data\\\", commandSMS);\\n}\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS,\\n notSend: notSend\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":{\"Id\":5298,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"0.9\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Initialise from Factory Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n var zero = '00000000';\\n var packetLengt = '';\\n var codec = '0C';\\n var quantityOfCommands = '01';\\n var commandType = '05';\\n var commandSize = '';\\n command = '';\\n command = 'setparam ';\\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\\n command += '13050:100;'; //13050(Indication Vloume %), \\n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\\n if (params.CallSettings.OneWayCall == 'true') {\\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n } else {\\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n }\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \\n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \\n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \\n if (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n command += '13020:25;13021:26;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n } else {\\n command += '13020:0;13021:0;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n }\\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \\\"true\\\") {\\n command += '13019:2;13022:3;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n } else {\\n command += '13019:0;13022:0;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n }\\n if (params.ReportPositionByButton.ReportPositionByButton === \\\"true\\\") {\\n command += '13048:2;13049:16;';\\n } else {\\n command += '13049:0;';\\n }\\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \\\"true\\\") {\\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\\n } else {\\n command += '6001:;13017:0;';\\n }\\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\\n command = ascii_to_hexa(command);\\n var commandEndSymbol = '0D0A'\\n var quantityOfCommands = '01'\\n var CRC = ''\\n x = (command.length + commandEndSymbol.length) / 2\\n y = (('00000000' + x.toString(16)).slice(-8))\\n commandSize = y\\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\n y2 = (('00000000' + x2.toString(16)).slice(-8))\\n packetLengt = y2\\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\n}\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":9,\"Order\":4},\"AvoidResending\":false,\"FollowParentSentType\":true,\"SendingType\":0,\"HasAck\":true,\"HexString\":false,\"Order\":7,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725963653}],"Tags":[{"Id":2074,"Name":"eighthCommand","BackendAction":"CommandPriority","Value":"7"}]},{"Id":5307,"Name":"Initialise From Factory Settings SMS 7","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n command = 'setparam ';\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"HasAck":true,"HexString":false,"Order":10,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5307,\"Name\":\"Initialise From Factory Settings SMS 7\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nvar commandGprs = '';\\nvar notSend = false;\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n command = 'setparam ';\\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\\n notSend = true;\\n }\\n AddValue(\\\"data\\\", commandGprs);\\n AddValueSMS(\\\"data\\\", commandSMS);\\n}\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS,\\n notSend: notSend\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":{\"Id\":5298,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"0.9\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Initialise from Factory Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n var zero = '00000000';\\n var packetLengt = '';\\n var codec = '0C';\\n var quantityOfCommands = '01';\\n var commandType = '05';\\n var commandSize = '';\\n command = '';\\n command = 'setparam ';\\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\\n command += '13050:100;'; //13050(Indication Vloume %), \\n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\\n if (params.CallSettings.OneWayCall == 'true') {\\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n } else {\\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n }\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \\n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \\n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \\n if (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n command += '13020:25;13021:26;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n } else {\\n command += '13020:0;13021:0;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n }\\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \\\"true\\\") {\\n command += '13019:2;13022:3;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n } else {\\n command += '13019:0;13022:0;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n }\\n if (params.ReportPositionByButton.ReportPositionByButton === \\\"true\\\") {\\n command += '13048:2;13049:16;';\\n } else {\\n command += '13049:0;';\\n }\\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \\\"true\\\") {\\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\\n } else {\\n command += '6001:;13017:0;';\\n }\\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\\n command = ascii_to_hexa(command);\\n var commandEndSymbol = '0D0A'\\n var quantityOfCommands = '01'\\n var CRC = ''\\n x = (command.length + commandEndSymbol.length) / 2\\n y = (('00000000' + x.toString(16)).slice(-8))\\n commandSize = y\\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\n y2 = (('00000000' + x2.toString(16)).slice(-8))\\n packetLengt = y2\\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\n}\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":9,\"Order\":4},\"AvoidResending\":false,\"FollowParentSentType\":true,\"SendingType\":0,\"HasAck\":true,\"HexString\":false,\"Order\":10,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725964073}],"Tags":[{"Id":2078,"Name":"eleventhCommand","BackendAction":"CommandPriority","Value":"10"}]},{"Id":5306,"Name":"Initialise From Factory Settings SMS 5","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n command = 'setparam ';\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"HasAck":true,"HexString":false,"Order":8,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5306,\"Name\":\"Initialise From Factory Settings SMS 5\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nvar commandGprs = '';\\nvar notSend = false;\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n command = 'setparam ';\\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \\n if (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n command += '13020:25;13021:26;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n } else {\\n command += '13020:0;13021:0;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n }\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\\n notSend = true;\\n }\\n AddValue(\\\"data\\\", commandGprs);\\n AddValueSMS(\\\"data\\\", commandSMS);\\n}\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS,\\n notSend: notSend\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":{\"Id\":5298,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"0.9\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Initialise from Factory Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n var zero = '00000000';\\n var packetLengt = '';\\n var codec = '0C';\\n var quantityOfCommands = '01';\\n var commandType = '05';\\n var commandSize = '';\\n command = '';\\n command = 'setparam ';\\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\\n command += '13050:100;'; //13050(Indication Vloume %), \\n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\\n if (params.CallSettings.OneWayCall == 'true') {\\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n } else {\\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n }\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \\n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \\n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \\n if (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n command += '13020:25;13021:26;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n } else {\\n command += '13020:0;13021:0;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n }\\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \\\"true\\\") {\\n command += '13019:2;13022:3;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n } else {\\n command += '13019:0;13022:0;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n }\\n if (params.ReportPositionByButton.ReportPositionByButton === \\\"true\\\") {\\n command += '13048:2;13049:16;';\\n } else {\\n command += '13049:0;';\\n }\\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \\\"true\\\") {\\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\\n } else {\\n command += '6001:;13017:0;';\\n }\\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\\n command = ascii_to_hexa(command);\\n var commandEndSymbol = '0D0A'\\n var quantityOfCommands = '01'\\n var CRC = ''\\n x = (command.length + commandEndSymbol.length) / 2\\n y = (('00000000' + x.toString(16)).slice(-8))\\n commandSize = y\\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\n y2 = (('00000000' + x2.toString(16)).slice(-8))\\n packetLengt = y2\\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\n}\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":9,\"Order\":4},\"AvoidResending\":false,\"FollowParentSentType\":true,\"SendingType\":0,\"HasAck\":true,\"HexString\":false,\"Order\":8,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725963727}],"Tags":[{"Id":2075,"Name":"eighthCommand","BackendAction":"CommandPriority","Value":"8"}]},{"Id":5305,"Name":"Fall Alarm SMS 2","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar commandSMS = '';\nvar command = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \"true\") {\n var command = 'setparam 14390:1;14392:5;14393:1;14391:1;14397:1;14430:1;14432:5;14433:1;14431:1;14437:1;';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\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}\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}","CommandToUpdate":null,"Parent":{"Id":5283,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Fall Alarm Options","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \"false\") {\n command += '12100:0;';\n var commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n} else if (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \"true\") {\n if (params.FallAlarmSettings.EnableDisableByButtons == 'true') {\n //Configure Button 1 and button 2 to turn On and Off the feature. Also, the vibration when changed the behaviours.\n command += '12100:0;';\n command += '13019:2;13022:3;';\n } else {\n command += '12100:1;';\n command += '13019:0;13022:0;';\n }\n var commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14390:1;14392:5;14393:1;14391:1;14397:1;14430:1;14432:5;14433:1;14431:1;14437:1;';\n if (params.FallAlarmSettings.Position) {\n command += '12101:' + params.FallAlarmSettings.Position + ';';\n }\n if (params.FallAlarmSettings.Angle) {\n command += '12102:' + params.FallAlarmSettings.Angle + ';';\n }\n if (params.FallAlarmSettings.Timeout) {\n command += '12103:' + params.FallAlarmSettings.Timeout + ';';\n }\n if (params.FallAlarmSettings.SilentPreAlarmDelay) {\n command += '12111:' + params.FallAlarmSettings.SilentPreAlarmDelay + ';';\n }\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:0;14320:0;14173:0;14323:0;';\n }\n command += '7222:0;12104:1';\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":16},"AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"HasAck":true,"HexString":false,"Order":17,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5305,\"Name\":\"Fall Alarm SMS 2\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar commandSMS = '';\\nvar command = '';\\nvar commandGprs = '';\\nvar notSend = false;\\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \\\"true\\\") {\\n var command = 'setparam 14390:1;14392:5;14393:1;14391:1;14397:1;14430:1;14432:5;14433:1;14431:1;14437:1;';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\\n notSend = true;\\n }\\n AddValue(\\\"data\\\", commandGprs);\\n AddValueSMS(\\\"data\\\", commandSMS);\\n}\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS,\\n notSend: notSend\\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}\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\",\"CommandToUpdate\":null,\"Parent\":{\"Id\":5283,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"0.9\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Fall Alarm Options\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \\\"false\\\") {\\n command += '12100:0;';\\n var commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n} else if (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \\\"true\\\") {\\n if (params.FallAlarmSettings.EnableDisableByButtons == 'true') {\\n //Configure Button 1 and button 2 to turn On and Off the feature. Also, the vibration when changed the behaviours.\\n command += '12100:0;';\\n command += '13019:2;13022:3;';\\n } else {\\n command += '12100:1;';\\n command += '13019:0;13022:0;';\\n }\\n var commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n command += '14390:1;14392:5;14393:1;14391:1;14397:1;14430:1;14432:5;14433:1;14431:1;14437:1;';\\n if (params.FallAlarmSettings.Position) {\\n command += '12101:' + params.FallAlarmSettings.Position + ';';\\n }\\n if (params.FallAlarmSettings.Angle) {\\n command += '12102:' + params.FallAlarmSettings.Angle + ';';\\n }\\n if (params.FallAlarmSettings.Timeout) {\\n command += '12103:' + params.FallAlarmSettings.Timeout + ';';\\n }\\n if (params.FallAlarmSettings.SilentPreAlarmDelay) {\\n command += '12111:' + params.FallAlarmSettings.SilentPreAlarmDelay + ';';\\n }\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:0;14320:0;14173:0;14323:0;';\\n }\\n command += '7222:0;12104:1';\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":9,\"Order\":16},\"AvoidResending\":false,\"FollowParentSentType\":true,\"SendingType\":0,\"HasAck\":true,\"HexString\":false,\"Order\":17,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725964966}],"Tags":[{"Id":2085,"Name":"eighteenthCommand","BackendAction":"CommandPriority","Value":"17"}]},{"Id":5304,"Name":"Call Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000'\nvar packetLengt = ''\nvar codec = '0C'\nvar quantityOfCommands = '01'\nvar commandType = '05'\nvar commandSize = ''\nvar command = 'setparam '\n//3020 - Outgoing call in loud speaker (1 active, 0 inactive)\n//13051 - Normal Speaker Volume\n//13052 - Loud Speaker Volume\n//14310 - Call Active Indicator (0 Disabled, 1 Enabled)\n//14240 - Outgoing call Indicator (0 Disabled, 1 Enabled)\n//14030 - Incoming call Indicator (0 Disabled, 1 Enabled)\nif (params.CallSettings.OneWayCall == 'true') {\n command += '3020:1;13052:0;13051:0;14310:0;14240:0;14030:0'\n} else {\n command += '3020:0;13052:50;13051:50;14310:1;14240:1:14030:1'\n}\nvar commandSMS = ''\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\n} else {\n commandSMS = ` ${command}`\n}\ncommand = ascii_to_hexa(command)\nvar commandEndSymbol = '0D0A'\nvar quantityOfCommands = '01'\nvar CRC = ''\nx = (command.length + commandEndSymbol.length) / 2\ny = (('00000000' + x.toString(16)).slice(-8))\ncommandSize = y\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\ny2 = (('00000000' + x2.toString(16)).slice(-8))\npacketLengt = y2\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":20,"SendAttempts":2,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5304,\"Name\":\"Call Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000'\\nvar packetLengt = ''\\nvar codec = '0C'\\nvar quantityOfCommands = '01'\\nvar commandType = '05'\\nvar commandSize = ''\\nvar command = 'setparam '\\n//3020 - Outgoing call in loud speaker (1 active, 0 inactive)\\n//13051 - Normal Speaker Volume\\n//13052 - Loud Speaker Volume\\n//14310 - Call Active Indicator (0 Disabled, 1 Enabled)\\n//14240 - Outgoing call Indicator (0 Disabled, 1 Enabled)\\n//14030 - Incoming call Indicator (0 Disabled, 1 Enabled)\\nif (params.CallSettings.OneWayCall == 'true') {\\n command += '3020:1;13052:0;13051:0;14310:0;14240:0;14030:0'\\n} else {\\n command += '3020:0;13052:50;13051:50;14310:1;14240:1:14030:1'\\n}\\nvar commandSMS = ''\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\\n} else {\\n commandSMS = ` ${command}`\\n}\\ncommand = ascii_to_hexa(command)\\nvar commandEndSymbol = '0D0A'\\nvar quantityOfCommands = '01'\\nvar CRC = ''\\nx = (command.length + commandEndSymbol.length) / 2\\ny = (('00000000' + x.toString(16)).slice(-8))\\ncommandSize = y\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\ny2 = (('00000000' + x2.toString(16)).slice(-8))\\npacketLengt = y2\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":20,\"SendAttempts\":2,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725901331},{"Type":1,"NewValue":"{\"Id\":5304,\"Name\":\"Call Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000'\\nvar packetLengt = ''\\nvar codec = '0C'\\nvar quantityOfCommands = '01'\\nvar commandType = '05'\\nvar commandSize = ''\\nvar command = 'setparam '\\n//3020 - Outgoing call in loud speaker (1 active, 0 inactive)\\n//13051 - Normal Speaker Volume\\n//13052 - Loud Speaker Volume\\n//14310 - Call Active Indicator (0 Disabled, 1 Enabled)\\n//14240 - Outgoing call Indicator (0 Disabled, 1 Enabled)\\n//14030 - Incoming call Indicator (0 Disabled, 1 Enabled)\\nif (params.CallSettings.OneWayCall == 'true') {\\n command += '3020:1;13052:0;13051:0;14310:0;14240:0;14030:0'\\n} else {\\n command += '3020:1;13052:' + `${params.DeviceVolume.DeviceVolumeLevel}` + ';13051:' + `${params.DeviceVolume.DeviceVolumeLevel}` + ';14310:1;14240:1:14030:1'\\n}\\nvar commandSMS = ''\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\\n} else {\\n commandSMS = ` ${command}`\\n}\\ncommand = ascii_to_hexa(command)\\nvar commandEndSymbol = '0D0A'\\nvar quantityOfCommands = '01'\\nvar CRC = ''\\nx = (command.length + commandEndSymbol.length) / 2\\ny = (('00000000' + x.toString(16)).slice(-8))\\ncommandSize = y\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\ny2 = (('00000000' + x2.toString(16)).slice(-8))\\npacketLengt = y2\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":20,\"SendAttempts\":2,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725901772},{"Type":1,"NewValue":"{\"Id\":5304,\"Name\":\"Call Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000'\\nvar packetLengt = ''\\nvar codec = '0C'\\nvar quantityOfCommands = '01'\\nvar commandType = '05'\\nvar commandSize = ''\\nvar command = 'setparam '\\n//3020 - Outgoing call in loud speaker (1 active, 0 inactive)\\n//13051 - Normal Speaker Volume\\n//13052 - Loud Speaker Volume\\n//14310 - Call Active Indicator (0 Disabled, 1 Enabled)\\n//14240 - Outgoing call Indicator (0 Disabled, 1 Enabled)\\n//14030 - Incoming call Indicator (0 Disabled, 1 Enabled)\\nif (params.CallSettings.OneWayCall == 'true') {\\n command += '3020:1;13052:0;13051:0;14310:0;14240:0;14030:0'\\n} else {\\n command += '3020:1;13052:' + `${params.DeviceVolume.DeviceVolumeLevel}` + ';13051:' + `${params.DeviceVolume.DeviceVolumeLevel}` + ';14310:1;14240:1:14030:1'\\n}\\nvar commandSMS = ''\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\\n} else {\\n commandSMS = ` ${command}`\\n}\\ncommand = ascii_to_hexa(command)\\nvar commandEndSymbol = '0D0A'\\nvar quantityOfCommands = '01'\\nvar CRC = ''\\nx = (command.length + commandEndSymbol.length) / 2\\ny = (('00000000' + x.toString(16)).slice(-8))\\ncommandSize = y\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\ny2 = (('00000000' + x2.toString(16)).slice(-8))\\npacketLengt = y2\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":20,\"SendAttempts\":2,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725964798},{"Type":1,"NewValue":"{\"Id\":5304,\"Name\":\"Call Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000'\\nvar packetLengt = ''\\nvar codec = '0C'\\nvar quantityOfCommands = '01'\\nvar commandType = '05'\\nvar commandSize = ''\\nvar command = 'setparam '\\n//3020 - Outgoing call in loud speaker (1 active, 0 inactive)\\n//13051 - Normal Speaker Volume\\n//13052 - Loud Speaker Volume\\n//14310 - Call Active Indicator (0 Disabled, 1 Enabled)\\n//14240 - Outgoing call Indicator (0 Disabled, 1 Enabled)\\n//14030 - Incoming call Indicator (0 Disabled, 1 Enabled)\\nlet audioVolume = params.DeviceVolume.DeviceVolumeLevel ? params.DeviceVolume.DeviceVolumeLevel : 100;\\nif (params.CallSettings.OneWayCall == 'true') {\\n command += '3020:1;13052:0;13051:0;14310:0;14240:0;14030:0'\\n} else {\\n command += '3020:1;13052:' + `${audioVolume}` + ';13051:' + `${audioVolume}` + ';14310:1;14240:1:14030:1'\\n}\\nvar commandSMS = ''\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\\n} else {\\n commandSMS = ` ${command}`\\n}\\ncommand = ascii_to_hexa(command)\\nvar commandEndSymbol = '0D0A'\\nvar quantityOfCommands = '01'\\nvar CRC = ''\\nx = (command.length + commandEndSymbol.length) / 2\\ny = (('00000000' + x.toString(16)).slice(-8))\\ncommandSize = y\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\ny2 = (('00000000' + x2.toString(16)).slice(-8))\\npacketLengt = y2\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":20,\"SendAttempts\":2,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1730114570}],"Tags":[{"Id":2080,"Name":"twentyfirstCommand","BackendAction":"CommandPriority","Value":"20"}]},{"Id":5303,"Name":"Get Info","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'getinfo';\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":13,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5303,\"Name\":\"Get Info\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'getinfo';\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":13,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965018}],"Tags":[{"Id":2086,"Name":"fourteenthCommand","BackendAction":"CommandPriority","Value":"13"}]},{"Id":5302,"Name":"Movement","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"var configs = [];\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nif (params.Movement.EnableDisableMovement === \"false\") {\n command += '12106:0';\n} else if (params.Movement.EnableDisableMovement === \"true\") {\n command += '12106:1;12108:0' + ';12107:' + params.Movement.Timeout;\n}\nif (params.NoMovement.EnableDisableNoMovement === \"false\") {\n command += '12106:0';\n} else if (params.NoMovement.EnableDisableNoMovement === \"true\") {\n command += '12106:1;12108:1' + ';12107:' + params.NoMovement.Timeout; + '12109:' + params.NoMovement.PreAlarm;\n}\ncommand = ascii_to_hexa(command);\n//var command = ascii_to_hexa('setparam 1170:1;1171:1;1172:+447845658205')\n//var command = ascii_to_hexa('getinfo')\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\n//console.log(x)\ny = (('00000000' + x.toString(16)).slice(-8));\n//console.log(y)\ncommandSize = y;\n//console.log(commandSize.length)\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\n//console.log(x2)\ny2 = (('00000000' + x2.toString(16)).slice(-8));\n//console.log(y2)\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\n//prueba = hexStringToString('0C010500000009676574696E666F0D0A01')\n//console.log(CRC16(prueba).toString(16).toUpperCase())\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\n//console.log(message)\nAddValue(\"data\", message);\n//AddValue(\"data\", 'test');\n//msg.push(message);\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}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":19,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5302,\"Name\":\"Movement\",\"TemplateSMS\":null,\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.Movement.EnableDisableMovement === \\\"false\\\") {\\n command += '12106:0';\\n} else if (params.Movement.EnableDisableMovement === \\\"true\\\") {\\n command += '12106:1;12108:0' + ';12107:' + params.Movement.Timeout;\\n}\\nif (params.NoMovement.EnableDisableNoMovement === \\\"false\\\") {\\n command += '12106:0';\\n} else if (params.NoMovement.EnableDisableNoMovement === \\\"true\\\") {\\n command += '12106:1;12108:1' + ';12107:' + params.NoMovement.Timeout; + '12109:' + params.NoMovement.PreAlarm;\\n}\\ncommand = ascii_to_hexa(command);\\n//var command = ascii_to_hexa('setparam 1170:1;1171:1;1172:+447845658205')\\n//var command = ascii_to_hexa('getinfo')\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\n//console.log(x)\\ny = (('00000000' + x.toString(16)).slice(-8));\\n//console.log(y)\\ncommandSize = y;\\n//console.log(commandSize.length)\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\n//console.log(x2)\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\n//console.log(y2)\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\n//prueba = hexStringToString('0C010500000009676574696E666F0D0A01')\\n//console.log(CRC16(prueba).toString(16).toUpperCase())\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\n//console.log(message)\\nAddValue(\\\"data\\\", message);\\n//AddValue(\\\"data\\\", 'test');\\n//msg.push(message);\\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}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":19,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965150},{"Type":1,"NewValue":"{\"Id\":5302,\"Name\":\"Movement\",\"TemplateSMS\":null,\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\n//enable scario settings if either params is true\\nif (params.Movement.EnableDisableMovement === \\\"true\\\" || params.NoMovement.EnableDisableNoMovement === \\\"true\\\") {\\n command += '12106:1;';\\n if (params.Movement.EnableDisableMovement === \\\"true\\\") {\\n command += '12108:0' + ';12107:' + params.Movement.Timeout;\\n } else if (params.NoMovement.EnableDisableNoMovement === \\\"true\\\") {\\n command += '12108:1' + ';12107:' + params.NoMovement.Timeout; + '12109:' + params.NoMovement.PreAlarm;\\n }\\n} else {\\n command += '12106:0'; //disable movement/no movement scenario\\n}\\ncommand = ascii_to_hexa(command);\\n//var command = ascii_to_hexa('setparam 1170:1;1171:1;1172:+447845658205')\\n//var command = ascii_to_hexa('getinfo')\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\n//console.log(x)\\ny = (('00000000' + x.toString(16)).slice(-8));\\n//console.log(y)\\ncommandSize = y;\\n//console.log(commandSize.length)\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\n//console.log(x2)\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\n//console.log(y2)\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\n//prueba = hexStringToString('0C010500000009676574696E666F0D0A01')\\n//console.log(CRC16(prueba).toString(16).toUpperCase())\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\n//console.log(message)\\nAddValue(\\\"data\\\", message);\\n//AddValue(\\\"data\\\", 'test');\\n//msg.push(message);\\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}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":19,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728916105}],"Tags":[{"Id":2091,"Name":"eleventhCommand","BackendAction":"CommandPriority","Value":"19"}]},{"Id":5301,"Name":"Speed Dial Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\n//6001: phone number\n//13017: Button 1 behaviour (8 call)\n//13037: Call to\nif (params.SpeedDialButton.EnableDisableSpeedDialButton == 'true') {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n} else {\n command += '6001:;13017:0';\n}\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":24,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5301,\"Name\":\"Speed Dial Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\n//6001: phone number\\n//13017: Button 1 behaviour (8 call)\\n//13037: Call to\\nif (params.SpeedDialButton.EnableDisableSpeedDialButton == 'true') {\\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\\n} else {\\n command += '6001:;13017:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":24,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965565}],"Tags":[{"Id":2099,"Name":"twentyfifthCommand","BackendAction":"CommandPriority","Value":"24"}]},{"Id":5300,"Name":"White List","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nvar count = 4000;\nfor (var contact in params.WhiteList) {\n command += count + ':' + params.WhiteList[contact].Number + ';';\n count++;\n}\n//Delete last character\ncommand = command.slice(0, -1);\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":25,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5300,\"Name\":\"White List\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nvar count = 4000;\\nfor (var contact in params.WhiteList) {\\n command += count + ':' + params.WhiteList[contact].Number + ';';\\n count++;\\n}\\n//Delete last character\\ncommand = command.slice(0, -1);\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":25,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965596}],"Tags":[{"Id":2100,"Name":"twentysixthCommand","BackendAction":"CommandPriority","Value":"25"}]},{"Id":5299,"Name":"OverSpeeding Options","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nif (params.OverSpeedingSettings.EnableDisableOverSpeedingSettings == 'true') {\n command += '11100:2';\n if (params.OverSpeedingSettings.MaxSpeed) {\n command += ';11104:' + Math.round(params.OverSpeedingSettings.MaxSpeed / 3.6);\n }\n} else {\n command += '11100:0';\n}\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\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}\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":21,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5299,\"Name\":\"OverSpeeding Options\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.OverSpeedingSettings.EnableDisableOverSpeedingSettings == 'true') {\\n command += '11100:2';\\n if (params.OverSpeedingSettings.MaxSpeed) {\\n command += ';11104:' + Math.round(params.OverSpeedingSettings.MaxSpeed / 3.6);\\n }\\n} else {\\n command += '11100:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\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}\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":21,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965170}],"Tags":[{"Id":2092,"Name":"twentysecondCommand","BackendAction":"CommandPriority","Value":"21"}]},{"Id":5298,"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":4,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5298,\"Name\":\"Initialise from Factory Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n var zero = '00000000';\\n var packetLengt = '';\\n var codec = '0C';\\n var quantityOfCommands = '01';\\n var commandType = '05';\\n var commandSize = '';\\n command = '';\\n command = 'setparam ';\\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\\n command += '13050:100;'; //13050(Indication Vloume %), \\n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\\n if (params.CallSettings.OneWayCall == 'true') {\\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n } else {\\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n }\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \\n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \\n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \\n if (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n command += '13020:25;13021:26;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n } else {\\n command += '13020:0;13021:0;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n }\\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \\\"true\\\") {\\n command += '13019:2;13022:3;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n } else {\\n command += '13019:0;13022:0;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n }\\n if (params.ReportPositionByButton.ReportPositionByButton === \\\"true\\\") {\\n command += '13048:2;13049:16;';\\n } else {\\n command += '13049:0;';\\n }\\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \\\"true\\\") {\\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\\n } else {\\n command += '6001:;13017:0;';\\n }\\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\\n command = ascii_to_hexa(command);\\n var commandEndSymbol = '0D0A'\\n var quantityOfCommands = '01'\\n var CRC = ''\\n x = (command.length + commandEndSymbol.length) / 2\\n y = (('00000000' + x.toString(16)).slice(-8))\\n commandSize = y\\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\n y2 = (('00000000' + x2.toString(16)).slice(-8))\\n packetLengt = y2\\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\n}\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":4,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965096},{"Type":1,"NewValue":"{\"Id\":5298,\"Name\":\"Initialise from Factory Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n var zero = '00000000';\\n var packetLengt = '';\\n var codec = '0C';\\n var quantityOfCommands = '01';\\n var commandType = '05';\\n var commandSize = '';\\n command = '';\\n command = 'setparam ';\\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\\n command += '13050:100;'; //13050(Indication Vloume %), \\n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\\n command += '136:2'; //Beacon record: No Send\\n command += '13023:29'; //13023(Button3 1 Click):30(On DemandTRacking On)\\n if (params.CallSettings.OneWayCall == 'true') {\\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n } else {\\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n }\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \\n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \\n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \\n if (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n command += '13020:25;13021:26;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n } else {\\n command += '13020:0;13021:0;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n }\\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \\\"true\\\") {\\n command += '13019:2;13022:3;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n } else {\\n command += '13019:0;13022:0;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n }\\n if (params.ReportPositionByButton.ReportPositionByButton === \\\"true\\\") {\\n command += '13048:2;13049:16;';\\n } else {\\n command += '13049:0;';\\n }\\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \\\"true\\\") {\\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\\n } else {\\n command += '6001:;13017:0;';\\n }\\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\\n command = ascii_to_hexa(command);\\n var commandEndSymbol = '0D0A'\\n var quantityOfCommands = '01'\\n var CRC = ''\\n x = (command.length + commandEndSymbol.length) / 2\\n y = (('00000000' + x.toString(16)).slice(-8))\\n commandSize = y\\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\n y2 = (('00000000' + x2.toString(16)).slice(-8))\\n packetLengt = y2\\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\n}\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":4,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728300037}],"Tags":[{"Id":2090,"Name":"fifthCommand","BackendAction":"CommandPriority","Value":"4"}]},{"Id":5297,"Name":"SOS Options","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nif (params.SOSSettings.SOSNumber) {\n command += '6000:' + params.SOSSettings.SOSNumber;\n command += ';4198:' + params.SOSSettings.SOSNumber;\n command += ';11711:1;4199:+447781482635;';\n}\nif (params.SOSSettings.SOSAction == '0') {\n command += '11712:1;12105:1;606:1;';\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n}\nif (params.SOSSettings.SOSAction == '1') {\n command += '11712:0;12105:0;606:0;605:0';\n}\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":11,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5297,\"Name\":\"SOS Options\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.SOSSettings.SOSNumber) {\\n command += '6000:' + params.SOSSettings.SOSNumber;\\n command += ';4198:' + params.SOSSettings.SOSNumber;\\n command += ';11711:1;4199:+447781482635;';\\n}\\nif (params.SOSSettings.SOSAction == '0') {\\n command += '11712:1;12105:1;606:1;';\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n}\\nif (params.SOSSettings.SOSAction == '1') {\\n command += '11712:0;12105:0;606:0;605:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":11,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965538}],"Tags":[{"Id":2098,"Name":"twelfthCommand","BackendAction":"CommandPriority","Value":"11"}]},{"Id":5296,"Name":"Amber Alert Options","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nif (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n //13020 - Button 2. 1 click (25 - Amber Alert On)`\n //13021 - Button 2. 2 click (26 - Amber Alert Off)\n command += '13020:25;13021:26;';\n //14420 - Key 2 Action Activated(1-Enabled), 14430 - Key 2 Action Deactivated(1-Enabled)\n command += '14420:1;14430:1';\n //603-Order Priority. 1(Record)\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n} else if (params.AmberAlert.EnableDisableAmberAlert === \"false\") {\n command += '13020:0;13021:0;';\n}\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":12,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5296,\"Name\":\"Amber Alert Options\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n //13020 - Button 2. 1 click (25 - Amber Alert On)`\\n //13021 - Button 2. 2 click (26 - Amber Alert Off)\\n command += '13020:25;13021:26;';\\n //14420 - Key 2 Action Activated(1-Enabled), 14430 - Key 2 Action Deactivated(1-Enabled)\\n command += '14420:1;14430:1';\\n //603-Order Priority. 1(Record)\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n} else if (params.AmberAlert.EnableDisableAmberAlert === \\\"false\\\") {\\n command += '13020:0;13021:0;';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":12,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725964547},{"Type":1,"NewValue":"{\"Id\":5296,\"Name\":\"Amber Alert Options\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n //13020 - Button 2. 1 click (25 - Amber Alert On)`\\n //13021 - Button 2. 2 click (26 - Amber Alert Off)\\n command += '13020:25;13021:26;';\\n //14420 - Key 2 Action Activated(1-Enabled), 14430 - Key 2 Action Deactivated(1-Enabled)\\n command += '14420:1;14430:1';\\n //603-Order Priority. 1(Record)\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:1;';\\n } else {\\n command += '607:0;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n command += '606:1;';\\n } else {\\n command += '605:0;';\\n command += '606:0;'; // no alarm call\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n} else if (params.AmberAlert.EnableDisableAmberAlert === \\\"false\\\") {\\n command += '13020:0;13021:0;';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":12,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728472110},{"Type":1,"NewValue":"{\"Id\":5296,\"Name\":\"Amber Alert Options\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n //13020 - Button 2. 1 click (25 - Amber Alert On)`\\n //13021 - Button 2. 2 click (26 - Amber Alert Off)\\n command += '13020:25;13021:26;';\\n //14420 - Key 2 Action Activated(1-Enabled), 14430 - Key 2 Action Deactivated(1-Enabled)\\n command += '14420:1;14430:1';\\n //603-Order Priority. 1(Record)\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:1;';\\n } else {\\n command += '607:0;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n command += '606:1;';\\n } else {\\n command += '605:0;';\\n command += '606:0;'; // no alarm call\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n} else if (params.AmberAlert.EnableDisableAmberAlert === \\\"false\\\") {\\n command += '13020:0;13021:0;';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":12,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728473538}],"Tags":[{"Id":2077,"Name":"thirteenthCommand","BackendAction":"CommandPriority","Value":"12"}]},{"Id":5295,"Name":"Report Position By Button","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = '';\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\n //Configure the Button to send position. Configure also the vibration when pressed\n command = 'setparam 13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\n} else {\n command = 'setparam 13049:0';\n}\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":23,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5295,\"Name\":\"Report Position By Button\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = '';\\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\\n //Configure the Button to send position. Configure also the vibration when pressed\\n command = 'setparam 13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\\n} else {\\n command = 'setparam 13049:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":23,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965509},{"Type":1,"NewValue":"{\"Id\":5295,\"Name\":\"Report Position By Button\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = '';\\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\\n //Configure the Button to send position. Configure also the vibration when pressed\\n //setparam 13048:2;13049:16 configures the Button IO Feature, not the button itself, should be: 13023:14\\n // command = 'setparam 13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\\n command = '13023:14;14440:1;14442:5;14443:1;14444:1000;14445:300;14446:300;14447:1';\\n} else {\\n command = 'setparam 13049:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":23,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1727196199},{"Type":1,"NewValue":"{\"Id\":5295,\"Name\":\"Report Position By Button\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = '';\\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\\n //Configure the Button to send position. Configure also the vibration when pressed\\n //setparam 13048:2;13049:16 configures the Button IO Feature, not the button itself, should be: 13023:14\\n // command = 'setparam 13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\\n command = 'setparam 13023:14;14440:1;14442:5;14443:1;14444:1000;14445:300;14446:300;14447:1';\\n} else {\\n command = 'setparam 13049:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":23,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1727197226},{"Type":1,"NewValue":"{\"Id\":5295,\"Name\":\"Report Position By Button\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = '';\\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\\n //Configure the Button to send position. Configure also the vibration when pressed\\n //setparam 13048:2;13049:16 configures the Button IO Feature, not the button itself, should be: 13023:14\\n // command = 'setparam 13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\\n command = 'setparam 13023:11;14440:1;14442:5;14443:1;14444:1000;14445:300;14446:300;14447:1';\\n} else {\\n command = 'setparam 13049:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":23,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1727197539},{"Type":1,"NewValue":"{\"Id\":5295,\"Name\":\"Report Position By Button\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = '';\\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\\n //Configure the Button to send position. Configure also the vibration when pressed\\n //setparam 13048:2;13049:16 configures the Button IO Feature, not the button itself, should be: 13023:14\\n // command = 'setparam 13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\\n command = '13023:16;14440:1;14442:5;14443:1;14444:1000;14445:300;14446:300;14447:1';\\n} else {\\n command = 'setparam 13049:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":23,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1727774996},{"Type":1,"NewValue":"{\"Id\":5295,\"Name\":\"Report Position By Button\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = '';\\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\\n //Configure the Button to send position. Configure also the vibration when pressed\\n //setparam 13048:2;13049:16 configures the Button IO Feature, not the button itself, should be: 13023:14\\n // command = 'setparam 13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\\n command = '13023:14;14440:1;14442:5;14443:1;14444:1000;14445:300;14446:300;14447:1';\\n} else {\\n command = 'setparam 13049:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":23,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1727775197},{"Type":1,"NewValue":"{\"Id\":5295,\"Name\":\"Report Position By Button\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = '';\\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\\n //Configure the Button to send position. Configure also the vibration when pressed\\n //setparam 13048:2;13049:16 configures the Button IO Feature, not the button itself, should be: 13023:29\\n // command = 'setparam 13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\\n command = '13023:29;14440:1;14442:5;14443:1;14444:1000;14445:300;14446:300;14447:1';\\n} else {\\n command = 'setparam 13049:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":23,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728299909},{"Type":1,"NewValue":"{\"Id\":5295,\"Name\":\"Report Position By Button\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\\n //Configure the Button to send position. Configure also the vibration when pressed\\n //setparam 13048:2;13049:16 configures the Button IO Feature, not the button itself, should be: 13023:29\\n // command = 'setparam 13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\\n command += '13023:29;14440:1;14442:5;14443:1;14444:1000;14445:300;14446:300;14447:1';\\n} else {\\n command += '13049:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":23,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728301733},{"Type":1,"NewValue":"{\"Id\":5295,\"Name\":\"Report Position By Button\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\\n command += '13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\\n} else {\\n command += '13049:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":23,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728391825}],"Tags":[{"Id":2096,"Name":"twentyforthCommand","BackendAction":"CommandPriority","Value":"23"}]},{"Id":5294,"Name":"Incoming Call Action","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000'\nvar packetLengt = ''\nvar codec = '0C'\nvar quantityOfCommands = '01'\nvar commandType = '05'\nvar commandSize = ''\nvar command = 'setparam '\nvar vibration = 0;\nvar ringtone = 0;\nvar behaviour = 0;\nif (params.IncomingCalls.Action) {\n command += '3005:' + params.IncomingCalls.Action + ';'\n}\nif (params.IncomingCalls.Vibration == 'true') {\n vibration = 1;\n}\nif (params.IncomingCalls.Ringtone == 'true') {\n ringtone = 2;\n}\nbehaviour = ringtone + vibration\ncommand += '14033:' + behaviour + ';'\nvar commandSMS = ''\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\n} else {\n commandSMS = ` ${command}`\n}\ncommand = ascii_to_hexa(command)\nvar commandEndSymbol = '0D0A'\nvar quantityOfCommands = '01'\nvar CRC = ''\nx = (command.length + commandEndSymbol.length) / 2\ny = (('00000000' + x.toString(16)).slice(-8))\ncommandSize = y\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\ny2 = (('00000000' + x2.toString(16)).slice(-8))\npacketLengt = y2\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":15,"SendAttempts":2,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5294,\"Name\":\"Incoming Call Action\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000'\\nvar packetLengt = ''\\nvar codec = '0C'\\nvar quantityOfCommands = '01'\\nvar commandType = '05'\\nvar commandSize = ''\\nvar command = 'setparam '\\nvar vibration = 0;\\nvar ringtone = 0;\\nvar behaviour = 0;\\nif (params.IncomingCalls.Action) {\\n command += '3005:' + params.IncomingCalls.Action + ';'\\n}\\nif (params.IncomingCalls.Vibration == 'true') {\\n vibration = 1;\\n}\\nif (params.IncomingCalls.Ringtone == 'true') {\\n ringtone = 2;\\n}\\nbehaviour = ringtone + vibration\\ncommand += '14033:' + behaviour + ';'\\nvar commandSMS = ''\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\\n} else {\\n commandSMS = ` ${command}`\\n}\\ncommand = ascii_to_hexa(command)\\nvar commandEndSymbol = '0D0A'\\nvar quantityOfCommands = '01'\\nvar CRC = ''\\nx = (command.length + commandEndSymbol.length) / 2\\ny = (('00000000' + x.toString(16)).slice(-8))\\ncommandSize = y\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\ny2 = (('00000000' + x2.toString(16)).slice(-8))\\npacketLengt = y2\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":15,\"SendAttempts\":2,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965073},{"Type":1,"NewValue":"{\"Id\":5294,\"Name\":\"Incoming Call Action\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000'\\nvar packetLengt = ''\\nvar codec = '0C'\\nvar quantityOfCommands = '01'\\nvar commandType = '05'\\nvar commandSize = ''\\nvar command = 'setparam '\\nvar vibration = 0;\\nvar ringtone = 0;\\nvar behaviour = 0;\\n// enable or disable incoming calls\\nif (params.IncomingCalls.Action) {\\n command += '3005:' + params.IncomingCalls.Action + ';'\\n}\\n// 14030 - Incoming call Indicator (0 Disabled, 1 Enabled)\\nif (params.CallSettings.OneWayCall == 'true') {\\n command += '14030:1;'\\n} else {\\n command += '14030:0;'\\n}\\nif (params.IncomingCalls.Vibration == 'true') {\\n vibration = 1;\\n}\\nif (params.IncomingCalls.Ringtone == 'true') {\\n ringtone = 2;\\n}\\nbehaviour = ringtone + vibration\\ncommand += '14033:' + behaviour + ';'\\nvar commandSMS = ''\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\\n} else {\\n commandSMS = ` ${command}`\\n}\\ncommand = ascii_to_hexa(command)\\nvar commandEndSymbol = '0D0A'\\nvar quantityOfCommands = '01'\\nvar CRC = ''\\nx = (command.length + commandEndSymbol.length) / 2\\ny = (('00000000' + x.toString(16)).slice(-8))\\ncommandSize = y\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\ny2 = (('00000000' + x2.toString(16)).slice(-8))\\npacketLengt = y2\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":15,\"SendAttempts\":2,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728319152},{"Type":1,"NewValue":"{\"Id\":5294,\"Name\":\"Incoming Call Action\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000'\\nvar packetLengt = ''\\nvar codec = '0C'\\nvar quantityOfCommands = '01'\\nvar commandType = '05'\\nvar commandSize = ''\\nvar command = 'setparam '\\nvar vibration = 0;\\nvar ringtone = 0;\\nvar behaviour = 0;\\n// enable or disable incoming calls\\nif (params.IncomingCalls.Action) {\\n command += '3005:' + params.IncomingCalls.Action + ';'\\n}\\n// 14030 - Incoming call Indicator (0 Disabled, 1 Enabled)\\nif (params.CallSettings.OneWayCall == 'true') {\\n command += '14030:0;'\\n} else {\\n command += '14030:1;'\\n}\\nif (params.IncomingCalls.Vibration == 'true') {\\n vibration = 1;\\n}\\nif (params.IncomingCalls.Ringtone == 'true') {\\n ringtone = 2;\\n}\\nbehaviour = ringtone + vibration\\ncommand += '14033:' + behaviour + ';'\\nvar commandSMS = ''\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\\n} else {\\n commandSMS = ` ${command}`\\n}\\ncommand = ascii_to_hexa(command)\\nvar commandEndSymbol = '0D0A'\\nvar quantityOfCommands = '01'\\nvar CRC = ''\\nx = (command.length + commandEndSymbol.length) / 2\\ny = (('00000000' + x.toString(16)).slice(-8))\\ncommandSize = y\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\ny2 = (('00000000' + x2.toString(16)).slice(-8))\\npacketLengt = y2\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":15,\"SendAttempts\":2,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728319497}],"Tags":[{"Id":2089,"Name":"sixteenthCommand","BackendAction":"CommandPriority","Value":"15"}]},{"Id":5293,"Name":"Cycle Interval","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nvar num = 10000;\nvar minPeriod = params.CycleSettings.CycleInterval * 60;\nvar minSavedRecords = 1;\nvar sendPeriod = 60;\nvar minDistance = 0;\nvar minAngle = 0;\nvar minSpeedDelta = 0;\nvar stop = `${num}:${minPeriod};${(num + 4)}:${minSavedRecords};${(num + 5)}:${sendPeriod};`;\nvar moving = `${(num + 50)}:${minPeriod};${(num + 51)}:${minDistance};${(num + 52)}:${minAngle};${(num + 53)}:${minSpeedDelta};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command += stop}`;\n} else {\n commandSMS = ` ${command += stop}`;\n}\ncommand = command.slice(0, -1);\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":27,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5293,\"Name\":\"Cycle Interval\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nvar num = 10000;\\nvar minPeriod = params.CycleSettings.CycleInterval * 60;\\nvar minSavedRecords = 1;\\nvar sendPeriod = 60;\\nvar minDistance = 0;\\nvar minAngle = 0;\\nvar minSpeedDelta = 0;\\nvar stop = `${num}:${minPeriod};${(num + 4)}:${minSavedRecords};${(num + 5)}:${sendPeriod};`;\\n//var moving = `${(num + 50)}:${minPeriod};${(num + 51)}:${minDistance};${(num + 52)}:${minAngle};${(num + 53)}:${minSpeedDelta};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\\nvar moving = `${(num + 50)}:${minPeriod};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command += stop + moving}`;\\n} else {\\n commandSMS = ` ${command += stop + moving}`;\\n}\\ncommand = command.slice(0, -1);\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":27,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725901889},{"Type":1,"NewValue":"{\"Id\":5293,\"Name\":\"Cycle Interval\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nvar num = 10000;\\nvar minPeriod = params.CycleSettings.CycleInterval * 60;\\nvar minSavedRecords = 1;\\nvar sendPeriod = 60;\\nvar minDistance = 0;\\nvar minAngle = 0;\\nvar minSpeedDelta = 0;\\nvar stop = `${num}:${minPeriod};${(num + 4)}:${minSavedRecords};${(num + 5)}:${sendPeriod};`;\\n//var moving = `${(num + 50)}:${minPeriod};${(num + 51)}:${minDistance};${(num + 52)}:${minAngle};${(num + 53)}:${minSpeedDelta};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\\nvar moving = `${(num + 50)}:${minPeriod};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command += stop + moving}`;\\n} else {\\n commandSMS = ` ${command += stop + moving}`;\\n}\\ncommand = command.slice(0, -1);\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":27,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725964852},{"Type":1,"NewValue":"{\"Id\":5293,\"Name\":\"Cycle Interval\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"//params = {\\\"CycleSettings\\\":{\\\"CycleInterval\\\":1},\\\"SMSPassword\\\":{\\\"LoginOld\\\":\\\"1234\\\",\\\"PasswordOld\\\":\\\"1234\\\"}};\\nvar configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nconst STOP_MIN_SAVE_HOME_ID = 10000;\\nconst STOP_MIN_SAVE_ROAMING_ID = 10100;\\nconst STOP_MIN_SAVE_UNKNOWN_ID = 10200;\\nconst MOVING_MIN_SAVE_HOME_ID = 10050;\\nconst MOVING_MIN_SAVE_ROAMING_ID = 10150;\\nconst MOVING_MIN_SAVE_UNKNOWN_ID = 10250;\\nvar minPeriod = params.CycleSettings.CycleInterval * 60;\\nvar minSavedRecords = 1;\\nvar sendPeriod = 60;\\nvar minDistance = 0;\\nvar minAngle = 0;\\nvar minSpeedDelta = 0;\\nconst OPENLINK_TIMEOUT_ID = 1000;\\nconst RESPONSE_TIMEOUT_ID = 1001;\\n// config On Stop for Home, Roaming and Unknown. Note, current SIM uses Unknown\\nvar stopCmd = `${STOP_MIN_SAVE_HOME_ID}:${minPeriod};${(STOP_MIN_SAVE_HOME_ID + 4)}:${minSavedRecords};${(STOP_MIN_SAVE_HOME_ID + 5)}:${sendPeriod};`;\\nstopCmd += `${STOP_MIN_SAVE_ROAMING_ID}:${minPeriod};${(STOP_MIN_SAVE_ROAMING_ID + 4)}:${minSavedRecords};${(STOP_MIN_SAVE_ROAMING_ID + 5)}:${sendPeriod};`;\\nstopCmd += `${STOP_MIN_SAVE_UNKNOWN_ID}:${minPeriod};${(STOP_MIN_SAVE_UNKNOWN_ID + 4)}:${minSavedRecords};${(STOP_MIN_SAVE_UNKNOWN_ID + 5)}:${sendPeriod};`;\\n// config On Moving for Home, Roaming and Unknown\\nvar movingCmd = `${(MOVING_MIN_SAVE_HOME_ID)}:${minPeriod};${(MOVING_MIN_SAVE_HOME_ID + 4)}:${minSavedRecords};${(MOVING_MIN_SAVE_HOME_ID + 5)}:${sendPeriod};`;\\nmovingCmd += `${(MOVING_MIN_SAVE_ROAMING_ID)}:${minPeriod};${(MOVING_MIN_SAVE_ROAMING_ID + 4)}:${minSavedRecords};${(MOVING_MIN_SAVE_ROAMING_ID + 5)}:${sendPeriod};`;\\nmovingCmd += `${(MOVING_MIN_SAVE_UNKNOWN_ID)}:${minPeriod};${(MOVING_MIN_SAVE_UNKNOWN_ID + 4)}:${minSavedRecords};${(MOVING_MIN_SAVE_UNKNOWN_ID + 5)}:${sendPeriod};`;\\n// config OpenLinkTimeout and ResponseTimeout. Not: they need to be smaller than sendPeriod or messages will be mushed together\\nvar grpsSettings = `${OPENLINK_TIMEOUT_ID}:${20};${RESPONSE_TIMEOUT_ID}:${20};`;\\ncommand += stopCmd + movingCmd + grpsSettings;\\n//ToDo: SMS is too long!\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = command.slice(0, -1);\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":27,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1727773311},{"Type":1,"NewValue":"{\"Id\":5293,\"Name\":\"Cycle Interval\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"//params = {\\\"CycleSettings\\\":{\\\"CycleInterval\\\":1},\\\"SMSPassword\\\":{\\\"LoginOld\\\":\\\"1234\\\",\\\"PasswordOld\\\":\\\"1234\\\"}};\\nvar configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nconst STOP_MIN_SAVE_HOME_ID = 10000;\\nconst STOP_MIN_SAVE_ROAMING_ID = 10100;\\nconst STOP_MIN_SAVE_UNKNOWN_ID = 10200;\\nconst MOVING_MIN_SAVE_HOME_ID = 10050;\\nconst MOVING_MIN_SAVE_ROAMING_ID = 10150;\\nconst MOVING_MIN_SAVE_UNKNOWN_ID = 10250;\\nvar minPeriod = params.CycleSettings.CycleInterval * 60;\\nvar minSavedRecords = 1;\\nvar sendPeriod = 60;\\nvar minDistance = 0;\\nvar minAngle = 0;\\nvar minSpeedDelta = 0;\\nconst OPENLINK_TIMEOUT_ID = 1000;\\nconst RESPONSE_TIMEOUT_ID = 1001;\\n// config On Stop for Home, Roaming and Unknown. Note, current SIM uses Unknown\\nvar stopCmd = `${STOP_MIN_SAVE_HOME_ID}:${minPeriod};${(STOP_MIN_SAVE_HOME_ID + 4)}:${minSavedRecords};${(STOP_MIN_SAVE_HOME_ID + 5)}:${sendPeriod};`;\\nstopCmd += `${STOP_MIN_SAVE_ROAMING_ID}:${minPeriod};${(STOP_MIN_SAVE_ROAMING_ID + 4)}:${minSavedRecords};${(STOP_MIN_SAVE_ROAMING_ID + 5)}:${sendPeriod};`;\\nstopCmd += `${STOP_MIN_SAVE_UNKNOWN_ID}:${minPeriod};${(STOP_MIN_SAVE_UNKNOWN_ID + 4)}:${minSavedRecords};${(STOP_MIN_SAVE_UNKNOWN_ID + 5)}:${sendPeriod};`;\\n// config On Moving for Home, Roaming and Unknown\\nvar movingCmd = `${(MOVING_MIN_SAVE_HOME_ID)}:${minPeriod};${(MOVING_MIN_SAVE_HOME_ID + 4)}:${minSavedRecords};${(MOVING_MIN_SAVE_HOME_ID + 5)}:${sendPeriod};`;\\nmovingCmd += `${(MOVING_MIN_SAVE_ROAMING_ID)}:${minPeriod};${(MOVING_MIN_SAVE_ROAMING_ID + 4)}:${minSavedRecords};${(MOVING_MIN_SAVE_ROAMING_ID + 5)}:${sendPeriod};`;\\nmovingCmd += `${(MOVING_MIN_SAVE_UNKNOWN_ID)}:${minPeriod};${(MOVING_MIN_SAVE_UNKNOWN_ID + 4)}:${minSavedRecords};${(MOVING_MIN_SAVE_UNKNOWN_ID + 5)}:${sendPeriod};`;\\n// config OpenLinkTimeout and ResponseTimeout. Note: they need to be smaller than sendPeriod or messages will be mushed together, hardcoe to 30sec\\nvar grpsSettings = `${OPENLINK_TIMEOUT_ID}:${30};${RESPONSE_TIMEOUT_ID}:${30};`;\\ncommand += stopCmd + movingCmd + grpsSettings;\\n//ToDo: SMS is too long!\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = command.slice(0, -1);\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":27,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1727776679},{"Type":1,"NewValue":"{\"Id\":5293,\"Name\":\"Cycle Interval\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"//params = {\\\"CycleSettings\\\":{\\\"CycleInterval\\\":1},\\\"SMSPassword\\\":{\\\"LoginOld\\\":\\\"1234\\\",\\\"PasswordOld\\\":\\\"1234\\\"}};\\nvar configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nconst STOP_MIN_SAVE_HOME_ID = 10000;\\nconst STOP_MIN_SAVE_ROAMING_ID = 10100;\\nconst STOP_MIN_SAVE_UNKNOWN_ID = 10200;\\nconst MOVING_MIN_SAVE_HOME_ID = 10050;\\nconst MOVING_MIN_SAVE_ROAMING_ID = 10150;\\nconst MOVING_MIN_SAVE_UNKNOWN_ID = 10250;\\nvar minPeriod = params.CycleSettings.CycleInterval * 60;\\nvar minStopPeriod = minPeriod * 6;\\nvar minSavedRecords = 1;\\nvar sendPeriod = 60;\\nvar minDistance = 0;\\nvar minAngle = 0;\\nvar minSpeedDelta = 0;\\nconst OPENLINK_TIMEOUT_ID = 1000;\\nconst RESPONSE_TIMEOUT_ID = 1001;\\n// config On Stop for Home, Roaming and Unknown. Note, current SIM uses Unknown\\nvar stopCmd = `${STOP_MIN_SAVE_HOME_ID}:${minStopPeriod};${(STOP_MIN_SAVE_HOME_ID + 4)}:${minSavedRecords};${(STOP_MIN_SAVE_HOME_ID + 5)}:${sendPeriod};`;\\nstopCmd += `${STOP_MIN_SAVE_ROAMING_ID}:${minStopPeriod};${(STOP_MIN_SAVE_ROAMING_ID + 4)}:${minSavedRecords};${(STOP_MIN_SAVE_ROAMING_ID + 5)}:${sendPeriod};`;\\nstopCmd += `${STOP_MIN_SAVE_UNKNOWN_ID}:${minStopPeriod};${(STOP_MIN_SAVE_UNKNOWN_ID + 4)}:${minSavedRecords};${(STOP_MIN_SAVE_UNKNOWN_ID + 5)}:${sendPeriod};`;\\n// config On Moving for Home, Roaming and Unknown\\nvar movingCmd = `${(MOVING_MIN_SAVE_HOME_ID)}:${minPeriod};${(MOVING_MIN_SAVE_HOME_ID + 4)}:${minSavedRecords};${(MOVING_MIN_SAVE_HOME_ID + 5)}:${sendPeriod};`;\\nmovingCmd += `${(MOVING_MIN_SAVE_ROAMING_ID)}:${minPeriod};${(MOVING_MIN_SAVE_ROAMING_ID + 4)}:${minSavedRecords};${(MOVING_MIN_SAVE_ROAMING_ID + 5)}:${sendPeriod};`;\\nmovingCmd += `${(MOVING_MIN_SAVE_UNKNOWN_ID)}:${minPeriod};${(MOVING_MIN_SAVE_UNKNOWN_ID + 4)}:${minSavedRecords};${(MOVING_MIN_SAVE_UNKNOWN_ID + 5)}:${sendPeriod};`;\\n// config OpenLinkTimeout and ResponseTimeout. Note: they need to be smaller than sendPeriod or messages will be mushed together, hardcoe to 30sec\\nvar grpsSettings = `${OPENLINK_TIMEOUT_ID}:${30};${RESPONSE_TIMEOUT_ID}:${30};`;\\ncommand += stopCmd + movingCmd + grpsSettings;\\n//ToDo: SMS is too long!\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = command.slice(0, -1);\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":27,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728922718}],"Tags":[{"Id":2081,"Name":"twentyeighthCommand","BackendAction":"CommandPriority","Value":"27"}]},{"Id":5292,"Name":"Get Version","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'getver';\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":14,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5292,\"Name\":\"Get Version\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'getver';\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":14,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965040}],"Tags":[{"Id":2088,"Name":"fifteenthCommand","BackendAction":"CommandPriority","Value":"14"}]},{"Id":5291,"Name":"Password","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000'\nvar packetLengt = ''\nvar codec = '0C'\nvar quantityOfCommands = '01'\nvar commandType = '05'\nvar commandSize = ''\nvar command = 'setparam '\nif (params.SMSPassword.Login) {\n command += '3003:' + params.SMSPassword.Login + ';'\n} else {\n command += '3003:;'\n}\nif (params.SMSPassword.Password) {\n command += '3004:' + params.SMSPassword.Password + ';'\n} else {\n command += '3004:;'\n}\nvar commandSMS = ''\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\n} else {\n commandSMS = ` ${command}`\n}\ncommand = ascii_to_hexa(command)\nvar commandEndSymbol = '0D0A'\nvar quantityOfCommands = '01'\nvar CRC = ''\nx = (command.length + commandEndSymbol.length) / 2\ny = (('00000000' + x.toString(16)).slice(-8))\ncommandSize = y\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\ny2 = (('00000000' + x2.toString(16)).slice(-8))\npacketLengt = y2\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":21,"SendAttempts":2,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5291,\"Name\":\"Password\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.OverSpeedingSettings.EnableDisableOverSpeedingSettings == 'true') {\\n command += '11100:2';\\n if (params.OverSpeedingSettings.MaxSpeed) {\\n command += ';11104:' + Math.round(params.OverSpeedingSettings.MaxSpeed / 3.6);\\n }\\n} else {\\n command += '11100:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\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}\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":21,\"SendAttempts\":2,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725960641},{"Type":1,"NewValue":"{\"Id\":5291,\"Name\":\"Password\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.OverSpeedingSettings.EnableDisableOverSpeedingSettings == 'true') {\\n command += '11100:2';\\n if (params.OverSpeedingSettings.MaxSpeed) {\\n command += ';11104:' + Math.round(params.OverSpeedingSettings.MaxSpeed / 3.6);\\n }\\n} else {\\n command += '11100:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\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}\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":21,\"SendAttempts\":2,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965198},{"Type":1,"NewValue":"{\"Id\":5291,\"Name\":\"Password\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000'\\nvar packetLengt = ''\\nvar codec = '0C'\\nvar quantityOfCommands = '01'\\nvar commandType = '05'\\nvar commandSize = ''\\nvar command = 'setparam '\\nif (params.SMSPassword.Login) {\\n command += '3003:' + params.SMSPassword.Login + ';'\\n} else {\\n command += '3003:;'\\n}\\nif (params.SMSPassword.Password) {\\n command += '3004:' + params.SMSPassword.Password + ';'\\n} else {\\n command += '3004:;'\\n}\\nvar commandSMS = ''\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\\n} else {\\n commandSMS = ` ${command}`\\n}\\ncommand = ascii_to_hexa(command)\\nvar commandEndSymbol = '0D0A'\\nvar quantityOfCommands = '01'\\nvar CRC = ''\\nx = (command.length + commandEndSymbol.length) / 2\\ny = (('00000000' + x.toString(16)).slice(-8))\\ncommandSize = y\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\ny2 = (('00000000' + x2.toString(16)).slice(-8))\\npacketLengt = y2\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":21,\"SendAttempts\":2,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1727800344}],"Tags":[{"Id":2093,"Name":"twentysecondCommand","BackendAction":"CommandPriority","Value":"21"}]},{"Id":5290,"Name":"APN","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar apnString = params.APNConfig.APN.split(',');\nvar apn = apnString[0];\nvar apn_username = apnString[1];\nvar apn_password = apnString[2];\nvar serverString = params.APNConfig.Server.split(',');\nvar domain = serverString[0];\nvar port = serverString[1];\nvar message = \"\";\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 2001:${apn};2002:${apn_username};2003:${apn_password};2004:${domain};2005:${port};2006:0`;\n} else {\n message = ` setparam 2001:${apn};2002:${apn_username};2003:${apn_password};2004:${domain};2005:${port};2006:0`;\n}\nAddValue(\"data\", message);\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":2,"HasAck":true,"HexString":false,"Order":0,"SendAttempts":4,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5290,\"Name\":\"APN\",\"TemplateSMS\":null,\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar apnString = params.APNConfig.APN.split(',');\\nvar apn = apnString[0];\\nvar apn_username = apnString[1];\\nvar apn_password = apnString[2];\\nvar serverString = params.APNConfig.Server.split(',');\\nvar domain = serverString[0];\\nvar port = serverString[1];\\nvar message = \\\"\\\";\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 2001:${apn};2002:${apn_username};2003:${apn_password};2004:${domain};2005:${port};2006:0`;\\n} else {\\n message = ` setparam 2001:${apn};2002:${apn_username};2003:${apn_password};2004:${domain};2005:${port};2006:0`;\\n}\\nAddValue(\\\"data\\\", message);\\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\":2,\"HasAck\":true,\"HexString\":false,\"Order\":0,\"SendAttempts\":4,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725901259},{"Type":1,"NewValue":"{\"Id\":5290,\"Name\":\"APN\",\"TemplateSMS\":null,\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar apnString = params.APNConfig.APN.split(',');\\nvar apn = apnString[0];\\nvar apn_username = apnString[1];\\nvar apn_password = apnString[2];\\nvar serverString = params.APNConfig.Server.split(',');\\nvar domain = serverString[0];\\nvar port = serverString[1];\\nvar message = \\\"\\\";\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 2001:${apn};2002:${apn_username};2003:${apn_password};2004:${domain};2005:${port};2006:0`;\\n} else {\\n message = ` setparam 2001:${apn};2002:${apn_username};2003:${apn_password};2004:${domain};2005:${port};2006:0`;\\n}\\nAddValue(\\\"data\\\", message);\\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\":2,\"HasAck\":true,\"HexString\":false,\"Order\":0,\"SendAttempts\":4,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725964763}],"Tags":[{"Id":2079,"Name":"firstCommand","BackendAction":"CommandPriority","Value":"0"}]},{"Id":5289,"Name":"Proximity","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"var configs = [];\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = '';\nif (params.Proximity.EnableDisableProximity == 'true') {\n var call = 0;\n if (params.Proximity.Call == 'true') {\n call = 1;\n }\n //If the proximity is active, GPS Sleep mode cannot be active. If proximity is not, we can use GPS Sleep mode to extend battery life\n //320(BT Home Zone):1(Enabled);322(BLE Geofence):4(Proximity);323(Pre-alarm):(s);324(RSSI):(dBm);1115(Non stop scan):(0 dis/ 1 enabled);1100(Update frequency):();1113(BLE Scan duration):();1114(Scan retries until error):();1110(BT Power level):();1111(BLE broadcasting service ID):();1000():();1112(BLE connecton protocol):(0 Prohibit/ 1 allow);325(Generate event):2(On Both);326(Call to):(0 No call/ 1 SOS Numnber);102(Sleep Mode):0(Disabled)\n command = ascii_to_hexa('setparam 320:1;322:4;323:' + params.Proximity.Prealarm + ';324:-72;1115:0;1100:5;1113:5;1114:30;1110:3;1111:1000;1112:0;325:2;326:' + params.Proximity.Call + ';102:0');\n} else {\n //320(BT Home Zone):1(Enabled)\n command = ascii_to_hexa('setparam 320:0');\n}\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\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}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":30,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5289,\"Name\":\"Proximity\",\"TemplateSMS\":null,\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = '';\\nif (params.Proximity.EnableDisableProximity == 'true') {\\n var call = 0;\\n if (params.Proximity.Call == 'true') {\\n call = 1;\\n }\\n //If the proximity is active, GPS Sleep mode cannot be active. If proximity is not, we can use GPS Sleep mode to extend battery life\\n //320(BT Home Zone):1(Enabled);322(BLE Geofence):4(Proximity);323(Pre-alarm):(s);324(RSSI):(dBm);1115(Non stop scan):(0 dis/ 1 enabled);1100(Update frequency):();1113(BLE Scan duration):();1114(Scan retries until error):();1110(BT Power level):();1111(BLE broadcasting service ID):();1000():();1112(BLE connecton protocol):(0 Prohibit/ 1 allow);325(Generate event):2(On Both);326(Call to):(0 No call/ 1 SOS Numnber);102(Sleep Mode):0(Disabled)\\n command = ascii_to_hexa('setparam 320:1;322:4;323:' + params.Proximity.Prealarm + ';324:-72;1115:0;1100:5;1113:5;1114:30;1110:3;1111:1000;1112:0;325:2;326:' + params.Proximity.Call + ';102:0');\\n} else {\\n //320(BT Home Zone):1(Enabled)\\n command = ascii_to_hexa('setparam 320:0');\\n}\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\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}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":30,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965440}],"Tags":[{"Id":2094,"Name":"noUsed","BackendAction":"CommandPriority","Value":"30"}]},{"Id":5288,"Name":"Real Time Location","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"//This command will be sent by SMS\nvar configs = [];\nvar message = \"\";\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} getgps`;\n} else {\n message = \" getgps\";\n}\nAddValue(\"data\", message);\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":2,"HasAck":true,"HexString":false,"Order":22,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5288,\"Name\":\"Real Time Location\",\"TemplateSMS\":null,\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"//This command will be sent by SMS\\nvar configs = [];\\nvar message = \\\"\\\";\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} getgps`;\\n} else {\\n message = \\\" getgps\\\";\\n}\\nAddValue(\\\"data\\\", message);\\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\":2,\"HasAck\":true,\"HexString\":false,\"Order\":22,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965464}],"Tags":[{"Id":2095,"Name":"twentythirdCommand","BackendAction":"CommandPriority","Value":"22"}]},{"Id":5287,"Name":"Delete Records","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar message = \"\"\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} deleterecords`\n} else {\n message = \" deleterecords\"\n}\nAddValue(\"data\", message);\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":2,"HasAck":true,"HexString":false,"Order":3,"SendAttempts":2,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5287,\"Name\":\"Delete Records\",\"TemplateSMS\":null,\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar message = \\\"\\\"\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} deleterecords`\\n} else {\\n message = \\\" deleterecords\\\"\\n}\\nAddValue(\\\"data\\\", message);\\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\":2,\"HasAck\":true,\"HexString\":false,\"Order\":3,\"SendAttempts\":2,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725964910}],"Tags":[{"Id":2083,"Name":"fourthCommand","BackendAction":"CommandPriority","Value":"3"}]},{"Id":5286,"Name":"Pre Config 2","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"//This command will be sent by SMS\nvar configs = [];\nvar message = \"\";\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 10151:0;10152:0;10153:0;10154:1;10155:60;10200:60;10204:1;10205:60;10250:60;10251:0;10252:0;10253:0;10254:1;10255:60;102:0;103:10;`;\n} else {\n message = \" setparam 10151:0;10152:0;10153:0;10154:1;10155:60;10200:60;10204:1;10205:60;10250:60;10251:0;10252:0;10253:0;10254:1;10255:60;102:1;103:10;\";\n}\nAddValue(\"data\", message);\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":2,"HasAck":true,"HexString":false,"Order":2,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5286,\"Name\":\"Pre Config 2\",\"TemplateSMS\":null,\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"//This command will be sent by SMS\\nvar configs = [];\\nvar message = \\\"\\\";\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 10151:0;10152:0;10153:0;10154:1;10155:60;10200:60;10204:1;10205:60;10250:60;10251:0;10252:0;10253:0;10254:1;10255:60;102:0;103:10;`;\\n} else {\\n message = \\\" setparam 10151:0;10152:0;10153:0;10154:1;10155:60;10200:60;10204:1;10205:60;10250:60;10251:0;10252:0;10253:0;10254:1;10255:60;102:1;103:10;\\\";\\n}\\nAddValue(\\\"data\\\", message);\\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\":2,\"HasAck\":true,\"HexString\":false,\"Order\":2,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725962265},{"Type":1,"NewValue":"{\"Id\":5286,\"Name\":\"Pre Config 2\",\"TemplateSMS\":null,\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"//This command will be sent by SMS\\nvar configs = [];\\nvar message = \\\"\\\";\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 10151:0;10152:0;10153:0;10154:1;10155:60;10200:60;10204:1;10205:60;10250:60;10251:0;10252:0;10253:0;10254:1;10255:60;102:0;103:10;`;\\n} else {\\n message = \\\" setparam 10151:0;10152:0;10153:0;10154:1;10155:60;10200:60;10204:1;10205:60;10250:60;10251:0;10252:0;10253:0;10254:1;10255:60;102:1;103:10;\\\";\\n}\\nAddValue(\\\"data\\\", message);\\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\":2,\"HasAck\":true,\"HexString\":false,\"Order\":2,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725962773}],"Tags":[{"Id":2071,"Name":"thirdCommand","BackendAction":"CommandPriority","Value":"2"}]},{"Id":5285,"Name":"Pre Config 1","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"//This command will be sent by SMS\nvar configs = [];\nvar message = \"\";\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 10004:1;10000:60;10005:60;10050:60;10051:0;10052:0;10053:0;10054:1;10055:60;10100:60;10104:1;10105:60;10150:60;10200:60;`;\n} else {\n message = \" setparam 10004:1;10000:60;10005:60;10050:60;10051:0;10052:0;10053:0;10054:1;10055:60;10100:60;10104:1;10105:60;10150:60;10200:60;\";\n}\nAddValue(\"data\", message);\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":2,"HasAck":true,"HexString":false,"Order":1,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5285,\"Name\":\"Pre Config 1\",\"TemplateSMS\":null,\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"//This command will be sent by SMS\\nvar configs = [];\\nvar message = \\\"\\\";\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 10004:1;10000:60;10005:60;10050:60;10051:0;10052:0;10053:0;10054:1;10055:60;10100:60;10104:1;10105:60;10150:60;10200:60;`;\\n} else {\\n message = \\\" setparam 10004:1;10000:60;10005:60;10050:60;10051:0;10052:0;10053:0;10054:1;10055:60;10100:60;10104:1;10105:60;10150:60;10200:60;\\\";\\n}\\nAddValue(\\\"data\\\", message);\\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\":2,\"HasAck\":true,\"HexString\":false,\"Order\":1,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725962210}],"Tags":[{"Id":2070,"Name":"secondCommand","BackendAction":"CommandPriority","Value":"1"}]},{"Id":5284,"Name":"Reboot","TemplateSMS":"","Template":"<>","AckTemplate":null,"Operation":"//This command will be sent by SMS\nvar configs = [];\nvar message = \"\";\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} cpureset`;\n} else {\n message = \" cpureset\";\n}\nAddValue(\"data\", message);\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":2,"HasAck":false,"HexString":false,"Order":29,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5284,\"Name\":\"Reboot\",\"TemplateSMS\":\"\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"//This command will be sent by SMS\\nvar configs = [];\\nvar message = \\\"\\\";\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} cpureset`;\\n} else {\\n message = \\\" cpureset\\\";\\n}\\nAddValue(\\\"data\\\", message);\\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\":2,\"HasAck\":false,\"HexString\":false,\"Order\":29,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965486}],"Tags":[{"Id":2097,"Name":"thitiethCommand","BackendAction":"CommandPriority","Value":"29"}]},{"Id":5283,"Name":"Fall Alarm Options","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \"false\") {\n command += '12100:0;';\n var commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n} else if (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \"true\") {\n if (params.FallAlarmSettings.EnableDisableByButtons == 'true') {\n //Configure Button 1 and button 2 to turn On and Off the feature. Also, the vibration when changed the behaviours.\n command += '12100:0;';\n command += '13019:2;13022:3;';\n } else {\n command += '12100:1;';\n command += '13019:0;13022:0;';\n }\n var commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14390:1;14392:5;14393:1;14391:1;14397:1;14430:1;14432:5;14433:1;14431:1;14437:1;';\n if (params.FallAlarmSettings.Position) {\n command += '12101:' + params.FallAlarmSettings.Position + ';';\n }\n if (params.FallAlarmSettings.Angle) {\n command += '12102:' + params.FallAlarmSettings.Angle + ';';\n }\n if (params.FallAlarmSettings.Timeout) {\n command += '12103:' + params.FallAlarmSettings.Timeout + ';';\n }\n if (params.FallAlarmSettings.SilentPreAlarmDelay) {\n command += '12111:' + params.FallAlarmSettings.SilentPreAlarmDelay + ';';\n }\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:0;14320:0;14173:0;14323:0;';\n }\n command += '7222:0;12104:1';\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":16,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5283,\"Name\":\"Fall Alarm Options\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \\\"false\\\") {\\n command += '12100:0;';\\n var commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n} else if (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \\\"true\\\") {\\n if (params.FallAlarmSettings.EnableDisableByButtons == 'true') {\\n //Configure Button 1 and button 2 to turn On and Off the feature. Also, the vibration when changed the behaviours.\\n command += '12100:0;';\\n command += '13019:2;13022:3;';\\n } else {\\n command += '12100:1;';\\n command += '13019:0;13022:0;';\\n }\\n var commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n command += '14390:1;14392:5;14393:1;14391:1;14397:1;14430:1;14432:5;14433:1;14431:1;14437:1;';\\n if (params.FallAlarmSettings.Position) {\\n command += '12101:' + params.FallAlarmSettings.Position + ';';\\n }\\n if (params.FallAlarmSettings.Angle) {\\n command += '12102:' + params.FallAlarmSettings.Angle + ';';\\n }\\n if (params.FallAlarmSettings.Timeout) {\\n command += '12103:' + params.FallAlarmSettings.Timeout + ';';\\n }\\n if (params.FallAlarmSettings.SilentPreAlarmDelay) {\\n command += '12111:' + params.FallAlarmSettings.SilentPreAlarmDelay + ';';\\n }\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:0;14320:0;14173:0;14323:0;';\\n }\\n command += '7222:0;12104:1';\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":16,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725964938}],"Tags":[{"Id":2084,"Name":"seventeenthCommand","BackendAction":"CommandPriority","Value":"16"}]},{"Id":5314,"Name":"Control Configuration Mode","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"//This command will be sent by SMS\nvar configs = [];\nvar message = \"\";\nif (params.Reboot.Reboot == 'true') {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 10000:60;10004:1;10005:60`; // set cycle to 60 seconds / 1 minute\n} else {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 10000:600;10004:1;10005:600`; // set cycle to 600 seconds / 10 minute\n}\nAddValue(\"data\", message);\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":3,"ProtocolActionObjects":[{"Type":0,"NewValue":"{\"Id\":5314,\"Name\":\"Control Configuration Mode\",\"TemplateSMS\":null,\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"//This command will be sent by SMS\\nvar configs = [];\\nvar message = \\\"\\\";\\nif (params.Reboot.Reboot == 'true') {\\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 10000:60;10004:1;10005:60`; // set cycle to 60 seconds / 1 minute\\n} else {\\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 10000:600;10004:1;10005:600`; // set cycle to 600 seconds / 10 minute\\n}\\nAddValue(\\\"data\\\", message);\\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\":3,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725901472}],"Tags":[]},{"Id":5315,"Name":"Power Off","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"//This command will be sent by SMS\nvar configs = [];\nvar message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} shutdown`; // set cycle to 60 seconds / 1 minute\nAddValue(\"data\", message);\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":2,"HasAck":false,"HexString":false,"Order":null,"SendAttempts":4,"ProtocolActionObjects":[{"Type":0,"NewValue":"{\"Id\":5315,\"Name\":\"Power Off\",\"TemplateSMS\":null,\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"//This command will be sent by SMS\\nvar configs = [];\\nvar message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} shutdown`; // set cycle to 60 seconds / 1 minute\\nAddValue(\\\"data\\\", message);\\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\":2,\"HasAck\":false,\"HexString\":false,\"Order\":null,\"SendAttempts\":4,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725960726}],"Tags":[]}],"Operations":[{"Id":332,"Name":"GH5200","Operation":"if (typeof localTesting === \"undefined\") {\r\n var localTesting = \"False\";\r\n}\r\nvar index = 20;\r\nvar timeout = 1500;\r\nvar fix_state;\r\nvar satelites;\r\nvar latitude;\r\nvar longitude;\r\nvar altitude;\r\nvar speed;\r\nvar event_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\r\nvar location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\r\nvar location_accuracy = \"5000\";\r\nvar onTrackingDemand = false;\r\nvar isSleep = 'false'\r\nvar amber_State = '';\r\nvar amber_Timer = '';\r\nvar movement_Value = '';\r\nvar dataToReceiver = [];\r\nvar codeValues = [];\r\nvar configsToAck = [];\r\n//If the event type matches a global template\r\nif (globalTemplate == \"True\") {\r\n //In case the message is \"STC\" (Start Connection)\r\n if (messageTypeLocalCode == \"STC\") {\r\n var imei = hex_to_ascii(rawFromBytes).slice(2);\r\n AddValue(codeValues, \"imei\", imei);\r\n var c = createConnection(5678, '127.0.0.1');\r\n c.write(`GH5200-STC,${imei},${serverParams.Guid}`);\r\n //Imei is recevied in hex\r\n AddValue(codeValues, \"ack_stc\", \"01\");\r\n c.end();\r\n //In case the message is a codec8 (either codec8 or codec8 Extended)\r\n } else if (messageTypeLocalCode == \"COD8-Global\") {\r\n var ack;\r\n //Get the full hex message in a readable format\r\n var message = rawFromBytes;\r\n var codecID = message.substring(16, 18);\r\n //Get the imei from serverParams\r\n var imei = serverParams.Imei\r\n //Either codec 8 or codec 8 Extended\r\n if (codecID == '08' || codecID == '8E') {\r\n messages = decryptCodec8(message);\r\n var numberOfData = message.substring(18, 20)\r\n // var c = createConnection(5678, '127.0.0.1');\r\n // c.on('data', function(data) {\r\n // var msgLocal = [];\r\n // //if ack ends with OTD, then onTrackingDemand = true\r\n // if (data.toString().endsWith('OTD')) {\r\n // onTrackingDemand = true\r\n // }\r\n // //The device can send more than one event on the same message. In this case, a part of the ack is the number of messages received\r\n // //So, we only ack when we have received the last event of the message.\r\n // if (data.toString().startsWith(`L${messages.length}`)) {\r\n // //In case the event demands a tracking, the ack is the number of data followed by the command on_demand_tracking2 (already encoded)\r\n // if (onTrackingDemand == true) {\r\n // AddValue(msgLocal, 'ack_cod8', `000000${numberOfData}000000000000001D0C0105000000156F6E5F64656D616E645F747261636B696E67320D0A0100002EB9`);\r\n // //Mandatory to push the imei when on a global template\r\n // AddValue(msgLocal, 'imei', imei);\r\n // //Mandatory to do console.log(msg);\r\n // console.log(msgLocal);\r\n // c.end();\r\n // }\r\n // //The device needs to be ack'ed the number of data in 4 bytes\r\n // else {\r\n //Ack with the number of messages received to make the device know that the server understood the full message.\r\n AddValue(codeValues, 'ack_cod8', `000000${numberOfData}`);\r\n //Mandatory to push the imei when on a global template\r\n AddValue(codeValues, 'imei', imei);\r\n //Mandatory to do console.log(msg);\r\n //console.log(msg);\r\n // c.end();\r\n // }\r\n // }\r\n // });\r\n //Internally send all the events on the same message received.\r\n for (let i = 0; i < messages.length; i++) {\r\n //c.write(messages[i]);\r\n connect(5678, messages, i);\r\n //console.log(messages[i]);\r\n }\r\n //In case the message is a codec12 (command ack)\r\n } else if (codecID == '0C') {\r\n var codec12 = decryptCodec12(message)\r\n var c = createConnection(5678, '127.0.0.1');\r\n //Internally send a codec12 message in the homogenous ascii format\r\n c.write(`GH5200-COD12,${serverParams.Imei},${codec12}`);\r\n c.end();\r\n //Because the codec12 message is matched by the same global template than the codec8 message, we need to push \"ack_cod8\" as an empty string.\r\n AddValue(codeValues, 'ack_cod8', '');\r\n //Mandatory to push the imei when on a global template\r\n AddValue(codeValues, 'imei', imei);\r\n }\r\n }\r\n}\r\n//In the case the message is matched by an oystaTemplate\r\nif (oystaTemplate == \"True\") {\r\n //If the message is a decrypted version for start the connection\r\n if (messageTypeLocalCode == \"STC\") {\r\n // stc conditions\r\n AddValue(codeValues, 'ack_stc', '01');\r\n }\r\n //If the message is a codec8 (event not taken into account by us) \r\n else if (messageTypeLocalCode == 'COD8') {\r\n if (params.recordNumber) {\r\n params.recordNumber = parseInt(params.recordNumber) + 1\r\n //Push the record number of each message.\r\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\r\n }\r\n }\r\n //In case the message is Real Time Location\r\n else if (messageTypeLocalCode == \"RTL\") {\r\n //If the message has a gps fix\r\n if (params.gps == \"1\") {\r\n AddValue(codeValues, \"fix_state\", 1)\r\n //Speed to m/s\r\n AddValue(codeValues, \"speed\", params.speed_raw / 3.6)\r\n //Location time to actual time. It is not provided on the message\r\n location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\r\n //Event time to actual time. It is not provided on the message\r\n AddValue(codeValues, \"event_time\", event_time)\r\n AddValue(codeValues, \"location_time\", location_time)\r\n //Hardcoded accuracy of 500. No hdop or satellites are provided on the message\r\n AddValue(codeValues, \"location_accuracy\", 500)\r\n }\r\n //If the message does not have a gps fix, we do not use it as we cannot make sure it is real\r\n else if (params.gps == \"0\") {\r\n AddValue(codeValues, \"fix_state\", 0)\r\n event_time = moment.utc().unix();\r\n location_time = moment.utc().unix();\r\n AddValue(codeValues, \"event_time\", event_time)\r\n AddValue(codeValues, \"location_time\", location_time)\r\n AddValue(codeValues, \"location_accuracy\", 0)\r\n }\r\n }\r\n //If the event is an Alarm or Position By Button, send a flag (ODT) so the device is asked for on_demand_tracking\r\n else if (messageTypeLocalCode == \"PBB\" || messageTypeCode.startsWith('AL')) {\r\n params.recordNumber = parseInt(params.recordNumber) + 1\r\n //Push the record number of each message. If it is a Position by button or any kind of alarm, it needs to be follow by \"ODT\" in order to ask for a tracking\r\n //This is used to make sure the gps is awake. It will solve the error of alarms sent before there is a gps fix\r\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}OTD`);\r\n //If the event is an ack for a SMS command (Redirected from Esendex)\r\n } else if (messageTypeLocalCode.startsWith('ACK-SMS')) {\r\n //No fix state\r\n AddValue(codeValues, \"fix_state\", 0)\r\n //Event and location time to actual time in order to show the messages on the events table\r\n event_time = moment.utc().unix();\r\n location_time = moment.utc().unix();\r\n AddValue(codeValues, \"event_time\", event_time)\r\n AddValue(codeValues, \"location_time\", location_time)\r\n AddValue(codeValues, \"location_accuracy\", 0)\r\n var c = createConnection(5678, '127.0.0.1');\r\n //If the message is a sms ack for a \"normal command\" (this means the ack will start with \"New value \")\r\n if (messageTypeLocalCode == \"ACK-SMS\") {\r\n if (params.smsAck) {\r\n //Add \"-SMS\" at the end so we can differentiate between a sms and grps ack for a command.\r\n var smsAck = params.smsAck + '-SMS;'\r\n // the essendex message the device sends in gets converted here\r\n c.write(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\r\n debug(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\r\n if (!smsAck.startsWith('2001:')) {\r\n //Add tag no commands so no commands are sent to the device after a sms ack. The device will not accept a command after a sms ack. This prevents lots of problems.\r\n AddValue(codeValues, 'no_commands', 'true');\r\n //As it is redirected from Esende, it is mandatroy to push the imei\r\n AddValue(codeValues, 'imei', serverParams.Imei);\r\n }\r\n }\r\n }\r\n //We do not need to send the tag \"no_commands\" on the next 3 message types since we have already checked that option on the message type that matched the Esendex resend.\r\n //If the message is a sms ack for \"Delete Records\". Internally send specific message\r\n if (messageTypeLocalCode == \"ACK-SMS-DR\") {\r\n var smsAck = '-SMS'\r\n c.write(`GH5200-COD12,${serverParams.Imei},All records are erased${smsAck}`);\r\n }\r\n //If the message is a sms ack for \"Get Info\". Internally send specific message\r\n if (messageTypeLocalCode == \"ACK-SMS-GI\") {\r\n if (params.smsAck) {\r\n var smsAck = params.smsAck + '-SMS'\r\n c.write(`GH5200-COD12,${serverParams.Imei},RTC:${smsAck}`);\r\n }\r\n }\r\n //If the message is a sms ack for \"Get Version\". Internally send specific message\r\n if (messageTypeLocalCode == \"ACK-SMS-GV\") {\r\n if (params.smsAck) {\r\n var smsAck = params.smsAck + '-SMS'\r\n c.write(`GH5200-COD12,${serverParams.Imei},Ver:${smsAck}`);\r\n }\r\n }\r\n c.end()\r\n } else if (messageTypeLocalCode.startsWith(\"ACK-ALF\")) {\r\n if (messageTypeLocalCode == \"ACK-ALF\") {\r\n var newAlldata = \"12100:\" + params.alldata;\r\n } else if (messageTypeLocalCode == \"ACK-ALFSMS2\") {\r\n var newAlldata = \"14390:\" + params.alldata;\r\n } else if (messageTypeLocalCode == \"ACK-ALFSMS3\") {\r\n var newAlldata = \"12101:\" + params.alldata;\r\n }\r\n if (newAlldata != null) {\r\n var keyValues = ['12101', '12102', '12103', '12111', '12100', '13019', '13022', '14390', '14392', '14393', '14391', '14397', '14430', '14432', '14433', '14431', '14437', '14170', '14320', '14173', '14323', '7222', '12104'];\r\n var configParamNames = ['FallAlarmSettings.Position', 'FallAlarmSettings.Angle', 'FallAlarmSettings.Timeout', 'FallAlarmSettings.SilentPreAlarmDelay', 'FallAlarmSettings.EnableDisableFallAlarmSettings', 'FallAlarmSettings.EnableDisableByButtons', 'FallAlarmSettings.EnableDisableByButtons', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'FallAlarmSettings.Indication', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed'];\r\n var ackSMSArray = newAlldata.split(';');\r\n var findIndexOfBlankSMS = ackSMSArray.findIndex(element => element.includes(\"-SMS\"));\r\n if (ackSMSArray[findIndexOfBlankSMS] === \"-SMS\") {\r\n ackSMSArray.pop()\r\n }\r\n AddValue(codeValues, \"imei\", serverParams.Imei);\r\n for (let i = 0; i < ackSMSArray.length; i++) {\r\n var keyId = ackSMSArray[i].split(':')[0]; // id of the param saved in the array\r\n var keyValue = ackSMSArray[i].split(':')[1]; // value of the param \r\n var findIndex = keyValues.indexOf(keyId)\r\n if (configParamNames[findIndex] != \"No-Ack-Needed\") {\r\n var intellicareDataSetValue = eval('configs' + '.' + configParamNames[findIndex])\r\n if (configParamNames[findIndex] == \"FallAlarmSettings.EnableDisableFallAlarmSettings\") {\r\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\r\n if (intellicareDataSetValue == \"true\") {\r\n intellicareDataSetValue = \"1\"\r\n } else {\r\n intellicareDataSetValue = \"0\"\r\n }\r\n // if enableDisableByButtonsIndex is unchecked then overwrite the EnableDisableFallAlarmSettings value\r\n var enableDisableByButtonsIndex = ackSMSArray.findIndex(element => element.includes(\"13019\" || \"13022\"));\r\n var valueOfenableDisableByButtons = ackSMSArray[enableDisableByButtonsIndex].slice(-1)\r\n if (valueOfenableDisableByButtons != \"0\") {\r\n intellicareDataSetValue = \"0\"\r\n }\r\n }\r\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\r\n if (configParamNames[findIndex] == \"FallAlarmSettings.EnableDisableByButtons\") {\r\n if (intellicareDataSetValue == \"true\") {\r\n if (keyId == \"13019\") {\r\n intellicareDataSetValue = \"2\"\r\n } else if (keyId == \"13022\") {\r\n intellicareDataSetValue = \"3\"\r\n }\r\n } else {\r\n intellicareDataSetValue = \"0\"\r\n }\r\n }\r\n if (keyValue == intellicareDataSetValue) {\r\n configsToAck.push(eval('configIds' + '.' + configParamNames[findIndex]))\r\n debug(\"Matched values of param\" + configParamNames[findIndex]);\r\n } else {\r\n debug(\"Not matched values of param\" + configParamNames[findIndex]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n //If the message is an ack, push the needed information to appear on the UI events.\r\n else if (messageTypeLocalCode.startsWith('ACK-')) {\r\n AddValue(codeValues, \"fix_state\", 0)\r\n event_time = moment.utc().unix();\r\n location_time = moment.utc().unix();\r\n AddValue(codeValues, \"event_time\", event_time)\r\n AddValue(codeValues, \"location_time\", location_time)\r\n AddValue(codeValues, \"location_accuracy\", 0)\r\n }\r\n //If the message is a decrypted version for codec8. This will include Cycles, and all the rest of messages not represented on the else if before \r\n else {\r\n params.recordNumber = parseInt(params.recordNumber) + 1\r\n //Push the record number of each message.\r\n //AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\r\n }\r\n}\r\nif (configsToAck.length > 0) {\r\n var dataToReceiver = {\r\n 'values': codeValues,\r\n 'configsToAck': configsToAck,\r\n };\r\n} else {\r\n var dataToReceiver = {\r\n 'values': codeValues\r\n };\r\n}\r\nconsole.log(dataToReceiver);\r\n/**\r\n * Decrypt Codec 12 messages from hexadecimal to ascii\r\n * @param {String} message Hexadecimal message\r\n * @return {String} Ascii message\r\n */\r\nfunction decryptCodec12(message) {\r\n var decoded = '';\r\n var data12 = message.slice(30, -10);\r\n data12 = hex_to_ascii(data12);\r\n return data12;\r\n}\r\n/**\r\n * Decrypt Codec 12 messages from hexadecimal to ascii\r\n * @param {String} message Hexadecimal message\r\n * @return {Array} Array of Ascii messages\r\n */\r\nfunction decryptCodec8(message) {\r\n //Initialise variables\r\n var decoded = '';\r\n var codecID = message.substring(16, 18);\r\n decoded += codecID + ';';\r\n var numberOfData = message.substring(18, 20);\r\n decoded += numberOfData + ';';\r\n var records = [];\r\n var prox = 0;\r\n //Loop number of events on a message times\r\n for (i = 0; i < hexToDecimal(numberOfData); i++) {\r\n //Initialise and transform variables\r\n isSleep = 'false'\r\n amber_State = '';\r\n amber_Timer = '';\r\n var decoded_final = '';\r\n var record = '';\r\n var timestamp = message.substring(index, index += 16);\r\n timestamp = hexToDecimal(timestamp).toString().slice(0, -3)\r\n timestamp = parseInt(timestamp, 10);\r\n var priority = message.substring(index, index += 2);\r\n var longitude = message.substring(index, index += 8);\r\n longitude = hexToDecimalSigned(longitude) / 10000000;\r\n var latitude = message.substring(index, index += 8);\r\n latitude = hexToDecimalSigned(latitude) / 10000000;\r\n var altitude = message.substring(index, index += 4);\r\n altitude = hexToDecimalSigned(altitude);\r\n var angle = message.substring(index, index += 4);\r\n angle = hexToDecimalSigned(angle);\r\n var satelites = message.substring(index, index += 2);\r\n satelites = hexToDecimal(satelites);\r\n var speed = message.substring(index, index += 4);\r\n //Speed to m/s\r\n speed = (hexToDecimal(speed) / 3.6).toFixed(2)\r\n //If the message is a codec 8\r\n if (codecID == '8E') {\r\n var ioEvent = message.substring(index, index += 4);\r\n var ioElementsTotal = message.substring(index, index += 4);\r\n }\r\n //If the message is a codec 8 Extended\r\n else if (codecID == '08') {\r\n var ioEvent = message.substring(index, index += 2);\r\n var ioElementsTotal = message.substring(index, index += 2);\r\n }\r\n ioEvent = hexToDecimal(ioEvent);\r\n //Switch to determine which is the event on the message\r\n switch (ioEvent) {\r\n case 0:\r\n ioEvent = 'NoEvent';\r\n break;\r\n case 236:\r\n ioEvent = 'Alarm';\r\n break;\r\n case 242:\r\n ioEvent = 'ManDown';\r\n break;\r\n case 255:\r\n ioEvent = 'OverSpeeding';\r\n break;\r\n case 310:\r\n ioEvent = 'Movement_Event';\r\n break;\r\n case 389:\r\n ioEvent = 'ButtonClick';\r\n break;\r\n case 1000:\r\n ioEvent = 'Cycle';\r\n break;\r\n case 240:\r\n ioEvent = 'Movement';\r\n break\r\n case 874:\r\n ioEvent = 'BLT_violation_state';\r\n break;\r\n case 875:\r\n ioEvent = 'Proximity_violation_source';\r\n break;\r\n case 874:\r\n ioEvent = 'Proximity_duration';\r\n break;\r\n case 874:\r\n ioEvent = 'BLT_MAC_Address';\r\n break;\r\n case 200:\r\n ioEvent = 'Sleep_Mode';\r\n break;\r\n case 390:\r\n ioEvent = 'PowerOff';\r\n break;\r\n case 200000:\r\n ioEvent = 'PowerOn';\r\n break;\r\n case 400:\r\n ioEvent = 'AmberAlert';\r\n break;\r\n default:\r\n ioEvent = ioEvent + ':Not_recognised';\r\n }\r\n //Get the IO ids part of the message\r\n var iods = IOIdsValues(message, ioElementsTotal, timestamp);\r\n //Internally send the events translated to a readable format and using the format needed to match the message types.\r\n if (ioEvent == 'Alarm') {\r\n record = `GH5200-ALSOS,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n } else if (ioEvent == 'ManDown') {\r\n record = `GH5200-ALF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n } else if (ioEvent == 'OverSpeeding') {\r\n record = `GH5200-ALSP,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n } else if (ioEvent == 'AutoGeofenceEvent' || ioEvent.startsWith('Geofence')) {\r\n record = `GH5200-AGEO,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n } else if (ioEvent == 'NoEvent' || ioEvent == 'Cycle') {\r\n //If the device is on sleep mode, it will not have send locations. For this reason, the message will be a Heartbeat and not a Cycle\r\n if (isSleep == 'true') {\r\n record = `GH5200-HTB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n } else {\r\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n }\r\n } else if (ioEvent == 'Movement_Event') {\r\n if (movement_Value == 'Movement_Event=NoMovement') {\r\n record = `GH5200-ALNM,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n } else if (movement_Value == 'Movement_Event=Movement') {\r\n record = `GH5200-ALMV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n }\r\n }\r\n //If the event is triggered because the device has entrered on Sleep mode, set an accuracy on 5000 to force a location. With this, we make sure we sent the last know location and we don't lose it.\r\n //Without this, it can happen that a location is sent, another one acquired but never sent because went to sleep mode\r\n else if (ioEvent == 'Sleep_Mode') {\r\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n var iodsValues = iods.split(\";\");\r\n iodsValues[0] = 1\r\n if (iodsValues[2] == 0 && longitude != '0' && latitude != '0') {\r\n iodsValues[2] = 5000\r\n }\r\n iods = iodsValues.join(\";\");\r\n //} else if (ioEvent == 'Movement') {\r\n // record = `GH5200-MV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n } else if (ioEvent == 'Proximity_violation_source' || ioEvent == 'Proximity_duration' || ioEvent == 'BLT_MAC_Address') {\r\n record = `${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n prox = 1;\r\n } else if (ioEvent == 'ButtonClick') {\r\n record = `GH5200-PBB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n } else if (ioEvent == 'AmberAlert') {\r\n if (amber_State && amber_Timer) {\r\n if (amber_State == 'Amber_Alert_State=Cancelled') {\r\n record = `GH5200-ALA-C,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n }\r\n if (amber_State == 'Amber_Alert_State=On') {\r\n record = `GH5200-ALA-O,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n }\r\n if (amber_State == 'Amber_Alert_State=Snoozed') {\r\n record = `GH5200-ALA-S,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n }\r\n if (amber_State == 'Amber_Alert_State=Alarm') {\r\n record = `GH5200-ALA,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n }\r\n }\r\n } else if (ioEvent == 'PowerOn') {\r\n record = `GH5200-PWRN,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n } else if (ioEvent == 'PowerOff') {\r\n record = `GH5200-PWRF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n }\r\n //In case the event has been created by an \"unknown\" IO Event (or not considered)\r\n else {\r\n record = `GH5200-COD8,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n }\r\n //console.log('--------------------' + decoded_final)\r\n record = record + iods;\r\n if (prox == 1) {\r\n var values = iods.split(\";\");\r\n if (values[4].startsWith('Proximity_duration')) {\r\n var prox_duration = values[4].split(\"=\");\r\n if (prox_duration[1] < 1) {\r\n record = 'GH5200-PROXS,' + record;\r\n } else if (prox_duration[1] >= 1) {\r\n record = 'GH5200-PROXE,' + record;\r\n }\r\n }\r\n prox = 0\r\n }\r\n //Push each record into a records array\r\n records.push(record);\r\n debug(record);\r\n }\r\n var CRC = message.substring(index + 2, index + 10);\r\n //return an array with all records stored\r\n return records;\r\n}\r\n/**\r\n * Decrypts part of the message that contains the IO Ids and its values\r\n * @param {String} message String to decrypt\r\n * @param {String} ioElementsTotal Number of IO elements present on the message\r\n * @param {Int} timestamp Unix timestamp given from the message\r\n * @return {String} String with the IO Ids and its values decrypted on a readable format\r\n */\r\nfunction IOIdsValues(message, ioElementsTotal, timestamp) {\r\n //Variable initialisation\r\n var decoded = '';\r\n var iods = '';\r\n var gpsTime = 0;\r\n var prox_source = '';\r\n var prox_duration = '';\r\n var BLT_state = '';\r\n var BLT_MAC = '';\r\n for (let i = 1; i <= 8; i = i * 2) {\r\n if (codecID == '8E') {\r\n var ioNumElements = message.substring(index, index += 4);\r\n } else if (codecID == '08') {\r\n var ioNumElements = message.substring(index, index += 2);\r\n }\r\n var x = hexToDecimal(ioNumElements);\r\n var pos = 2 * i;\r\n iods = '';\r\n //Loop number of elements\r\n for (let j = 0; j < x; j++) {\r\n //Id length depends on the codec\r\n if (codecID == '8E') {\r\n var id = message.substring(index, index += 4);\r\n } else if (codecID == '08') {\r\n var id = message.substring(index, index += 2);\r\n }\r\n var value = message.substring(index, index += pos);\r\n id = hexToDecimal(id);\r\n value = hexToDecimal(value);\r\n //Set the fix status\r\n if (id == 69) {\r\n if (value != 1) {\r\n value = 0\r\n }\r\n var fix_state = value;\r\n }\r\n //transform hdop to location accuracy in meters\r\n if (id == 182) {\r\n id = 'hdop'\r\n var location_accuracy = value * 5;\r\n }\r\n //Switch to set a name for each id and to get the value\r\n switch (id) {\r\n case 80:\r\n id = 'DataMode';\r\n break;\r\n case 24:\r\n id = 'Speed';\r\n break;\r\n case 113:\r\n id = 'BatteryLevel';\r\n var battery_percentage = value;\r\n break;\r\n case 17:\r\n id = 'AxisX';\r\n break;\r\n case 18:\r\n id = 'AxisY';\r\n break;\r\n case 19:\r\n id = 'AxisZ';\r\n break;\r\n case 69:\r\n id = 'GNSSStatus';\r\n break;\r\n case 874:\r\n id = 'BLT_violation_state';\r\n var mask = value;\r\n if (mask == 0) {\r\n value = 'None';\r\n }\r\n if (mask >= 8) {\r\n value = 'Tamper removed ';\r\n mask -= 8;\r\n }\r\n if (mask >= 4) {\r\n value = 'BLE Missing ';\r\n mask -= 4;\r\n }\r\n if (mask >= 2) {\r\n value = 'RSSI treshold violation ';\r\n mask -= 2;\r\n }\r\n if (mask == 1) {\r\n value = 'Movement';\r\n }\r\n //BLT_state = id + '=' + value;\r\n break;\r\n case 875:\r\n id = 'Proximity_violation_source';\r\n value = hex_to_ascii(valueHex);\r\n prox_source = id + '=' + value;\r\n break;\r\n case 890:\r\n id = 'Proximity_duration';\r\n prox_duration = id + '=' + value;\r\n break;\r\n case 891:\r\n id = 'BLT_MAC_Address';\r\n value = hex_to_ascii(valueHex);\r\n BLT_MAC = id + '=' + value;\r\n break;\r\n case 400:\r\n id = 'Amber_Alert_State';\r\n if (value == '1') value = 'On';\r\n else if (value == '2') value = 'Snoozed';\r\n else if (value == '3') value = 'Alarm';\r\n else if (value == '0') value = 'Cancelled'\r\n amber_State = id + '=' + value;\r\n break;\r\n case 401:\r\n id = 'Amber_Alert_Timer';\r\n amber_Timer = id + '=' + value;\r\n break;\r\n case 200:\r\n id = 'Sleep_Mode';\r\n if (value == '1') {\r\n isSleep = 'true'\r\n }\r\n break;\r\n case 310:\r\n id = 'Movement_Event';\r\n if (value == '0') value = 'Movement';\r\n else if (value == '1') value = 'NoMovement';\r\n movement_Value = id + '=' + value;\r\n break;\r\n }\r\n iods += id + '=' + value + ';';\r\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\r\n if (id == 'GNSSStatus' && value == 1) {\r\n gpsTime = timestamp;\r\n } else {\r\n gpsTime = moment.utc().unix();\r\n }\r\n }\r\n //Return decoded string with all the ids and its values on a readable format\r\n decoded += ioNumElements + ';' + iods;\r\n }\r\n //ids with variable length on codec8 Extended\r\n if (codecID == '8E') {\r\n var ioNumElements = message.substring(index, index += 4);\r\n var x = hexToDecimal(ioNumElements);\r\n iods = '';\r\n //Loop number of elements\r\n for (let j = 0; j < x; j++) {\r\n var id = message.substring(index, index += 4);\r\n var len = message.substring(index, index += 4);\r\n len = hexToDecimal(len) * 2;\r\n var value = message.substring(index, index += len);\r\n valueHex = value;\r\n id = hexToDecimal(id);\r\n value = hexToDecimal(value);\r\n //Set the fix status\r\n if (id == 69) {\r\n if (value != 1) {\r\n value = 0\r\n }\r\n var fix_state = value;\r\n }\r\n //transform hdop to location accuracy in meters\r\n if (id == 182) {\r\n id = 'hdop'\r\n var location_accuracy = value * 5;\r\n }\r\n //Switch to set a name for each id and to get the value\r\n switch (id) {\r\n case 80:\r\n id = 'DataMode';\r\n break;\r\n case 24:\r\n id = 'Speed';\r\n break;\r\n case 113:\r\n id = 'BatteryLevel';\r\n var battery_percentage = value;\r\n break;\r\n case 17:\r\n id = 'AxisX';\r\n break;\r\n case 18:\r\n id = 'AxisY';\r\n break;\r\n case 19:\r\n id = 'AxisZ';\r\n break;\r\n case 69:\r\n id = 'GNSSStatus';\r\n break;\r\n case 874:\r\n id = 'BLT_violation_state';\r\n var mask = value;\r\n if (mask == 0) {\r\n value = 'None';\r\n }\r\n if (mask >= 8) {\r\n value = 'Tamper removed ';\r\n mask -= 8;\r\n }\r\n if (mask >= 4) {\r\n value = 'BLE Missing ';\r\n mask -= 4;\r\n }\r\n if (mask >= 2) {\r\n value = 'RSSI treshold violation ';\r\n mask -= 2;\r\n }\r\n if (mask == 1) {\r\n value = 'Movement';\r\n }\r\n //BLT_state = id + '=' + value;\r\n break;\r\n case 875:\r\n id = 'Proximity_violation_source';\r\n value = hex_to_ascii(valueHex);\r\n prox_source = id + '=' + value;\r\n break;\r\n case 890:\r\n id = 'Proximity_duration';\r\n prox_duration = id + '=' + value;\r\n break;\r\n case 891:\r\n id = 'BLT_MAC_Address';\r\n value = hex_to_ascii(valueHex);\r\n BLT_MAC = id + '=' + value;\r\n break;\r\n case 400:\r\n id = 'Amber_Alert_State';\r\n if (value == '1') value = 'On';\r\n else if (value == '2') value = 'Snoozed';\r\n else if (value == '3') value = 'Alarm';\r\n else if (value == '0') value = 'Cancelled'\r\n amber_State = id + '=' + value;\r\n break;\r\n case 401:\r\n id = 'Amber_Alert_Timer';\r\n amber_Timer = id + '=' + value;\r\n break;\r\n case 200:\r\n id = 'Sleep_Mode';\r\n if (value == '1') {\r\n isSleep = 'true'\r\n }\r\n break;\r\n }\r\n iods += id + '=' + value + ';';\r\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\r\n if (id == 'GNSSStatus' && value == 1) {\r\n gpsTime = timestamp;\r\n } else {\r\n gpsTime = moment.utc().unix();\r\n }\r\n }\r\n decoded += ioNumElements + ';' + iods;\r\n }\r\n //Making sure location_accuracy has a value\r\n if (!location_accuracy) location_accuracy = 0;\r\n //Making sure battery_percentage has a value\r\n if (!battery_percentage) battery_percentage = 0;\r\n decoded_final = fix_state + ';' + gpsTime + ';' + location_accuracy + ';' + battery_percentage;\r\n if (BLT_state) {\r\n decoded_final += ';' + BLT_state;\r\n }\r\n if (prox_source) {\r\n decoded_final += ';' + prox_source;\r\n }\r\n if (prox_duration) {\r\n decoded_final += ';' + prox_duration;\r\n }\r\n if (BLT_MAC) {\r\n decoded_final += ';' + BLT_MAC;\r\n }\r\n if (amber_State && amber_Timer) {\r\n decoded_final += ';' + amber_State + ';' + amber_Timer;\r\n }\r\n decoded_final += ';;' + ioElementsTotal + ';' + decoded;\r\n //Return final string with decoed iods\r\n return decoded_final;\r\n}\r\n/**\r\n * Create connection to the server\r\n * @param {Int} port Port to connect\r\n * @param {String} server Server to connect\r\n * @return {net.socket} The newly created socket used to start the connection.\r\n */\r\nfunction createConnection(port, server) {\r\n c = net.createConnection(port, server);\r\n c.on('error', function(error) {\r\n c = createConnection(port, server);\r\n });\r\n return c;\r\n}\r\n\r\nfunction connect(port, inter, a) {\r\n return new Promise(resolve => {\r\n const socket = net.createConnection(port, '127.0.0.1', () => {\r\n socket.write(inter[a], () => {\r\n socket.destroy(); //socket.destroy(); to socket.close();\r\n resolve();\r\n });\r\n });\r\n });\r\n}\r\n\r\nfunction debug(str) { // write debug info to console log, if localTesting\r\n if (localTesting === \"True\") {\r\n console.log(str);\r\n }\r\n}\r\n/**\r\n * Convert from ascii to hexadecimal\r\n * @param {String} str Ascii string\r\n * @return {Array} str converted to Hexadecimal\r\n */\r\nfunction ascii_to_hexa(str) {\r\n var arr1 = [];\r\n for (var n = 0, l = str.length; n < l; n++) {\r\n var hex = Number(str.charCodeAt(n)).toString(16);\r\n arr1.push(hex);\r\n }\r\n return arr1.join('');\r\n}\r\n/**\r\n * Convert from Hexadecimal to Ascii\r\n * @param {String} str1 Hexadecimal string\r\n * @return {String} str1 converted to Ascii\r\n */\r\nfunction hex_to_ascii(str1) {\r\n var hex = str1.toString();\r\n var str = '';\r\n for (var n = 0; n < hex.length; n += 2) {\r\n str += String.fromCharCode(parseInt(hex.substr(n, 2), 16));\r\n }\r\n return str;\r\n}\r\n/**\r\n * Convert from Hexadecimal to Decimal signed (allowing negative numbers)\r\n * @param {Double} hex Hexadecimal number\r\n * @return {Double} hex converted to Decimal signed\r\n */\r\nfunction hexToDecimalSigned(hex) {\r\n if (hex.length % 2 != 0) {\r\n hex = \"0\" + hex;\r\n }\r\n var num = parseInt(hex, 16);\r\n var maxVal = Math.pow(2, hex.length / 2 * 8);\r\n if (num > maxVal / 2 - 1) {\r\n num = num - maxVal\r\n }\r\n return num;\r\n}\r\n/**\r\n * Convert from Hexadecimal to Decimal\r\n * @param {Double} x Hexadecimal number\r\n * @return {Double} x converted to Decimal\r\n */\r\nfunction hexToDecimal(x) {\r\n x = parseInt(x, 16);\r\n return x;\r\n}\r\n/**\r\n * Push value to the message arrray\r\n * @param {String} p1 Name given to the code to push\r\n * @param {} p2 Value to push\r\n */\r\n// pass everything into codevaluearray\r\nfunction AddValue(codeValueArray, p1, p2) {\r\n var cvpair = {\r\n code: p1,\r\n value: p2\r\n };\r\n codeValueArray.push(cvpair);\r\n}","Type":0,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":332,\"Name\":\"GH5200\",\"Operation\":\"function execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, localTesting) {\\n //###############################################################################################################################################################################################################\\n // Badege Operation Script\\n // * Operation script for Badge\\n // * Uses Long Connection: true\\n // *\\n // * GLOBAL TEMPLATE: <>,<>,<>, <>\\n // * Encrypted: true\\n // * \\n // * CYCLE TEMPLATE:\\n // * GH5200-CYC,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>\\n //###############################################################################################################################################################################################################\\n //=================================================================================\\n // VARIABLES \\n //=================================================================================\\n if (typeof localTesting === \\\"undefined\\\") {\\n var localTesting = \\\"False\\\";\\n }\\n var customIdValue = '';\\n var isCorrectOperation = true;\\n var index = 20;\\n var timeout = 1500;\\n var fix_state;\\n var satelites;\\n var latitude;\\n var longitude;\\n var altitude;\\n var speed;\\n var event_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_accuracy = \\\"5000\\\";\\n var onTrackingDemand = false;\\n var isSleep = 'false'\\n var amber_State = '';\\n var amber_Timer = '';\\n var movement_Value = '';\\n var dataToReceiver = [];\\n var codeValues = [];\\n var configsToAck = [];\\n //If the event type matches a global template\\n if (globalTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //In case the message is \\\"STC\\\" (Start Connection)\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n var imei = hex_to_ascii(rawFromBytes).slice(2);\\n AddValue(codeValues, \\\"imei\\\", imei);\\n var c = createConnection(5678, '127.0.0.1');\\n c.write(`GH5200-STC,${imei},${serverParams.Guid}`);\\n //Imei is recevied in hex\\n AddValue(codeValues, \\\"ack_stc\\\", \\\"01\\\");\\n c.end();\\n //In case the message is a codec8 (either codec8 or codec8 Extended)\\n } else if (messageTypeLocalCode == \\\"COD8-Global\\\") {\\n var ack;\\n //Get the full hex message in a readable format\\n var message = rawFromBytes;\\n var codecID = message.substring(16, 18);\\n //Get the imei from serverParams\\n var imei = serverParams.Imei\\n //Either codec 8 or codec 8 Extended\\n if (codecID == '08' || codecID == '8E') {\\n messages = decryptCodec8(message);\\n if (isCorrectOperation == false) {\\n return;\\n }\\n var numberOfData = message.substring(18, 20)\\n // var c = createConnection(5678, '127.0.0.1');\\n // c.on('data', function(data) {\\n // var msgLocal = [];\\n // //if ack ends with OTD, then onTrackingDemand = true\\n // if (data.toString().endsWith('OTD')) {\\n // onTrackingDemand = true\\n // }\\n // //The device can send more than one event on the same message. In this case, a part of the ack is the number of messages received\\n // //So, we only ack when we have received the last event of the message.\\n // if (data.toString().startsWith(`L${messages.length}`)) {\\n // //In case the event demands a tracking, the ack is the number of data followed by the command on_demand_tracking2 (already encoded)\\n // if (onTrackingDemand == true) {\\n // AddValue(msgLocal, 'ack_cod8', `000000${numberOfData}000000000000001D0C0105000000156F6E5F64656D616E645F747261636B696E67320D0A0100002EB9`);\\n // //Mandatory to push the imei when on a global template\\n // AddValue(msgLocal, 'imei', imei);\\n // //Mandatory to do console.log(msg);\\n // console.log(msgLocal);\\n // c.end();\\n // }\\n // //The device needs to be ack'ed the number of data in 4 bytes\\n // else {\\n //Ack with the number of messages received to make the device know that the server understood the full message.\\n AddValue(codeValues, 'ack_cod8', `000000${numberOfData}`);\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n //Mandatory to do console.log(msg);\\n //console.log(msg);\\n // c.end();\\n // }\\n // }\\n // });\\n //Internally send all the events on the same message received.\\n for (let i = 0; i < messages.length; i++) {\\n //c.write(messages[i]);\\n connect(5678, messages, i);\\n //console.log(messages[i]);\\n }\\n //In case the message is a codec12 (command ack)\\n } else if (codecID == '0C') {\\n var codec12 = decryptCodec12(message)\\n var c = createConnection(5678, '127.0.0.1');\\n //Internally send a codec12 message in the homogenous ascii format\\n c.write(`GH5200-COD12,${serverParams.Imei},${codec12}`);\\n c.end();\\n //Because the codec12 message is matched by the same global template than the codec8 message, we need to push \\\"ack_cod8\\\" as an empty string.\\n AddValue(codeValues, 'ack_cod8', '');\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n }\\n }\\n }\\n //In the case the message is matched by an oystaTemplate\\n if (oystaTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //If the message is a decrypted version for start the connection\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n // stc conditions\\n AddValue(codeValues, 'ack_stc', '01');\\n }\\n //If the message is a codec8 (event not taken into account by us) \\n else if (messageTypeLocalCode == 'COD8') {\\n if (params.recordNumber) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n //In case the message is Real Time Location\\n else if (messageTypeLocalCode == \\\"RTL\\\") {\\n //If the message has a gps fix\\n if (params.gps == \\\"1\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 1)\\n //Speed to m/s\\n AddValue(codeValues, \\\"speed\\\", params.speed_raw / 3.6)\\n //Location time to actual time. It is not provided on the message\\n location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n //Event time to actual time. It is not provided on the message\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n //Hardcoded accuracy of 500. No hdop or satellites are provided on the message\\n AddValue(codeValues, \\\"location_accuracy\\\", 500)\\n }\\n //If the message does not have a gps fix, we do not use it as we cannot make sure it is real\\n else if (params.gps == \\\"0\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n }\\n //If the event is an Alarm or Position By Button, send a flag (ODT) so the device is asked for on_demand_tracking\\n else if (messageTypeLocalCode == \\\"PBB\\\" || messageTypeCode.startsWith('AL')) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message. If it is a Position by button or any kind of alarm, it needs to be follow by \\\"ODT\\\" in order to ask for a tracking\\n //This is used to make sure the gps is awake. It will solve the error of alarms sent before there is a gps fix\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}OTD`);\\n //If the event is an ack for a SMS command (Redirected from Esendex)\\n } else if (messageTypeLocalCode.startsWith('ACK-SMS')) {\\n //No fix state\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n //Event and location time to actual time in order to show the messages on the events table\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n var c = createConnection(5678, '127.0.0.1');\\n //If the message is a sms ack for a \\\"normal command\\\" (this means the ack will start with \\\"New value \\\")\\n if (messageTypeLocalCode == \\\"ACK-SMS\\\") {\\n if (params.smsAck) {\\n //Add \\\"-SMS\\\" at the end so we can differentiate between a sms and grps ack for a command.\\n var smsAck = params.smsAck + '-SMS;'\\n // the essendex message the device sends in gets converted here\\n c.write(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n debug(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n if (!smsAck.startsWith('2001:')) {\\n //Add tag no commands so no commands are sent to the device after a sms ack. The device will not accept a command after a sms ack. This prevents lots of problems.\\n AddValue(codeValues, 'no_commands', 'true');\\n //As it is redirected from Esende, it is mandatroy to push the imei\\n AddValue(codeValues, 'imei', serverParams.Imei);\\n }\\n }\\n }\\n //We do not need to send the tag \\\"no_commands\\\" on the next 3 message types since we have already checked that option on the message type that matched the Esendex resend.\\n //If the message is a sms ack for \\\"Delete Records\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-DR\\\") {\\n var smsAck = '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},All records are erased${smsAck}`);\\n }\\n //If the message is a sms ack for \\\"Get Info\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GI\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},RTC:${smsAck}`);\\n }\\n }\\n //If the message is a sms ack for \\\"Get Version\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GV\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},Ver:${smsAck}`);\\n }\\n }\\n c.end()\\n } else if (messageTypeLocalCode.startsWith(\\\"ACK-ALF\\\")) {\\n if (messageTypeLocalCode == \\\"ACK-ALF\\\") {\\n var newAlldata = \\\"12100:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS2\\\") {\\n var newAlldata = \\\"14390:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS3\\\") {\\n var newAlldata = \\\"12101:\\\" + params.alldata;\\n }\\n if (newAlldata != null) {\\n var keyValues = ['12101', '12102', '12103', '12111', '12100', '13019', '13022', '14390', '14392', '14393', '14391', '14397', '14430', '14432', '14433', '14431', '14437', '14170', '14320', '14173', '14323', '7222', '12104'];\\n var configParamNames = ['FallAlarmSettings.Position', 'FallAlarmSettings.Angle', 'FallAlarmSettings.Timeout', 'FallAlarmSettings.SilentPreAlarmDelay', 'FallAlarmSettings.EnableDisableFallAlarmSettings', 'FallAlarmSettings.EnableDisableByButtons', 'FallAlarmSettings.EnableDisableByButtons', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'FallAlarmSettings.Indication', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed'];\\n var ackSMSArray = newAlldata.split(';');\\n var findIndexOfBlankSMS = ackSMSArray.findIndex(element => element.includes(\\\"-SMS\\\"));\\n if (ackSMSArray[findIndexOfBlankSMS] === \\\"-SMS\\\") {\\n ackSMSArray.pop()\\n }\\n AddValue(codeValues, \\\"imei\\\", serverParams.Imei);\\n for (let i = 0; i < ackSMSArray.length; i++) {\\n var keyId = ackSMSArray[i].split(':')[0]; // id of the param saved in the array\\n var keyValue = ackSMSArray[i].split(':')[1]; // value of the param \\n var findIndex = keyValues.indexOf(keyId)\\n if (configParamNames[findIndex] != \\\"No-Ack-Needed\\\") {\\n var intellicareDataSetValue = eval('configs' + '.' + configParamNames[findIndex])\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableFallAlarmSettings\\\") {\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (intellicareDataSetValue == \\\"true\\\") {\\n intellicareDataSetValue = \\\"1\\\"\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n // if enableDisableByButtonsIndex is unchecked then overwrite the EnableDisableFallAlarmSettings value\\n var enableDisableByButtonsIndex = ackSMSArray.findIndex(element => element.includes(\\\"13019\\\" || \\\"13022\\\"));\\n var valueOfenableDisableByButtons = ackSMSArray[enableDisableByButtonsIndex].slice(-1)\\n if (valueOfenableDisableByButtons != \\\"0\\\") {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableByButtons\\\") {\\n if (intellicareDataSetValue == \\\"true\\\") {\\n if (keyId == \\\"13019\\\") {\\n intellicareDataSetValue = \\\"2\\\"\\n } else if (keyId == \\\"13022\\\") {\\n intellicareDataSetValue = \\\"3\\\"\\n }\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n if (keyValue == intellicareDataSetValue) {\\n configsToAck.push(eval('configIds' + '.' + configParamNames[findIndex]))\\n debug(\\\"Matched values of param\\\" + configParamNames[findIndex]);\\n } else {\\n debug(\\\"Not matched values of param\\\" + configParamNames[findIndex]);\\n }\\n }\\n }\\n }\\n }\\n //If the message is an ack, push the needed information to appear on the UI events.\\n else if (messageTypeLocalCode.startsWith('ACK-')) {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n //If the message is a decrypted version for codec8. This will include Cycles, and all the rest of messages not represented on the else if before \\n else {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n //AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n // If customID is not set....\\n if (isCorrectOperation) {\\n if (configsToAck.length > 0) {\\n var dataToReceiver = {\\n 'values': codeValues,\\n 'configsToAck': configsToAck,\\n };\\n } else {\\n var dataToReceiver = {\\n 'values': codeValues\\n };\\n }\\n console.log(dataToReceiver);\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {String} Ascii message\\n */\\n function decryptCodec12(message) {\\n var decoded = '';\\n var data12 = message.slice(30, -10);\\n data12 = hex_to_ascii(data12);\\n return data12;\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {Array} Array of Ascii messages\\n */\\n function decryptCodec8(message) {\\n //Initialise variables\\n var decoded = '';\\n var codecID = message.substring(16, 18);\\n decoded += codecID + ';';\\n var numberOfData = message.substring(18, 20);\\n decoded += numberOfData + ';';\\n var records = [];\\n var prox = 0;\\n //Loop number of events on a message times\\n for (i = 0; i < hexToDecimal(numberOfData); i++) {\\n //Initialise and transform variables\\n isSleep = 'false'\\n amber_State = '';\\n amber_Timer = '';\\n var decoded_final = '';\\n var record = '';\\n var timestamp = message.substring(index, index += 16);\\n timestamp = hexToDecimal(timestamp).toString().slice(0, -3)\\n timestamp = parseInt(timestamp, 10);\\n var priority = message.substring(index, index += 2);\\n var longitude = message.substring(index, index += 8);\\n longitude = hexToDecimalSigned(longitude) / 10000000;\\n var latitude = message.substring(index, index += 8);\\n latitude = hexToDecimalSigned(latitude) / 10000000;\\n var altitude = message.substring(index, index += 4);\\n altitude = hexToDecimalSigned(altitude);\\n var angle = message.substring(index, index += 4);\\n angle = hexToDecimalSigned(angle);\\n var satelites = message.substring(index, index += 2);\\n satelites = hexToDecimal(satelites);\\n var speed = message.substring(index, index += 4);\\n //Speed to m/s\\n speed = (hexToDecimal(speed) / 3.6).toFixed(2)\\n //If the message is a codec 8\\n if (codecID == '8E') {\\n var ioEvent = message.substring(index, index += 4);\\n var ioElementsTotal = message.substring(index, index += 4);\\n }\\n //If the message is a codec 8 Extended\\n else if (codecID == '08') {\\n var ioEvent = message.substring(index, index += 2);\\n var ioElementsTotal = message.substring(index, index += 2);\\n }\\n ioEvent = hexToDecimal(ioEvent);\\n //Switch to determine which is the event on the message\\n switch (ioEvent) {\\n case 0:\\n ioEvent = 'NoEvent';\\n break;\\n case 236:\\n ioEvent = 'Alarm';\\n break;\\n case 242:\\n ioEvent = 'ManDown';\\n break;\\n case 255:\\n ioEvent = 'OverSpeeding';\\n break;\\n case 310:\\n ioEvent = 'Movement_Event';\\n break;\\n case 389:\\n ioEvent = 'ButtonClick';\\n break;\\n case 1000:\\n ioEvent = 'Cycle';\\n break;\\n case 240:\\n ioEvent = 'Movement';\\n break\\n case 874:\\n ioEvent = 'BLT_violation_state';\\n break;\\n case 875:\\n ioEvent = 'Proximity_violation_source';\\n break;\\n case 874:\\n ioEvent = 'Proximity_duration';\\n break;\\n case 874:\\n ioEvent = 'BLT_MAC_Address';\\n break;\\n case 200:\\n ioEvent = 'Sleep_Mode';\\n break;\\n case 390:\\n ioEvent = 'PowerOff';\\n break;\\n case 200000:\\n ioEvent = 'PowerOn';\\n break;\\n case 400:\\n ioEvent = 'AmberAlert';\\n break;\\n default:\\n ioEvent = ioEvent + ':Not_recognised';\\n }\\n //Get the IO ids part of the message\\n var iods = IOIdsValues(message, ioElementsTotal, timestamp);\\n if (customIdValue != '') {\\n //we find the customIdValue at any point, \\n //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n isCorrectOperation = false;\\n return;\\n }\\n //Internally send the events translated to a readable format and using the format needed to match the message types.\\n if (ioEvent == 'Alarm') {\\n record = `GH5200-ALSOS,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'ManDown') {\\n record = `GH5200-ALF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'OverSpeeding') {\\n record = `GH5200-ALSP,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AutoGeofenceEvent' || ioEvent.startsWith('Geofence')) {\\n record = `GH5200-AGEO,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'NoEvent' || ioEvent == 'Cycle') {\\n //If the device is on sleep mode, it will not have send locations. For this reason, the message will be a Heartbeat and not a Cycle\\n if (isSleep == 'true') {\\n record = `GH5200-HTB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n } else if (ioEvent == 'Movement_Event') {\\n if (movement_Value == 'Movement_Event=NoMovement') {\\n record = `GH5200-ALNM,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (movement_Value == 'Movement_Event=Movement') {\\n record = `GH5200-ALMV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n //If the event is triggered because the device has entrered on Sleep mode, set an accuracy on 5000 to force a location. With this, we make sure we sent the last know location and we don't lose it.\\n //Without this, it can happen that a location is sent, another one acquired but never sent because went to sleep mode\\n else if (ioEvent == 'Sleep_Mode') {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n var iodsValues = iods.split(\\\";\\\");\\n iodsValues[0] = 1\\n if (iodsValues[2] == 0 && longitude != '0' && latitude != '0') {\\n iodsValues[2] = 5000\\n }\\n iods = iodsValues.join(\\\";\\\");\\n //} else if (ioEvent == 'Movement') {\\n // record = `GH5200-MV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'Proximity_violation_source' || ioEvent == 'Proximity_duration' || ioEvent == 'BLT_MAC_Address') {\\n record = `${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n prox = 1;\\n } else if (ioEvent == 'ButtonClick') {\\n record = `GH5200-PBB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AmberAlert') {\\n if (amber_State && amber_Timer) {\\n if (amber_State == 'Amber_Alert_State=Cancelled') {\\n record = `GH5200-ALA-C,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=On') {\\n record = `GH5200-ALA-O,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Snoozed') {\\n record = `GH5200-ALA-S,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Alarm') {\\n record = `GH5200-ALA,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n } else if (ioEvent == 'PowerOn') {\\n record = `GH5200-PWRN,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'PowerOff') {\\n record = `GH5200-PWRF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //In case the event has been created by an \\\"unknown\\\" IO Event (or not considered)\\n else {\\n record = `GH5200-COD8,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //console.log('--------------------' + decoded_final)\\n record = record + iods;\\n if (prox == 1) {\\n var values = iods.split(\\\";\\\");\\n if (values[4].startsWith('Proximity_duration')) {\\n var prox_duration = values[4].split(\\\"=\\\");\\n if (prox_duration[1] < 1) {\\n record = 'GH5200-PROXS,' + record;\\n } else if (prox_duration[1] >= 1) {\\n record = 'GH5200-PROXE,' + record;\\n }\\n }\\n prox = 0\\n }\\n //Push each record into a records array\\n records.push(record);\\n debug(record);\\n }\\n var CRC = message.substring(index + 2, index + 10);\\n //return an array with all records stored\\n return records;\\n }\\n /**\\n * Decrypts part of the message that contains the IO Ids and its values\\n * @param {String} message String to decrypt\\n * @param {String} ioElementsTotal Number of IO elements present on the message\\n * @param {Int} timestamp Unix timestamp given from the message\\n * @return {String} String with the IO Ids and its values decrypted on a readable format\\n */\\n function IOIdsValues(message, ioElementsTotal, timestamp) {\\n //Variable initialisation\\n var decoded = '';\\n var iods = '';\\n var gpsTime = 0;\\n var prox_source = '';\\n var prox_duration = '';\\n var BLT_state = '';\\n var BLT_MAC = '';\\n for (let i = 1; i <= 8; i = i * 2) {\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var ioNumElements = message.substring(index, index += 2);\\n }\\n var x = hexToDecimal(ioNumElements);\\n var pos = 2 * i;\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n //Id length depends on the codec\\n if (codecID == '8E') {\\n var id = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var id = message.substring(index, index += 2);\\n }\\n var value = message.substring(index, index += pos);\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n case 310:\\n id = 'Movement_Event';\\n if (value == '0') value = 'Movement';\\n else if (value == '1') value = 'NoMovement';\\n movement_Value = id + '=' + value;\\n break;\\n case 854: //Custom ID\\n customIdValue = value;\\n if (value != '') {\\n //we get the customIdValue at any point, \\n //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n isCorrectOperation = false;\\n return;\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n //Return decoded string with all the ids and its values on a readable format\\n decoded += ioNumElements + ';' + iods;\\n }\\n //ids with variable length on codec8 Extended\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n var x = hexToDecimal(ioNumElements);\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n var id = message.substring(index, index += 4);\\n var len = message.substring(index, index += 4);\\n len = hexToDecimal(len) * 2;\\n var value = message.substring(index, index += len);\\n valueHex = value;\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n decoded += ioNumElements + ';' + iods;\\n }\\n //Making sure location_accuracy has a value\\n if (!location_accuracy) location_accuracy = 0;\\n //Making sure battery_percentage has a value\\n if (!battery_percentage) battery_percentage = 0;\\n decoded_final = fix_state + ';' + gpsTime + ';' + location_accuracy + ';' + battery_percentage;\\n if (BLT_state) {\\n decoded_final += ';' + BLT_state;\\n }\\n if (prox_source) {\\n decoded_final += ';' + prox_source;\\n }\\n if (prox_duration) {\\n decoded_final += ';' + prox_duration;\\n }\\n if (BLT_MAC) {\\n decoded_final += ';' + BLT_MAC;\\n }\\n if (amber_State && amber_Timer) {\\n decoded_final += ';' + amber_State + ';' + amber_Timer;\\n }\\n decoded_final += ';;' + ioElementsTotal + ';' + decoded;\\n //Return final string with decoed iods\\n return decoded_final;\\n }\\n /**\\n * Create connection to the server\\n * @param {Int} port Port to connect\\n * @param {String} server Server to connect\\n * @return {net.socket} The newly created socket used to start the connection.\\n */\\n function createConnection(port, server) {\\n c = net.createConnection(port, server);\\n c.on('error', function(error) {\\n c = createConnection(port, server);\\n });\\n return c;\\n }\\n\\n function connect(port, inter, a) {\\n return new Promise(resolve => {\\n const socket = net.createConnection(port, '127.0.0.1', () => {\\n socket.write(inter[a], () => {\\n socket.destroy(); //socket.destroy(); to socket.close();\\n resolve();\\n });\\n });\\n });\\n }\\n\\n function debug(str) { // write debug info to console log, if localTesting\\n if (localTesting === \\\"True\\\") {\\n console.log(str);\\n }\\n }\\n /**\\n * Convert from ascii to hexadecimal\\n * @param {String} str Ascii string\\n * @return {Array} str converted to Hexadecimal\\n */\\n function ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n }\\n /**\\n * Convert from Hexadecimal to Ascii\\n * @param {String} str1 Hexadecimal string\\n * @return {String} str1 converted to Ascii\\n */\\n function 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 /**\\n * Convert from Hexadecimal to Decimal signed (allowing negative numbers)\\n * @param {Double} hex Hexadecimal number\\n * @return {Double} hex converted to Decimal signed\\n */\\n function hexToDecimalSigned(hex) {\\n if (hex.length % 2 != 0) {\\n hex = \\\"0\\\" + hex;\\n }\\n var num = parseInt(hex, 16);\\n var maxVal = Math.pow(2, hex.length / 2 * 8);\\n if (num > maxVal / 2 - 1) {\\n num = num - maxVal\\n }\\n return num;\\n }\\n /**\\n * Convert from Hexadecimal to Decimal\\n * @param {Double} x Hexadecimal number\\n * @return {Double} x converted to Decimal\\n */\\n function hexToDecimal(x) {\\n x = parseInt(x, 16);\\n return x;\\n }\\n /**\\n * Push value to the message arrray\\n * @param {String} p1 Name given to the code to push\\n * @param {} p2 Value to push\\n */\\n // pass everything into codevaluearray\\n function AddValue(codeValueArray, p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n codeValueArray.push(cvpair);\\n }\\n // modify to return the object that contains your data\\n return dataToReceiver;\\n}\\n// params is not defined locally -> export as module\\nif (typeof(params) === 'undefined') {\\n module.exports = {\\n execute_ops\\n }\\n} else { // on server use local defined vars\\n let return_values = execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, false)\\n // define global returns\\n msg = return_values;\\n}\",\"Type\":0,\"ProtocolActionObjects\":[]}","Timestamp":1725898185},{"Type":1,"NewValue":"{\"Id\":332,\"Name\":\"GH5200\",\"Operation\":\"function execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, localTesting) {\\n //###############################################################################################################################################################################################################\\n // Badege Operation Script\\n // * Operation script for Badge\\n // * Uses Long Connection: true\\n // *\\n // * GLOBAL TEMPLATE: <>,<>,<>, <>\\n // * Encrypted: true\\n // * \\n // * CYCLE TEMPLATE:\\n // * GH5200-CYC,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>\\n //###############################################################################################################################################################################################################\\n //=================================================================================\\n // VARIABLES \\n //=================================================================================\\n if (typeof localTesting === \\\"undefined\\\") {\\n var localTesting = \\\"False\\\";\\n }\\n var customIdValue = '';\\n var isCorrectOperation = true;\\n var index = 20;\\n var timeout = 1500;\\n var fix_state;\\n var satelites;\\n var latitude;\\n var longitude;\\n var altitude;\\n var speed;\\n var event_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_accuracy = \\\"5000\\\";\\n var onTrackingDemand = false;\\n var isSleep = 'false'\\n var amber_State = '';\\n var amber_Timer = '';\\n var movement_Value = '';\\n var dataToReceiver = [];\\n var codeValues = [];\\n var configsToAck = [];\\n //If the event type matches a global template\\n if (globalTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE10');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //In case the message is \\\"STC\\\" (Start Connection)\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n var imei = hex_to_ascii(rawFromBytes).slice(2);\\n AddValue(codeValues, \\\"imei\\\", imei);\\n var c = createConnection(5678, '127.0.0.1');\\n c.write(`GH5200-STC,${imei},${serverParams.Guid}`);\\n //Imei is recevied in hex\\n AddValue(codeValues, \\\"ack_stc\\\", \\\"01\\\");\\n c.end();\\n //In case the message is a codec8 (either codec8 or codec8 Extended)\\n } else if (messageTypeLocalCode == \\\"COD8-Global\\\") {\\n var ack;\\n //Get the full hex message in a readable format\\n var message = rawFromBytes;\\n var codecID = message.substring(16, 18);\\n //Get the imei from serverParams\\n var imei = serverParams.Imei\\n //Either codec 8 or codec 8 Extended\\n if (codecID == '08' || codecID == '8E') {\\n messages = decryptCodec8(message);\\n if (isCorrectOperation == false) {\\n return;\\n }\\n var numberOfData = message.substring(18, 20)\\n // var c = createConnection(5678, '127.0.0.1');\\n // c.on('data', function(data) {\\n // var msgLocal = [];\\n // //if ack ends with OTD, then onTrackingDemand = true\\n // if (data.toString().endsWith('OTD')) {\\n // onTrackingDemand = true\\n // }\\n // //The device can send more than one event on the same message. In this case, a part of the ack is the number of messages received\\n // //So, we only ack when we have received the last event of the message.\\n // if (data.toString().startsWith(`L${messages.length}`)) {\\n // //In case the event demands a tracking, the ack is the number of data followed by the command on_demand_tracking2 (already encoded)\\n // if (onTrackingDemand == true) {\\n // AddValue(msgLocal, 'ack_cod8', `000000${numberOfData}000000000000001D0C0105000000156F6E5F64656D616E645F747261636B696E67320D0A0100002EB9`);\\n // //Mandatory to push the imei when on a global template\\n // AddValue(msgLocal, 'imei', imei);\\n // //Mandatory to do console.log(msg);\\n // console.log(msgLocal);\\n // c.end();\\n // }\\n // //The device needs to be ack'ed the number of data in 4 bytes\\n // else {\\n //Ack with the number of messages received to make the device know that the server understood the full message.\\n AddValue(codeValues, 'ack_cod8', `000000${numberOfData}`);\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n //Mandatory to do console.log(msg);\\n //console.log(msg);\\n // c.end();\\n // }\\n // }\\n // });\\n //Internally send all the events on the same message received.\\n for (let i = 0; i < messages.length; i++) {\\n //c.write(messages[i]);\\n connect(5678, messages, i);\\n //console.log(messages[i]);\\n }\\n //In case the message is a codec12 (command ack)\\n } else if (codecID == '0C') {\\n var codec12 = decryptCodec12(message)\\n var c = createConnection(5678, '127.0.0.1');\\n //Internally send a codec12 message in the homogenous ascii format\\n c.write(`GH5200-COD12,${serverParams.Imei},${codec12}`);\\n c.end();\\n //Because the codec12 message is matched by the same global template than the codec8 message, we need to push \\\"ack_cod8\\\" as an empty string.\\n AddValue(codeValues, 'ack_cod8', '');\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n }\\n }\\n }\\n //In the case the message is matched by an oystaTemplate\\n if (oystaTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //If the message is a decrypted version for start the connection\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n // stc conditions\\n AddValue(codeValues, 'ack_stc', '01');\\n }\\n //If the message is a codec8 (event not taken into account by us) \\n else if (messageTypeLocalCode == 'COD8') {\\n if (params.recordNumber) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n //In case the message is Real Time Location\\n else if (messageTypeLocalCode == \\\"RTL\\\") {\\n //If the message has a gps fix\\n if (params.gps == \\\"1\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 1)\\n //Speed to m/s\\n AddValue(codeValues, \\\"speed\\\", params.speed_raw / 3.6)\\n //Location time to actual time. It is not provided on the message\\n location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n //Event time to actual time. It is not provided on the message\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n //Hardcoded accuracy of 500. No hdop or satellites are provided on the message\\n AddValue(codeValues, \\\"location_accuracy\\\", 500)\\n }\\n //If the message does not have a gps fix, we do not use it as we cannot make sure it is real\\n else if (params.gps == \\\"0\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n }\\n //If the event is an Alarm or Position By Button, send a flag (ODT) so the device is asked for on_demand_tracking\\n else if (messageTypeLocalCode == \\\"PBB\\\" || messageTypeCode.startsWith('AL')) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message. If it is a Position by button or any kind of alarm, it needs to be follow by \\\"ODT\\\" in order to ask for a tracking\\n //This is used to make sure the gps is awake. It will solve the error of alarms sent before there is a gps fix\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}OTD`);\\n //If the event is an ack for a SMS command (Redirected from Esendex)\\n } else if (messageTypeLocalCode.startsWith('ACK-SMS')) {\\n //No fix state\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n //Event and location time to actual time in order to show the messages on the events table\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n var c = createConnection(5678, '127.0.0.1');\\n //If the message is a sms ack for a \\\"normal command\\\" (this means the ack will start with \\\"New value \\\")\\n if (messageTypeLocalCode == \\\"ACK-SMS\\\") {\\n if (params.smsAck) {\\n //Add \\\"-SMS\\\" at the end so we can differentiate between a sms and grps ack for a command.\\n var smsAck = params.smsAck + '-SMS;'\\n // the essendex message the device sends in gets converted here\\n c.write(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n debug(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n if (!smsAck.startsWith('2001:')) {\\n //Add tag no commands so no commands are sent to the device after a sms ack. The device will not accept a command after a sms ack. This prevents lots of problems.\\n AddValue(codeValues, 'no_commands', 'true');\\n //As it is redirected from Esende, it is mandatroy to push the imei\\n AddValue(codeValues, 'imei', serverParams.Imei);\\n }\\n }\\n }\\n //We do not need to send the tag \\\"no_commands\\\" on the next 3 message types since we have already checked that option on the message type that matched the Esendex resend.\\n //If the message is a sms ack for \\\"Delete Records\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-DR\\\") {\\n var smsAck = '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},All records are erased${smsAck}`);\\n }\\n //If the message is a sms ack for \\\"Get Info\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GI\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},RTC:${smsAck}`);\\n }\\n }\\n //If the message is a sms ack for \\\"Get Version\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GV\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},Ver:${smsAck}`);\\n }\\n }\\n c.end()\\n } else if (messageTypeLocalCode.startsWith(\\\"ACK-ALF\\\")) {\\n if (messageTypeLocalCode == \\\"ACK-ALF\\\") {\\n var newAlldata = \\\"12100:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS2\\\") {\\n var newAlldata = \\\"14390:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS3\\\") {\\n var newAlldata = \\\"12101:\\\" + params.alldata;\\n }\\n if (newAlldata != null) {\\n var keyValues = ['12101', '12102', '12103', '12111', '12100', '13019', '13022', '14390', '14392', '14393', '14391', '14397', '14430', '14432', '14433', '14431', '14437', '14170', '14320', '14173', '14323', '7222', '12104'];\\n var configParamNames = ['FallAlarmSettings.Position', 'FallAlarmSettings.Angle', 'FallAlarmSettings.Timeout', 'FallAlarmSettings.SilentPreAlarmDelay', 'FallAlarmSettings.EnableDisableFallAlarmSettings', 'FallAlarmSettings.EnableDisableByButtons', 'FallAlarmSettings.EnableDisableByButtons', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'FallAlarmSettings.Indication', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed'];\\n var ackSMSArray = newAlldata.split(';');\\n var findIndexOfBlankSMS = ackSMSArray.findIndex(element => element.includes(\\\"-SMS\\\"));\\n if (ackSMSArray[findIndexOfBlankSMS] === \\\"-SMS\\\") {\\n ackSMSArray.pop()\\n }\\n AddValue(codeValues, \\\"imei\\\", serverParams.Imei);\\n for (let i = 0; i < ackSMSArray.length; i++) {\\n var keyId = ackSMSArray[i].split(':')[0]; // id of the param saved in the array\\n var keyValue = ackSMSArray[i].split(':')[1]; // value of the param \\n var findIndex = keyValues.indexOf(keyId)\\n if (configParamNames[findIndex] != \\\"No-Ack-Needed\\\") {\\n var intellicareDataSetValue = eval('configs' + '.' + configParamNames[findIndex])\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableFallAlarmSettings\\\") {\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (intellicareDataSetValue == \\\"true\\\") {\\n intellicareDataSetValue = \\\"1\\\"\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n // if enableDisableByButtonsIndex is unchecked then overwrite the EnableDisableFallAlarmSettings value\\n var enableDisableByButtonsIndex = ackSMSArray.findIndex(element => element.includes(\\\"13019\\\" || \\\"13022\\\"));\\n var valueOfenableDisableByButtons = ackSMSArray[enableDisableByButtonsIndex].slice(-1)\\n if (valueOfenableDisableByButtons != \\\"0\\\") {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableByButtons\\\") {\\n if (intellicareDataSetValue == \\\"true\\\") {\\n if (keyId == \\\"13019\\\") {\\n intellicareDataSetValue = \\\"2\\\"\\n } else if (keyId == \\\"13022\\\") {\\n intellicareDataSetValue = \\\"3\\\"\\n }\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n if (keyValue == intellicareDataSetValue) {\\n configsToAck.push(eval('configIds' + '.' + configParamNames[findIndex]))\\n debug(\\\"Matched values of param\\\" + configParamNames[findIndex]);\\n } else {\\n debug(\\\"Not matched values of param\\\" + configParamNames[findIndex]);\\n }\\n }\\n }\\n }\\n }\\n //If the message is an ack, push the needed information to appear on the UI events.\\n else if (messageTypeLocalCode.startsWith('ACK-')) {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n //If the message is a decrypted version for codec8. This will include Cycles, and all the rest of messages not represented on the else if before \\n else {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n //AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n // If customID is not set....\\n if (isCorrectOperation) {\\n if (configsToAck.length > 0) {\\n var dataToReceiver = {\\n 'values': codeValues,\\n 'configsToAck': configsToAck,\\n };\\n } else {\\n var dataToReceiver = {\\n 'values': codeValues\\n };\\n }\\n console.log(dataToReceiver);\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {String} Ascii message\\n */\\n function decryptCodec12(message) {\\n var decoded = '';\\n var data12 = message.slice(30, -10);\\n data12 = hex_to_ascii(data12);\\n return data12;\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {Array} Array of Ascii messages\\n */\\n function decryptCodec8(message) {\\n //Initialise variables\\n var decoded = '';\\n var codecID = message.substring(16, 18);\\n decoded += codecID + ';';\\n var numberOfData = message.substring(18, 20);\\n decoded += numberOfData + ';';\\n var records = [];\\n var prox = 0;\\n //Loop number of events on a message times\\n for (i = 0; i < hexToDecimal(numberOfData); i++) {\\n //Initialise and transform variables\\n isSleep = 'false'\\n amber_State = '';\\n amber_Timer = '';\\n var decoded_final = '';\\n var record = '';\\n var timestamp = message.substring(index, index += 16);\\n timestamp = hexToDecimal(timestamp).toString().slice(0, -3)\\n timestamp = parseInt(timestamp, 10);\\n var priority = message.substring(index, index += 2);\\n var longitude = message.substring(index, index += 8);\\n longitude = hexToDecimalSigned(longitude) / 10000000;\\n var latitude = message.substring(index, index += 8);\\n latitude = hexToDecimalSigned(latitude) / 10000000;\\n var altitude = message.substring(index, index += 4);\\n altitude = hexToDecimalSigned(altitude);\\n var angle = message.substring(index, index += 4);\\n angle = hexToDecimalSigned(angle);\\n var satelites = message.substring(index, index += 2);\\n satelites = hexToDecimal(satelites);\\n var speed = message.substring(index, index += 4);\\n //Speed to m/s\\n speed = (hexToDecimal(speed) / 3.6).toFixed(2)\\n //If the message is a codec 8\\n if (codecID == '8E') {\\n var ioEvent = message.substring(index, index += 4);\\n var ioElementsTotal = message.substring(index, index += 4);\\n }\\n //If the message is a codec 8 Extended\\n else if (codecID == '08') {\\n var ioEvent = message.substring(index, index += 2);\\n var ioElementsTotal = message.substring(index, index += 2);\\n }\\n ioEvent = hexToDecimal(ioEvent);\\n //Switch to determine which is the event on the message\\n switch (ioEvent) {\\n case 0:\\n ioEvent = 'NoEvent';\\n break;\\n case 236:\\n ioEvent = 'Alarm';\\n break;\\n case 242:\\n ioEvent = 'ManDown';\\n break;\\n case 255:\\n ioEvent = 'OverSpeeding';\\n break;\\n case 310:\\n ioEvent = 'Movement_Event';\\n break;\\n case 389:\\n ioEvent = 'ButtonClick';\\n break;\\n case 1000:\\n ioEvent = 'Cycle';\\n break;\\n case 240:\\n ioEvent = 'Movement';\\n break\\n case 874:\\n ioEvent = 'BLT_violation_state';\\n break;\\n case 875:\\n ioEvent = 'Proximity_violation_source';\\n break;\\n case 874:\\n ioEvent = 'Proximity_duration';\\n break;\\n case 874:\\n ioEvent = 'BLT_MAC_Address';\\n break;\\n case 200:\\n ioEvent = 'Sleep_Mode';\\n break;\\n case 390:\\n ioEvent = 'PowerOff';\\n break;\\n case 200000:\\n ioEvent = 'PowerOn';\\n break;\\n case 400:\\n ioEvent = 'AmberAlert';\\n break;\\n default:\\n ioEvent = ioEvent + ':Not_recognised';\\n }\\n //Get the IO ids part of the message\\n var iods = IOIdsValues(message, ioElementsTotal, timestamp);\\n if (customIdValue != '') {\\n //we find the customIdValue at any point, \\n //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n isCorrectOperation = false;\\n return;\\n }\\n //Internally send the events translated to a readable format and using the format needed to match the message types.\\n if (ioEvent == 'Alarm') {\\n record = `GH5200-ALSOS,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'ManDown') {\\n record = `GH5200-ALF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'OverSpeeding') {\\n record = `GH5200-ALSP,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AutoGeofenceEvent' || ioEvent.startsWith('Geofence')) {\\n record = `GH5200-AGEO,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'NoEvent' || ioEvent == 'Cycle') {\\n //If the device is on sleep mode, it will not have send locations. For this reason, the message will be a Heartbeat and not a Cycle\\n if (isSleep == 'true') {\\n record = `GH5200-HTB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n } else if (ioEvent == 'Movement_Event') {\\n if (movement_Value == 'Movement_Event=NoMovement') {\\n record = `GH5200-ALNM,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (movement_Value == 'Movement_Event=Movement') {\\n record = `GH5200-ALMV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n //If the event is triggered because the device has entrered on Sleep mode, set an accuracy on 5000 to force a location. With this, we make sure we sent the last know location and we don't lose it.\\n //Without this, it can happen that a location is sent, another one acquired but never sent because went to sleep mode\\n else if (ioEvent == 'Sleep_Mode') {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n var iodsValues = iods.split(\\\";\\\");\\n iodsValues[0] = 1\\n if (iodsValues[2] == 0 && longitude != '0' && latitude != '0') {\\n iodsValues[2] = 5000\\n }\\n iods = iodsValues.join(\\\";\\\");\\n //} else if (ioEvent == 'Movement') {\\n // record = `GH5200-MV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'Proximity_violation_source' || ioEvent == 'Proximity_duration' || ioEvent == 'BLT_MAC_Address') {\\n record = `${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n prox = 1;\\n } else if (ioEvent == 'ButtonClick') {\\n record = `GH5200-PBB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AmberAlert') {\\n if (amber_State && amber_Timer) {\\n if (amber_State == 'Amber_Alert_State=Cancelled') {\\n record = `GH5200-ALA-C,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=On') {\\n record = `GH5200-ALA-O,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Snoozed') {\\n record = `GH5200-ALA-S,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Alarm') {\\n record = `GH5200-ALA,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n } else if (ioEvent == 'PowerOn') {\\n record = `GH5200-PWRN,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'PowerOff') {\\n record = `GH5200-PWRF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //In case the event has been created by an \\\"unknown\\\" IO Event (or not considered)\\n else {\\n record = `GH5200-COD8,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //console.log('--------------------' + decoded_final)\\n record = record + iods;\\n if (prox == 1) {\\n var values = iods.split(\\\";\\\");\\n if (values[4].startsWith('Proximity_duration')) {\\n var prox_duration = values[4].split(\\\"=\\\");\\n if (prox_duration[1] < 1) {\\n record = 'GH5200-PROXS,' + record;\\n } else if (prox_duration[1] >= 1) {\\n record = 'GH5200-PROXE,' + record;\\n }\\n }\\n prox = 0\\n }\\n //Push each record into a records array\\n records.push(record);\\n debug(record);\\n }\\n var CRC = message.substring(index + 2, index + 10);\\n //return an array with all records stored\\n return records;\\n }\\n /**\\n * Decrypts part of the message that contains the IO Ids and its values\\n * @param {String} message String to decrypt\\n * @param {String} ioElementsTotal Number of IO elements present on the message\\n * @param {Int} timestamp Unix timestamp given from the message\\n * @return {String} String with the IO Ids and its values decrypted on a readable format\\n */\\n function IOIdsValues(message, ioElementsTotal, timestamp) {\\n //Variable initialisation\\n var decoded = '';\\n var iods = '';\\n var gpsTime = 0;\\n var prox_source = '';\\n var prox_duration = '';\\n var BLT_state = '';\\n var BLT_MAC = '';\\n for (let i = 1; i <= 8; i = i * 2) {\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var ioNumElements = message.substring(index, index += 2);\\n }\\n var x = hexToDecimal(ioNumElements);\\n var pos = 2 * i;\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n //Id length depends on the codec\\n if (codecID == '8E') {\\n var id = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var id = message.substring(index, index += 2);\\n }\\n var value = message.substring(index, index += pos);\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n case 310:\\n id = 'Movement_Event';\\n if (value == '0') value = 'Movement';\\n else if (value == '1') value = 'NoMovement';\\n movement_Value = id + '=' + value;\\n break;\\n case 854: //Custom ID\\n customIdValue = value;\\n if (value != '') {\\n //we get the customIdValue at any point, \\n //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n isCorrectOperation = false;\\n return;\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n //Return decoded string with all the ids and its values on a readable format\\n decoded += ioNumElements + ';' + iods;\\n }\\n //ids with variable length on codec8 Extended\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n var x = hexToDecimal(ioNumElements);\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n var id = message.substring(index, index += 4);\\n var len = message.substring(index, index += 4);\\n len = hexToDecimal(len) * 2;\\n var value = message.substring(index, index += len);\\n valueHex = value;\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n decoded += ioNumElements + ';' + iods;\\n }\\n //Making sure location_accuracy has a value\\n if (!location_accuracy) location_accuracy = 0;\\n //Making sure battery_percentage has a value\\n if (!battery_percentage) battery_percentage = 0;\\n decoded_final = fix_state + ';' + gpsTime + ';' + location_accuracy + ';' + battery_percentage;\\n if (BLT_state) {\\n decoded_final += ';' + BLT_state;\\n }\\n if (prox_source) {\\n decoded_final += ';' + prox_source;\\n }\\n if (prox_duration) {\\n decoded_final += ';' + prox_duration;\\n }\\n if (BLT_MAC) {\\n decoded_final += ';' + BLT_MAC;\\n }\\n if (amber_State && amber_Timer) {\\n decoded_final += ';' + amber_State + ';' + amber_Timer;\\n }\\n decoded_final += ';;' + ioElementsTotal + ';' + decoded;\\n //Return final string with decoed iods\\n return decoded_final;\\n }\\n /**\\n * Create connection to the server\\n * @param {Int} port Port to connect\\n * @param {String} server Server to connect\\n * @return {net.socket} The newly created socket used to start the connection.\\n */\\n function createConnection(port, server) {\\n c = net.createConnection(port, server);\\n c.on('error', function(error) {\\n c = createConnection(port, server);\\n });\\n return c;\\n }\\n\\n function connect(port, inter, a) {\\n return new Promise(resolve => {\\n const socket = net.createConnection(port, '127.0.0.1', () => {\\n socket.write(inter[a], () => {\\n socket.destroy(); //socket.destroy(); to socket.close();\\n resolve();\\n });\\n });\\n });\\n }\\n\\n function debug(str) { // write debug info to console log, if localTesting\\n if (localTesting === \\\"True\\\") {\\n console.log(str);\\n }\\n }\\n /**\\n * Convert from ascii to hexadecimal\\n * @param {String} str Ascii string\\n * @return {Array} str converted to Hexadecimal\\n */\\n function ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n }\\n /**\\n * Convert from Hexadecimal to Ascii\\n * @param {String} str1 Hexadecimal string\\n * @return {String} str1 converted to Ascii\\n */\\n function 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 /**\\n * Convert from Hexadecimal to Decimal signed (allowing negative numbers)\\n * @param {Double} hex Hexadecimal number\\n * @return {Double} hex converted to Decimal signed\\n */\\n function hexToDecimalSigned(hex) {\\n if (hex.length % 2 != 0) {\\n hex = \\\"0\\\" + hex;\\n }\\n var num = parseInt(hex, 16);\\n var maxVal = Math.pow(2, hex.length / 2 * 8);\\n if (num > maxVal / 2 - 1) {\\n num = num - maxVal\\n }\\n return num;\\n }\\n /**\\n * Convert from Hexadecimal to Decimal\\n * @param {Double} x Hexadecimal number\\n * @return {Double} x converted to Decimal\\n */\\n function hexToDecimal(x) {\\n x = parseInt(x, 16);\\n return x;\\n }\\n /**\\n * Push value to the message arrray\\n * @param {String} p1 Name given to the code to push\\n * @param {} p2 Value to push\\n */\\n // pass everything into codevaluearray\\n function AddValue(codeValueArray, p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n codeValueArray.push(cvpair);\\n }\\n // modify to return the object that contains your data\\n return dataToReceiver;\\n}\\n// params is not defined locally -> export as module\\nif (typeof(params) === 'undefined') {\\n module.exports = {\\n execute_ops\\n }\\n} else { // on server use local defined vars\\n let return_values = execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, false)\\n // define global returns\\n msg = return_values;\\n}\",\"Type\":0,\"ProtocolActionObjects\":[]}","Timestamp":1727779248},{"Type":1,"NewValue":"{\"Id\":332,\"Name\":\"GH5200\",\"Operation\":\"function execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, localTesting) {\\n //###############################################################################################################################################################################################################\\n // Badege Operation Script\\n // * Operation script for Badge\\n // * Uses Long Connection: true\\n // *\\n // * GLOBAL TEMPLATE: <>,<>,<>, <>\\n // * Encrypted: true\\n // * \\n // * CYCLE TEMPLATE:\\n // * GH5200-CYC,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>\\n //###############################################################################################################################################################################################################\\n //=================================================================================\\n // VARIABLES \\n //=================================================================================\\n if (typeof localTesting === \\\"undefined\\\") {\\n var localTesting = \\\"False\\\";\\n }\\n var customIdValue = '';\\n var isCorrectOperation = true;\\n var index = 20;\\n var timeout = 1500;\\n var fix_state;\\n var satelites;\\n var latitude;\\n var longitude;\\n var altitude;\\n var speed;\\n var event_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_accuracy = \\\"5000\\\";\\n var onTrackingDemand = false;\\n var isSleep = 'false'\\n var amber_State = '';\\n var amber_Timer = '';\\n var movement_Value = '';\\n var dataToReceiver = [];\\n var codeValues = [];\\n var configsToAck = [];\\n //If the event type matches a global template\\n if (globalTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE10');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //In case the message is \\\"STC\\\" (Start Connection)\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n var imei = hex_to_ascii(rawFromBytes).slice(2);\\n AddValue(codeValues, \\\"imei\\\", imei);\\n var c = createConnection(5678, '127.0.0.1');\\n c.write(`GH5200-STC,${imei},${serverParams.Guid}`);\\n //Imei is recevied in hex\\n AddValue(codeValues, \\\"ack_stc\\\", \\\"01\\\");\\n c.end();\\n //In case the message is a codec8 (either codec8 or codec8 Extended)\\n } else if (messageTypeLocalCode == \\\"COD8-Global\\\") {\\n var ack;\\n //Get the full hex message in a readable format\\n var message = rawFromBytes;\\n var codecID = message.substring(16, 18);\\n //Get the imei from serverParams\\n var imei = serverParams.Imei\\n //Either codec 8 or codec 8 Extended\\n if (codecID == '08' || codecID == '8E') {\\n messages = decryptCodec8(message);\\n if (isCorrectOperation == false) {\\n return;\\n }\\n var numberOfData = message.substring(18, 20)\\n // var c = createConnection(5678, '127.0.0.1');\\n // c.on('data', function(data) {\\n // var msgLocal = [];\\n // //if ack ends with OTD, then onTrackingDemand = true\\n // if (data.toString().endsWith('OTD')) {\\n // onTrackingDemand = true\\n // }\\n // //The device can send more than one event on the same message. In this case, a part of the ack is the number of messages received\\n // //So, we only ack when we have received the last event of the message.\\n // if (data.toString().startsWith(`L${messages.length}`)) {\\n // //In case the event demands a tracking, the ack is the number of data followed by the command on_demand_tracking2 (already encoded)\\n // if (onTrackingDemand == true) {\\n // AddValue(msgLocal, 'ack_cod8', `000000${numberOfData}000000000000001D0C0105000000156F6E5F64656D616E645F747261636B696E67320D0A0100002EB9`);\\n // //Mandatory to push the imei when on a global template\\n // AddValue(msgLocal, 'imei', imei);\\n // //Mandatory to do console.log(msg);\\n // console.log(msgLocal);\\n // c.end();\\n // }\\n // //The device needs to be ack'ed the number of data in 4 bytes\\n // else {\\n //Ack with the number of messages received to make the device know that the server understood the full message.\\n AddValue(codeValues, 'ack_cod8', `000000${numberOfData}`);\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n //Mandatory to do console.log(msg);\\n //console.log(msg);\\n // c.end();\\n // }\\n // }\\n // });\\n //Internally send all the events on the same message received.\\n for (let i = 0; i < messages.length; i++) {\\n //c.write(messages[i]);\\n connect(5678, messages, i);\\n //console.log(messages[i]);\\n }\\n //In case the message is a codec12 (command ack)\\n } else if (codecID == '0C') {\\n var codec12 = decryptCodec12(message)\\n var c = createConnection(5678, '127.0.0.1');\\n //Internally send a codec12 message in the homogenous ascii format\\n c.write(`GH5200-COD12,${serverParams.Imei},${codec12}`);\\n c.end();\\n //Because the codec12 message is matched by the same global template than the codec8 message, we need to push \\\"ack_cod8\\\" as an empty string.\\n AddValue(codeValues, 'ack_cod8', '');\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n }\\n }\\n }\\n //In the case the message is matched by an oystaTemplate\\n if (oystaTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE10');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //If the message is a decrypted version for start the connection\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n // stc conditions\\n AddValue(codeValues, 'ack_stc', '01');\\n }\\n //If the message is a codec8 (event not taken into account by us) \\n else if (messageTypeLocalCode == 'COD8') {\\n if (params.recordNumber) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n //In case the message is Real Time Location\\n else if (messageTypeLocalCode == \\\"RTL\\\") {\\n //If the message has a gps fix\\n if (params.gps == \\\"1\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 1)\\n //Speed to m/s\\n AddValue(codeValues, \\\"speed\\\", params.speed_raw / 3.6)\\n //Location time to actual time. It is not provided on the message\\n location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n //Event time to actual time. It is not provided on the message\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n //Hardcoded accuracy of 500. No hdop or satellites are provided on the message\\n AddValue(codeValues, \\\"location_accuracy\\\", 500)\\n }\\n //If the message does not have a gps fix, we do not use it as we cannot make sure it is real\\n else if (params.gps == \\\"0\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n }\\n //If the event is an Alarm or Position By Button, send a flag (ODT) so the device is asked for on_demand_tracking\\n else if (messageTypeLocalCode == \\\"PBB\\\" || messageTypeCode.startsWith('AL')) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message. If it is a Position by button or any kind of alarm, it needs to be follow by \\\"ODT\\\" in order to ask for a tracking\\n //This is used to make sure the gps is awake. It will solve the error of alarms sent before there is a gps fix\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}OTD`);\\n //If the event is an ack for a SMS command (Redirected from Esendex)\\n } else if (messageTypeLocalCode.startsWith('ACK-SMS')) {\\n //No fix state\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n //Event and location time to actual time in order to show the messages on the events table\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n var c = createConnection(5678, '127.0.0.1');\\n //If the message is a sms ack for a \\\"normal command\\\" (this means the ack will start with \\\"New value \\\")\\n if (messageTypeLocalCode == \\\"ACK-SMS\\\") {\\n if (params.smsAck) {\\n //Add \\\"-SMS\\\" at the end so we can differentiate between a sms and grps ack for a command.\\n var smsAck = params.smsAck + '-SMS;'\\n // the essendex message the device sends in gets converted here\\n c.write(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n debug(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n if (!smsAck.startsWith('2001:')) {\\n //Add tag no commands so no commands are sent to the device after a sms ack. The device will not accept a command after a sms ack. This prevents lots of problems.\\n AddValue(codeValues, 'no_commands', 'true');\\n //As it is redirected from Esende, it is mandatroy to push the imei\\n AddValue(codeValues, 'imei', serverParams.Imei);\\n }\\n }\\n }\\n //We do not need to send the tag \\\"no_commands\\\" on the next 3 message types since we have already checked that option on the message type that matched the Esendex resend.\\n //If the message is a sms ack for \\\"Delete Records\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-DR\\\") {\\n var smsAck = '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},All records are erased${smsAck}`);\\n }\\n //If the message is a sms ack for \\\"Get Info\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GI\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},RTC:${smsAck}`);\\n }\\n }\\n //If the message is a sms ack for \\\"Get Version\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GV\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},Ver:${smsAck}`);\\n }\\n }\\n c.end()\\n } else if (messageTypeLocalCode.startsWith(\\\"ACK-ALF\\\")) {\\n if (messageTypeLocalCode == \\\"ACK-ALF\\\") {\\n var newAlldata = \\\"12100:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS2\\\") {\\n var newAlldata = \\\"14390:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS3\\\") {\\n var newAlldata = \\\"12101:\\\" + params.alldata;\\n }\\n if (newAlldata != null) {\\n var keyValues = ['12101', '12102', '12103', '12111', '12100', '13019', '13022', '14390', '14392', '14393', '14391', '14397', '14430', '14432', '14433', '14431', '14437', '14170', '14320', '14173', '14323', '7222', '12104'];\\n var configParamNames = ['FallAlarmSettings.Position', 'FallAlarmSettings.Angle', 'FallAlarmSettings.Timeout', 'FallAlarmSettings.SilentPreAlarmDelay', 'FallAlarmSettings.EnableDisableFallAlarmSettings', 'FallAlarmSettings.EnableDisableByButtons', 'FallAlarmSettings.EnableDisableByButtons', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'FallAlarmSettings.Indication', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed'];\\n var ackSMSArray = newAlldata.split(';');\\n var findIndexOfBlankSMS = ackSMSArray.findIndex(element => element.includes(\\\"-SMS\\\"));\\n if (ackSMSArray[findIndexOfBlankSMS] === \\\"-SMS\\\") {\\n ackSMSArray.pop()\\n }\\n AddValue(codeValues, \\\"imei\\\", serverParams.Imei);\\n for (let i = 0; i < ackSMSArray.length; i++) {\\n var keyId = ackSMSArray[i].split(':')[0]; // id of the param saved in the array\\n var keyValue = ackSMSArray[i].split(':')[1]; // value of the param \\n var findIndex = keyValues.indexOf(keyId)\\n if (configParamNames[findIndex] != \\\"No-Ack-Needed\\\") {\\n var intellicareDataSetValue = eval('configs' + '.' + configParamNames[findIndex])\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableFallAlarmSettings\\\") {\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (intellicareDataSetValue == \\\"true\\\") {\\n intellicareDataSetValue = \\\"1\\\"\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n // if enableDisableByButtonsIndex is unchecked then overwrite the EnableDisableFallAlarmSettings value\\n var enableDisableByButtonsIndex = ackSMSArray.findIndex(element => element.includes(\\\"13019\\\" || \\\"13022\\\"));\\n var valueOfenableDisableByButtons = ackSMSArray[enableDisableByButtonsIndex].slice(-1)\\n if (valueOfenableDisableByButtons != \\\"0\\\") {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableByButtons\\\") {\\n if (intellicareDataSetValue == \\\"true\\\") {\\n if (keyId == \\\"13019\\\") {\\n intellicareDataSetValue = \\\"2\\\"\\n } else if (keyId == \\\"13022\\\") {\\n intellicareDataSetValue = \\\"3\\\"\\n }\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n if (keyValue == intellicareDataSetValue) {\\n configsToAck.push(eval('configIds' + '.' + configParamNames[findIndex]))\\n debug(\\\"Matched values of param\\\" + configParamNames[findIndex]);\\n } else {\\n debug(\\\"Not matched values of param\\\" + configParamNames[findIndex]);\\n }\\n }\\n }\\n }\\n }\\n //If the message is an ack, push the needed information to appear on the UI events.\\n else if (messageTypeLocalCode.startsWith('ACK-')) {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n //If the message is a decrypted version for codec8. This will include Cycles, and all the rest of messages not represented on the else if before \\n else {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n //AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n // If customID is not set....\\n if (isCorrectOperation) {\\n if (configsToAck.length > 0) {\\n var dataToReceiver = {\\n 'values': codeValues,\\n 'configsToAck': configsToAck,\\n };\\n } else {\\n var dataToReceiver = {\\n 'values': codeValues\\n };\\n }\\n console.log(dataToReceiver);\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {String} Ascii message\\n */\\n function decryptCodec12(message) {\\n var decoded = '';\\n var data12 = message.slice(30, -10);\\n data12 = hex_to_ascii(data12);\\n return data12;\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {Array} Array of Ascii messages\\n */\\n function decryptCodec8(message) {\\n //Initialise variables\\n var decoded = '';\\n var codecID = message.substring(16, 18);\\n decoded += codecID + ';';\\n var numberOfData = message.substring(18, 20);\\n decoded += numberOfData + ';';\\n var records = [];\\n var prox = 0;\\n //Loop number of events on a message times\\n for (i = 0; i < hexToDecimal(numberOfData); i++) {\\n //Initialise and transform variables\\n isSleep = 'false'\\n amber_State = '';\\n amber_Timer = '';\\n var decoded_final = '';\\n var record = '';\\n var timestamp = message.substring(index, index += 16);\\n timestamp = hexToDecimal(timestamp).toString().slice(0, -3)\\n timestamp = parseInt(timestamp, 10);\\n var priority = message.substring(index, index += 2);\\n var longitude = message.substring(index, index += 8);\\n longitude = hexToDecimalSigned(longitude) / 10000000;\\n var latitude = message.substring(index, index += 8);\\n latitude = hexToDecimalSigned(latitude) / 10000000;\\n var altitude = message.substring(index, index += 4);\\n altitude = hexToDecimalSigned(altitude);\\n var angle = message.substring(index, index += 4);\\n angle = hexToDecimalSigned(angle);\\n var satelites = message.substring(index, index += 2);\\n satelites = hexToDecimal(satelites);\\n var speed = message.substring(index, index += 4);\\n //Speed to m/s\\n speed = (hexToDecimal(speed) / 3.6).toFixed(2)\\n //If the message is a codec 8\\n if (codecID == '8E') {\\n var ioEvent = message.substring(index, index += 4);\\n var ioElementsTotal = message.substring(index, index += 4);\\n }\\n //If the message is a codec 8 Extended\\n else if (codecID == '08') {\\n var ioEvent = message.substring(index, index += 2);\\n var ioElementsTotal = message.substring(index, index += 2);\\n }\\n ioEvent = hexToDecimal(ioEvent);\\n //Switch to determine which is the event on the message\\n switch (ioEvent) {\\n case 0:\\n ioEvent = 'NoEvent';\\n break;\\n case 236:\\n ioEvent = 'Alarm';\\n break;\\n case 242:\\n ioEvent = 'ManDown';\\n break;\\n case 255:\\n ioEvent = 'OverSpeeding';\\n break;\\n case 310:\\n ioEvent = 'Movement_Event';\\n break;\\n case 389:\\n ioEvent = 'ButtonClick';\\n break;\\n case 1000:\\n ioEvent = 'Cycle';\\n break;\\n case 240:\\n ioEvent = 'Movement';\\n break\\n case 874:\\n ioEvent = 'BLT_violation_state';\\n break;\\n case 875:\\n ioEvent = 'Proximity_violation_source';\\n break;\\n case 874:\\n ioEvent = 'Proximity_duration';\\n break;\\n case 874:\\n ioEvent = 'BLT_MAC_Address';\\n break;\\n case 200:\\n ioEvent = 'Sleep_Mode';\\n break;\\n case 390:\\n ioEvent = 'PowerOff';\\n break;\\n case 200000:\\n ioEvent = 'PowerOn';\\n break;\\n case 400:\\n ioEvent = 'AmberAlert';\\n break;\\n default:\\n ioEvent = ioEvent + ':Not_recognised';\\n }\\n //Get the IO ids part of the message\\n var iods = IOIdsValues(message, ioElementsTotal, timestamp);\\n if (customIdValue != '') {\\n //we find the customIdValue at any point, \\n //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n isCorrectOperation = false;\\n return;\\n }\\n //Internally send the events translated to a readable format and using the format needed to match the message types.\\n if (ioEvent == 'Alarm') {\\n record = `GH5200-ALSOS,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'ManDown') {\\n record = `GH5200-ALF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'OverSpeeding') {\\n record = `GH5200-ALSP,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AutoGeofenceEvent' || ioEvent.startsWith('Geofence')) {\\n record = `GH5200-AGEO,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'NoEvent' || ioEvent == 'Cycle') {\\n //If the device is on sleep mode, it will not have send locations. For this reason, the message will be a Heartbeat and not a Cycle\\n if (isSleep == 'true') {\\n record = `GH5200-HTB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n } else if (ioEvent == 'Movement_Event') {\\n if (movement_Value == 'Movement_Event=NoMovement') {\\n record = `GH5200-ALNM,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (movement_Value == 'Movement_Event=Movement') {\\n record = `GH5200-ALMV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n //If the event is triggered because the device has entrered on Sleep mode, set an accuracy on 5000 to force a location. With this, we make sure we sent the last know location and we don't lose it.\\n //Without this, it can happen that a location is sent, another one acquired but never sent because went to sleep mode\\n else if (ioEvent == 'Sleep_Mode') {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n var iodsValues = iods.split(\\\";\\\");\\n iodsValues[0] = 1\\n if (iodsValues[2] == 0 && longitude != '0' && latitude != '0') {\\n iodsValues[2] = 5000\\n }\\n iods = iodsValues.join(\\\";\\\");\\n //} else if (ioEvent == 'Movement') {\\n // record = `GH5200-MV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'Proximity_violation_source' || ioEvent == 'Proximity_duration' || ioEvent == 'BLT_MAC_Address') {\\n record = `${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n prox = 1;\\n } else if (ioEvent == 'ButtonClick') {\\n record = `GH5200-PBB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AmberAlert') {\\n if (amber_State && amber_Timer) {\\n if (amber_State == 'Amber_Alert_State=Cancelled') {\\n record = `GH5200-ALA-C,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=On') {\\n record = `GH5200-ALA-O,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Snoozed') {\\n record = `GH5200-ALA-S,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Alarm') {\\n record = `GH5200-ALA,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n } else if (ioEvent == 'PowerOn') {\\n record = `GH5200-PWRN,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'PowerOff') {\\n record = `GH5200-PWRF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //In case the event has been created by an \\\"unknown\\\" IO Event (or not considered)\\n else {\\n record = `GH5200-COD8,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //console.log('--------------------' + decoded_final)\\n record = record + iods;\\n if (prox == 1) {\\n var values = iods.split(\\\";\\\");\\n if (values[4].startsWith('Proximity_duration')) {\\n var prox_duration = values[4].split(\\\"=\\\");\\n if (prox_duration[1] < 1) {\\n record = 'GH5200-PROXS,' + record;\\n } else if (prox_duration[1] >= 1) {\\n record = 'GH5200-PROXE,' + record;\\n }\\n }\\n prox = 0\\n }\\n //Push each record into a records array\\n records.push(record);\\n debug(record);\\n }\\n var CRC = message.substring(index + 2, index + 10);\\n //return an array with all records stored\\n return records;\\n }\\n /**\\n * Decrypts part of the message that contains the IO Ids and its values\\n * @param {String} message String to decrypt\\n * @param {String} ioElementsTotal Number of IO elements present on the message\\n * @param {Int} timestamp Unix timestamp given from the message\\n * @return {String} String with the IO Ids and its values decrypted on a readable format\\n */\\n function IOIdsValues(message, ioElementsTotal, timestamp) {\\n //Variable initialisation\\n var decoded = '';\\n var iods = '';\\n var gpsTime = 0;\\n var prox_source = '';\\n var prox_duration = '';\\n var BLT_state = '';\\n var BLT_MAC = '';\\n for (let i = 1; i <= 8; i = i * 2) {\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var ioNumElements = message.substring(index, index += 2);\\n }\\n var x = hexToDecimal(ioNumElements);\\n var pos = 2 * i;\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n //Id length depends on the codec\\n if (codecID == '8E') {\\n var id = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var id = message.substring(index, index += 2);\\n }\\n var value = message.substring(index, index += pos);\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n case 310:\\n id = 'Movement_Event';\\n if (value == '0') value = 'Movement';\\n else if (value == '1') value = 'NoMovement';\\n movement_Value = id + '=' + value;\\n break;\\n case 854: //Custom ID\\n customIdValue = value;\\n if (value != '') {\\n //we get the customIdValue at any point, \\n //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n isCorrectOperation = false;\\n return;\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n //Return decoded string with all the ids and its values on a readable format\\n decoded += ioNumElements + ';' + iods;\\n }\\n //ids with variable length on codec8 Extended\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n var x = hexToDecimal(ioNumElements);\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n var id = message.substring(index, index += 4);\\n var len = message.substring(index, index += 4);\\n len = hexToDecimal(len) * 2;\\n var value = message.substring(index, index += len);\\n valueHex = value;\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n decoded += ioNumElements + ';' + iods;\\n }\\n //Making sure location_accuracy has a value\\n if (!location_accuracy) location_accuracy = 0;\\n //Making sure battery_percentage has a value\\n if (!battery_percentage) battery_percentage = 0;\\n decoded_final = fix_state + ';' + gpsTime + ';' + location_accuracy + ';' + battery_percentage;\\n if (BLT_state) {\\n decoded_final += ';' + BLT_state;\\n }\\n if (prox_source) {\\n decoded_final += ';' + prox_source;\\n }\\n if (prox_duration) {\\n decoded_final += ';' + prox_duration;\\n }\\n if (BLT_MAC) {\\n decoded_final += ';' + BLT_MAC;\\n }\\n if (amber_State && amber_Timer) {\\n decoded_final += ';' + amber_State + ';' + amber_Timer;\\n }\\n decoded_final += ';;' + ioElementsTotal + ';' + decoded;\\n //Return final string with decoed iods\\n return decoded_final;\\n }\\n /**\\n * Create connection to the server\\n * @param {Int} port Port to connect\\n * @param {String} server Server to connect\\n * @return {net.socket} The newly created socket used to start the connection.\\n */\\n function createConnection(port, server) {\\n c = net.createConnection(port, server);\\n c.on('error', function(error) {\\n c = createConnection(port, server);\\n });\\n return c;\\n }\\n\\n function connect(port, inter, a) {\\n return new Promise(resolve => {\\n const socket = net.createConnection(port, '127.0.0.1', () => {\\n socket.write(inter[a], () => {\\n socket.destroy(); //socket.destroy(); to socket.close();\\n resolve();\\n });\\n });\\n });\\n }\\n\\n function debug(str) { // write debug info to console log, if localTesting\\n if (localTesting === \\\"True\\\") {\\n console.log(str);\\n }\\n }\\n /**\\n * Convert from ascii to hexadecimal\\n * @param {String} str Ascii string\\n * @return {Array} str converted to Hexadecimal\\n */\\n function ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n }\\n /**\\n * Convert from Hexadecimal to Ascii\\n * @param {String} str1 Hexadecimal string\\n * @return {String} str1 converted to Ascii\\n */\\n function 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 /**\\n * Convert from Hexadecimal to Decimal signed (allowing negative numbers)\\n * @param {Double} hex Hexadecimal number\\n * @return {Double} hex converted to Decimal signed\\n */\\n function hexToDecimalSigned(hex) {\\n if (hex.length % 2 != 0) {\\n hex = \\\"0\\\" + hex;\\n }\\n var num = parseInt(hex, 16);\\n var maxVal = Math.pow(2, hex.length / 2 * 8);\\n if (num > maxVal / 2 - 1) {\\n num = num - maxVal\\n }\\n return num;\\n }\\n /**\\n * Convert from Hexadecimal to Decimal\\n * @param {Double} x Hexadecimal number\\n * @return {Double} x converted to Decimal\\n */\\n function hexToDecimal(x) {\\n x = parseInt(x, 16);\\n return x;\\n }\\n /**\\n * Push value to the message arrray\\n * @param {String} p1 Name given to the code to push\\n * @param {} p2 Value to push\\n */\\n // pass everything into codevaluearray\\n function AddValue(codeValueArray, p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n codeValueArray.push(cvpair);\\n }\\n // modify to return the object that contains your data\\n return dataToReceiver;\\n}\\n// params is not defined locally -> export as module\\nif (typeof(params) === 'undefined') {\\n module.exports = {\\n execute_ops\\n }\\n} else { // on server use local defined vars\\n let return_values = execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, false)\\n // define global returns\\n msg = return_values;\\n}\",\"Type\":0,\"ProtocolActionObjects\":[]}","Timestamp":1727798088},{"Type":1,"NewValue":"{\"Id\":332,\"Name\":\"GH5200\",\"Operation\":\"function execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, localTesting) {\\n //###############################################################################################################################################################################################################\\n // Badege Operation Script\\n // * Operation script for Badge\\n // * Uses Long Connection: true\\n // *\\n // * GLOBAL TEMPLATE: <>,<>,<>, <>\\n // * Encrypted: true\\n // * \\n // * CYCLE TEMPLATE:\\n // * GH5200-CYC,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>\\n //###############################################################################################################################################################################################################\\n //=================================================================================\\n // VARIABLES \\n //=================================================================================\\n if (typeof localTesting === \\\"undefined\\\") {\\n var localTesting = \\\"False\\\";\\n }\\n var customIdValue = '';\\n var isCorrectOperation = true;\\n var index = 20;\\n var timeout = 1500;\\n var fix_state;\\n var satelites;\\n var latitude;\\n var longitude;\\n var altitude;\\n var speed;\\n var event_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_accuracy = \\\"5000\\\";\\n var onTrackingDemand = false;\\n var isSleep = 'false'\\n var amber_State = '';\\n var amber_Timer = '';\\n var movement_Value = '';\\n var dataToReceiver = [];\\n var codeValues = [];\\n var configsToAck = [];\\n //If the event type matches a global template\\n if (globalTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE10');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //In case the message is \\\"STC\\\" (Start Connection)\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n var imei = hex_to_ascii(rawFromBytes).slice(2);\\n AddValue(codeValues, \\\"imei\\\", imei);\\n sendMessageToLocalhost(`GH5200-STC,${imei},${serverParams.Guid}`);\\n // var c = createConnection(5678, '127.0.0.1');\\n // c.write(`GH5200-STC,${imei},${serverParams.Guid}`);\\n // //Imei is recevied in hex\\n // AddValue(codeValues, \\\"ack_stc\\\", \\\"01\\\");\\n // c.end();\\n //In case the message is a codec8 (either codec8 or codec8 Extended)\\n } else if (messageTypeLocalCode == \\\"COD8-Global\\\") {\\n var ack;\\n //Get the full hex message in a readable format\\n var message = rawFromBytes;\\n var codecID = message.substring(16, 18);\\n //Get the imei from serverParams\\n var imei = serverParams.Imei\\n //Either codec 8 or codec 8 Extended\\n if (codecID == '08' || codecID == '8E') {\\n messages = decryptCodec8(message);\\n if (isCorrectOperation == false) {\\n return;\\n }\\n var numberOfData = message.substring(18, 20)\\n // var c = createConnection(5678, '127.0.0.1');\\n // c.on('data', function(data) {\\n // var msgLocal = [];\\n // //if ack ends with OTD, then onTrackingDemand = true\\n // if (data.toString().endsWith('OTD')) {\\n // onTrackingDemand = true\\n // }\\n // //The device can send more than one event on the same message. In this case, a part of the ack is the number of messages received\\n // //So, we only ack when we have received the last event of the message.\\n // if (data.toString().startsWith(`L${messages.length}`)) {\\n // //In case the event demands a tracking, the ack is the number of data followed by the command on_demand_tracking2 (already encoded)\\n // if (onTrackingDemand == true) {\\n // AddValue(msgLocal, 'ack_cod8', `000000${numberOfData}000000000000001D0C0105000000156F6E5F64656D616E645F747261636B696E67320D0A0100002EB9`);\\n // //Mandatory to push the imei when on a global template\\n // AddValue(msgLocal, 'imei', imei);\\n // //Mandatory to do console.log(msg);\\n // console.log(msgLocal);\\n // c.end();\\n // }\\n // //The device needs to be ack'ed the number of data in 4 bytes\\n // else {\\n //Ack with the number of messages received to make the device know that the server understood the full message.\\n AddValue(codeValues, 'ack_cod8', `000000${numberOfData}`);\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n //Mandatory to do console.log(msg);\\n //console.log(msg);\\n // c.end();\\n // }\\n // }\\n // });\\n //Internally send all the events on the same message received.\\n for (let i = 0; i < messages.length; i++) {\\n //c.write(messages[i]);\\n sendMessageToLocalhost(messages[i]);\\n // connect(5678, messages, i);\\n //console.log(messages[i]);\\n }\\n //In case the message is a codec12 (command ack)\\n } else if (codecID == '0C') {\\n var codec12 = decryptCodec12(message)\\n sendMessageToLocalhost(`GH5200-COD12,${serverParams.Imei},${codec12}`);\\n // var c = createConnection(5678, '127.0.0.1');\\n // //Internally send a codec12 message in the homogenous ascii format\\n // c.write(`GH5200-COD12,${serverParams.Imei},${codec12}`);\\n // c.end();\\n //Because the codec12 message is matched by the same global template than the codec8 message, we need to push \\\"ack_cod8\\\" as an empty string.\\n AddValue(codeValues, 'ack_cod8', '');\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n }\\n }\\n }\\n //In the case the message is matched by an oystaTemplate\\n if (oystaTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE10');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //If the message is a decrypted version for start the connection\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n // stc conditions\\n AddValue(codeValues, 'ack_stc', '01');\\n }\\n //If the message is a codec8 (event not taken into account by us) \\n else if (messageTypeLocalCode == 'COD8') {\\n if (params.recordNumber) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n //In case the message is Real Time Location\\n else if (messageTypeLocalCode == \\\"RTL\\\") {\\n //If the message has a gps fix\\n if (params.gps == \\\"1\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 1)\\n //Speed to m/s\\n AddValue(codeValues, \\\"speed\\\", params.speed_raw / 3.6)\\n //Location time to actual time. It is not provided on the message\\n location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n //Event time to actual time. It is not provided on the message\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n //Hardcoded accuracy of 500. No hdop or satellites are provided on the message\\n AddValue(codeValues, \\\"location_accuracy\\\", 500)\\n }\\n //If the message does not have a gps fix, we do not use it as we cannot make sure it is real\\n else if (params.gps == \\\"0\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n }\\n //If the event is an Alarm or Position By Button, send a flag (ODT) so the device is asked for on_demand_tracking\\n else if (messageTypeLocalCode == \\\"PBB\\\" || messageTypeCode.startsWith('AL')) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message. If it is a Position by button or any kind of alarm, it needs to be follow by \\\"ODT\\\" in order to ask for a tracking\\n //This is used to make sure the gps is awake. It will solve the error of alarms sent before there is a gps fix\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}OTD`);\\n //If the event is an ack for a SMS command (Redirected from Esendex)\\n } else if (messageTypeLocalCode.startsWith('ACK-SMS')) {\\n //No fix state\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n //Event and location time to actual time in order to show the messages on the events table\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n var c = createConnection(5678, '127.0.0.1');\\n //If the message is a sms ack for a \\\"normal command\\\" (this means the ack will start with \\\"New value \\\")\\n if (messageTypeLocalCode == \\\"ACK-SMS\\\") {\\n if (params.smsAck) {\\n //Add \\\"-SMS\\\" at the end so we can differentiate between a sms and grps ack for a command.\\n var smsAck = params.smsAck + '-SMS;'\\n // the essendex message the device sends in gets converted here\\n c.write(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n debug(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n if (!smsAck.startsWith('2001:')) {\\n //Add tag no commands so no commands are sent to the device after a sms ack. The device will not accept a command after a sms ack. This prevents lots of problems.\\n AddValue(codeValues, 'no_commands', 'true');\\n //As it is redirected from Esende, it is mandatroy to push the imei\\n AddValue(codeValues, 'imei', serverParams.Imei);\\n }\\n }\\n }\\n //We do not need to send the tag \\\"no_commands\\\" on the next 3 message types since we have already checked that option on the message type that matched the Esendex resend.\\n //If the message is a sms ack for \\\"Delete Records\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-DR\\\") {\\n var smsAck = '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},All records are erased${smsAck}`);\\n }\\n //If the message is a sms ack for \\\"Get Info\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GI\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},RTC:${smsAck}`);\\n }\\n }\\n //If the message is a sms ack for \\\"Get Version\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GV\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},Ver:${smsAck}`);\\n }\\n }\\n c.end()\\n } else if (messageTypeLocalCode.startsWith(\\\"ACK-ALF\\\")) {\\n if (messageTypeLocalCode == \\\"ACK-ALF\\\") {\\n var newAlldata = \\\"12100:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS2\\\") {\\n var newAlldata = \\\"14390:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS3\\\") {\\n var newAlldata = \\\"12101:\\\" + params.alldata;\\n }\\n if (newAlldata != null) {\\n var keyValues = ['12101', '12102', '12103', '12111', '12100', '13019', '13022', '14390', '14392', '14393', '14391', '14397', '14430', '14432', '14433', '14431', '14437', '14170', '14320', '14173', '14323', '7222', '12104'];\\n var configParamNames = ['FallAlarmSettings.Position', 'FallAlarmSettings.Angle', 'FallAlarmSettings.Timeout', 'FallAlarmSettings.SilentPreAlarmDelay', 'FallAlarmSettings.EnableDisableFallAlarmSettings', 'FallAlarmSettings.EnableDisableByButtons', 'FallAlarmSettings.EnableDisableByButtons', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'FallAlarmSettings.Indication', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed'];\\n var ackSMSArray = newAlldata.split(';');\\n var findIndexOfBlankSMS = ackSMSArray.findIndex(element => element.includes(\\\"-SMS\\\"));\\n if (ackSMSArray[findIndexOfBlankSMS] === \\\"-SMS\\\") {\\n ackSMSArray.pop()\\n }\\n AddValue(codeValues, \\\"imei\\\", serverParams.Imei);\\n for (let i = 0; i < ackSMSArray.length; i++) {\\n var keyId = ackSMSArray[i].split(':')[0]; // id of the param saved in the array\\n var keyValue = ackSMSArray[i].split(':')[1]; // value of the param \\n var findIndex = keyValues.indexOf(keyId)\\n if (configParamNames[findIndex] != \\\"No-Ack-Needed\\\") {\\n var intellicareDataSetValue = eval('configs' + '.' + configParamNames[findIndex])\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableFallAlarmSettings\\\") {\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (intellicareDataSetValue == \\\"true\\\") {\\n intellicareDataSetValue = \\\"1\\\"\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n // if enableDisableByButtonsIndex is unchecked then overwrite the EnableDisableFallAlarmSettings value\\n var enableDisableByButtonsIndex = ackSMSArray.findIndex(element => element.includes(\\\"13019\\\" || \\\"13022\\\")); // button 1 long click or button 2 long click\\n if (enableDisableByButtonsIndex != -1) {\\n var valueOfenableDisableByButtons = ackSMSArray[enableDisableByButtonsIndex].slice(-1)\\n if (valueOfenableDisableByButtons != \\\"0\\\") {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n }\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableByButtons\\\") {\\n if (intellicareDataSetValue == \\\"true\\\") {\\n if (keyId == \\\"13019\\\") {\\n intellicareDataSetValue = \\\"2\\\"\\n } else if (keyId == \\\"13022\\\") {\\n intellicareDataSetValue = \\\"3\\\"\\n }\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n if (keyValue == intellicareDataSetValue) {\\n configsToAck.push(eval('configIds' + '.' + configParamNames[findIndex]))\\n debug(\\\"Matched values of param\\\" + configParamNames[findIndex]);\\n } else {\\n debug(\\\"Not matched values of param\\\" + configParamNames[findIndex]);\\n }\\n }\\n }\\n }\\n }\\n //If the message is an ack, push the needed information to appear on the UI events.\\n else if (messageTypeLocalCode.startsWith('ACK-')) {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n //If the message is a decrypted version for codec8. This will include Cycles, and all the rest of messages not represented on the else if before \\n else {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n //AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n // If customID is not set....\\n if (isCorrectOperation) {\\n if (configsToAck.length > 0) {\\n dataToReceiver = {\\n 'values': codeValues,\\n 'configsToAck': configsToAck,\\n };\\n } else {\\n dataToReceiver = {\\n 'values': codeValues\\n };\\n }\\n console.log(dataToReceiver);\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {String} Ascii message\\n */\\n function decryptCodec12(message) {\\n var decoded = '';\\n var data12 = message.slice(30, -10);\\n data12 = hex_to_ascii(data12);\\n return data12;\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {Array} Array of Ascii messages\\n */\\n function decryptCodec8(message) {\\n //Initialise variables\\n var decoded = '';\\n var codecID = message.substring(16, 18);\\n decoded += codecID + ';';\\n var numberOfData = message.substring(18, 20);\\n decoded += numberOfData + ';';\\n var records = [];\\n var prox = 0;\\n //Loop number of events on a message times\\n for (i = 0; i < hexToDecimal(numberOfData); i++) {\\n //Initialise and transform variables\\n isSleep = 'false'\\n amber_State = '';\\n amber_Timer = '';\\n var decoded_final = '';\\n var record = '';\\n var timestamp = message.substring(index, index += 16);\\n timestamp = hexToDecimal(timestamp).toString().slice(0, -3)\\n timestamp = parseInt(timestamp, 10);\\n var priority = message.substring(index, index += 2);\\n var longitude = message.substring(index, index += 8);\\n longitude = hexToDecimalSigned(longitude) / 10000000;\\n var latitude = message.substring(index, index += 8);\\n latitude = hexToDecimalSigned(latitude) / 10000000;\\n var altitude = message.substring(index, index += 4);\\n altitude = hexToDecimalSigned(altitude);\\n var angle = message.substring(index, index += 4);\\n angle = hexToDecimalSigned(angle);\\n var satelites = message.substring(index, index += 2);\\n satelites = hexToDecimal(satelites);\\n var speed = message.substring(index, index += 4);\\n //Speed to m/s\\n speed = (hexToDecimal(speed) / 3.6).toFixed(2)\\n //If the message is a codec 8\\n if (codecID == '8E') {\\n var ioEvent = message.substring(index, index += 4);\\n var ioElementsTotal = message.substring(index, index += 4);\\n }\\n //If the message is a codec 8 Extended\\n else if (codecID == '08') {\\n var ioEvent = message.substring(index, index += 2);\\n var ioElementsTotal = message.substring(index, index += 2);\\n }\\n ioEvent = hexToDecimal(ioEvent);\\n //Switch to determine which is the event on the message\\n switch (ioEvent) {\\n case 0:\\n ioEvent = 'NoEvent';\\n break;\\n case 236:\\n ioEvent = 'Alarm';\\n break;\\n case 242:\\n ioEvent = 'ManDown';\\n break;\\n case 255:\\n ioEvent = 'OverSpeeding';\\n break;\\n case 310:\\n ioEvent = 'Movement_Event';\\n break;\\n case 389:\\n ioEvent = 'ButtonClick';\\n break;\\n case 1000:\\n ioEvent = 'Cycle';\\n break;\\n case 240:\\n ioEvent = 'Movement';\\n break\\n case 874:\\n ioEvent = 'BLT_violation_state';\\n break;\\n case 875:\\n ioEvent = 'Proximity_violation_source';\\n break;\\n case 874:\\n ioEvent = 'Proximity_duration';\\n break;\\n case 874:\\n ioEvent = 'BLT_MAC_Address';\\n break;\\n case 200:\\n ioEvent = 'Sleep_Mode';\\n break;\\n case 390:\\n ioEvent = 'PowerOff';\\n break;\\n case 200000:\\n ioEvent = 'PowerOn';\\n break;\\n case 400:\\n ioEvent = 'AmberAlert';\\n break;\\n default:\\n ioEvent = ioEvent + ':Not_recognised';\\n }\\n //Get the IO ids part of the message\\n var iods = IOIdsValues(message, ioElementsTotal, timestamp);\\n // if (customIdValue != '') {\\n // //we find the customIdValue at any point, \\n // //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n // isCorrectOperation = false;\\n // return;\\n // }\\n //Internally send the events translated to a readable format and using the format needed to match the message types.\\n if (ioEvent == 'Alarm') {\\n record = `GH5200-ALSOS,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'ManDown') {\\n record = `GH5200-ALF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'OverSpeeding') {\\n record = `GH5200-ALSP,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AutoGeofenceEvent' || ioEvent.startsWith('Geofence')) {\\n record = `GH5200-AGEO,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'NoEvent' || ioEvent == 'Cycle') {\\n //If the device is on sleep mode, it will not have send locations. For this reason, the message will be a Heartbeat and not a Cycle\\n if (isSleep == 'true') {\\n record = `GH5200-HTB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n } else if (ioEvent == 'Movement_Event') {\\n if (movement_Value == 'Movement_Event=NoMovement') {\\n record = `GH5200-ALNM,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (movement_Value == 'Movement_Event=Movement') {\\n record = `GH5200-ALMV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n //If the event is triggered because the device has entrered on Sleep mode, set an accuracy on 5000 to force a location. With this, we make sure we sent the last know location and we don't lose it.\\n //Without this, it can happen that a location is sent, another one acquired but never sent because went to sleep mode\\n else if (ioEvent == 'Sleep_Mode') {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n var iodsValues = iods.split(\\\";\\\");\\n iodsValues[0] = 1\\n if (iodsValues[2] == 0 && longitude != '0' && latitude != '0') {\\n iodsValues[2] = 5000\\n }\\n iods = iodsValues.join(\\\";\\\");\\n //} else if (ioEvent == 'Movement') {\\n // record = `GH5200-MV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'Proximity_violation_source' || ioEvent == 'Proximity_duration' || ioEvent == 'BLT_MAC_Address') {\\n record = `${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n prox = 1;\\n } else if (ioEvent == 'ButtonClick') {\\n record = `GH5200-PBB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AmberAlert') {\\n if (amber_State && amber_Timer) {\\n if (amber_State == 'Amber_Alert_State=Cancelled') {\\n record = `GH5200-ALA-C,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=On') {\\n record = `GH5200-ALA-O,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Snoozed') {\\n record = `GH5200-ALA-S,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Alarm') {\\n record = `GH5200-ALA,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n } else if (ioEvent == 'PowerOn') {\\n record = `GH5200-PWRN,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'PowerOff') {\\n record = `GH5200-PWRF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //In case the event has been created by an \\\"unknown\\\" IO Event (or not considered)\\n else {\\n record = `GH5200-COD8,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //console.log('--------------------' + decoded_final)\\n record = record + iods;\\n if (prox == 1) {\\n var values = iods.split(\\\";\\\");\\n if (values[4].startsWith('Proximity_duration')) {\\n var prox_duration = values[4].split(\\\"=\\\");\\n if (prox_duration[1] < 1) {\\n record = 'GH5200-PROXS,' + record;\\n } else if (prox_duration[1] >= 1) {\\n record = 'GH5200-PROXE,' + record;\\n }\\n }\\n prox = 0\\n }\\n //Push each record into a records array\\n records.push(record);\\n debug(record);\\n }\\n var CRC = message.substring(index + 2, index + 10);\\n //return an array with all records stored\\n return records;\\n }\\n /**\\n * Decrypts part of the message that contains the IO Ids and its values\\n * @param {String} message String to decrypt\\n * @param {String} ioElementsTotal Number of IO elements present on the message\\n * @param {Int} timestamp Unix timestamp given from the message\\n * @return {String} String with the IO Ids and its values decrypted on a readable format\\n */\\n function IOIdsValues(message, ioElementsTotal, timestamp) {\\n //Variable initialisation\\n var decoded = '';\\n var iods = '';\\n var gpsTime = 0;\\n var prox_source = '';\\n var prox_duration = '';\\n var BLT_state = '';\\n var BLT_MAC = '';\\n for (let i = 1; i <= 8; i = i * 2) {\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var ioNumElements = message.substring(index, index += 2);\\n }\\n var x = hexToDecimal(ioNumElements);\\n var pos = 2 * i;\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n //Id length depends on the codec\\n if (codecID == '8E') {\\n var id = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var id = message.substring(index, index += 2);\\n }\\n var value = message.substring(index, index += pos);\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n case 310:\\n id = 'Movement_Event';\\n if (value == '0') value = 'Movement';\\n else if (value == '1') value = 'NoMovement';\\n movement_Value = id + '=' + value;\\n break;\\n case 854: //Custom ID\\n customIdValue = value;\\n if (value != '') {\\n //we get the customIdValue at any point, \\n //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n isCorrectOperation = false;\\n return;\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n //Return decoded string with all the ids and its values on a readable format\\n decoded += ioNumElements + ';' + iods;\\n }\\n //ids with variable length on codec8 Extended\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n var x = hexToDecimal(ioNumElements);\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n var id = message.substring(index, index += 4);\\n var len = message.substring(index, index += 4);\\n len = hexToDecimal(len) * 2;\\n var value = message.substring(index, index += len);\\n valueHex = value;\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n decoded += ioNumElements + ';' + iods;\\n }\\n //Making sure location_accuracy has a value\\n if (!location_accuracy) location_accuracy = 0;\\n //Making sure battery_percentage has a value\\n if (!battery_percentage) battery_percentage = 0;\\n decoded_final = fix_state + ';' + gpsTime + ';' + location_accuracy + ';' + battery_percentage;\\n if (BLT_state) {\\n decoded_final += ';' + BLT_state;\\n }\\n if (prox_source) {\\n decoded_final += ';' + prox_source;\\n }\\n if (prox_duration) {\\n decoded_final += ';' + prox_duration;\\n }\\n if (BLT_MAC) {\\n decoded_final += ';' + BLT_MAC;\\n }\\n if (amber_State && amber_Timer) {\\n decoded_final += ';' + amber_State + ';' + amber_Timer;\\n }\\n decoded_final += ';;' + ioElementsTotal + ';' + decoded;\\n //Return final string with decoed iods\\n return decoded_final;\\n }\\n\\n function sendMessageToLocalhost(str) {\\n if (localTesting) {\\n console.log(\\\"Sending message to server: \\\" + str);\\n } else {\\n var server = '127.0.0.1';\\n var c = createConnection(5678, server);\\n c.write(`${str}`);\\n c.end();\\n }\\n }\\n /**\\n * Create connection to the server\\n * @param {Int} port Port to connect\\n * @param {String} server Server to connect\\n * @return {net.socket} The newly created socket used to start the connection.\\n */\\n function createConnection(port, server) {\\n c = net.createConnection(port, server);\\n c.on('error', function(error) {\\n c = createConnection(port, server);\\n });\\n return c;\\n }\\n\\n function connect(port, inter, a) {\\n return new Promise(resolve => {\\n const socket = net.createConnection(port, '127.0.0.1', () => {\\n socket.write(inter[a], () => {\\n socket.destroy(); //socket.destroy(); to socket.close();\\n resolve();\\n });\\n });\\n });\\n }\\n\\n function debug(str) { // write debug info to console log, if localTesting\\n if (localTesting === \\\"True\\\") {\\n console.log(str);\\n }\\n }\\n /**\\n * Convert from ascii to hexadecimal\\n * @param {String} str Ascii string\\n * @return {Array} str converted to Hexadecimal\\n */\\n function ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n }\\n /**\\n * Convert from Hexadecimal to Ascii\\n * @param {String} str1 Hexadecimal string\\n * @return {String} str1 converted to Ascii\\n */\\n function 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 /**\\n * Convert from Hexadecimal to Decimal signed (allowing negative numbers)\\n * @param {Double} hex Hexadecimal number\\n * @return {Double} hex converted to Decimal signed\\n */\\n function hexToDecimalSigned(hex) {\\n if (hex.length % 2 != 0) {\\n hex = \\\"0\\\" + hex;\\n }\\n var num = parseInt(hex, 16);\\n var maxVal = Math.pow(2, hex.length / 2 * 8);\\n if (num > maxVal / 2 - 1) {\\n num = num - maxVal\\n }\\n return num;\\n }\\n /**\\n * Convert from Hexadecimal to Decimal\\n * @param {Double} x Hexadecimal number\\n * @return {Double} x converted to Decimal\\n */\\n function hexToDecimal(x) {\\n x = parseInt(x, 16);\\n return x;\\n }\\n /**\\n * Push value to the message arrray\\n * @param {String} p1 Name given to the code to push\\n * @param {} p2 Value to push\\n */\\n // pass everything into codevaluearray\\n function AddValue(codeValueArray, p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n codeValueArray.push(cvpair);\\n }\\n // modify to return the object that contains your data\\n return dataToReceiver;\\n}\\n// params is not defined locally -> export as module\\nif (typeof(params) === 'undefined') {\\n module.exports = {\\n execute_ops\\n }\\n} else { // on server use local defined vars\\n let return_values = execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, false)\\n // define global returns\\n msg = return_values;\\n}\",\"Type\":0,\"ProtocolActionObjects\":[]}","Timestamp":1729519680},{"Type":1,"NewValue":"{\"Id\":332,\"Name\":\"GH5200\",\"Operation\":\"function execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, localTesting) {\\n //###############################################################################################################################################################################################################\\n // Badege Operation Script\\n // * Operation script for Badge\\n // * Uses Long Connection: true\\n // *\\n // * GLOBAL TEMPLATE: <>,<>,<>, <>\\n // * Encrypted: true\\n // * \\n // * CYCLE TEMPLATE:\\n // * GH5200-CYC,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>\\n //###############################################################################################################################################################################################################\\n //=================================================================================\\n // VARIABLES \\n //=================================================================================\\n if (typeof localTesting === \\\"undefined\\\") {\\n var localTesting = \\\"False\\\";\\n }\\n var customIdValue = '';\\n var isCorrectOperation = true;\\n var index = 20;\\n var timeout = 1500;\\n var fix_state;\\n var satelites;\\n var latitude;\\n var longitude;\\n var altitude;\\n var speed;\\n var event_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_accuracy = \\\"5000\\\";\\n var onTrackingDemand = false;\\n var isSleep = 'false'\\n var amber_State = '';\\n var amber_Timer = '';\\n var movement_Value = '';\\n var dataToReceiver = [];\\n var codeValues = [];\\n var configsToAck = [];\\n //If the event type matches a global template\\n if (globalTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE10');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //In case the message is \\\"STC\\\" (Start Connection)\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n var imei = hex_to_ascii(rawFromBytes).slice(2);\\n AddValue(codeValues, \\\"imei\\\", imei);\\n sendMessageToLocalhost(`GH5200-STC,${imei},${serverParams.Guid}`);\\n // var c = createConnection(5678, '127.0.0.1');\\n // c.write(`GH5200-STC,${imei},${serverParams.Guid}`);\\n // //Imei is recevied in hex\\n // AddValue(codeValues, \\\"ack_stc\\\", \\\"01\\\");\\n // c.end();\\n //In case the message is a codec8 (either codec8 or codec8 Extended)\\n } else if (messageTypeLocalCode == \\\"COD8-Global\\\") {\\n var ack;\\n //Get the full hex message in a readable format\\n var message = rawFromBytes;\\n var codecID = message.substring(16, 18);\\n //Get the imei from serverParams\\n var imei = serverParams.Imei\\n //Either codec 8 or codec 8 Extended\\n if (codecID == '08' || codecID == '8E') {\\n messages = decryptCodec8(message);\\n if (isCorrectOperation == false) {\\n return;\\n }\\n var numberOfData = message.substring(18, 20)\\n // var c = createConnection(5678, '127.0.0.1');\\n // c.on('data', function(data) {\\n // var msgLocal = [];\\n // //if ack ends with OTD, then onTrackingDemand = true\\n // if (data.toString().endsWith('OTD')) {\\n // onTrackingDemand = true\\n // }\\n // //The device can send more than one event on the same message. In this case, a part of the ack is the number of messages received\\n // //So, we only ack when we have received the last event of the message.\\n // if (data.toString().startsWith(`L${messages.length}`)) {\\n // //In case the event demands a tracking, the ack is the number of data followed by the command on_demand_tracking2 (already encoded)\\n // if (onTrackingDemand == true) {\\n // AddValue(msgLocal, 'ack_cod8', `000000${numberOfData}000000000000001D0C0105000000156F6E5F64656D616E645F747261636B696E67320D0A0100002EB9`);\\n // //Mandatory to push the imei when on a global template\\n // AddValue(msgLocal, 'imei', imei);\\n // //Mandatory to do console.log(msg);\\n // console.log(msgLocal);\\n // c.end();\\n // }\\n // //The device needs to be ack'ed the number of data in 4 bytes\\n // else {\\n //Ack with the number of messages received to make the device know that the server understood the full message.\\n AddValue(codeValues, 'ack_cod8', `000000${numberOfData}`);\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n //Mandatory to do console.log(msg);\\n //console.log(msg);\\n // c.end();\\n // }\\n // }\\n // });\\n //Internally send all the events on the same message received.\\n for (let i = 0; i < messages.length; i++) {\\n //c.write(messages[i]);\\n sendMessageToLocalhost(messages[i]);\\n // connect(5678, messages, i);\\n //console.log(messages[i]);\\n }\\n //In case the message is a codec12 (command ack)\\n } else if (codecID == '0C') {\\n var codec12 = decryptCodec12(message)\\n sendMessageToLocalhost(`GH5200-COD12,${serverParams.Imei},${codec12}`);\\n // var c = createConnection(5678, '127.0.0.1');\\n // //Internally send a codec12 message in the homogenous ascii format\\n // c.write(`GH5200-COD12,${serverParams.Imei},${codec12}`);\\n // c.end();\\n //Because the codec12 message is matched by the same global template than the codec8 message, we need to push \\\"ack_cod8\\\" as an empty string.\\n AddValue(codeValues, 'ack_cod8', '');\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n }\\n }\\n }\\n //In the case the message is matched by an oystaTemplate\\n if (oystaTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE10');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //If the message is a decrypted version for start the connection\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n // stc conditions\\n AddValue(codeValues, 'ack_stc', '01');\\n }\\n //If the message is a codec8 (event not taken into account by us) \\n else if (messageTypeLocalCode == 'COD8') {\\n if (params.recordNumber) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n //In case the message is Real Time Location\\n else if (messageTypeLocalCode == \\\"RTL\\\") {\\n //If the message has a gps fix\\n if (params.gps == \\\"1\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 1)\\n //Speed to m/s\\n AddValue(codeValues, \\\"speed\\\", params.speed_raw / 3.6)\\n //Location time to actual time. It is not provided on the message\\n location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n //Event time to actual time. It is not provided on the message\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n //Hardcoded accuracy of 500. No hdop or satellites are provided on the message\\n AddValue(codeValues, \\\"location_accuracy\\\", 500)\\n }\\n //If the message does not have a gps fix, we do not use it as we cannot make sure it is real\\n else if (params.gps == \\\"0\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n }\\n //If the event is an Alarm or Position By Button, send a flag (ODT) so the device is asked for on_demand_tracking\\n else if (messageTypeLocalCode == \\\"PBB\\\" || messageTypeCode.startsWith('AL')) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message. If it is a Position by button or any kind of alarm, it needs to be follow by \\\"ODT\\\" in order to ask for a tracking\\n //This is used to make sure the gps is awake. It will solve the error of alarms sent before there is a gps fix\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}OTD`);\\n //If the event is an ack for a SMS command (Redirected from Esendex)\\n } else if (messageTypeLocalCode.startsWith('ACK-SMS')) {\\n //No fix state\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n //Event and location time to actual time in order to show the messages on the events table\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n var c = createConnection(5678, '127.0.0.1');\\n //If the message is a sms ack for a \\\"normal command\\\" (this means the ack will start with \\\"New value \\\")\\n if (messageTypeLocalCode == \\\"ACK-SMS\\\") {\\n if (params.smsAck) {\\n //Add \\\"-SMS\\\" at the end so we can differentiate between a sms and grps ack for a command.\\n var smsAck = params.smsAck + '-SMS;'\\n // the essendex message the device sends in gets converted here\\n c.write(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n debug(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n if (!smsAck.startsWith('2001:')) {\\n //Add tag no commands so no commands are sent to the device after a sms ack. The device will not accept a command after a sms ack. This prevents lots of problems.\\n AddValue(codeValues, 'no_commands', 'true');\\n //As it is redirected from Esende, it is mandatroy to push the imei\\n AddValue(codeValues, 'imei', serverParams.Imei);\\n }\\n }\\n }\\n //We do not need to send the tag \\\"no_commands\\\" on the next 3 message types since we have already checked that option on the message type that matched the Esendex resend.\\n //If the message is a sms ack for \\\"Delete Records\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-DR\\\") {\\n var smsAck = '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},All records are erased${smsAck}`);\\n }\\n //If the message is a sms ack for \\\"Get Info\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GI\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},RTC:${smsAck}`);\\n }\\n }\\n //If the message is a sms ack for \\\"Get Version\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GV\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},Ver:${smsAck}`);\\n }\\n }\\n c.end()\\n } else if (messageTypeLocalCode.startsWith(\\\"ACK-ALF\\\")) {\\n if (messageTypeLocalCode == \\\"ACK-ALF\\\") {\\n var newAlldata = \\\"12100:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS2\\\") {\\n var newAlldata = \\\"14390:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS3\\\") {\\n var newAlldata = \\\"12101:\\\" + params.alldata;\\n }\\n if (newAlldata != null) {\\n var keyValues = ['12101', '12102', '12103', '12111', '12100', '13019', '13022', '14390', '14392', '14393', '14391', '14397', '14430', '14432', '14433', '14431', '14437', '14170', '14320', '14173', '14323', '7222', '12104'];\\n var configParamNames = ['FallAlarmSettings.Position', 'FallAlarmSettings.Angle', 'FallAlarmSettings.Timeout', 'FallAlarmSettings.SilentPreAlarmDelay', 'FallAlarmSettings.EnableDisableFallAlarmSettings', 'FallAlarmSettings.EnableDisableByButtons', 'FallAlarmSettings.EnableDisableByButtons', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'FallAlarmSettings.Indication', 'No-Ack-Needed', 'No-Ack-Needed'];\\n var ackSMSArray = newAlldata.split(';');\\n var findIndexOfBlankSMS = ackSMSArray.findIndex(element => element.includes(\\\"-SMS\\\"));\\n if (ackSMSArray[findIndexOfBlankSMS] === \\\"-SMS\\\") {\\n ackSMSArray.pop()\\n }\\n AddValue(codeValues, \\\"imei\\\", serverParams.Imei);\\n for (let i = 0; i < ackSMSArray.length; i++) {\\n var keyId = ackSMSArray[i].split(':')[0]; // id of the param saved in the array\\n var keyValue = ackSMSArray[i].split(':')[1]; // value of the param \\n var findIndex = keyValues.indexOf(keyId)\\n if (configParamNames[findIndex] != \\\"No-Ack-Needed\\\") {\\n var intellicareDataSetValue = eval('configs' + '.' + configParamNames[findIndex])\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableFallAlarmSettings\\\") {\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (intellicareDataSetValue == \\\"true\\\") {\\n intellicareDataSetValue = \\\"1\\\"\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n // if enableDisableByButtonsIndex is unchecked then overwrite the EnableDisableFallAlarmSettings value\\n var enableDisableByButtonsIndex = ackSMSArray.findIndex(element => element.includes(\\\"13019\\\" || \\\"13022\\\")); // button 1 long click or button 2 long click\\n if (enableDisableByButtonsIndex != -1) {\\n var valueOfenableDisableByButtons = ackSMSArray[enableDisableByButtonsIndex].slice(-1)\\n if (valueOfenableDisableByButtons != \\\"0\\\") {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n }\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableByButtons\\\") {\\n if (intellicareDataSetValue == \\\"true\\\") {\\n if (keyId == \\\"13019\\\") {\\n intellicareDataSetValue = \\\"2\\\"\\n } else if (keyId == \\\"13022\\\") {\\n intellicareDataSetValue = \\\"3\\\"\\n }\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.Indication\\\") {\\n if (intellicareDataSetValue == \\\"0\\\") { // on device 3 = vibrate and sound = 0 on IC\\n intellicareDataSetValue = \\\"3\\\"\\n } else if (intellicareDataSetValue == \\\"1\\\") { // on device 1 = vibrate = 1 on IC\\n intellicareDataSetValue = \\\"1\\\"\\n } else if (intellicareDataSetValue == \\\"2\\\") { // on device 0 = off = 2 on IC\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n if (keyValue == intellicareDataSetValue) {\\n configsToAck.push(eval('configIds' + '.' + configParamNames[findIndex]))\\n debug(\\\"Matched values of param\\\" + configParamNames[findIndex]);\\n } else {\\n debug(\\\"Not matched values of param\\\" + configParamNames[findIndex]);\\n }\\n }\\n }\\n }\\n }\\n //If the message is an ack, push the needed information to appear on the UI events.\\n else if (messageTypeLocalCode.startsWith('ACK-')) {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n //If the message is a decrypted version for codec8. This will include Cycles, and all the rest of messages not represented on the else if before \\n else {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n //AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n // If customID is not set....\\n if (isCorrectOperation) {\\n if (configsToAck.length > 0) {\\n dataToReceiver = {\\n 'values': codeValues,\\n 'configsToAck': configsToAck,\\n };\\n } else {\\n dataToReceiver = {\\n 'values': codeValues\\n };\\n }\\n console.log(dataToReceiver);\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {String} Ascii message\\n */\\n function decryptCodec12(message) {\\n var decoded = '';\\n var data12 = message.slice(30, -10);\\n data12 = hex_to_ascii(data12);\\n return data12;\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {Array} Array of Ascii messages\\n */\\n function decryptCodec8(message) {\\n //Initialise variables\\n var decoded = '';\\n var codecID = message.substring(16, 18);\\n decoded += codecID + ';';\\n var numberOfData = message.substring(18, 20);\\n decoded += numberOfData + ';';\\n var records = [];\\n var prox = 0;\\n //Loop number of events on a message times\\n for (i = 0; i < hexToDecimal(numberOfData); i++) {\\n //Initialise and transform variables\\n isSleep = 'false'\\n amber_State = '';\\n amber_Timer = '';\\n var decoded_final = '';\\n var record = '';\\n var timestamp = message.substring(index, index += 16);\\n timestamp = hexToDecimal(timestamp).toString().slice(0, -3)\\n timestamp = parseInt(timestamp, 10);\\n var priority = message.substring(index, index += 2);\\n var longitude = message.substring(index, index += 8);\\n longitude = hexToDecimalSigned(longitude) / 10000000;\\n var latitude = message.substring(index, index += 8);\\n latitude = hexToDecimalSigned(latitude) / 10000000;\\n var altitude = message.substring(index, index += 4);\\n altitude = hexToDecimalSigned(altitude);\\n var angle = message.substring(index, index += 4);\\n angle = hexToDecimalSigned(angle);\\n var satelites = message.substring(index, index += 2);\\n satelites = hexToDecimal(satelites);\\n var speed = message.substring(index, index += 4);\\n //Speed to m/s\\n speed = (hexToDecimal(speed) / 3.6).toFixed(2)\\n //If the message is a codec 8\\n if (codecID == '8E') {\\n var ioEvent = message.substring(index, index += 4);\\n var ioElementsTotal = message.substring(index, index += 4);\\n }\\n //If the message is a codec 8 Extended\\n else if (codecID == '08') {\\n var ioEvent = message.substring(index, index += 2);\\n var ioElementsTotal = message.substring(index, index += 2);\\n }\\n ioEvent = hexToDecimal(ioEvent);\\n //Switch to determine which is the event on the message\\n switch (ioEvent) {\\n case 0:\\n ioEvent = 'NoEvent';\\n break;\\n case 236:\\n ioEvent = 'Alarm';\\n break;\\n case 242:\\n ioEvent = 'ManDown';\\n break;\\n case 255:\\n ioEvent = 'OverSpeeding';\\n break;\\n case 310:\\n ioEvent = 'Movement_Event';\\n break;\\n case 389:\\n ioEvent = 'ButtonClick';\\n break;\\n case 1000:\\n ioEvent = 'Cycle';\\n break;\\n case 240:\\n ioEvent = 'Movement';\\n break\\n case 874:\\n ioEvent = 'BLT_violation_state';\\n break;\\n case 875:\\n ioEvent = 'Proximity_violation_source';\\n break;\\n case 874:\\n ioEvent = 'Proximity_duration';\\n break;\\n case 874:\\n ioEvent = 'BLT_MAC_Address';\\n break;\\n case 200:\\n ioEvent = 'Sleep_Mode';\\n break;\\n case 390:\\n ioEvent = 'PowerOff';\\n break;\\n case 200000:\\n ioEvent = 'PowerOn';\\n break;\\n case 400:\\n ioEvent = 'AmberAlert';\\n break;\\n default:\\n ioEvent = ioEvent + ':Not_recognised';\\n }\\n //Get the IO ids part of the message\\n var iods = IOIdsValues(message, ioElementsTotal, timestamp);\\n // if (customIdValue != '') {\\n // //we find the customIdValue at any point, \\n // //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n // isCorrectOperation = false;\\n // return;\\n // }\\n //Internally send the events translated to a readable format and using the format needed to match the message types.\\n if (ioEvent == 'Alarm') {\\n record = `GH5200-ALSOS,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'ManDown') {\\n record = `GH5200-ALF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'OverSpeeding') {\\n record = `GH5200-ALSP,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AutoGeofenceEvent' || ioEvent.startsWith('Geofence')) {\\n record = `GH5200-AGEO,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'NoEvent' || ioEvent == 'Cycle') {\\n //If the device is on sleep mode, it will not have send locations. For this reason, the message will be a Heartbeat and not a Cycle\\n if (isSleep == 'true') {\\n record = `GH5200-HTB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n } else if (ioEvent == 'Movement_Event') {\\n if (movement_Value == 'Movement_Event=NoMovement') {\\n record = `GH5200-ALNM,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (movement_Value == 'Movement_Event=Movement') {\\n record = `GH5200-ALMV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n //If the event is triggered because the device has entrered on Sleep mode, set an accuracy on 5000 to force a location. With this, we make sure we sent the last know location and we don't lose it.\\n //Without this, it can happen that a location is sent, another one acquired but never sent because went to sleep mode\\n else if (ioEvent == 'Sleep_Mode') {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n var iodsValues = iods.split(\\\";\\\");\\n iodsValues[0] = 1\\n if (iodsValues[2] == 0 && longitude != '0' && latitude != '0') {\\n iodsValues[2] = 5000\\n }\\n iods = iodsValues.join(\\\";\\\");\\n //} else if (ioEvent == 'Movement') {\\n // record = `GH5200-MV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'Proximity_violation_source' || ioEvent == 'Proximity_duration' || ioEvent == 'BLT_MAC_Address') {\\n record = `${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n prox = 1;\\n } else if (ioEvent == 'ButtonClick') {\\n record = `GH5200-PBB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AmberAlert') {\\n if (amber_State && amber_Timer) {\\n if (amber_State == 'Amber_Alert_State=Cancelled') {\\n record = `GH5200-ALA-C,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=On') {\\n record = `GH5200-ALA-O,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Snoozed') {\\n record = `GH5200-ALA-S,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Alarm') {\\n record = `GH5200-ALA,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n } else if (ioEvent == 'PowerOn') {\\n record = `GH5200-PWRN,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'PowerOff') {\\n record = `GH5200-PWRF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //In case the event has been created by an \\\"unknown\\\" IO Event (or not considered)\\n else {\\n record = `GH5200-COD8,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //console.log('--------------------' + decoded_final)\\n record = record + iods;\\n if (prox == 1) {\\n var values = iods.split(\\\";\\\");\\n if (values[4].startsWith('Proximity_duration')) {\\n var prox_duration = values[4].split(\\\"=\\\");\\n if (prox_duration[1] < 1) {\\n record = 'GH5200-PROXS,' + record;\\n } else if (prox_duration[1] >= 1) {\\n record = 'GH5200-PROXE,' + record;\\n }\\n }\\n prox = 0\\n }\\n //Push each record into a records array\\n records.push(record);\\n debug(record);\\n }\\n var CRC = message.substring(index + 2, index + 10);\\n //return an array with all records stored\\n return records;\\n }\\n /**\\n * Decrypts part of the message that contains the IO Ids and its values\\n * @param {String} message String to decrypt\\n * @param {String} ioElementsTotal Number of IO elements present on the message\\n * @param {Int} timestamp Unix timestamp given from the message\\n * @return {String} String with the IO Ids and its values decrypted on a readable format\\n */\\n function IOIdsValues(message, ioElementsTotal, timestamp) {\\n //Variable initialisation\\n var decoded = '';\\n var iods = '';\\n var gpsTime = 0;\\n var prox_source = '';\\n var prox_duration = '';\\n var BLT_state = '';\\n var BLT_MAC = '';\\n for (let i = 1; i <= 8; i = i * 2) {\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var ioNumElements = message.substring(index, index += 2);\\n }\\n var x = hexToDecimal(ioNumElements);\\n var pos = 2 * i;\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n //Id length depends on the codec\\n if (codecID == '8E') {\\n var id = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var id = message.substring(index, index += 2);\\n }\\n var value = message.substring(index, index += pos);\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n case 310:\\n id = 'Movement_Event';\\n if (value == '0') value = 'Movement';\\n else if (value == '1') value = 'NoMovement';\\n movement_Value = id + '=' + value;\\n break;\\n case 854: //Custom ID\\n customIdValue = value;\\n if (value != '') {\\n //we get the customIdValue at any point, \\n //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n isCorrectOperation = false;\\n return;\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n //Return decoded string with all the ids and its values on a readable format\\n decoded += ioNumElements + ';' + iods;\\n }\\n //ids with variable length on codec8 Extended\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n var x = hexToDecimal(ioNumElements);\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n var id = message.substring(index, index += 4);\\n var len = message.substring(index, index += 4);\\n len = hexToDecimal(len) * 2;\\n var value = message.substring(index, index += len);\\n valueHex = value;\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n decoded += ioNumElements + ';' + iods;\\n }\\n //Making sure location_accuracy has a value\\n if (!location_accuracy) location_accuracy = 0;\\n //Making sure battery_percentage has a value\\n if (!battery_percentage) battery_percentage = 0;\\n decoded_final = fix_state + ';' + gpsTime + ';' + location_accuracy + ';' + battery_percentage;\\n if (BLT_state) {\\n decoded_final += ';' + BLT_state;\\n }\\n if (prox_source) {\\n decoded_final += ';' + prox_source;\\n }\\n if (prox_duration) {\\n decoded_final += ';' + prox_duration;\\n }\\n if (BLT_MAC) {\\n decoded_final += ';' + BLT_MAC;\\n }\\n if (amber_State && amber_Timer) {\\n decoded_final += ';' + amber_State + ';' + amber_Timer;\\n }\\n decoded_final += ';;' + ioElementsTotal + ';' + decoded;\\n //Return final string with decoed iods\\n return decoded_final;\\n }\\n\\n function sendMessageToLocalhost(str) {\\n if (localTesting) {\\n console.log(\\\"Sending message to server: \\\" + str);\\n } else {\\n var server = '127.0.0.1';\\n var c = createConnection(5678, server);\\n c.write(`${str}`);\\n c.end();\\n }\\n }\\n /**\\n * Create connection to the server\\n * @param {Int} port Port to connect\\n * @param {String} server Server to connect\\n * @return {net.socket} The newly created socket used to start the connection.\\n */\\n function createConnection(port, server) {\\n c = net.createConnection(port, server);\\n c.on('error', function(error) {\\n c = createConnection(port, server);\\n });\\n return c;\\n }\\n\\n function connect(port, inter, a) {\\n return new Promise(resolve => {\\n const socket = net.createConnection(port, '127.0.0.1', () => {\\n socket.write(inter[a], () => {\\n socket.destroy(); //socket.destroy(); to socket.close();\\n resolve();\\n });\\n });\\n });\\n }\\n\\n function debug(str) { // write debug info to console log, if localTesting\\n if (localTesting === \\\"True\\\") {\\n console.log(str);\\n }\\n }\\n /**\\n * Convert from ascii to hexadecimal\\n * @param {String} str Ascii string\\n * @return {Array} str converted to Hexadecimal\\n */\\n function ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n }\\n /**\\n * Convert from Hexadecimal to Ascii\\n * @param {String} str1 Hexadecimal string\\n * @return {String} str1 converted to Ascii\\n */\\n function 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 /**\\n * Convert from Hexadecimal to Decimal signed (allowing negative numbers)\\n * @param {Double} hex Hexadecimal number\\n * @return {Double} hex converted to Decimal signed\\n */\\n function hexToDecimalSigned(hex) {\\n if (hex.length % 2 != 0) {\\n hex = \\\"0\\\" + hex;\\n }\\n var num = parseInt(hex, 16);\\n var maxVal = Math.pow(2, hex.length / 2 * 8);\\n if (num > maxVal / 2 - 1) {\\n num = num - maxVal\\n }\\n return num;\\n }\\n /**\\n * Convert from Hexadecimal to Decimal\\n * @param {Double} x Hexadecimal number\\n * @return {Double} x converted to Decimal\\n */\\n function hexToDecimal(x) {\\n x = parseInt(x, 16);\\n return x;\\n }\\n /**\\n * Push value to the message arrray\\n * @param {String} p1 Name given to the code to push\\n * @param {} p2 Value to push\\n */\\n // pass everything into codevaluearray\\n function AddValue(codeValueArray, p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n codeValueArray.push(cvpair);\\n }\\n // modify to return the object that contains your data\\n return dataToReceiver;\\n}\\n// params is not defined locally -> export as module\\nif (typeof(params) === 'undefined') {\\n module.exports = {\\n execute_ops\\n }\\n} else { // on server use local defined vars\\n let return_values = execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, false)\\n // define global returns\\n msg = return_values;\\n}\",\"Type\":0,\"ProtocolActionObjects\":[]}","Timestamp":1729523049},{"Type":1,"NewValue":"{\"Id\":332,\"Name\":\"GH5200\",\"Operation\":\"function execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, localTesting) {\\n //###############################################################################################################################################################################################################\\n // Badege Operation Script\\n // * Operation script for Badge\\n // * Uses Long Connection: true\\n // *\\n // * GLOBAL TEMPLATE: <>,<>,<>, <>\\n // * Encrypted: true\\n // * \\n // * CYCLE TEMPLATE:\\n // * GH5200-CYC,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>\\n //###############################################################################################################################################################################################################\\n //=================================================================================\\n // VARIABLES \\n //=================================================================================\\n if (typeof localTesting === \\\"undefined\\\") {\\n var localTesting = \\\"False\\\";\\n }\\n var customIdValue = '';\\n var isCorrectOperation = true;\\n var index = 20;\\n var timeout = 1500;\\n var fix_state;\\n var satelites;\\n var latitude;\\n var longitude;\\n var altitude;\\n var speed;\\n var event_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_accuracy = \\\"5000\\\";\\n var onTrackingDemand = false;\\n var isSleep = 'false'\\n var amber_State = '';\\n var amber_Timer = '';\\n var movement_Value = '';\\n var dataToReceiver = [];\\n var codeValues = [];\\n var configsToAck = [];\\n //If the event type matches a global template\\n if (globalTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE10');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //In case the message is \\\"STC\\\" (Start Connection)\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n var imei = hex_to_ascii(rawFromBytes).slice(2);\\n AddValue(codeValues, \\\"imei\\\", imei);\\n sendMessageToLocalhost(`GH5200-STC,${imei},${serverParams.Guid}`);\\n // var c = createConnection(5678, '127.0.0.1');\\n // c.write(`GH5200-STC,${imei},${serverParams.Guid}`);\\n // //Imei is recevied in hex\\n AddValue(codeValues, \\\"ack_stc\\\", \\\"01\\\");\\n // c.end();\\n //In case the message is a codec8 (either codec8 or codec8 Extended)\\n } else if (messageTypeLocalCode == \\\"COD8-Global\\\") {\\n var ack;\\n //Get the full hex message in a readable format\\n var message = rawFromBytes;\\n var codecID = message.substring(16, 18);\\n //Get the imei from serverParams\\n var imei = serverParams.Imei\\n //Either codec 8 or codec 8 Extended\\n if (codecID == '08' || codecID == '8E') {\\n messages = decryptCodec8(message);\\n if (isCorrectOperation == false) {\\n return;\\n }\\n var numberOfData = message.substring(18, 20)\\n // var c = createConnection(5678, '127.0.0.1');\\n // c.on('data', function(data) {\\n // var msgLocal = [];\\n // //if ack ends with OTD, then onTrackingDemand = true\\n // if (data.toString().endsWith('OTD')) {\\n // onTrackingDemand = true\\n // }\\n // //The device can send more than one event on the same message. In this case, a part of the ack is the number of messages received\\n // //So, we only ack when we have received the last event of the message.\\n // if (data.toString().startsWith(`L${messages.length}`)) {\\n // //In case the event demands a tracking, the ack is the number of data followed by the command on_demand_tracking2 (already encoded)\\n // if (onTrackingDemand == true) {\\n // AddValue(msgLocal, 'ack_cod8', `000000${numberOfData}000000000000001D0C0105000000156F6E5F64656D616E645F747261636B696E67320D0A0100002EB9`);\\n // //Mandatory to push the imei when on a global template\\n // AddValue(msgLocal, 'imei', imei);\\n // //Mandatory to do console.log(msg);\\n // console.log(msgLocal);\\n // c.end();\\n // }\\n // //The device needs to be ack'ed the number of data in 4 bytes\\n // else {\\n //Ack with the number of messages received to make the device know that the server understood the full message.\\n AddValue(codeValues, 'ack_cod8', `000000${numberOfData}`);\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n //Mandatory to do console.log(msg);\\n //console.log(msg);\\n // c.end();\\n // }\\n // }\\n // });\\n //Internally send all the events on the same message received.\\n for (let i = 0; i < messages.length; i++) {\\n //c.write(messages[i]);\\n sendMessageToLocalhost(messages[i]);\\n // connect(5678, messages, i);\\n //console.log(messages[i]);\\n }\\n //In case the message is a codec12 (command ack)\\n } else if (codecID == '0C') {\\n var codec12 = decryptCodec12(message)\\n sendMessageToLocalhost(`GH5200-COD12,${serverParams.Imei},${codec12}`);\\n // var c = createConnection(5678, '127.0.0.1');\\n // //Internally send a codec12 message in the homogenous ascii format\\n // c.write(`GH5200-COD12,${serverParams.Imei},${codec12}`);\\n // c.end();\\n //Because the codec12 message is matched by the same global template than the codec8 message, we need to push \\\"ack_cod8\\\" as an empty string.\\n AddValue(codeValues, 'ack_cod8', '');\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n }\\n }\\n }\\n //In the case the message is matched by an oystaTemplate\\n if (oystaTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE10');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //If the message is a decrypted version for start the connection\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n // stc conditions\\n AddValue(codeValues, 'ack_stc', '01');\\n }\\n //If the message is a codec8 (event not taken into account by us) \\n else if (messageTypeLocalCode == 'COD8') {\\n if (params.recordNumber) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n //In case the message is Real Time Location\\n else if (messageTypeLocalCode == \\\"RTL\\\") {\\n //If the message has a gps fix\\n if (params.gps == \\\"1\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 1)\\n //Speed to m/s\\n AddValue(codeValues, \\\"speed\\\", params.speed_raw / 3.6)\\n //Location time to actual time. It is not provided on the message\\n location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n //Event time to actual time. It is not provided on the message\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n //Hardcoded accuracy of 500. No hdop or satellites are provided on the message\\n AddValue(codeValues, \\\"location_accuracy\\\", 500)\\n }\\n //If the message does not have a gps fix, we do not use it as we cannot make sure it is real\\n else if (params.gps == \\\"0\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n }\\n //If the event is an Alarm or Position By Button, send a flag (ODT) so the device is asked for on_demand_tracking\\n else if (messageTypeLocalCode == \\\"PBB\\\" || messageTypeCode.startsWith('AL')) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message. If it is a Position by button or any kind of alarm, it needs to be follow by \\\"ODT\\\" in order to ask for a tracking\\n //This is used to make sure the gps is awake. It will solve the error of alarms sent before there is a gps fix\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}OTD`);\\n //If the event is an ack for a SMS command (Redirected from Esendex)\\n } else if (messageTypeLocalCode.startsWith('ACK-SMS')) {\\n //No fix state\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n //Event and location time to actual time in order to show the messages on the events table\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n var c = createConnection(5678, '127.0.0.1');\\n //If the message is a sms ack for a \\\"normal command\\\" (this means the ack will start with \\\"New value \\\")\\n if (messageTypeLocalCode == \\\"ACK-SMS\\\") {\\n if (params.smsAck) {\\n //Add \\\"-SMS\\\" at the end so we can differentiate between a sms and grps ack for a command.\\n var smsAck = params.smsAck + '-SMS;'\\n // the essendex message the device sends in gets converted here\\n c.write(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n debug(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n if (!smsAck.startsWith('2001:')) {\\n //Add tag no commands so no commands are sent to the device after a sms ack. The device will not accept a command after a sms ack. This prevents lots of problems.\\n AddValue(codeValues, 'no_commands', 'true');\\n //As it is redirected from Esende, it is mandatroy to push the imei\\n AddValue(codeValues, 'imei', serverParams.Imei);\\n }\\n }\\n }\\n //We do not need to send the tag \\\"no_commands\\\" on the next 3 message types since we have already checked that option on the message type that matched the Esendex resend.\\n //If the message is a sms ack for \\\"Delete Records\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-DR\\\") {\\n var smsAck = '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},All records are erased${smsAck}`);\\n }\\n //If the message is a sms ack for \\\"Get Info\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GI\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},RTC:${smsAck}`);\\n }\\n }\\n //If the message is a sms ack for \\\"Get Version\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GV\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},Ver:${smsAck}`);\\n }\\n }\\n c.end()\\n } else if (messageTypeLocalCode.startsWith(\\\"ACK-ALF\\\")) {\\n if (messageTypeLocalCode == \\\"ACK-ALF\\\") {\\n var newAlldata = \\\"12100:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS2\\\") {\\n var newAlldata = \\\"14390:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS3\\\") {\\n var newAlldata = \\\"12101:\\\" + params.alldata;\\n }\\n if (newAlldata != null) {\\n var keyValues = ['12101', '12102', '12103', '12111', '12100', '13019', '13022', '14390', '14392', '14393', '14391', '14397', '14430', '14432', '14433', '14431', '14437', '14170', '14320', '14173', '14323', '7222', '12104'];\\n var configParamNames = ['FallAlarmSettings.Position', 'FallAlarmSettings.Angle', 'FallAlarmSettings.Timeout', 'FallAlarmSettings.SilentPreAlarmDelay', 'FallAlarmSettings.EnableDisableFallAlarmSettings', 'FallAlarmSettings.EnableDisableByButtons', 'FallAlarmSettings.EnableDisableByButtons', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'FallAlarmSettings.Indication', 'No-Ack-Needed', 'No-Ack-Needed'];\\n var ackSMSArray = newAlldata.split(';');\\n var findIndexOfBlankSMS = ackSMSArray.findIndex(element => element.includes(\\\"-SMS\\\"));\\n if (ackSMSArray[findIndexOfBlankSMS] === \\\"-SMS\\\") {\\n ackSMSArray.pop()\\n }\\n AddValue(codeValues, \\\"imei\\\", serverParams.Imei);\\n for (let i = 0; i < ackSMSArray.length; i++) {\\n var keyId = ackSMSArray[i].split(':')[0]; // id of the param saved in the array\\n var keyValue = ackSMSArray[i].split(':')[1]; // value of the param \\n var findIndex = keyValues.indexOf(keyId)\\n if (configParamNames[findIndex] != \\\"No-Ack-Needed\\\") {\\n var intellicareDataSetValue = eval('configs' + '.' + configParamNames[findIndex])\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableFallAlarmSettings\\\") {\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (intellicareDataSetValue == \\\"true\\\") {\\n intellicareDataSetValue = \\\"1\\\"\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n // if enableDisableByButtonsIndex is unchecked then overwrite the EnableDisableFallAlarmSettings value\\n var enableDisableByButtonsIndex = ackSMSArray.findIndex(element => element.includes(\\\"13019\\\" || \\\"13022\\\")); // button 1 long click or button 2 long click\\n if (enableDisableByButtonsIndex != -1) {\\n var valueOfenableDisableByButtons = ackSMSArray[enableDisableByButtonsIndex].slice(-1)\\n if (valueOfenableDisableByButtons != \\\"0\\\") {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n }\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableByButtons\\\") {\\n if (intellicareDataSetValue == \\\"true\\\") {\\n if (keyId == \\\"13019\\\") {\\n intellicareDataSetValue = \\\"2\\\"\\n } else if (keyId == \\\"13022\\\") {\\n intellicareDataSetValue = \\\"3\\\"\\n }\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.Indication\\\") {\\n if (intellicareDataSetValue == \\\"0\\\") { // on device 3 = vibrate and sound = 0 on IC\\n intellicareDataSetValue = \\\"3\\\"\\n } else if (intellicareDataSetValue == \\\"1\\\") { // on device 1 = vibrate = 1 on IC\\n intellicareDataSetValue = \\\"1\\\"\\n } else if (intellicareDataSetValue == \\\"2\\\") { // on device 0 = off = 2 on IC\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n if (keyValue == intellicareDataSetValue) {\\n configsToAck.push(eval('configIds' + '.' + configParamNames[findIndex]))\\n debug(\\\"Matched values of param\\\" + configParamNames[findIndex]);\\n } else {\\n debug(\\\"Not matched values of param\\\" + configParamNames[findIndex]);\\n }\\n }\\n }\\n }\\n }\\n //If the message is an ack, push the needed information to appear on the UI events.\\n else if (messageTypeLocalCode.startsWith('ACK-')) {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n //If the message is a decrypted version for codec8. This will include Cycles, and all the rest of messages not represented on the else if before \\n else {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n //AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n // If customID is not set....\\n if (isCorrectOperation) {\\n if (configsToAck.length > 0) {\\n dataToReceiver = {\\n 'values': codeValues,\\n 'configsToAck': configsToAck,\\n };\\n } else {\\n dataToReceiver = {\\n 'values': codeValues\\n };\\n }\\n console.log(dataToReceiver);\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {String} Ascii message\\n */\\n function decryptCodec12(message) {\\n var decoded = '';\\n var data12 = message.slice(30, -10);\\n data12 = hex_to_ascii(data12);\\n return data12;\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {Array} Array of Ascii messages\\n */\\n function decryptCodec8(message) {\\n //Initialise variables\\n var decoded = '';\\n var codecID = message.substring(16, 18);\\n decoded += codecID + ';';\\n var numberOfData = message.substring(18, 20);\\n decoded += numberOfData + ';';\\n var records = [];\\n var prox = 0;\\n //Loop number of events on a message times\\n for (i = 0; i < hexToDecimal(numberOfData); i++) {\\n //Initialise and transform variables\\n isSleep = 'false'\\n amber_State = '';\\n amber_Timer = '';\\n var decoded_final = '';\\n var record = '';\\n var timestamp = message.substring(index, index += 16);\\n timestamp = hexToDecimal(timestamp).toString().slice(0, -3)\\n timestamp = parseInt(timestamp, 10);\\n var priority = message.substring(index, index += 2);\\n var longitude = message.substring(index, index += 8);\\n longitude = hexToDecimalSigned(longitude) / 10000000;\\n var latitude = message.substring(index, index += 8);\\n latitude = hexToDecimalSigned(latitude) / 10000000;\\n var altitude = message.substring(index, index += 4);\\n altitude = hexToDecimalSigned(altitude);\\n var angle = message.substring(index, index += 4);\\n angle = hexToDecimalSigned(angle);\\n var satelites = message.substring(index, index += 2);\\n satelites = hexToDecimal(satelites);\\n var speed = message.substring(index, index += 4);\\n //Speed to m/s\\n speed = (hexToDecimal(speed) / 3.6).toFixed(2)\\n //If the message is a codec 8\\n if (codecID == '8E') {\\n var ioEvent = message.substring(index, index += 4);\\n var ioElementsTotal = message.substring(index, index += 4);\\n }\\n //If the message is a codec 8 Extended\\n else if (codecID == '08') {\\n var ioEvent = message.substring(index, index += 2);\\n var ioElementsTotal = message.substring(index, index += 2);\\n }\\n ioEvent = hexToDecimal(ioEvent);\\n //Switch to determine which is the event on the message\\n switch (ioEvent) {\\n case 0:\\n ioEvent = 'NoEvent';\\n break;\\n case 236:\\n ioEvent = 'Alarm';\\n break;\\n case 242:\\n ioEvent = 'ManDown';\\n break;\\n case 255:\\n ioEvent = 'OverSpeeding';\\n break;\\n case 310:\\n ioEvent = 'Movement_Event';\\n break;\\n case 389:\\n ioEvent = 'ButtonClick';\\n break;\\n case 1000:\\n ioEvent = 'Cycle';\\n break;\\n case 240:\\n ioEvent = 'Movement';\\n break\\n case 874:\\n ioEvent = 'BLT_violation_state';\\n break;\\n case 875:\\n ioEvent = 'Proximity_violation_source';\\n break;\\n case 874:\\n ioEvent = 'Proximity_duration';\\n break;\\n case 874:\\n ioEvent = 'BLT_MAC_Address';\\n break;\\n case 200:\\n ioEvent = 'Sleep_Mode';\\n break;\\n case 390:\\n ioEvent = 'PowerOff';\\n break;\\n case 200000:\\n ioEvent = 'PowerOn';\\n break;\\n case 400:\\n ioEvent = 'AmberAlert';\\n break;\\n default:\\n ioEvent = ioEvent + ':Not_recognised';\\n }\\n //Get the IO ids part of the message\\n var iods = IOIdsValues(message, ioElementsTotal, timestamp);\\n // if (customIdValue != '') {\\n // //we find the customIdValue at any point, \\n // //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n // isCorrectOperation = false;\\n // return;\\n // }\\n //Internally send the events translated to a readable format and using the format needed to match the message types.\\n if (ioEvent == 'Alarm') {\\n record = `GH5200-ALSOS,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'ManDown') {\\n record = `GH5200-ALF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'OverSpeeding') {\\n record = `GH5200-ALSP,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AutoGeofenceEvent' || ioEvent.startsWith('Geofence')) {\\n record = `GH5200-AGEO,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'NoEvent' || ioEvent == 'Cycle') {\\n //If the device is on sleep mode, it will not have send locations. For this reason, the message will be a Heartbeat and not a Cycle\\n if (isSleep == 'true') {\\n record = `GH5200-HTB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n } else if (ioEvent == 'Movement_Event') {\\n if (movement_Value == 'Movement_Event=NoMovement') {\\n record = `GH5200-ALNM,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (movement_Value == 'Movement_Event=Movement') {\\n record = `GH5200-ALMV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n //If the event is triggered because the device has entrered on Sleep mode, set an accuracy on 5000 to force a location. With this, we make sure we sent the last know location and we don't lose it.\\n //Without this, it can happen that a location is sent, another one acquired but never sent because went to sleep mode\\n else if (ioEvent == 'Sleep_Mode') {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n var iodsValues = iods.split(\\\";\\\");\\n iodsValues[0] = 1\\n if (iodsValues[2] == 0 && longitude != '0' && latitude != '0') {\\n iodsValues[2] = 5000\\n }\\n iods = iodsValues.join(\\\";\\\");\\n //} else if (ioEvent == 'Movement') {\\n // record = `GH5200-MV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'Proximity_violation_source' || ioEvent == 'Proximity_duration' || ioEvent == 'BLT_MAC_Address') {\\n record = `${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n prox = 1;\\n } else if (ioEvent == 'ButtonClick') {\\n record = `GH5200-PBB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AmberAlert') {\\n if (amber_State && amber_Timer) {\\n if (amber_State == 'Amber_Alert_State=Cancelled') {\\n record = `GH5200-ALA-C,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=On') {\\n record = `GH5200-ALA-O,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Snoozed') {\\n record = `GH5200-ALA-S,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Alarm') {\\n record = `GH5200-ALA,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n } else if (ioEvent == 'PowerOn') {\\n record = `GH5200-PWRN,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'PowerOff') {\\n record = `GH5200-PWRF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //In case the event has been created by an \\\"unknown\\\" IO Event (or not considered)\\n else {\\n record = `GH5200-COD8,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //console.log('--------------------' + decoded_final)\\n record = record + iods;\\n if (prox == 1) {\\n var values = iods.split(\\\";\\\");\\n if (values[4].startsWith('Proximity_duration')) {\\n var prox_duration = values[4].split(\\\"=\\\");\\n if (prox_duration[1] < 1) {\\n record = 'GH5200-PROXS,' + record;\\n } else if (prox_duration[1] >= 1) {\\n record = 'GH5200-PROXE,' + record;\\n }\\n }\\n prox = 0\\n }\\n //Push each record into a records array\\n records.push(record);\\n debug(record);\\n }\\n var CRC = message.substring(index + 2, index + 10);\\n //return an array with all records stored\\n return records;\\n }\\n /**\\n * Decrypts part of the message that contains the IO Ids and its values\\n * @param {String} message String to decrypt\\n * @param {String} ioElementsTotal Number of IO elements present on the message\\n * @param {Int} timestamp Unix timestamp given from the message\\n * @return {String} String with the IO Ids and its values decrypted on a readable format\\n */\\n function IOIdsValues(message, ioElementsTotal, timestamp) {\\n //Variable initialisation\\n var decoded = '';\\n var iods = '';\\n var gpsTime = 0;\\n var prox_source = '';\\n var prox_duration = '';\\n var BLT_state = '';\\n var BLT_MAC = '';\\n for (let i = 1; i <= 8; i = i * 2) {\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var ioNumElements = message.substring(index, index += 2);\\n }\\n var x = hexToDecimal(ioNumElements);\\n var pos = 2 * i;\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n //Id length depends on the codec\\n if (codecID == '8E') {\\n var id = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var id = message.substring(index, index += 2);\\n }\\n var value = message.substring(index, index += pos);\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n case 310:\\n id = 'Movement_Event';\\n if (value == '0') value = 'Movement';\\n else if (value == '1') value = 'NoMovement';\\n movement_Value = id + '=' + value;\\n break;\\n case 854: //Custom ID\\n customIdValue = value;\\n if (value != '') {\\n //we get the customIdValue at any point, \\n //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n isCorrectOperation = false;\\n return;\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n //Return decoded string with all the ids and its values on a readable format\\n decoded += ioNumElements + ';' + iods;\\n }\\n //ids with variable length on codec8 Extended\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n var x = hexToDecimal(ioNumElements);\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n var id = message.substring(index, index += 4);\\n var len = message.substring(index, index += 4);\\n len = hexToDecimal(len) * 2;\\n var value = message.substring(index, index += len);\\n valueHex = value;\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n decoded += ioNumElements + ';' + iods;\\n }\\n //Making sure location_accuracy has a value\\n if (!location_accuracy) location_accuracy = 0;\\n //Making sure battery_percentage has a value\\n if (!battery_percentage) battery_percentage = 0;\\n decoded_final = fix_state + ';' + gpsTime + ';' + location_accuracy + ';' + battery_percentage;\\n if (BLT_state) {\\n decoded_final += ';' + BLT_state;\\n }\\n if (prox_source) {\\n decoded_final += ';' + prox_source;\\n }\\n if (prox_duration) {\\n decoded_final += ';' + prox_duration;\\n }\\n if (BLT_MAC) {\\n decoded_final += ';' + BLT_MAC;\\n }\\n if (amber_State && amber_Timer) {\\n decoded_final += ';' + amber_State + ';' + amber_Timer;\\n }\\n decoded_final += ';;' + ioElementsTotal + ';' + decoded;\\n //Return final string with decoed iods\\n return decoded_final;\\n }\\n\\n function sendMessageToLocalhost(str) {\\n if (localTesting) {\\n console.log(\\\"Sending message to server: \\\" + str);\\n } else {\\n var server = '127.0.0.1';\\n var c = createConnection(5678, server);\\n c.write(`${str}`);\\n c.end();\\n }\\n }\\n /**\\n * Create connection to the server\\n * @param {Int} port Port to connect\\n * @param {String} server Server to connect\\n * @return {net.socket} The newly created socket used to start the connection.\\n */\\n function createConnection(port, server) {\\n c = net.createConnection(port, server);\\n c.on('error', function(error) {\\n c = createConnection(port, server);\\n });\\n return c;\\n }\\n\\n function connect(port, inter, a) {\\n return new Promise(resolve => {\\n const socket = net.createConnection(port, '127.0.0.1', () => {\\n socket.write(inter[a], () => {\\n socket.destroy(); //socket.destroy(); to socket.close();\\n resolve();\\n });\\n });\\n });\\n }\\n\\n function debug(str) { // write debug info to console log, if localTesting\\n if (localTesting === \\\"True\\\") {\\n console.log(str);\\n }\\n }\\n /**\\n * Convert from ascii to hexadecimal\\n * @param {String} str Ascii string\\n * @return {Array} str converted to Hexadecimal\\n */\\n function ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n }\\n /**\\n * Convert from Hexadecimal to Ascii\\n * @param {String} str1 Hexadecimal string\\n * @return {String} str1 converted to Ascii\\n */\\n function 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 /**\\n * Convert from Hexadecimal to Decimal signed (allowing negative numbers)\\n * @param {Double} hex Hexadecimal number\\n * @return {Double} hex converted to Decimal signed\\n */\\n function hexToDecimalSigned(hex) {\\n if (hex.length % 2 != 0) {\\n hex = \\\"0\\\" + hex;\\n }\\n var num = parseInt(hex, 16);\\n var maxVal = Math.pow(2, hex.length / 2 * 8);\\n if (num > maxVal / 2 - 1) {\\n num = num - maxVal\\n }\\n return num;\\n }\\n /**\\n * Convert from Hexadecimal to Decimal\\n * @param {Double} x Hexadecimal number\\n * @return {Double} x converted to Decimal\\n */\\n function hexToDecimal(x) {\\n x = parseInt(x, 16);\\n return x;\\n }\\n /**\\n * Push value to the message arrray\\n * @param {String} p1 Name given to the code to push\\n * @param {} p2 Value to push\\n */\\n // pass everything into codevaluearray\\n function AddValue(codeValueArray, p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n codeValueArray.push(cvpair);\\n }\\n // modify to return the object that contains your data\\n return dataToReceiver;\\n}\\n// params is not defined locally -> export as module\\nif (typeof(params) === 'undefined') {\\n module.exports = {\\n execute_ops\\n }\\n} else { // on server use local defined vars\\n let return_values = execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, false)\\n // define global returns\\n msg = return_values;\\n}\",\"Type\":0,\"ProtocolActionObjects\":[]}","Timestamp":1729527636},{"Type":1,"NewValue":"{\"Id\":332,\"Name\":\"GH5200\",\"Operation\":\"function execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, localTesting) {\\n //###############################################################################################################################################################################################################\\n // Badege Operation Script\\n // * Operation script for Badge\\n // * Uses Long Connection: true\\n // *\\n // * GLOBAL TEMPLATE: <>,<>,<>, <>\\n // * Encrypted: true\\n // * \\n // * CYCLE TEMPLATE:\\n // * GH5200-CYC,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>\\n //###############################################################################################################################################################################################################\\n //=================================================================================\\n // VARIABLES \\n //=================================================================================\\n // if (typeof localTesting === \\\"undefined\\\") {\\n // var localTesting = \\\"False\\\";\\n // }\\n var customIdValue = '';\\n var isCorrectOperation = true;\\n var index = 20;\\n var timeout = 1500;\\n var fix_state;\\n var satelites;\\n var latitude;\\n var longitude;\\n var altitude;\\n var speed;\\n var event_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_accuracy = \\\"5000\\\";\\n var onTrackingDemand = false;\\n var isSleep = 'false'\\n var amber_State = '';\\n var amber_Timer = '';\\n var movement_Value = '';\\n var dataToReceiver = [];\\n var codeValues = [];\\n var configsToAck = [];\\n //If the event type matches a global template\\n if (globalTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE10');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n AddValue(codeValues, 'localCode', messageTypeLocalCode);\\n //In case the message is \\\"STC\\\" (Start Connection)\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n var imei = hex_to_ascii(rawFromBytes).slice(2);\\n AddValue(codeValues, \\\"imei\\\", imei);\\n sendMessageToLocalhost(`GH5200-STC,${imei},${serverParams.Guid}`);\\n // var c = createConnection(5678, '127.0.0.1');\\n // c.write(`GH5200-STC,${imei},${serverParams.Guid}`);\\n // //Imei is recevied in hex\\n AddValue(codeValues, \\\"ack_stc\\\", \\\"01\\\");\\n // c.end();\\n //In case the message is a codec8 (either codec8 or codec8 Extended)\\n } else if (messageTypeLocalCode == \\\"COD8-Global\\\") {\\n var ack;\\n //Get the full hex message in a readable format\\n var message = rawFromBytes;\\n var codecID = message.substring(16, 18);\\n //Get the imei from serverParams\\n var imei = serverParams.Imei\\n //Either codec 8 or codec 8 Extended\\n if (codecID == '08' || codecID == '8E') {\\n messages = decryptCodec8(message);\\n if (isCorrectOperation == false) {\\n return;\\n }\\n var numberOfData = message.substring(18, 20)\\n // var c = createConnection(5678, '127.0.0.1');\\n // c.on('data', function(data) {\\n // var msgLocal = [];\\n // //if ack ends with OTD, then onTrackingDemand = true\\n // if (data.toString().endsWith('OTD')) {\\n // onTrackingDemand = true\\n // }\\n // //The device can send more than one event on the same message. In this case, a part of the ack is the number of messages received\\n // //So, we only ack when we have received the last event of the message.\\n // if (data.toString().startsWith(`L${messages.length}`)) {\\n // //In case the event demands a tracking, the ack is the number of data followed by the command on_demand_tracking2 (already encoded)\\n // if (onTrackingDemand == true) {\\n // AddValue(msgLocal, 'ack_cod8', `000000${numberOfData}000000000000001D0C0105000000156F6E5F64656D616E645F747261636B696E67320D0A0100002EB9`);\\n // //Mandatory to push the imei when on a global template\\n // AddValue(msgLocal, 'imei', imei);\\n // //Mandatory to do console.log(msg);\\n // console.log(msgLocal);\\n // c.end();\\n // }\\n // //The device needs to be ack'ed the number of data in 4 bytes\\n // else {\\n //Ack with the number of messages received to make the device know that the server understood the full message.\\n AddValue(codeValues, 'ack_cod8', `000000${numberOfData}`);\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n //Mandatory to do console.log(msg);\\n //console.log(msg);\\n // c.end();\\n // }\\n // }\\n // });\\n //Internally send all the events on the same message received.\\n for (let i = 0; i < messages.length; i++) {\\n //c.write(messages[i]);\\n sendMessageToLocalhost(messages[i]);\\n // connect(5678, messages, i);\\n //console.log(messages[i]);\\n }\\n //In case the message is a codec12 (command ack)\\n } else if (codecID == '0C') {\\n var codec12 = decryptCodec12(message)\\n sendMessageToLocalhost(`GH5200-COD12,${serverParams.Imei},${codec12}`);\\n // var c = createConnection(5678, '127.0.0.1');\\n // //Internally send a codec12 message in the homogenous ascii format\\n // c.write(`GH5200-COD12,${serverParams.Imei},${codec12}`);\\n // c.end();\\n //Because the codec12 message is matched by the same global template than the codec8 message, we need to push \\\"ack_cod8\\\" as an empty string.\\n AddValue(codeValues, 'ack_cod8', '');\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n }\\n }\\n }\\n //In the case the message is matched by an oystaTemplate\\n if (oystaTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE10');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //If the message is a decrypted version for start the connection\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n // stc conditions\\n AddValue(codeValues, 'ack_stc', '01');\\n }\\n //If the message is a codec8 (event not taken into account by us) \\n else if (messageTypeLocalCode == 'COD8') {\\n if (params.recordNumber) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n //In case the message is Real Time Location\\n else if (messageTypeLocalCode == \\\"RTL\\\") {\\n //If the message has a gps fix\\n if (params.gps == \\\"1\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 1)\\n //Speed to m/s\\n AddValue(codeValues, \\\"speed\\\", params.speed_raw / 3.6)\\n //Location time to actual time. It is not provided on the message\\n location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n //Event time to actual time. It is not provided on the message\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n //Hardcoded accuracy of 500. No hdop or satellites are provided on the message\\n AddValue(codeValues, \\\"location_accuracy\\\", 500)\\n }\\n //If the message does not have a gps fix, we do not use it as we cannot make sure it is real\\n else if (params.gps == \\\"0\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n }\\n //If the event is an Alarm or Position By Button, send a flag (ODT) so the device is asked for on_demand_tracking\\n else if (messageTypeLocalCode == \\\"PBB\\\" || messageTypeCode.startsWith('AL')) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message. If it is a Position by button or any kind of alarm, it needs to be follow by \\\"ODT\\\" in order to ask for a tracking\\n //This is used to make sure the gps is awake. It will solve the error of alarms sent before there is a gps fix\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}OTD`);\\n //If the event is an ack for a SMS command (Redirected from Esendex)\\n } else if (messageTypeLocalCode.startsWith('ACK-SMS')) {\\n //No fix state\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n //Event and location time to actual time in order to show the messages on the events table\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n var c = createConnection(5678, '127.0.0.1');\\n //If the message is a sms ack for a \\\"normal command\\\" (this means the ack will start with \\\"New value \\\")\\n if (messageTypeLocalCode == \\\"ACK-SMS\\\") {\\n if (params.smsAck) {\\n //Add \\\"-SMS\\\" at the end so we can differentiate between a sms and grps ack for a command.\\n var smsAck = params.smsAck + '-SMS;'\\n // the essendex message the device sends in gets converted here\\n c.write(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n debug(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n if (!smsAck.startsWith('2001:')) {\\n //Add tag no commands so no commands are sent to the device after a sms ack. The device will not accept a command after a sms ack. This prevents lots of problems.\\n AddValue(codeValues, 'no_commands', 'true');\\n //As it is redirected from Esende, it is mandatroy to push the imei\\n AddValue(codeValues, 'imei', serverParams.Imei);\\n }\\n }\\n }\\n //We do not need to send the tag \\\"no_commands\\\" on the next 3 message types since we have already checked that option on the message type that matched the Esendex resend.\\n //If the message is a sms ack for \\\"Delete Records\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-DR\\\") {\\n var smsAck = '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},All records are erased${smsAck}`);\\n }\\n //If the message is a sms ack for \\\"Get Info\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GI\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},RTC:${smsAck}`);\\n }\\n }\\n //If the message is a sms ack for \\\"Get Version\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GV\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},Ver:${smsAck}`);\\n }\\n }\\n c.end()\\n } else if (messageTypeLocalCode.startsWith(\\\"ACK-ALF\\\")) {\\n if (messageTypeLocalCode == \\\"ACK-ALF\\\") {\\n var newAlldata = \\\"12100:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS2\\\") {\\n var newAlldata = \\\"14390:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS3\\\") {\\n var newAlldata = \\\"12101:\\\" + params.alldata;\\n }\\n if (newAlldata != null) {\\n var keyValues = ['12101', '12102', '12103', '12111', '12100', '13019', '13022', '14390', '14392', '14393', '14391', '14397', '14430', '14432', '14433', '14431', '14437', '14170', '14320', '14173', '14323', '7222', '12104'];\\n var configParamNames = ['FallAlarmSettings.Position', 'FallAlarmSettings.Angle', 'FallAlarmSettings.Timeout', 'FallAlarmSettings.SilentPreAlarmDelay', 'FallAlarmSettings.EnableDisableFallAlarmSettings', 'FallAlarmSettings.EnableDisableByButtons', 'FallAlarmSettings.EnableDisableByButtons', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'FallAlarmSettings.Indication', 'No-Ack-Needed', 'No-Ack-Needed'];\\n var ackSMSArray = newAlldata.split(';');\\n var findIndexOfBlankSMS = ackSMSArray.findIndex(element => element.includes(\\\"-SMS\\\"));\\n if (ackSMSArray[findIndexOfBlankSMS] === \\\"-SMS\\\") {\\n ackSMSArray.pop()\\n }\\n AddValue(codeValues, \\\"imei\\\", serverParams.Imei);\\n for (let i = 0; i < ackSMSArray.length; i++) {\\n var keyId = ackSMSArray[i].split(':')[0]; // id of the param saved in the array\\n var keyValue = ackSMSArray[i].split(':')[1]; // value of the param \\n var findIndex = keyValues.indexOf(keyId)\\n if (configParamNames[findIndex] != \\\"No-Ack-Needed\\\") {\\n var intellicareDataSetValue = eval('configs' + '.' + configParamNames[findIndex])\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableFallAlarmSettings\\\") {\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (intellicareDataSetValue == \\\"true\\\") {\\n intellicareDataSetValue = \\\"1\\\"\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n // if enableDisableByButtonsIndex is unchecked then overwrite the EnableDisableFallAlarmSettings value\\n var enableDisableByButtonsIndex = ackSMSArray.findIndex(element => element.includes(\\\"13019\\\" || \\\"13022\\\")); // button 1 long click or button 2 long click\\n if (enableDisableByButtonsIndex != -1) {\\n var valueOfenableDisableByButtons = ackSMSArray[enableDisableByButtonsIndex].slice(-1)\\n if (valueOfenableDisableByButtons != \\\"0\\\") {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n }\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableByButtons\\\") {\\n if (intellicareDataSetValue == \\\"true\\\") {\\n if (keyId == \\\"13019\\\") {\\n intellicareDataSetValue = \\\"2\\\"\\n } else if (keyId == \\\"13022\\\") {\\n intellicareDataSetValue = \\\"3\\\"\\n }\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.Indication\\\") {\\n if (intellicareDataSetValue == \\\"0\\\") { // on device 3 = vibrate and sound = 0 on IC\\n intellicareDataSetValue = \\\"3\\\"\\n } else if (intellicareDataSetValue == \\\"1\\\") { // on device 1 = vibrate = 1 on IC\\n intellicareDataSetValue = \\\"1\\\"\\n } else if (intellicareDataSetValue == \\\"2\\\") { // on device 0 = off = 2 on IC\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n if (keyValue == intellicareDataSetValue) {\\n configsToAck.push(eval('configIds' + '.' + configParamNames[findIndex]))\\n debug(\\\"Matched values of param\\\" + configParamNames[findIndex]);\\n } else {\\n debug(\\\"Not matched values of param\\\" + configParamNames[findIndex]);\\n }\\n }\\n }\\n }\\n }\\n //If the message is an ack, push the needed information to appear on the UI events.\\n else if (messageTypeLocalCode.startsWith('ACK-')) {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n //If the message is a decrypted version for codec8. This will include Cycles, and all the rest of messages not represented on the else if before \\n else {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n //AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n // If customID is not set....\\n if (isCorrectOperation) {\\n if (configsToAck.length > 0) {\\n dataToReceiver = {\\n 'values': codeValues,\\n 'configsToAck': configsToAck,\\n };\\n } else {\\n dataToReceiver = {\\n 'values': codeValues\\n };\\n }\\n console.log(dataToReceiver);\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {String} Ascii message\\n */\\n function decryptCodec12(message) {\\n var decoded = '';\\n var data12 = message.slice(30, -10);\\n data12 = hex_to_ascii(data12);\\n return data12;\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {Array} Array of Ascii messages\\n */\\n function decryptCodec8(message) {\\n //Initialise variables\\n var decoded = '';\\n var codecID = message.substring(16, 18);\\n decoded += codecID + ';';\\n var numberOfData = message.substring(18, 20);\\n decoded += numberOfData + ';';\\n var records = [];\\n var prox = 0;\\n //Loop number of events on a message times\\n for (i = 0; i < hexToDecimal(numberOfData); i++) {\\n //Initialise and transform variables\\n isSleep = 'false'\\n amber_State = '';\\n amber_Timer = '';\\n var decoded_final = '';\\n var record = '';\\n var timestamp = message.substring(index, index += 16);\\n timestamp = hexToDecimal(timestamp).toString().slice(0, -3)\\n timestamp = parseInt(timestamp, 10);\\n var priority = message.substring(index, index += 2);\\n var longitude = message.substring(index, index += 8);\\n longitude = hexToDecimalSigned(longitude) / 10000000;\\n var latitude = message.substring(index, index += 8);\\n latitude = hexToDecimalSigned(latitude) / 10000000;\\n var altitude = message.substring(index, index += 4);\\n altitude = hexToDecimalSigned(altitude);\\n var angle = message.substring(index, index += 4);\\n angle = hexToDecimalSigned(angle);\\n var satelites = message.substring(index, index += 2);\\n satelites = hexToDecimal(satelites);\\n var speed = message.substring(index, index += 4);\\n //Speed to m/s\\n speed = (hexToDecimal(speed) / 3.6).toFixed(2)\\n //If the message is a codec 8\\n if (codecID == '8E') {\\n var ioEvent = message.substring(index, index += 4);\\n var ioElementsTotal = message.substring(index, index += 4);\\n }\\n //If the message is a codec 8 Extended\\n else if (codecID == '08') {\\n var ioEvent = message.substring(index, index += 2);\\n var ioElementsTotal = message.substring(index, index += 2);\\n }\\n ioEvent = hexToDecimal(ioEvent);\\n //Switch to determine which is the event on the message\\n switch (ioEvent) {\\n case 0:\\n ioEvent = 'NoEvent';\\n break;\\n case 236:\\n ioEvent = 'Alarm';\\n break;\\n case 242:\\n ioEvent = 'ManDown';\\n break;\\n case 255:\\n ioEvent = 'OverSpeeding';\\n break;\\n case 310:\\n ioEvent = 'Movement_Event';\\n break;\\n case 389:\\n ioEvent = 'ButtonClick';\\n break;\\n case 1000:\\n ioEvent = 'Cycle';\\n break;\\n case 240:\\n ioEvent = 'Movement';\\n break\\n case 874:\\n ioEvent = 'BLT_violation_state';\\n break;\\n case 875:\\n ioEvent = 'Proximity_violation_source';\\n break;\\n case 874:\\n ioEvent = 'Proximity_duration';\\n break;\\n case 874:\\n ioEvent = 'BLT_MAC_Address';\\n break;\\n case 200:\\n ioEvent = 'Sleep_Mode';\\n break;\\n case 390:\\n ioEvent = 'PowerOff';\\n break;\\n case 200000:\\n ioEvent = 'PowerOn';\\n break;\\n case 400:\\n ioEvent = 'AmberAlert';\\n break;\\n default:\\n ioEvent = ioEvent + ':Not_recognised';\\n }\\n //Get the IO ids part of the message\\n var iods = IOIdsValues(message, ioElementsTotal, timestamp);\\n // if (customIdValue != '') {\\n // //we find the customIdValue at any point, \\n // //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n // isCorrectOperation = false;\\n // return;\\n // }\\n //Internally send the events translated to a readable format and using the format needed to match the message types.\\n if (ioEvent == 'Alarm') {\\n record = `GH5200-ALSOS,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'ManDown') {\\n record = `GH5200-ALF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'OverSpeeding') {\\n record = `GH5200-ALSP,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AutoGeofenceEvent' || ioEvent.startsWith('Geofence')) {\\n record = `GH5200-AGEO,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'NoEvent' || ioEvent == 'Cycle') {\\n //If the device is on sleep mode, it will not have send locations. For this reason, the message will be a Heartbeat and not a Cycle\\n if (isSleep == 'true') {\\n record = `GH5200-HTB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n } else if (ioEvent == 'Movement_Event') {\\n if (movement_Value == 'Movement_Event=NoMovement') {\\n record = `GH5200-ALNM,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (movement_Value == 'Movement_Event=Movement') {\\n record = `GH5200-ALMV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n //If the event is triggered because the device has entrered on Sleep mode, set an accuracy on 5000 to force a location. With this, we make sure we sent the last know location and we don't lose it.\\n //Without this, it can happen that a location is sent, another one acquired but never sent because went to sleep mode\\n else if (ioEvent == 'Sleep_Mode') {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n var iodsValues = iods.split(\\\";\\\");\\n iodsValues[0] = 1\\n if (iodsValues[2] == 0 && longitude != '0' && latitude != '0') {\\n iodsValues[2] = 5000\\n }\\n iods = iodsValues.join(\\\";\\\");\\n //} else if (ioEvent == 'Movement') {\\n // record = `GH5200-MV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'Proximity_violation_source' || ioEvent == 'Proximity_duration' || ioEvent == 'BLT_MAC_Address') {\\n record = `${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n prox = 1;\\n } else if (ioEvent == 'ButtonClick') {\\n record = `GH5200-PBB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AmberAlert') {\\n if (amber_State && amber_Timer) {\\n if (amber_State == 'Amber_Alert_State=Cancelled') {\\n record = `GH5200-ALA-C,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=On') {\\n record = `GH5200-ALA-O,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Snoozed') {\\n record = `GH5200-ALA-S,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Alarm') {\\n record = `GH5200-ALA,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n } else if (ioEvent == 'PowerOn') {\\n record = `GH5200-PWRN,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'PowerOff') {\\n record = `GH5200-PWRF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //In case the event has been created by an \\\"unknown\\\" IO Event (or not considered)\\n else {\\n record = `GH5200-COD8,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //console.log('--------------------' + decoded_final)\\n record = record + iods;\\n if (prox == 1) {\\n var values = iods.split(\\\";\\\");\\n if (values[4].startsWith('Proximity_duration')) {\\n var prox_duration = values[4].split(\\\"=\\\");\\n if (prox_duration[1] < 1) {\\n record = 'GH5200-PROXS,' + record;\\n } else if (prox_duration[1] >= 1) {\\n record = 'GH5200-PROXE,' + record;\\n }\\n }\\n prox = 0\\n }\\n //Push each record into a records array\\n records.push(record);\\n debug(record);\\n }\\n var CRC = message.substring(index + 2, index + 10);\\n //return an array with all records stored\\n return records;\\n }\\n /**\\n * Decrypts part of the message that contains the IO Ids and its values\\n * @param {String} message String to decrypt\\n * @param {String} ioElementsTotal Number of IO elements present on the message\\n * @param {Int} timestamp Unix timestamp given from the message\\n * @return {String} String with the IO Ids and its values decrypted on a readable format\\n */\\n function IOIdsValues(message, ioElementsTotal, timestamp) {\\n //Variable initialisation\\n var decoded = '';\\n var iods = '';\\n var gpsTime = 0;\\n var prox_source = '';\\n var prox_duration = '';\\n var BLT_state = '';\\n var BLT_MAC = '';\\n for (let i = 1; i <= 8; i = i * 2) {\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var ioNumElements = message.substring(index, index += 2);\\n }\\n var x = hexToDecimal(ioNumElements);\\n var pos = 2 * i;\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n //Id length depends on the codec\\n if (codecID == '8E') {\\n var id = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var id = message.substring(index, index += 2);\\n }\\n var value = message.substring(index, index += pos);\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n case 310:\\n id = 'Movement_Event';\\n if (value == '0') value = 'Movement';\\n else if (value == '1') value = 'NoMovement';\\n movement_Value = id + '=' + value;\\n break;\\n case 854: //Custom ID\\n customIdValue = value;\\n if (value != '') {\\n //we get the customIdValue at any point, \\n //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n isCorrectOperation = false;\\n return;\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n //Return decoded string with all the ids and its values on a readable format\\n decoded += ioNumElements + ';' + iods;\\n }\\n //ids with variable length on codec8 Extended\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n var x = hexToDecimal(ioNumElements);\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n var id = message.substring(index, index += 4);\\n var len = message.substring(index, index += 4);\\n len = hexToDecimal(len) * 2;\\n var value = message.substring(index, index += len);\\n valueHex = value;\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n decoded += ioNumElements + ';' + iods;\\n }\\n //Making sure location_accuracy has a value\\n if (!location_accuracy) location_accuracy = 0;\\n //Making sure battery_percentage has a value\\n if (!battery_percentage) battery_percentage = 0;\\n decoded_final = fix_state + ';' + gpsTime + ';' + location_accuracy + ';' + battery_percentage;\\n if (BLT_state) {\\n decoded_final += ';' + BLT_state;\\n }\\n if (prox_source) {\\n decoded_final += ';' + prox_source;\\n }\\n if (prox_duration) {\\n decoded_final += ';' + prox_duration;\\n }\\n if (BLT_MAC) {\\n decoded_final += ';' + BLT_MAC;\\n }\\n if (amber_State && amber_Timer) {\\n decoded_final += ';' + amber_State + ';' + amber_Timer;\\n }\\n decoded_final += ';;' + ioElementsTotal + ';' + decoded;\\n //Return final string with decoed iods\\n return decoded_final;\\n }\\n\\n function sendMessageToLocalhost(str) {\\n if (localTesting) {\\n console.log(\\\"Sending message to server: \\\" + str);\\n } else {\\n var server = '127.0.0.1';\\n AddValue(codeValues, \\\"sending\\\", str);\\n var c = createConnection(5678, server);\\n c.write(`${str}`);\\n c.end();\\n }\\n }\\n /**\\n * Create connection to the server\\n * @param {Int} port Port to connect\\n * @param {String} server Server to connect\\n * @return {net.socket} The newly created socket used to start the connection.\\n */\\n function createConnection(port, server) {\\n c = net.createConnection(port, server);\\n c.on('error', function(error) {\\n c = createConnection(port, server);\\n });\\n return c;\\n }\\n\\n function connect(port, inter, a) {\\n return new Promise(resolve => {\\n const socket = net.createConnection(port, '127.0.0.1', () => {\\n socket.write(inter[a], () => {\\n socket.destroy(); //socket.destroy(); to socket.close();\\n resolve();\\n });\\n });\\n });\\n }\\n\\n function debug(str) { // write debug info to console log, if localTesting\\n if (localTesting) {\\n console.log(str);\\n }\\n }\\n /**\\n * Convert from ascii to hexadecimal\\n * @param {String} str Ascii string\\n * @return {Array} str converted to Hexadecimal\\n */\\n function ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n }\\n /**\\n * Convert from Hexadecimal to Ascii\\n * @param {String} str1 Hexadecimal string\\n * @return {String} str1 converted to Ascii\\n */\\n function 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 /**\\n * Convert from Hexadecimal to Decimal signed (allowing negative numbers)\\n * @param {Double} hex Hexadecimal number\\n * @return {Double} hex converted to Decimal signed\\n */\\n function hexToDecimalSigned(hex) {\\n if (hex.length % 2 != 0) {\\n hex = \\\"0\\\" + hex;\\n }\\n var num = parseInt(hex, 16);\\n var maxVal = Math.pow(2, hex.length / 2 * 8);\\n if (num > maxVal / 2 - 1) {\\n num = num - maxVal\\n }\\n return num;\\n }\\n /**\\n * Convert from Hexadecimal to Decimal\\n * @param {Double} x Hexadecimal number\\n * @return {Double} x converted to Decimal\\n */\\n function hexToDecimal(x) {\\n x = parseInt(x, 16);\\n return x;\\n }\\n /**\\n * Push value to the message arrray\\n * @param {String} p1 Name given to the code to push\\n * @param {} p2 Value to push\\n */\\n // pass everything into codevaluearray\\n function AddValue(codeValueArray, p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n codeValueArray.push(cvpair);\\n }\\n // modify to return the object that contains your data\\n return dataToReceiver;\\n}\\n// params is not defined locally -> export as module\\nif (typeof(params) === 'undefined') {\\n module.exports = {\\n execute_ops\\n }\\n} else { // on server use local defined vars\\n let return_values = execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, false)\\n // define global returns\\n msg = return_values;\\n}\",\"Type\":0,\"ProtocolActionObjects\":[]}","Timestamp":1729596587}]}],"Groups":[{"Id":6473,"Parent":null,"Name":"Admin Settings","Json":"{ \"description\": \"Admin Settings\", \"columns\": 1, \"order\": 1, \"listSize\": 1, \"toTranslate\": [ \"name\", \"description\" ]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"ProtocolActionObjects":[]},{"Id":6474,"Parent":null,"Name":"Feature Settings","Json":"{ \"description\": null, \"columns\": 1, \"order\": 2, \"listSize\": 1, \"toTranslate\": [ \"name\", \"description\" ]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6475,"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Report Position By Button","Json":"{\"description\":null,\"columns\":1,\"order\":12,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6476,"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Real Time Locate","Json":"{\"description\":null,\"columns\":1,\"order\":10,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6477,"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"SOS Settings","Json":"{\"description\":null,\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6478,"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"White List","Json":"{\"description\":null,\"columns\":1,\"order\":11,\"listSize\":5,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6479,"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Get Version","Json":"{ \"description\": null, \"columns\": 1, \"order\": 2, \"listSize\": 1, \"toTranslate\": [ \"name\", \"description\" ]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"ProtocolActionObjects":[]},{"Id":6480,"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Over Speeding Settings","Json":"{\"description\":\"\",\"columns\":1,\"order\":7,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6481,"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Amber Alert","Json":"{\"description\":\"\",\"columns\":1,\"order\":5,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6482,"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Speed Dial Buttons","Json":"{\"description\":null,\"columns\":1,\"order\":9,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6483,"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Proximity","Json":"{\"description\":null,\"columns\":1,\"order\":13,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"ProtocolActionObjects":[]},{"Id":6484,"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Fall Alarm Settings","Json":"{\"description\":null,\"columns\":1,\"order\":6,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6485,"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"No Activity","Json":"{\"description\":\"No Activity\",\"columns\":1,\"order\":2,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6486,"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Movement","Json":"{\"description\":null,\"columns\":1,\"order\":4,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6487,"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Cycle Settings","Json":"{ \"description\": \"\", \"columns\": 1, \"order\": 4, \"listSize\": 1, \"toTranslate\": [ \"name\", \"description\" ]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6488,"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"APN Config","Json":"{ \"description\": null, \"columns\": 1, \"order\": 5, \"listSize\": 1, \"toTranslate\": [ \"name\", \"description\" ]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6489,"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Get Info","Json":"{ \"description\": \"\", \"columns\": 1, \"order\": 3, \"listSize\": 1, \"toTranslate\": [ \"name\", \"description\" ]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"ProtocolActionObjects":[]},{"Id":6490,"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Call Settings","Json":"{ \"description\": null, \"columns\": 1, \"order\": 6, \"listSize\": 1, \"toTranslate\": [ \"name\", \"description\" ]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6491,"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Initialise From Factory Settings","Json":"{\"description\":\"\",\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"ProtocolActionObjects":[]},{"Id":6492,"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"SMS Password","Json":"{ \"description\": \"Login and Password for SMS\", \"columns\": 1, \"order\": 7, \"listSize\": 1, \"toTranslate\": [ \"name\", \"description\" ]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6493,"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"NoMovement","Json":"{\"description\":null,\"columns\":1,\"order\":3,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6494,"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Reboot","Json":"{\"description\":null,\"columns\":1,\"order\":8,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6495,"Parent":{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Incoming Calls","Json":"{\"description\":null,\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6496,"Parent":{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Speed Dial Button","Json":"{ \"description\": \"\", \"columns\": 1, \"order\": 1, \"listSize\": 1, \"toTranslate\": [ \"name\", \"description\" ]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6497,"Parent":{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Device Volume","Json":"{\"description\":null,\"columns\":1,\"order\":2,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]}],"GroupParams":[{"Id":11594,"Group":{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Report Position By Button","Json":"{ \"name\": \"Report Position By Button\", \"default\": \"true\", \"description\": \"Report Position By Button\", \"type\": \"checkbox\", \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"futureOnly\": \"\", \"integerOnly\": false, \"minLength\": null, \"maxLength\": null, \"helpText\": \"Set button 3 to report a position by button when pressed on the device\", \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ]}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11593,"Group":{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Real Time Locate","Json":"{\"name\":\"Real Time Locate\",\"default\":\"\",\"description\":\"Real Time Locate\",\"type\":\"button\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Select to request an updated location from the device\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11591,"Group":{"Id":6477,"Name":"SOS Settings","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"SOS Number","Json":"{ \"name\": \"SOS Number\", \"default\": \"\", \"description\": \"Alarm Phone Number\", \"type\": \"phone\", \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"futureOnly\": \"\", \"integerOnly\": false, \"minLength\": null, \"maxLength\": null, \"helpText\": \"The phone number will be used for alarm calls\", \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11592,"Group":{"Id":6477,"Name":"SOS Settings","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"SOS Action","Json":"{\"name\":\"SOS Action\",\"default\":\"\",\"description\":\"Alarm Action\",\"type\":\"radioGroup\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":null,\"integerOnly\":null,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Select the alarm action\",\"options\":[{\"label\":\"Call and Event\",\"value\":\"0\"},{\"label\":\"Event Only\",\"value\":\"1\"}],\"toTranslate\":[\"name\",\"description\",\"helpText\",\"label\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11589,"Group":{"Id":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},"Name":"Number","Json":"{ \"name\": \"Number\", \"default\": \"\", \"description\": null, \"type\": \"phone\", \"order\": 1, \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"minLength\": null, \"maxLength\": null, \"helpText\": null, \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11581,"Group":{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":true,"Deleted":false,"Children":[]},"Name":"Get Version","Json":"{\"name\":\"Get Version\",\"default\":\"\",\"description\":\"Get Version\",\"type\":\"button\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":null,\"integerOnly\":null,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11595,"Group":{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Max Speed","Json":"{ \"name\": \"Max Speed\", \"default\": \"90\", \"description\": \"Max Speed\", \"type\": \"number\", \"suffix\": null, \"prefix\": null, \"min\": 0, \"max\": 260, \"futureOnly\": null, \"integerOnly\": true, \"minLength\": null, \"maxLength\": null, \"helpText\": \"Km/h\", \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ], \"order\": 1}","Default":"90","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11596,"Group":{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Enable Disable Over Speeding Settings","Json":"{ \"name\": \"Enable Disable Over Speeding Settings\", \"default\": \"true\", \"description\": null, \"type\": \"enable\", \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"futureOnly\": \"\", \"integerOnly\": false, \"minLength\": null, \"maxLength\": null, \"helpText\": \"Select to enable or disable the Over Speed feature\", \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ]}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11585,"Group":{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Initial Call","Json":"{\"name\":\"Initial Call\",\"default\":\"false\",\"description\":\"Initial Call\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Make a call when starting the Amber timer\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11590,"Group":{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Enable Disable Amber Alert","Json":"{ \"name\": \"Enable Disable Amber Alert\", \"default\": \"false\", \"description\": \"\", \"type\": \"enable\", \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"futureOnly\": null, \"integerOnly\": null, \"minLength\": null, \"maxLength\": null, \"helpText\": \"Select to enable or disable the Amber Alert feature\", \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ], \"order\": 0}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11603,"Group":{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"PreAlarm","Json":"{\"name\":\"PreAlarm\",\"default\":\"\",\"description\":\"PreAlarm\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"In seconds\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11602,"Group":{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Disable After Alarm","Json":"{\"name\":\"Disable After Alarm\",\"default\":\"false\",\"description\":\"Disable After Alarm\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":null,\"integerOnly\":null,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Select this checkbox if you wish the Amber Alert process to stop after an alarm\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":2}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11586,"Group":{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Indication","Json":"{\"name\":\"Indication\",\"default\":\"\",\"description\":null,\"type\":\"radioGroup\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[{\"label\":\"Vibrate and sound\",\"value\":\"0\"},{\"label\":\"Vibrate\",\"value\":\"1\"},{\"label\":\"Nothing\",\"value\":\"2\"}],\"toTranslate\":[\"name\",\"description\",\"helpText\",\"label\"],\"order\":1}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11587,"Group":{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Timeout","Json":"{\"name\":\"Timeout\",\"default\":\"\",\"description\":\"\\nTimeout\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"In seconds\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":11587,\"Group\":{\"Id\":6481,\"Name\":\"Amber Alert\",\"Json\":{\"description\":\"\",\"columns\":1,\"order\":5,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]},\"Parent\":null,\"Device\":null,\"DeviceRelated\":false,\"IsList\":false,\"IsAdminOnly\":false,\"Deleted\":false,\"Children\":[]},\"Name\":\"Timeout\",\"Json\":\"{\\\"name\\\":\\\"Timeout\\\",\\\"default\\\":\\\"\\\",\\\"description\\\":\\\"\\\\nTimeout\\\",\\\"type\\\":\\\"number\\\",\\\"suffix\\\":null,\\\"prefix\\\":null,\\\"min\\\":180,\\\"max\\\":null,\\\"futureOnly\\\":false,\\\"integerOnly\\\":true,\\\"isReadOnly\\\":false,\\\"isHidden\\\":false,\\\"minLength\\\":null,\\\"maxLength\\\":null,\\\"helpText\\\":\\\"In seconds\\\",\\\"options\\\":[],\\\"toTranslate\\\":[\\\"name\\\",\\\"description\\\",\\\"helpText\\\"]}\",\"Default\":\"\",\"Command\":null,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728469479}],"Tags":[]},{"Id":11598,"Group":{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":true,"Deleted":false,"Children":[]},"Name":"Enable Disable Proximity","Json":"{\"name\":\"Enable Disable Proximity\",\"default\":\"true\",\"description\":\"\",\"type\":\"enable\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":true,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Select to enable or disable the Proximity feature\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11599,"Group":{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":true,"Deleted":false,"Children":[]},"Name":"Prealarm","Json":"{\"name\":\"Prealarm\",\"default\":\"20\",\"description\":\"Prealarm\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":true,\"isHidden\":true,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Seconds\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"20","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11597,"Group":{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":true,"Deleted":false,"Children":[]},"Name":"Call","Json":"{\"name\":\"Call\",\"default\":\"true\",\"description\":\"Call\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":true,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11562,"Group":{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Enable Disable By Buttons","Json":"{\"name\":\"Enable Disable By Buttons\",\"default\":\"\",\"description\":\"Enable Disable By Buttons\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"If checked, the user will be able to enable/disable the functionality by the corresponding button.\\nIf checked, Fall alarm will be OFF by default. If unchecked, Fall alarm will be ON by default\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":0}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11563,"Group":{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Angle","Json":"{\"name\":\"Angle\",\"default\":\"\",\"description\":\"Angle\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":30,\"max\":150,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Degrees\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":1}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11561,"Group":{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Position","Json":"{\"name\":\"Position\",\"default\":\"\",\"description\":null,\"type\":\"radioGroup\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Orientation\",\"options\":[{\"label\":\"Horizontal\",\"value\":\"0\"},{\"label\":\"Vertical\",\"value\":\"1\"}],\"toTranslate\":[\"name\",\"description\",\"helpText\",\"label\"],\"order\":3}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11560,"Group":{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Enable Disable Fall Alarm Settings","Json":"{\"name\":\"Enable Disable Fall Alarm Settings\",\"default\":\"\",\"description\":null,\"type\":\"enable\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Select to enable or disable the Fall Alarm feature\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":2}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11559,"Group":{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Silent PreAlarm Delay","Json":"{\"name\":\"Silent PreAlarm Delay\",\"default\":\"\",\"description\":\"Silent PreAlarm Delay\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":0,\"max\":600,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Seconds\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":4}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11558,"Group":{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Timeout","Json":"{\"name\":\"Timeout\",\"default\":\"\",\"description\":\"Timeout\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":0,\"max\":65500,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Seconds\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":5}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11557,"Group":{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Indication","Json":"{\"name\":\"Indication\",\"default\":\"\",\"description\":null,\"type\":\"radioGroup\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[{\"label\":\"Vibrate and sound\",\"value\":\"0\"},{\"label\":\"Vibrate\",\"value\":\"1\"},{\"label\":\"Nothing\",\"value\":\"2\"}],\"toTranslate\":[\"name\",\"description\",\"helpText\",\"label\"],\"order\":6}","Default":"","Command":null,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":11557,\"Group\":{\"Id\":6484,\"Name\":\"Fall Alarm Settings\",\"Json\":{\"description\":null,\"columns\":1,\"order\":6,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]},\"Parent\":null,\"Device\":null,\"DeviceRelated\":false,\"IsList\":false,\"IsAdminOnly\":false,\"Deleted\":false,\"Children\":[]},\"Name\":\"Indication\",\"Json\":\"{\\\"name\\\":\\\"Indication\\\",\\\"default\\\":\\\"\\\",\\\"description\\\":null,\\\"type\\\":\\\"radioGroup\\\",\\\"suffix\\\":null,\\\"prefix\\\":null,\\\"min\\\":null,\\\"max\\\":null,\\\"futureOnly\\\":false,\\\"integerOnly\\\":false,\\\"isReadOnly\\\":false,\\\"isHidden\\\":false,\\\"minLength\\\":null,\\\"maxLength\\\":null,\\\"helpText\\\":null,\\\"options\\\":[{\\\"value\\\":\\\"0\\\",\\\"label\\\":\\\"Vibrate and sound\\\"},{\\\"value\\\":\\\"1\\\",\\\"label\\\":\\\"Vibrate\\\"},{\\\"value\\\":\\\"2\\\",\\\"label\\\":\\\"Nothing\\\"}],\\\"toTranslate\\\":[\\\"name\\\",\\\"description\\\",\\\"helpText\\\",\\\"label\\\"]}\",\"Default\":\"\",\"Command\":null,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728395985},{"Type":2,"NewValue":"{\"Id\":11557,\"Group\":{\"Id\":6484,\"Name\":\"Fall Alarm Settings\",\"Json\":{\"description\":null,\"columns\":1,\"order\":6,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]},\"Parent\":null,\"Device\":null,\"DeviceRelated\":false,\"IsList\":false,\"IsAdminOnly\":false,\"Deleted\":false,\"Children\":[]},\"Name\":\"Indication\",\"Json\":\"{\\\"name\\\":\\\"Indication\\\",\\\"default\\\":\\\"\\\",\\\"description\\\":null,\\\"type\\\":\\\"radioGroup\\\",\\\"suffix\\\":null,\\\"prefix\\\":null,\\\"min\\\":null,\\\"max\\\":null,\\\"futureOnly\\\":false,\\\"integerOnly\\\":false,\\\"isReadOnly\\\":false,\\\"isHidden\\\":false,\\\"minLength\\\":null,\\\"maxLength\\\":null,\\\"helpText\\\":null,\\\"options\\\":[{\\\"value\\\":\\\"0\\\",\\\"label\\\":\\\"Vibrate and sound\\\"},{\\\"value\\\":\\\"1\\\",\\\"label\\\":\\\"Vibrate\\\"},{\\\"value\\\":\\\"2\\\",\\\"label\\\":\\\"Nothing\\\"}],\\\"toTranslate\\\":[\\\"name\\\",\\\"description\\\",\\\"helpText\\\",\\\"label\\\"]}\",\"Default\":\"\",\"Command\":{\"Id\":5305,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"1.0\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Fall Alarm SMS 2\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar commandSMS = '';\\nvar command = '';\\nvar commandGprs = '';\\nvar notSend = false;\\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \\\"true\\\") {\\n var command = 'setparam 14390:1;14392:5;14393:1;14391:1;14397:1;14430:1;14432:5;14433:1;14431:1;14437:1;';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\\n notSend = true;\\n }\\n AddValue(\\\"data\\\", commandGprs);\\n AddValueSMS(\\\"data\\\", commandSMS);\\n}\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS,\\n notSend: notSend\\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}\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":true,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":5283,\"Parent\":null,\"HasAck\":true,\"HexString\":false,\"SendAttempts\":9,\"Order\":17},\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728395990},{"Type":2,"NewValue":"{\"Id\":11557,\"Group\":{\"Id\":6484,\"Name\":\"Fall Alarm Settings\",\"Json\":{\"description\":null,\"columns\":1,\"order\":6,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]},\"Parent\":null,\"Device\":null,\"DeviceRelated\":false,\"IsList\":false,\"IsAdminOnly\":false,\"Deleted\":false,\"Children\":[]},\"Name\":\"Indication\",\"Json\":\"{\\\"name\\\":\\\"Indication\\\",\\\"default\\\":\\\"\\\",\\\"description\\\":null,\\\"type\\\":\\\"radioGroup\\\",\\\"suffix\\\":null,\\\"prefix\\\":null,\\\"min\\\":null,\\\"max\\\":null,\\\"futureOnly\\\":false,\\\"integerOnly\\\":false,\\\"isReadOnly\\\":false,\\\"isHidden\\\":false,\\\"minLength\\\":null,\\\"maxLength\\\":null,\\\"helpText\\\":null,\\\"options\\\":[{\\\"value\\\":\\\"0\\\",\\\"label\\\":\\\"Vibrate and sound\\\"},{\\\"value\\\":\\\"1\\\",\\\"label\\\":\\\"Vibrate\\\"},{\\\"value\\\":\\\"2\\\",\\\"label\\\":\\\"Nothing\\\"}],\\\"toTranslate\\\":[\\\"name\\\",\\\"description\\\",\\\"helpText\\\",\\\"label\\\"]}\",\"Default\":\"\",\"Command\":{\"Id\":5312,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"1.0\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Fall Alarm SMS 3\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar commandSMS = '';\\nvar command = '';\\nvar commandGprs = '';\\nvar notSend = false;\\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \\\"true\\\") {\\n command = 'setparam ';\\n if (params.FallAlarmSettings.Position) {\\n command += '12101:' + params.FallAlarmSettings.Position + ';';\\n }\\n if (params.FallAlarmSettings.Angle) {\\n command += '12102:' + params.FallAlarmSettings.Angle + ';';\\n }\\n if (params.FallAlarmSettings.Timeout) {\\n command += '12103:' + params.FallAlarmSettings.Timeout + ';';\\n }\\n if (params.FallAlarmSettings.SilentPreAlarmDelay) {\\n command += '12111:' + params.FallAlarmSettings.SilentPreAlarmDelay + ';';\\n }\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:0;14320:0;14173:0;14323:0;';\\n }\\n command += '7222:0;12104:1';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\\n notSend = true;\\n }\\n AddValue(\\\"data\\\", commandGprs);\\n AddValueSMS(\\\"data\\\", commandSMS);\\n}\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS,\\n notSend: notSend\\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}\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":true,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":5283,\"Parent\":null,\"HasAck\":true,\"HexString\":false,\"SendAttempts\":9,\"Order\":18},\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728395995}],"Tags":[]},{"Id":11588,"Group":{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Enable Disable No Activity","Json":"{\"name\":\"Enable Disable No Activity\",\"default\":\"\",\"description\":\"Enable Disable No Activity\",\"type\":\"enable\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Enable or disable no activity alerts\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"false","Command":null,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":11588,\"Group\":{\"Id\":6485,\"Name\":\"No Activity\",\"Json\":{\"description\":\"No Activity\",\"columns\":1,\"order\":2,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]},\"Parent\":null,\"Device\":null,\"DeviceRelated\":false,\"IsList\":false,\"IsAdminOnly\":false,\"Deleted\":false,\"Children\":[]},\"Name\":\"Enable Disable No Activity\",\"Json\":\"{\\\"name\\\":\\\"Enable Disable No Activity\\\",\\\"default\\\":\\\"false\\\",\\\"description\\\":\\\"Enable Disable No Activity\\\",\\\"type\\\":\\\"enable\\\",\\\"suffix\\\":null,\\\"prefix\\\":null,\\\"min\\\":null,\\\"max\\\":null,\\\"futureOnly\\\":false,\\\"integerOnly\\\":false,\\\"isReadOnly\\\":false,\\\"isHidden\\\":false,\\\"minLength\\\":null,\\\"maxLength\\\":null,\\\"helpText\\\":\\\"Enable or disable no activity alerts\\\",\\\"options\\\":[],\\\"toTranslate\\\":[\\\"name\\\",\\\"description\\\",\\\"helpText\\\"]}\",\"Default\":\"true\",\"Command\":null,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725900688}],"Tags":[{"Id":2068,"Name":"noActivityActivate","BackendAction":"ActivateNoActivity","Value":""}]},{"Id":11582,"Group":{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"No Activity","Json":"{\"name\":\"No Activity\",\"default\":\"\",\"description\":\"Set No Activity Events\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":4,\"max\":10080,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Set No Activity Alerts in minutes. If the device does not report in the time frame it triggers a No Activity alert\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":11582,\"Group\":{\"Id\":6485,\"Name\":\"No Activity\",\"Json\":{\"description\":\"No Activity\",\"columns\":1,\"order\":2,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]},\"Parent\":null,\"Device\":null,\"DeviceRelated\":false,\"IsList\":false,\"IsAdminOnly\":false,\"Deleted\":false,\"Children\":[]},\"Name\":\"No Activity\",\"Json\":\"{\\\"name\\\":\\\"No Activity\\\",\\\"default\\\":\\\"\\\",\\\"description\\\":\\\"Set No Activity Events\\\",\\\"type\\\":\\\"number\\\",\\\"suffix\\\":null,\\\"prefix\\\":null,\\\"min\\\":4,\\\"max\\\":10080,\\\"futureOnly\\\":false,\\\"integerOnly\\\":true,\\\"isReadOnly\\\":false,\\\"isHidden\\\":false,\\\"minLength\\\":null,\\\"maxLength\\\":null,\\\"helpText\\\":\\\"Set No Activity Alerts in minutes. If the device does not report in the time frame it triggers a No Activity alert\\\",\\\"options\\\":[],\\\"toTranslate\\\":[\\\"name\\\",\\\"description\\\",\\\"helpText\\\"]}\",\"Default\":\"\",\"Command\":null,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725900731}],"Tags":[{"Id":2069,"Name":"noActivityInterval","BackendAction":"NoActivityInterval","Value":""}]},{"Id":11555,"Group":{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Enable Disable Movement","Json":"{\"name\":\"Enable Disable Movement\",\"default\":\"\",\"description\":null,\"type\":\"enable\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11556,"Group":{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Timeout","Json":"{\"name\":\"Timeout\",\"default\":\"\",\"description\":\"Timeout\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":0,\"max\":65500,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Seconds\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11564,"Group":{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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 Interval","Json":"{\"name\":\"Cycle Interval\",\"default\":\"\",\"description\":\"Cycle Interval\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":0,\"max\":2592000,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Set how often you want a location from the device in minutes\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11565,"Group":{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":"APN","Json":"{ \"name\": \"APN\", \"default\": \"\", \"description\": \"APN\", \"type\": \"apn\", \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"futureOnly\": \"\", \"integerOnly\": false, \"minLength\": null, \"maxLength\": null, \"helpText\": \"Select the APN needed for the selected sim\", \"options\": [ { \"value\": \"internet.spacefon.com,guest,guest\", \"label\": \"Vodafone (Ghana) [Ghana]\" }, { \"value\": \"internet,gprs,gprs\", \"label\": \"O2 IRE [Ireland]\" }, { \"value\": \"data.myeirmobile.ie,,\", \"label\": \"EIR Ire [Ireland]\" }, { \"value\": \"Internet,web,web\", \"label\": \"Vodafone internet\" }, { \"value\": \"iot.cslm2m.com,0,0\", \"label\": \"CSL (iot.csl)\" }, { \"value\": \"i-apn.net,oystatech,oystatech\", \"label\": \"Wireless Logic\" }, { \"value\": \"internet.vodafone.gr,,\", \"label\": \"Greece Vodafone [Greece]\" }, { \"value\": \"internet,,\", \"label\": \"Vodafone Internet (Global) []\" }, { \"value\": \"open.internet,,\", \"label\": \"Three IRE [Ireland]\" }, { \"value\": \" ,,\", \"label\": \"None\" }, { \"value\": \"chubbie.telefonica.com,,\", \"label\": \"Telefonica Chubb IE [Ireland]\" }, { \"value\": \"live.vodafone.com,vodafone,vodafone\", \"label\": \"Vodafone Ireland 2 [Ireland]\" }, { \"value\": \"apn.sml.ie,,\", \"label\": \"Jasper - Smart Monitoring [Ireland]\" }, { \"value\": \"everywhere,,\", \"label\": \"EE Internet [UK]\" }, { \"value\": \"everywhere,eesecure,secure\", \"label\": \"T-Mobile Internet [UK]\" }, { \"value\": \"i-viohalko,,\", \"label\": \"Cosmote [Greece]\" }, { \"value\": \"yesinternet,,\", \"label\": \"Optus [Australia]\" }, { \"value\": \"ESEYE1,USER,PASS\", \"label\": \"ESEYE1\" }, { \"value\": \"internet.vodafone.pt,,\", \"label\": \"Vodafone Telecel [Portugal]\" }, { \"value\": \"Network,,\", \"label\": \"Network [Ghana]\" }, { \"value\": \"jawalnet.com.sa,,\", \"label\": \"STC [Saudi Arabia]\" }, { \"value\": \"internetm2m,,\", \"label\": \"Portugal Telecom [Portugal]\" }, { \"value\": \"eapn1.net,web,web\", \"label\": \"Mobius [uk]\" }, { \"value\": \"eseye.com,user,pass\", \"label\": \"ESeye \" }, { \"value\": \"stream.co.uk,default,void \", \"label\": \"Static Stream [UK]\" }, { \"value\": \"mobile.o2.co.uk,vertigo,password\", \"label\": \"G4S UK O2 [UK]\" }, { \"value\": \"wap.vodafone.co.uk,wap,wap\", \"label\": \"Vodafone WAP [UK]\" }, { \"value\": \"autoselect,,\", \"label\": \"autoselect \" }, { \"value\": \"payandgo.o2.co.uk,payandgo,payandgo\", \"label\": \"O2 (pre-pay) [UK]\" }, { \"value\": \"isp.vodafone.ie,vodafone,vodafone\", \"label\": \"Vodafone (contract) [Ireland]\" }, { \"value\": \"hs.vodafone.ie ,vodafone,vodafone\", \"label\": \"Vodafone IRE + username and password [Ireland]\" }, { \"value\": \"lpwa.vodafone.iot,,\", \"label\": \"VODAFONE_lpwa \\t [spain]\" }, { \"value\": \"ukiot,,\", \"label\": \"BT-EE-trial [UK]\" }, { \"value\": \"i.euskaltel.mobi,,\", \"label\": \"Euskaltel []\" }, { \"value\": \"wlapn.com,deimos,deimos\", \"label\": \"DEIMOS [Spain]\" }, { \"value\": \"geminit2.m2m,,\", \"label\": \"CSL (gemenit2) [UK]\" }, { \"value\": \"iot.cslm2m.com,,\", \"label\": \"CSL (IoT) [UK]\" }, { \"value\": \"m2m.vodafone.es,Vodafone,Vodafone\", \"label\": \"m2m.vodafone.es [Spain]\" }, { \"value\": \"movistar.es,movistar,movistar\", \"label\": \"Movistar Spain [Spain]\" }, { \"value\": \"airtelwap.es,wap@wap,wap\", \"label\": \"Airtel WAP [Spain]\" }, { \"value\": \"stream.co.uk,streamip,streamip\", \"label\": \"Stream [UK]\" }, { \"value\": \"inetd.vfes,,\", \"label\": \"Spainiot [Spain]\" }, { \"value\": \"ac.vodafone.es,vodafone,vodafone\", \"label\": \"ac.vodafone.es [Spain]\" }, { \"value\": \"movistar.es,MOVISTAR,MOVISTAR\", \"label\": \"Movistar [Spain]\" }, { \"value\": \"internet.spacefon.com,0,0\", \"label\": \"Ghana Vodafone [Ghana]\" }, { \"value\": \"airtelnet.es,vodafone,vodafone\", \"label\": \"VodafoneAirtel [Spain]\" }, { \"value\": \"internet,0,0\", \"label\": \"China Mobile GPRS [China]\" }, { \"value\": \"orangeinternet,,\", \"label\": \"Orange (UK) [UK]\" }, { \"value\": \"hs.vodafone.ie,,\", \"label\": \"Vodafone HS [Ireland]\" }, { \"value\": \"Internet,web,web\", \"label\": \"Vodafone internet - Internet\" }, { \"value\": \"m2m.movistar.es,movistar,movistar\", \"label\": \"Movistar M2M Spain [Spain]\" }, { \"value\": \"mobile.o2.co.uk,o2web,password\", \"label\": \"mobile.o2.co.uk [United Kingdom]\" }, { \"value\": \"orangeworld,orange,orange\", \"label\": \"orangeworld [Spain]\" }, { \"value\": \"g4sglobal.gr,a,aa\", \"label\": \"Vodafone Global [Greece]\" } ], \"toTranslate\": [ \"name\", \"description\", \"helpText\", \"label\" ], \"order\": 0}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11566,"Group":{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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\": \"Acceptance\", \"description\": \"Server\", \"type\": \"select\", \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"futureOnly\": \"\", \"integerOnly\": false, \"minLength\": null, \"maxLength\": null, \"helpText\": null, \"options\": [ { \"label\": \"Acceptance\", \"value\": \"52.174.17.77,5678\" }, { \"label\": \"Production\", \"value\": \"52.232.85.255,5678\" } ], \"toTranslate\": [ \"name\", \"description\", \"helpText\", \"label\" ], \"order\": 1}","Default":"Acceptance","Command":null,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":11566,\"Group\":{\"Id\":6488,\"Name\":\"APN Config\",\"Json\":{\"description\":null,\"columns\":1,\"order\":5,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]},\"Parent\":null,\"Device\":null,\"DeviceRelated\":false,\"IsList\":false,\"IsAdminOnly\":false,\"Deleted\":false,\"Children\":[]},\"Name\":\"Server\",\"Json\":\"{\\\"name\\\":\\\"Server\\\",\\\"default\\\":\\\"Acceptance\\\",\\\"description\\\":\\\"Server\\\",\\\"type\\\":\\\"select\\\",\\\"suffix\\\":null,\\\"prefix\\\":null,\\\"min\\\":null,\\\"max\\\":null,\\\"futureOnly\\\":false,\\\"integerOnly\\\":false,\\\"isReadOnly\\\":false,\\\"isHidden\\\":false,\\\"minLength\\\":null,\\\"maxLength\\\":null,\\\"helpText\\\":null,\\\"options\\\":[{\\\"value\\\":\\\"52.174.17.77,5678\\\",\\\"label\\\":\\\"Acceptance\\\"},{\\\"value\\\":\\\"52.232.85.255,5678\\\",\\\"label\\\":\\\"Production\\\"},{\\\"label\\\":\\\"Protocol-Import\\\",\\\"value\\\":\\\"52.174.17.77,5778\\\"}],\\\"toTranslate\\\":[\\\"name\\\",\\\"description\\\",\\\"helpText\\\",\\\"label\\\"]}\",\"Default\":\"Acceptance\",\"Command\":null,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1729501544}],"Tags":[]},{"Id":11567,"Group":{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":true,"Deleted":false,"Children":[]},"Name":"Get Info","Json":"{ \"name\": \"Get Info\", \"default\": \"\", \"description\": \"Get Device Info\", \"type\": \"button\", \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"futureOnly\": null, \"integerOnly\": true, \"minLength\": null, \"maxLength\": null, \"helpText\": null, \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11568,"Group":{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"One Way Call","Json":"{ \"name\": \"One Way Call\", \"default\": \"false\", \"description\": \"One-Way Call\", \"type\": \"checkbox\", \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"futureOnly\": null, \"integerOnly\": null, \"minLength\": null, \"maxLength\": null, \"helpText\": \"Select to use the configuration one-way call\", \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ]}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11569,"Group":{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":true,"Deleted":false,"Children":[]},"Name":"Initialise From Factory Settings","Json":"{\"name\":\"Initialise From Factory Settings\",\"default\":\"true\",\"description\":\"Initialise from Factory Settings\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":1}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11577,"Group":{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":true,"Deleted":false,"Children":[]},"Name":"Initialise From Factory Settings SMS6","Json":"{\"name\":\"Initialise From Factory Settings SMS6\",\"default\":\"\",\"description\":\"Initialise From Factory Settings SMS6\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":5}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11578,"Group":{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":true,"Deleted":false,"Children":[]},"Name":"Initialise From Factory Settings SMS3","Json":"{\"name\":\"Initialise From Factory Settings SMS3\",\"default\":\"\",\"description\":\"Initialise From Factory Settings SMS3\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":2}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11576,"Group":{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":true,"Deleted":false,"Children":[]},"Name":"Pre Config 2","Json":"{\"name\":\"Pre Config 2\",\"default\":\"\",\"description\":\"Pre Config 2\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":9}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11575,"Group":{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":true,"Deleted":false,"Children":[]},"Name":"Pre Config 1","Json":"{\"name\":\"Pre Config 1\",\"default\":\"\",\"description\":\"Pre Config 1\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":8}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11574,"Group":{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":true,"Deleted":false,"Children":[]},"Name":"Delete Records","Json":"{\"name\":\"Delete Records\",\"default\":\"false\",\"description\":\"Delete Records\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Delete buffered records\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11573,"Group":{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":true,"Deleted":false,"Children":[]},"Name":"Initialise From Factory Settings SMS7","Json":"{\"name\":\"Initialise From Factory Settings SMS7\",\"default\":\"\",\"description\":\"Initialise From Factory Settings SMS7\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":7}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11572,"Group":{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":true,"Deleted":false,"Children":[]},"Name":"Initialise From Factory Settings SMS4","Json":"{\"name\":\"Initialise From Factory Settings SMS4\",\"default\":\"\",\"description\":\"Initialise From Factory Settings SMS4\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":3}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11571,"Group":{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":true,"Deleted":false,"Children":[]},"Name":"Initialise From Factory Settings SMS2","Json":"{\"name\":\"Initialise From Factory Settings SMS2\",\"default\":\"\",\"description\":\"Initialise From Factory Settings SMS2\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":2}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11570,"Group":{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":true,"Deleted":false,"Children":[]},"Name":"Initialise From Factory Settings SMS5","Json":"{\"name\":\"Initialise From Factory Settings SMS5\",\"default\":\"\",\"description\":\"Initialise From Factory Settings SMS5\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":4}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11579,"Group":{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":"Password","Json":"{ \"name\": \"Password\", \"default\": \"\", \"description\": \"Password\", \"type\": \"text\", \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"futureOnly\": null, \"integerOnly\": null, \"minLength\": 4, \"maxLength\": 5, \"helpText\": null, \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11580,"Group":{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":"Login","Json":"{ \"name\": \"Login\", \"default\": \"\", \"description\": \"Username\", \"type\": \"text\", \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"futureOnly\": null, \"integerOnly\": null, \"minLength\": 4, \"maxLength\": 5, \"helpText\": null, \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11584,"Group":{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"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":"Enable Disable NoMovement","Json":"{\"name\":\"Enable Disable NoMovement\",\"default\":\"\",\"description\":null,\"type\":\"enable\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11601,"Group":{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"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":"PreAlarm","Json":"{\"name\":\"PreAlarm\",\"default\":\"\",\"description\":\"Pre - Alarm\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":0,\"max\":65500,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Seconds\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11600,"Group":{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"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":"Timeout","Json":"{\"name\":\"Timeout\",\"default\":\"\",\"description\":\"Timeout\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":0,\"max\":65500,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Seconds\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11583,"Group":{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"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":"Reboot","Json":"{\"name\":\"Reboot\",\"default\":\"\",\"description\":\"Reboot\",\"type\":\"button\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Press the button to restart the device\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11609,"Group":{"Id":6495,"Name":"Incoming Calls","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":[{"Id":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"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":"Ringtone","Json":"{\"name\":\"Ringtone\",\"default\":\"false\",\"description\":\"Ringtone\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Select if you would like the device to ring for an incoming call\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11608,"Group":{"Id":6495,"Name":"Incoming Calls","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":[{"Id":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"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":"Vibration","Json":"{\"name\":\"Vibration\",\"default\":\"false\",\"description\":\"Vibration\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":null,\"integerOnly\":null,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Select if you would like the device to vibrate for an incoming call\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":2}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11607,"Group":{"Id":6495,"Name":"Incoming Calls","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":[{"Id":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"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":"Action","Json":"{\"name\":\"Action\",\"default\":\"\",\"description\":\"Action\",\"type\":\"select\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Select the behaviour for an incoming call\",\"options\":[{\"value\":\"0\",\"label\":\"Normal\"},{\"value\":\"3\",\"label\":\"Auto-Answer\"},{\"value\":\"1\",\"label\":\"Block\"}],\"toTranslate\":[\"name\",\"description\",\"helpText\",\"label\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11604,"Group":{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":[]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},"Name":"Enable Disable Speed Dial Button","Json":"{ \"name\": \"Enable Disable Speed Dial Button\", \"default\": \"true\", \"description\": \"Enable Disable Speed Dial Button\", \"type\": \"enable\", \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"futureOnly\": \"\", \"integerOnly\": false, \"minLength\": null, \"maxLength\": null, \"helpText\": \"Select to enable or disable the Speed Dial feature (Button 1)\", \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ]}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11605,"Group":{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":[]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},"Name":"Phone Number","Json":"{ \"name\": \"Phone Number\", \"default\": \"\", \"description\": \"Speed Dial Button 1\", \"type\": \"phone\", \"order\": 1, \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"minLength\": null, \"maxLength\": null, \"helpText\": null, \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11606,"Group":{"Id":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":[{"Id":6495,"Name":"Incoming Calls","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":"Device Volume Level","Json":"{\"name\":\"Device Volume Level\",\"default\":\"\",\"description\":null,\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":0,\"max\":100,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]}],"ProtocolChanges":[{"Version":"0.9","UserName":"Sean-Admin","Resource":"Operation","Name":"GH5200","Message":"(Update) (GH5200) add customId to ops, add wrapper","Timestamp":1725898185},{"Version":"0.9","UserName":"Sean-Admin","Resource":"MessageType","Name":"PWRF","Message":"(Create) (PWRF) Added PWRF","Timestamp":1725899787},{"Version":"0.9","UserName":"Sean-Admin","Resource":"MessageType","Name":"BT","Message":"(Create) (BT) Add Beacon message","Timestamp":1725899916},{"Version":"0.9","UserName":"Sean-Admin","Resource":"GroupParam","Name":"Enable Disable No Activity","Message":"(Update) (Enable Disable No Activity) ActivatenoActivity to billing","Timestamp":1725900688},{"Version":"0.9","UserName":"Sean-Admin","Resource":"GroupParam","Name":"No Activity","Message":"(Update) (No Activity) noActivityInterval to Billing\n","Timestamp":1725900731},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"APN","Message":"(Update) (APN) update setAPN use APNConfig instead of CommunicationSettings","Timestamp":1725901259},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Call Settings","Message":"(Update) (Call Settings) fix device volume","Timestamp":1725901331},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Control Configuration Mode","Message":"(Create) (Control Configuration Mode) control config mode added","Timestamp":1725901472},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Call Settings","Message":"(Update) (Call Settings) fix volume in call settings","Timestamp":1725901772},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Cycle Interval","Message":"(Update) (Cycle Interval) fix cycle interval","Timestamp":1725901889},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Password","Message":"(Update) (Password) update overspeed settings command","Timestamp":1725960641},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Power Off","Message":"(Create) (Power Off) add power off command","Timestamp":1725960726},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Pre Config 1","Message":"(Update) (Pre Config 1) add Pre Config Command Priority","Timestamp":1725962210},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Pre Config 2","Message":"(Update) (Pre Config 2) set command priority","Timestamp":1725962265},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Pre Config 2","Message":"(Update) (Pre Config 2) setting again - saw an error","Timestamp":1725962773},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Initialise From Factory Settings SMS 2","Message":"(Update) (Initialise From Factory Settings SMS 2) add command prio","Timestamp":1725963049},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Initialise From Factory Settings SMS 3","Message":"(Update) (Initialise From Factory Settings SMS 3) set command prio","Timestamp":1725963077},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Initialise From Factory Settings SMS 4","Message":"(Update) (Initialise From Factory Settings SMS 4) set command prio","Timestamp":1725963653},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Initialise From Factory Settings SMS 5","Message":"(Update) (Initialise From Factory Settings SMS 5) set command prio","Timestamp":1725963727},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Initialise From Factory Settings SMS 6","Message":"(Update) (Initialise From Factory Settings SMS 6) set command prio","Timestamp":1725963772},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Initialise From Factory Settings SMS 7","Message":"(Update) (Initialise From Factory Settings SMS 7) add command prio","Timestamp":1725964073},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Amber Alert Options","Message":"(Update) (Amber Alert Options) add command priority","Timestamp":1725964547},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"APN","Message":"(Update) (APN) add command priority","Timestamp":1725964763},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Call Settings","Message":"(Update) (Call Settings) add command prio","Timestamp":1725964798},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Cycle Interval","Message":"(Update) (Cycle Interval) add command prio","Timestamp":1725964852},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Cycle Interval SMS 2","Message":"(Update) (Cycle Interval SMS 2) add command prio","Timestamp":1725964883},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Delete Records","Message":"(Update) (Delete Records) add command prio","Timestamp":1725964910},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Fall Alarm Options","Message":"(Update) (Fall Alarm Options) add command prio","Timestamp":1725964938},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Fall Alarm SMS 2","Message":"(Update) (Fall Alarm SMS 2) add command prio","Timestamp":1725964966},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Fall Alarm SMS 3","Message":"(Update) (Fall Alarm SMS 3) add command prio","Timestamp":1725964993},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Get Info","Message":"(Update) (Get Info) add command prio","Timestamp":1725965018},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Get Version","Message":"(Update) (Get Version) add command prio","Timestamp":1725965040},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Incoming Call Action","Message":"(Update) (Incoming Call Action) add command prio","Timestamp":1725965073},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Initialise from Factory Settings","Message":"(Update) (Initialise from Factory Settings) add command prio","Timestamp":1725965096},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Movement","Message":"(Update) (Movement) add command prio","Timestamp":1725965150},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"OverSpeeding Options","Message":"(Update) (OverSpeeding Options) add command prio","Timestamp":1725965170},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Password","Message":"(Update) (Password) add command prio","Timestamp":1725965198},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Proximity","Message":"(Update) (Proximity) add command prio","Timestamp":1725965440},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Real Time Location","Message":"(Update) (Real Time Location) add command prio","Timestamp":1725965464},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Reboot","Message":"(Update) (Reboot) add command prio","Timestamp":1725965486},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Report Position By Button","Message":"(Update) (Report Position By Button) add command prio","Timestamp":1725965509},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"SOS Options","Message":"(Update) (SOS Options) add command prio","Timestamp":1725965538},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Speed Dial Settings","Message":"(Update) (Speed Dial Settings) add command prio","Timestamp":1725965565},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"White List","Message":"(Update) (White List) add command prio","Timestamp":1725965596},{"Version":"0.9","UserName":"SeanWestgate","Resource":"Protocol","Name":null,"Message":"Completed manual update of protocol fixes","Timestamp":1725965792},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Report Position By Button","Message":"(Update) (Report Position By Button) modify get pos button command","Timestamp":1727196199},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Report Position By Button","Message":"(Update) (Report Position By Button) fix set button 3 command","Timestamp":1727197226},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Report Position By Button","Message":"(Update) (Report Position By Button) fix again","Timestamp":1727197539},{"Version":"1.0","UserName":"Sean-Admin","Resource":"MessageType","Name":"ACK-RPBB","Message":"(Update) (ACK-RPBB) fix setting tracking button","Timestamp":1727711460},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Cycle Interval","Message":"(Update) (Cycle Interval) fix Cycle settings","Timestamp":1727773311},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Report Position By Button","Message":"(Update) (Report Position By Button) change action from trcking on to Ondemand tracking on","Timestamp":1727774996},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Report Position By Button","Message":"(Update) (Report Position By Button) reverting change","Timestamp":1727775197},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Cycle Interval","Message":"(Update) (Cycle Interval) Set timeouts to 30sec","Timestamp":1727776679},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Operation","Name":"GH5200","Message":"(Update) (GH5200) add version to protocol identifier","Timestamp":1727779248},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Operation","Name":"GH5200","Message":"(Update) (GH5200) mark protocol","Timestamp":1727798088},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Password","Message":"(Update) (Password) update password command","Timestamp":1727800344},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Report Position By Button","Message":"(Update) (Report Position By Button) fix ondemand tracking button 3","Timestamp":1728299909},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Initialise from Factory Settings","Message":"(Update) (Initialise from Factory Settings) remove beacon messages","Timestamp":1728300037},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Report Position By Button","Message":"(Update) (Report Position By Button) missed setparam for position by button","Timestamp":1728301733},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Incoming Call Action","Message":"(Update) (Incoming Call Action) indicator for incoming calls","Timestamp":1728319152},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Incoming Call Action","Message":"(Update) (Incoming Call Action) reverse settings for incoing call indication","Timestamp":1728319497},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Report Position By Button","Message":"(Update) (Report Position By Button) report position by button 3 - remove ondemand tracking","Timestamp":1728391825},{"Version":"1.0","UserName":"Sean-Admin","Resource":"GroupParam","Name":"Indication","Message":"(Update) (Indication) remove SMS commands from fall alarm options","Timestamp":1728395985},{"Version":"1.0","UserName":"Sean-Admin","Resource":"GroupParam","Name":"Indication","Message":"Dissociate groupParam Indication from command Fall Alarm SMS 2","Timestamp":1728395990},{"Version":"1.0","UserName":"Sean-Admin","Resource":"GroupParam","Name":"Indication","Message":"Dissociate groupParam Indication from command Fall Alarm SMS 3","Timestamp":1728395995},{"Version":"1.0","UserName":"Sean-Admin","Resource":"MessageType","Name":"ACK-RPBB","Message":"(Update) (ACK-RPBB) fix pBB ack","Timestamp":1728402542},{"Version":"1.0","UserName":"Sean-Admin","Resource":"MessageType","Name":"ACK-ICA (Incoming Call Action)","Message":"(Update) (ACK-ICA (Incoming Call Action)) fix incoming call ack","Timestamp":1728466130},{"Version":"1.0","UserName":"Sean-Admin","Resource":"GroupParam","Name":"Timeout","Message":"(Update) (Timeout) set minimum timeout for amber alert","Timestamp":1728469479},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Amber Alert Options","Message":"(Update) (Amber Alert Options) fix Amber Alert settings","Timestamp":1728472110},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Amber Alert Options","Message":"(Update) (Amber Alert Options) small change amber alert settings","Timestamp":1728473538},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Movement","Message":"(Update) (Movement) fix movement - no movement command","Timestamp":1728916105},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Cycle Interval","Message":"(Update) (Cycle Interval) change stop min period to 6 x moving min period","Timestamp":1728922718},{"Version":"1.0","UserName":"Sean-Admin","Resource":"GroupParam","Name":"Server","Message":"(Update) (Server) Added server option for Protocol-Import","Timestamp":1729501544},{"Version":"1.0","UserName":"Sean-Admin","Resource":"MessageType","Name":"ACK-ALF","Message":"(Update) (ACK-ALF) Fix ACK for Fall Alarm options","Timestamp":1729517990},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Operation","Name":"GH5200","Message":"(Update) (GH5200) fix disable fall setttings bug","Timestamp":1729519680},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Operation","Name":"GH5200","Message":"(Update) (GH5200) Fix Fall alarm indication ack","Timestamp":1729523049},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Protocol","Name":null,"Message":"fixed various bugs and acks, i.e. CYC settings, added protocol import server","Timestamp":1729524268},{"Version":"1.1","UserName":"Sean-Admin","Resource":"Operation","Name":"GH5200","Message":"(Update) (GH5200) fix initial connction ACK","Timestamp":1729527636},{"Version":"1.1","UserName":"Sean-Admin","Resource":"Protocol","Name":null,"Message":"fixed initial connect ack","Timestamp":1729528680},{"Version":"1.2","UserName":"Sean-Admin","Resource":"Operation","Name":"GH5200","Message":"(Update) (GH5200) Debugging connection","Timestamp":1729596587},{"Version":"1.2","UserName":"Sean-Admin","Resource":"Command","Name":"Call Settings","Message":"(Update) (Call Settings) fix audio level when not set","Timestamp":1730114570},{"Version":"1.2","UserName":"Sean-Admin","Resource":"Protocol","Name":null,"Message":"new release candidate with audio fix","Timestamp":1730724756}],"ProtocolActionObjects":[],"Tags":[{"Id":2104,"Name":"Permit Dups","BackendAction":"PermitReceiverDublicates","Value":"True"},{"Id":2108,"Name":"One CommandSender","BackendAction":"OneCommandSender","Value":"True"},{"Id":2106,"Name":"FromOystaNumber","BackendAction":"FromOystaNumber","Value":"+447781482635"}]} \ No newline at end of file +{"Id":230,"Name":null,"Description":null,"FirmwareVersion":null,"InProgress":false,"MessageTypes":[{"Id":7310,"Code":"ACK-FTSSMS5","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 14502:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5306,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise From Factory Settings SMS 5","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n command = 'setparam ';\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"CommandToUpdateId":null,"ParentId":5298,"Parent":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"HasAck":true,"HexString":false,"SendAttempts":9,"Order":8},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 14502:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7309,"Code":"ACK-FTSSMS7","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 13011:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5307,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise From Factory Settings SMS 7","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n command = 'setparam ';\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"CommandToUpdateId":null,"ParentId":5298,"Parent":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"HasAck":true,"HexString":false,"SendAttempts":9,"Order":10},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 13011:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7308,"Code":"ACK-FTSSMS4","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 14482:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5308,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise From Factory Settings SMS 4","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n command = 'setparam ';\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"CommandToUpdateId":null,"ParentId":5298,"Parent":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"HasAck":true,"HexString":false,"SendAttempts":9,"Order":7},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 14482:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7307,"Code":"ACK-FTSSMS3","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 14080:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5309,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise From Factory Settings SMS 3","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n command = 'setparam ';\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"CommandToUpdateId":null,"ParentId":5298,"Parent":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"HasAck":true,"HexString":false,"SendAttempts":9,"Order":6},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 14080:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7306,"Code":"ACK-FTSSMS2","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 14032:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5310,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise From Factory Settings SMS 2","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettingsSMS2 == 'true') {\n command = 'setparam ';\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"CommandToUpdateId":null,"ParentId":5298,"Parent":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"HasAck":true,"HexString":false,"SendAttempts":9,"Order":5},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 14032:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7305,"Code":"ACK-FTSSMS6","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 13019:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5311,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise From Factory Settings SMS 6","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n command = 'setparam ';\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"CommandToUpdateId":null,"ParentId":5298,"Parent":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"HasAck":true,"HexString":false,"SendAttempts":9,"Order":9},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 13019:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7304,"Code":"ACK-CYCSMS2","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 10150:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5313,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Cycle Interval SMS 2","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.CycleSettings.CycleInterval) {\n command = 'setparam ';\n var num = 10000;\n var minPeriod = params.CycleSettings.CycleInterval * 60;\n var minSavedRecords = 1;\n var sendPeriod = 60;\n var minDistance = 0;\n var minAngle = 0;\n var minSpeedDelta = 0;\n for (x = 0; x < 3; x++) {\n var stop = `${num}:${minPeriod};${(num + 4)}:${minSavedRecords};${(num + 5)}:${sendPeriod};`;\n var moving = `${(num + 50)}:${minPeriod};${(num + 51)}:${minDistance};${(num + 52)}:${minAngle};${(num + 53)}:${minSpeedDelta};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\n if (x == 1) {\n command += moving;\n }\n if (x > 1) {\n command = command + stop + moving;\n }\n num = num + 100;\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValueSMS(\"data\", commandSMS);\n AddValue(\"data\", commandGprs);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\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}\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}","AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"CommandToUpdateId":null,"ParentId":5293,"Parent":{"Id":5293,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Cycle Interval","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nvar num = 10000;\nvar minPeriod = params.CycleSettings.CycleInterval * 60;\nvar minSavedRecords = 1;\nvar sendPeriod = 60;\nvar minDistance = 0;\nvar minAngle = 0;\nvar minSpeedDelta = 0;\nvar stop = `${num}:${minPeriod};${(num + 4)}:${minSavedRecords};${(num + 5)}:${sendPeriod};`;\nvar moving = `${(num + 50)}:${minPeriod};${(num + 51)}:${minDistance};${(num + 52)}:${minAngle};${(num + 53)}:${minSpeedDelta};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command += stop}`;\n} else {\n commandSMS = ` ${command += stop}`;\n}\ncommand = command.slice(0, -1);\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":27},"HasAck":true,"HexString":false,"SendAttempts":9,"Order":28},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 10150:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7303,"Code":"ACK-APN","Name":"ACK-APN","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 2001:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5290,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"APN","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar apnString = params.APNConfig.APN.split(',');\nvar apn = apnString[0];\nvar apn_username = apnString[1];\nvar apn_password = apnString[2];\nvar serverString = params.APNConfig.Server.split(',');\nvar domain = serverString[0];\nvar port = serverString[1];\nvar message = \"\";\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 2001:${apn};2002:${apn_username};2003:${apn_password};2004:${domain};2005:${port};2006:0`;\n} else {\n message = ` setparam 2001:${apn};2002:${apn_username};2003:${apn_password};2004:${domain};2005:${port};2006:0`;\n}\nAddValue(\"data\", message);\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":2,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":false,"SendAttempts":4,"Order":0},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 2001:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7302,"Code":"ACK-PC1","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 10004:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5285,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Pre Config 1","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"//This command will be sent by SMS\nvar configs = [];\nvar message = \"\";\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 10004:1;10000:60;10005:60;10050:60;10051:0;10052:0;10053:0;10054:1;10055:60;10100:60;10104:1;10105:60;10150:60;10200:60;`;\n} else {\n message = \" setparam 10004:1;10000:60;10005:60;10050:60;10051:0;10052:0;10053:0;10054:1;10055:60;10100:60;10104:1;10105:60;10150:60;10200:60;\";\n}\nAddValue(\"data\", message);\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":2,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":false,"SendAttempts":9,"Order":1},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 10004:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7301,"Code":"ACK-DR","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,All records are erased<>","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5287,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Delete Records","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar message = \"\"\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} deleterecords`\n} else {\n message = \" deleterecords\"\n}\nAddValue(\"data\", message);\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":2,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":false,"SendAttempts":2,"Order":3},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,All records are erased[^d]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7300,"Code":"ACK-PROX","Name":"ACK-Proximity","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 320:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5289,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Proximity","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"var configs = [];\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = '';\nif (params.Proximity.EnableDisableProximity == 'true') {\n var call = 0;\n if (params.Proximity.Call == 'true') {\n call = 1;\n }\n //If the proximity is active, GPS Sleep mode cannot be active. If proximity is not, we can use GPS Sleep mode to extend battery life\n //320(BT Home Zone):1(Enabled);322(BLE Geofence):4(Proximity);323(Pre-alarm):(s);324(RSSI):(dBm);1115(Non stop scan):(0 dis/ 1 enabled);1100(Update frequency):();1113(BLE Scan duration):();1114(Scan retries until error):();1110(BT Power level):();1111(BLE broadcasting service ID):();1000():();1112(BLE connecton protocol):(0 Prohibit/ 1 allow);325(Generate event):2(On Both);326(Call to):(0 No call/ 1 SOS Numnber);102(Sleep Mode):0(Disabled)\n command = ascii_to_hexa('setparam 320:1;322:4;323:' + params.Proximity.Prealarm + ';324:-72;1115:0;1100:5;1113:5;1114:30;1110:3;1111:1000;1112:0;325:2;326:' + params.Proximity.Call + ';102:0');\n} else {\n //320(BT Home Zone):1(Enabled)\n command = ascii_to_hexa('setparam 320:0');\n}\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\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}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":30},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 320:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7299,"Code":"ACK-GV(Get Version)","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,Ver:<>","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5292,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Get Version","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'getver';\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":14},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,Ver:[^:]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7298,"Code":"ACK-PWD","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 3003:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5291,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Password","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000'\nvar packetLengt = ''\nvar codec = '0C'\nvar quantityOfCommands = '01'\nvar commandType = '05'\nvar commandSize = ''\nvar command = 'setparam '\nif (params.SMSPassword.Login) {\n command += '3003:' + params.SMSPassword.Login + ';'\n} else {\n command += '3003:;'\n}\nif (params.SMSPassword.Password) {\n command += '3004:' + params.SMSPassword.Password + ';'\n} else {\n command += '3004:;'\n}\nvar commandSMS = ''\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\n} else {\n commandSMS = ` ${command}`\n}\ncommand = ascii_to_hexa(command)\nvar commandEndSymbol = '0D0A'\nvar quantityOfCommands = '01'\nvar CRC = ''\nx = (command.length + commandEndSymbol.length) / 2\ny = (('00000000' + x.toString(16)).slice(-8))\ncommandSize = y\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\ny2 = (('00000000' + x2.toString(16)).slice(-8))\npacketLengt = y2\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":2,"Order":21},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 3003:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7297,"Code":"ACK-CS (Call Settings)","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 3020:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5304,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Call Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000'\nvar packetLengt = ''\nvar codec = '0C'\nvar quantityOfCommands = '01'\nvar commandType = '05'\nvar commandSize = ''\nvar command = 'setparam '\n//3020 - Outgoing call in loud speaker (1 active, 0 inactive)\n//13051 - Normal Speaker Volume\n//13052 - Loud Speaker Volume\n//14310 - Call Active Indicator (0 Disabled, 1 Enabled)\n//14240 - Outgoing call Indicator (0 Disabled, 1 Enabled)\n//14030 - Incoming call Indicator (0 Disabled, 1 Enabled)\nif (params.CallSettings.OneWayCall == 'true') {\n command += '3020:1;13052:0;13051:0;14310:0;14240:0;14030:0'\n} else {\n command += '3020:0;13052:50;13051:50;14310:1;14240:1:14030:1'\n}\nvar commandSMS = ''\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\n} else {\n commandSMS = ` ${command}`\n}\ncommand = ascii_to_hexa(command)\nvar commandEndSymbol = '0D0A'\nvar quantityOfCommands = '01'\nvar CRC = ''\nx = (command.length + commandEndSymbol.length) / 2\ny = (('00000000' + x.toString(16)).slice(-8))\ncommandSize = y\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\ny2 = (('00000000' + x2.toString(16)).slice(-8))\npacketLengt = y2\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":2,"Order":20},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 3020:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7296,"Code":"ACK-SMS-GI","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"RTC:<>","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5303,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Get Info","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'getinfo';\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":13},"CacheImei":false,"RegEx":"^RTC:[^:]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7295,"Code":"ACK-GI (Get Info)","Name":"ACK-Get Info","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,RTC:<>","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5303,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Get Info","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'getinfo';\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":13},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,RTC:[^:]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7294,"Code":"ACK-NM","Name":"ACK-Non Movement","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 12106<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5302,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Movement","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"var configs = [];\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nif (params.Movement.EnableDisableMovement === \"false\") {\n command += '12106:0';\n} else if (params.Movement.EnableDisableMovement === \"true\") {\n command += '12106:1;12108:0' + ';12107:' + params.Movement.Timeout;\n}\nif (params.NoMovement.EnableDisableNoMovement === \"false\") {\n command += '12106:0';\n} else if (params.NoMovement.EnableDisableNoMovement === \"true\") {\n command += '12106:1;12108:1' + ';12107:' + params.NoMovement.Timeout; + '12109:' + params.NoMovement.PreAlarm;\n}\ncommand = ascii_to_hexa(command);\n//var command = ascii_to_hexa('setparam 1170:1;1171:1;1172:+447845658205')\n//var command = ascii_to_hexa('getinfo')\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\n//console.log(x)\ny = (('00000000' + x.toString(16)).slice(-8));\n//console.log(y)\ncommandSize = y;\n//console.log(commandSize.length)\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\n//console.log(x2)\ny2 = (('00000000' + x2.toString(16)).slice(-8));\n//console.log(y2)\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\n//prueba = hexStringToString('0C010500000009676574696E666F0D0A01')\n//console.log(CRC16(prueba).toString(16).toUpperCase())\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\n//console.log(message)\nAddValue(\"data\", message);\n//AddValue(\"data\", 'test');\n//msg.push(message);\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}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":19},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 12106[^ ]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7293,"Code":"ACK-SDS","Name":"ACK-Speed Dial","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 600<<->>;130<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5301,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Speed Dial Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\n//6001: phone number\n//13017: Button 1 behaviour (8 call)\n//13037: Call to\nif (params.SpeedDialButton.EnableDisableSpeedDialButton == 'true') {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n} else {\n command += '6001:;13017:0';\n}\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":24},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 600[^ ]*;130[^ ]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7292,"Code":"ACK-WHL","Name":"ACK-Whitelist","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 4000:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5300,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"White List","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nvar count = 4000;\nfor (var contact in params.WhiteList) {\n command += count + ':' + params.WhiteList[contact].Number + ';';\n count++;\n}\n//Delete last character\ncommand = command.slice(0, -1);\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":25},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 4000:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7291,"Code":"ACK-ALSP","Name":"ACK-Overspeed","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 11100:<>;","HasTemplateGlobal":false,"ResponseTemplate":"","TemplateGlobal":"","LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5299,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"OverSpeeding Options","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nif (params.OverSpeedingSettings.EnableDisableOverSpeedingSettings == 'true') {\n command += '11100:2';\n if (params.OverSpeedingSettings.MaxSpeed) {\n command += ';11104:' + Math.round(params.OverSpeedingSettings.MaxSpeed / 3.6);\n }\n} else {\n command += '11100:0';\n}\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\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}\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":21},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 11100:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7290,"Code":"ACK-SOSN (SOS Number)","Name":"ACK-SOS Number","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 6000:+<<->>;4198:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5297,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"SOS Options","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nif (params.SOSSettings.SOSNumber) {\n command += '6000:' + params.SOSSettings.SOSNumber;\n command += ';4198:' + params.SOSSettings.SOSNumber;\n command += ';11711:1;4199:+447781482635;';\n}\nif (params.SOSSettings.SOSAction == '0') {\n command += '11712:1;12105:1;606:1;';\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n}\nif (params.SOSSettings.SOSAction == '1') {\n command += '11712:0;12105:0;606:0;605:0';\n}\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":11},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 6000:\\+[^;,]*;4198:[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7289,"Code":"ACK-CYC","Name":"ACK-Cycle","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 10000:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5293,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Cycle Interval","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nvar num = 10000;\nvar minPeriod = params.CycleSettings.CycleInterval * 60;\nvar minSavedRecords = 1;\nvar sendPeriod = 60;\nvar minDistance = 0;\nvar minAngle = 0;\nvar minSpeedDelta = 0;\nvar stop = `${num}:${minPeriod};${(num + 4)}:${minSavedRecords};${(num + 5)}:${sendPeriod};`;\nvar moving = `${(num + 50)}:${minPeriod};${(num + 51)}:${minDistance};${(num + 52)}:${minAngle};${(num + 53)}:${minSpeedDelta};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command += stop}`;\n} else {\n commandSMS = ` ${command += stop}`;\n}\ncommand = command.slice(0, -1);\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":27},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 10000:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7288,"Code":"ACK-ICA (Incoming Call Action)","Name":"ACK-Incoming Call","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 3005:<<->>;14033:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5294,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Incoming Call Action","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000'\nvar packetLengt = ''\nvar codec = '0C'\nvar quantityOfCommands = '01'\nvar commandType = '05'\nvar commandSize = ''\nvar command = 'setparam '\nvar vibration = 0;\nvar ringtone = 0;\nvar behaviour = 0;\nif (params.IncomingCalls.Action) {\n command += '3005:' + params.IncomingCalls.Action + ';'\n}\nif (params.IncomingCalls.Vibration == 'true') {\n vibration = 1;\n}\nif (params.IncomingCalls.Ringtone == 'true') {\n ringtone = 2;\n}\nbehaviour = ringtone + vibration\ncommand += '14033:' + behaviour + ';'\nvar commandSMS = ''\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\n} else {\n commandSMS = ` ${command}`\n}\ncommand = ascii_to_hexa(command)\nvar commandEndSymbol = '0D0A'\nvar quantityOfCommands = '01'\nvar CRC = ''\nx = (command.length + commandEndSymbol.length) / 2\ny = (('00000000' + x.toString(16)).slice(-8))\ncommandSize = y\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\ny2 = (('00000000' + x2.toString(16)).slice(-8))\npacketLengt = y2\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":2,"Order":15},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 3005:[^;,]*;14033:[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":7288,\"Code\":\"ACK-ICA (Incoming Call Action)\",\"Name\":\"ACK-Incoming Call\",\"MessageCode\":\"ACK\",\"NeedAck\":false,\"IsAck\":true,\"IsFailAck\":false,\"IsAckHexString\":false,\"NoOperation\":false,\"Type\":0,\"Template\":\"GH5200-COD12,<>,New value 3005:<>;\",\"HasTemplateGlobal\":false,\"ResponseTemplate\":null,\"TemplateGlobal\":null,\"LongConnection\":true,\"HexString\":false,\"AckFirst\":false,\"ScaipH\":false,\"DoNotSendCommands\":false,\"ProtocolsLibraryMethod\":null,\"ProtocolsLibraryMethodArgs\":null,\"Command\":{\"Id\":5294,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"1.0\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Incoming Call Action\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000'\\nvar packetLengt = ''\\nvar codec = '0C'\\nvar quantityOfCommands = '01'\\nvar commandType = '05'\\nvar commandSize = ''\\nvar command = 'setparam '\\nvar vibration = 0;\\nvar ringtone = 0;\\nvar behaviour = 0;\\n// enable or disable incoming calls\\nif (params.IncomingCalls.Action) {\\n command += '3005:' + params.IncomingCalls.Action + ';'\\n}\\n// 14030 - Incoming call Indicator (0 Disabled, 1 Enabled)\\nif (params.CallSettings.OneWayCall == 'true') {\\n command += '14030:0;'\\n} else {\\n command += '14030:1;'\\n}\\nif (params.IncomingCalls.Vibration == 'true') {\\n vibration = 1;\\n}\\nif (params.IncomingCalls.Ringtone == 'true') {\\n ringtone = 2;\\n}\\nbehaviour = ringtone + vibration\\ncommand += '14033:' + behaviour + ';'\\nvar commandSMS = ''\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\\n} else {\\n commandSMS = ` ${command}`\\n}\\ncommand = ascii_to_hexa(command)\\nvar commandEndSymbol = '0D0A'\\nvar quantityOfCommands = '01'\\nvar CRC = ''\\nx = (command.length + commandEndSymbol.length) / 2\\ny = (('00000000' + x.toString(16)).slice(-8))\\ncommandSize = y\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\ny2 = (('00000000' + x2.toString(16)).slice(-8))\\npacketLengt = y2\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":2,\"Order\":15},\"CacheImei\":false,\"RegEx\":\"^GH5200-COD12,[^,]*,New value 3005:[^;,]*;\",\"RegExGlobal\":\"\",\"IsDeviceUpdate\":false,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728466130}],"Tags":[]},{"Id":7287,"Code":"ACK-RPBB","Name":"ACK-Report By Button","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 13048:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5295,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Report Position By Button","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = '';\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\n //Configure the Button to send position. Configure also the vibration when pressed\n command = 'setparam 13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\n} else {\n command = 'setparam 13049:0';\n}\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":23},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 13048:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":7287,\"Code\":\"ACK-RPBB\",\"Name\":\"ACK-Report By Button\",\"MessageCode\":\"ACK\",\"NeedAck\":false,\"IsAck\":true,\"IsFailAck\":false,\"IsAckHexString\":false,\"NoOperation\":false,\"Type\":0,\"Template\":\"GH5200-COD12,<>,New value 13023:<>;\",\"HasTemplateGlobal\":false,\"ResponseTemplate\":null,\"TemplateGlobal\":null,\"LongConnection\":true,\"HexString\":false,\"AckFirst\":false,\"ScaipH\":false,\"DoNotSendCommands\":false,\"ProtocolsLibraryMethod\":null,\"ProtocolsLibraryMethodArgs\":null,\"Command\":{\"Id\":5295,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"1.0\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Report Position By Button\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = '';\\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\\n //Configure the Button to send position. Configure also the vibration when pressed\\n //setparam 13048:2;13049:16 configures the Button IO Feature, not the button itself, should be: 13023:14\\n // command = 'setparam 13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\\n command = 'setparam 13023:11;14440:1;14442:5;14443:1;14444:1000;14445:300;14446:300;14447:1';\\n} else {\\n command = 'setparam 13049:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":9,\"Order\":23},\"CacheImei\":false,\"RegEx\":\"^GH5200-COD12,[^,]*,New value 13023:[^;,]*;\",\"RegExGlobal\":\"\",\"IsDeviceUpdate\":false,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1727711460},{"Type":1,"NewValue":"{\"Id\":7287,\"Code\":\"ACK-RPBB\",\"Name\":\"ACK-Report By Button\",\"MessageCode\":\"ACK\",\"NeedAck\":false,\"IsAck\":true,\"IsFailAck\":false,\"IsAckHexString\":false,\"NoOperation\":false,\"Type\":0,\"Template\":\"GH5200-COD12,<>,New value 13048:<>;\",\"HasTemplateGlobal\":false,\"ResponseTemplate\":null,\"TemplateGlobal\":null,\"LongConnection\":true,\"HexString\":false,\"AckFirst\":false,\"ScaipH\":false,\"DoNotSendCommands\":false,\"ProtocolsLibraryMethod\":null,\"ProtocolsLibraryMethodArgs\":null,\"Command\":{\"Id\":5295,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"1.0\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Report Position By Button\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\\n command += '13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\\n} else {\\n command += '13049:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":9,\"Order\":23},\"CacheImei\":false,\"RegEx\":\"^GH5200-COD12,[^,]*,New value 13048:[^;,]*;\",\"RegExGlobal\":\"\",\"IsDeviceUpdate\":false,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728402542}],"Tags":[]},{"Id":7286,"Code":"ACK-ALA","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 13020:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5296,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Amber Alert Options","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nif (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n //13020 - Button 2. 1 click (25 - Amber Alert On)`\n //13021 - Button 2. 2 click (26 - Amber Alert Off)\n command += '13020:25;13021:26;';\n //14420 - Key 2 Action Activated(1-Enabled), 14430 - Key 2 Action Deactivated(1-Enabled)\n command += '14420:1;14430:1';\n //603-Order Priority. 1(Record)\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n} else if (params.AmberAlert.EnableDisableAmberAlert === \"false\") {\n command += '13020:0;13021:0;';\n}\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":12},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 13020:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7285,"Code":"ACK-FTS (Factory Settings)","Name":"ACK-Initialise Factory","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 107:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 107:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7284,"Code":"ACK-PC2","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 10151:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5286,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Pre Config 2","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"//This command will be sent by SMS\nvar configs = [];\nvar message = \"\";\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 10151:0;10152:0;10153:0;10154:1;10155:60;10200:60;10204:1;10205:60;10250:60;10251:0;10252:0;10253:0;10254:1;10255:60;102:0;103:10;`;\n} else {\n message = \" setparam 10151:0;10152:0;10153:0;10154:1;10155:60;10200:60;10204:1;10205:60;10250:60;10251:0;10252:0;10253:0;10254:1;10255:60;102:1;103:10;\";\n}\nAddValue(\"data\", message);\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":2,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":false,"SendAttempts":9,"Order":2},"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 10151:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7283,"Code":"RTL","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GPS:<> Sat:<> Lat:<> Long:<> Alt:<> Speed:<> Dir:<<->> Date: <> Time: <>","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":{"Id":5288,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Real Time Location","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"//This command will be sent by SMS\nvar configs = [];\nvar message = \"\";\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} getgps`;\n} else {\n message = \" getgps\";\n}\nAddValue(\"data\", message);\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":2,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":false,"SendAttempts":9,"Order":22},"CacheImei":false,"RegEx":"^GPS:[^ ]* Sat:[^ ]* Lat:[^ ]* Long:[^ ]* Alt:[^ ]* Speed:[^ ]* Dir:[^ ]* Date: [^ ]* Time: [^ ]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7282,"Code":"PWRF","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-PWRF,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-PWRF,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7281,"Code":"CHK","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-HTB,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-HTB,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7280,"Code":"ACK-SMS-GV","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"Ver:<>","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^Ver:[^:]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7279,"Code":"ACK-SMS-DR","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"All records are erased","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^All records are erased","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7278,"Code":"ACK-SMS","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"New value <>","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^New value [^ ]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7277,"Code":"ACK-ALFSMS3","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 12101:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 12101:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7276,"Code":"ACK-ALFSMS2","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 14390:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 14390:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7275,"Code":"ACK-ALF","Name":"ACK-Fall Alert","MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,New value 12100:<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,New value 12100:[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":7275,\"Code\":\"ACK-ALF\",\"Name\":\"ACK-Fall Alert\",\"MessageCode\":\"ACK\",\"NeedAck\":false,\"IsAck\":true,\"IsFailAck\":false,\"IsAckHexString\":false,\"NoOperation\":false,\"Type\":0,\"Template\":\"GH5200-COD12,<>,New value 12100:<>;\",\"HasTemplateGlobal\":false,\"ResponseTemplate\":null,\"TemplateGlobal\":null,\"LongConnection\":true,\"HexString\":false,\"AckFirst\":false,\"ScaipH\":false,\"DoNotSendCommands\":false,\"ProtocolsLibraryMethod\":null,\"ProtocolsLibraryMethodArgs\":null,\"Command\":{\"Id\":5283,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"1.0\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Fall Alarm Options\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \\\"false\\\") {\\n command += '12100:0;';\\n var commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n} else if (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \\\"true\\\") {\\n if (params.FallAlarmSettings.EnableDisableByButtons == 'true') {\\n //Configure Button 1 and button 2 to turn On and Off the feature. Also, the vibration when changed the behaviours.\\n command += '12100:0;';\\n command += '13019:2;13022:3;';\\n } else {\\n command += '12100:1;';\\n command += '13019:0;13022:0;';\\n }\\n var commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n command += '14390:1;14392:5;14393:1;14391:1;14397:1;14430:1;14432:5;14433:1;14431:1;14437:1;';\\n if (params.FallAlarmSettings.Position) {\\n command += '12101:' + params.FallAlarmSettings.Position + ';';\\n }\\n if (params.FallAlarmSettings.Angle) {\\n command += '12102:' + params.FallAlarmSettings.Angle + ';';\\n }\\n if (params.FallAlarmSettings.Timeout) {\\n command += '12103:' + params.FallAlarmSettings.Timeout + ';';\\n }\\n if (params.FallAlarmSettings.SilentPreAlarmDelay) {\\n command += '12111:' + params.FallAlarmSettings.SilentPreAlarmDelay + ';';\\n }\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:0;14320:0;14173:0;14323:0;';\\n }\\n command += '7222:0;12104:1';\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":9,\"Order\":16},\"CacheImei\":false,\"RegEx\":\"^GH5200-COD12,[^,]*,New value 12100:[^;,]*;\",\"RegExGlobal\":\"\",\"IsDeviceUpdate\":false,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1729517990}],"Tags":[]},{"Id":7274,"Code":"ALA-O","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-ALA-O,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-ALA-O,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7273,"Code":"PWRN","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-PWRN,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-PWRN,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7272,"Code":"COD8","Name":"Generic COD8","MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD8,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-COD8,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7271,"Code":"ALA-C","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-ALA-C,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":"","LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-ALA-C,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7270,"Code":"CYC","Name":"Cycle","MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-CYC,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-CYC,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7269,"Code":"PBB","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-PBB,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-PBB,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7268,"Code":"PROXS","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":1,"Template":"GH5200-PROXS,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;Proximity_violation_source=<>;Proximity_duration=<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-PROXS,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;Proximity_violation_source=[^;;]*;Proximity_duration=[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7267,"Code":"PROX","Name":"Proximity","MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":1,"Template":"GH5200-PROX,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-PROX,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7266,"Code":"PROXE","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-PROXE,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;Proximity_violation_source=<>;Proximity_duration=<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-PROXE,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;Proximity_violation_source=[^;;]*;Proximity_duration=[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7265,"Code":"ALA-S","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-ALA-S,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-ALA-S,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7264,"Code":"ALSP","Name":"Alarm Speed","MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":1,"Template":"GH5200-ALSP,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":"","LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-ALSP,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7263,"Code":"ALMV","Name":"Movement","MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-ALMV,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-ALMV,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7262,"Code":"ALA","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":1,"Template":"GH5200-ALA,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":true,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-ALA,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7261,"Code":"ALF","Name":"Alarm Fall","MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":1,"Template":"GH5200-ALF,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-ALF,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7260,"Code":"ZNI","Name":"Zone In","MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":1,"Template":"+RESP:ZIN,<>,<>,<>,<>,<>,<>,<>,<>$","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"\\+RESP:ZIN,[^,]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^\\$,]*\\$","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7259,"Code":"ALSOS","Name":"Alarm Emergency","MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":1,"Template":"GH5200-ALSOS,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-ALSOS,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7258,"Code":"STC","Name":"Start Communication","MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":true,"NoOperation":false,"Type":0,"Template":"GH5200-STC,<>,<>","HasTemplateGlobal":true,"ResponseTemplate":"<>","TemplateGlobal":"000F<>","LongConnection":true,"HexString":true,"AckFirst":true,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-STC,[^,]*,[^,]*","RegExGlobal":"^000F[^F]*","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7257,"Code":"COD8-Global","Name":"Codec8","MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":true,"NoOperation":false,"Type":0,"Template":"","HasTemplateGlobal":true,"ResponseTemplate":"<>","TemplateGlobal":"00000000<>","LongConnection":true,"HexString":true,"AckFirst":true,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"","RegExGlobal":"^00000000[^ ]*","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7256,"Code":"ZNO","Name":"Zone Out","MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":1,"Template":"+RESP:ZOUT,<>,<>,<>,<>,<>,<>,<>,<>$","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"\\+RESP:ZOUT,[^,]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^\\$,]*\\$","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7255,"Code":"ALNM","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-ALNM,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-ALNM,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7254,"Code":"NACT","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"+RESP:NACT,<>,<>$","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":"\\+RESP:NACT,[^,]*,[^\\$,]*\\$","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":7312,"Code":"PWRF","Name":null,"MessageCode":"ACK","NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-COD12,<>,Shutdown has been initiated","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-COD12,[^,]*,Shutdown has been initiated","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[{"Type":0,"NewValue":"{\"Id\":7312,\"Code\":\"PWRF\",\"Name\":null,\"MessageCode\":\"ACK\",\"NeedAck\":false,\"IsAck\":true,\"IsFailAck\":false,\"IsAckHexString\":false,\"NoOperation\":false,\"Type\":0,\"Template\":\"GH5200-COD12,<>,Shutdown has been initiated\",\"HasTemplateGlobal\":false,\"ResponseTemplate\":null,\"TemplateGlobal\":null,\"LongConnection\":true,\"HexString\":false,\"AckFirst\":false,\"ScaipH\":false,\"DoNotSendCommands\":false,\"ProtocolsLibraryMethod\":null,\"ProtocolsLibraryMethodArgs\":null,\"Command\":null,\"CacheImei\":false,\"RegEx\":\"^GH5200-COD12,[^,]*,Shutdown has been initiated\",\"RegExGlobal\":\"\",\"IsDeviceUpdate\":false,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725899787}],"Tags":[]},{"Id":7313,"Code":"BT","Name":null,"MessageCode":"BT","NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"GH5200-BT,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^GH5200-BT,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[{"Type":0,"NewValue":"{\"Id\":7313,\"Code\":\"BT\",\"Name\":null,\"MessageCode\":\"BT\",\"NeedAck\":false,\"IsAck\":false,\"IsFailAck\":false,\"IsAckHexString\":false,\"NoOperation\":false,\"Type\":0,\"Template\":\"GH5200-BT,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>\",\"HasTemplateGlobal\":false,\"ResponseTemplate\":null,\"TemplateGlobal\":null,\"LongConnection\":true,\"HexString\":false,\"AckFirst\":false,\"ScaipH\":false,\"DoNotSendCommands\":true,\"ProtocolsLibraryMethod\":null,\"ProtocolsLibraryMethodArgs\":null,\"Command\":null,\"CacheImei\":false,\"RegEx\":\"^GH5200-BT,[^,]*,[^,,]*,[^;,]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;[^;;]*;;[^;]*\",\"RegExGlobal\":\"\",\"IsDeviceUpdate\":false,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725899916}],"Tags":[]}],"Commands":[{"Id":5313,"Name":"Cycle Interval SMS 2","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.CycleSettings.CycleInterval) {\n command = 'setparam ';\n var num = 10000;\n var minPeriod = params.CycleSettings.CycleInterval * 60;\n var minSavedRecords = 1;\n var sendPeriod = 60;\n var minDistance = 0;\n var minAngle = 0;\n var minSpeedDelta = 0;\n for (x = 0; x < 3; x++) {\n var stop = `${num}:${minPeriod};${(num + 4)}:${minSavedRecords};${(num + 5)}:${sendPeriod};`;\n var moving = `${(num + 50)}:${minPeriod};${(num + 51)}:${minDistance};${(num + 52)}:${minAngle};${(num + 53)}:${minSpeedDelta};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\n if (x == 1) {\n command += moving;\n }\n if (x > 1) {\n command = command + stop + moving;\n }\n num = num + 100;\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValueSMS(\"data\", commandSMS);\n AddValue(\"data\", commandGprs);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\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}\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}","CommandToUpdate":null,"Parent":{"Id":5293,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Cycle Interval","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nvar num = 10000;\nvar minPeriod = params.CycleSettings.CycleInterval * 60;\nvar minSavedRecords = 1;\nvar sendPeriod = 60;\nvar minDistance = 0;\nvar minAngle = 0;\nvar minSpeedDelta = 0;\nvar stop = `${num}:${minPeriod};${(num + 4)}:${minSavedRecords};${(num + 5)}:${sendPeriod};`;\nvar moving = `${(num + 50)}:${minPeriod};${(num + 51)}:${minDistance};${(num + 52)}:${minAngle};${(num + 53)}:${minSpeedDelta};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command += stop}`;\n} else {\n commandSMS = ` ${command += stop}`;\n}\ncommand = command.slice(0, -1);\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":27},"AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"HasAck":true,"HexString":false,"Order":28,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5313,\"Name\":\"Cycle Interval SMS 2\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nvar commandGprs = '';\\nvar notSend = false;\\nif (params.CycleSettings.CycleInterval) {\\n command = 'setparam ';\\n var num = 10000;\\n var minPeriod = params.CycleSettings.CycleInterval * 60;\\n var minSavedRecords = 1;\\n var sendPeriod = 60;\\n var minDistance = 0;\\n var minAngle = 0;\\n var minSpeedDelta = 0;\\n for (x = 0; x < 3; x++) {\\n var stop = `${num}:${minPeriod};${(num + 4)}:${minSavedRecords};${(num + 5)}:${sendPeriod};`;\\n var moving = `${(num + 50)}:${minPeriod};${(num + 51)}:${minDistance};${(num + 52)}:${minAngle};${(num + 53)}:${minSpeedDelta};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\\n if (x == 1) {\\n command += moving;\\n }\\n if (x > 1) {\\n command = command + stop + moving;\\n }\\n num = num + 100;\\n }\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\\n notSend = true;\\n }\\n AddValueSMS(\\\"data\\\", commandSMS);\\n AddValue(\\\"data\\\", commandGprs);\\n}\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS,\\n notSend: notSend\\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}\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\",\"CommandToUpdate\":null,\"Parent\":{\"Id\":5293,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"0.9\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Cycle Interval\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nvar num = 10000;\\nvar minPeriod = params.CycleSettings.CycleInterval * 60;\\nvar minSavedRecords = 1;\\nvar sendPeriod = 60;\\nvar minDistance = 0;\\nvar minAngle = 0;\\nvar minSpeedDelta = 0;\\nvar stop = `${num}:${minPeriod};${(num + 4)}:${minSavedRecords};${(num + 5)}:${sendPeriod};`;\\n//var moving = `${(num + 50)}:${minPeriod};${(num + 51)}:${minDistance};${(num + 52)}:${minAngle};${(num + 53)}:${minSpeedDelta};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\\nvar moving = `${(num + 50)}:${minPeriod};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command += stop + moving}`;\\n} else {\\n commandSMS = ` ${command += stop + moving}`;\\n}\\ncommand = command.slice(0, -1);\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":9,\"Order\":27},\"AvoidResending\":false,\"FollowParentSentType\":true,\"SendingType\":0,\"HasAck\":true,\"HexString\":false,\"Order\":28,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725964883}],"Tags":[{"Id":2082,"Name":"twentyninethCommand","BackendAction":"CommandPriority","Value":"28"}]},{"Id":5312,"Name":"Fall Alarm SMS 3","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar commandSMS = '';\nvar command = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \"true\") {\n command = 'setparam ';\n if (params.FallAlarmSettings.Position) {\n command += '12101:' + params.FallAlarmSettings.Position + ';';\n }\n if (params.FallAlarmSettings.Angle) {\n command += '12102:' + params.FallAlarmSettings.Angle + ';';\n }\n if (params.FallAlarmSettings.Timeout) {\n command += '12103:' + params.FallAlarmSettings.Timeout + ';';\n }\n if (params.FallAlarmSettings.SilentPreAlarmDelay) {\n command += '12111:' + params.FallAlarmSettings.SilentPreAlarmDelay + ';';\n }\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:0;14320:0;14173:0;14323:0;';\n }\n command += '7222:0;12104:1';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\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}\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}","CommandToUpdate":null,"Parent":{"Id":5283,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Fall Alarm Options","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \"false\") {\n command += '12100:0;';\n var commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n} else if (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \"true\") {\n if (params.FallAlarmSettings.EnableDisableByButtons == 'true') {\n //Configure Button 1 and button 2 to turn On and Off the feature. Also, the vibration when changed the behaviours.\n command += '12100:0;';\n command += '13019:2;13022:3;';\n } else {\n command += '12100:1;';\n command += '13019:0;13022:0;';\n }\n var commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14390:1;14392:5;14393:1;14391:1;14397:1;14430:1;14432:5;14433:1;14431:1;14437:1;';\n if (params.FallAlarmSettings.Position) {\n command += '12101:' + params.FallAlarmSettings.Position + ';';\n }\n if (params.FallAlarmSettings.Angle) {\n command += '12102:' + params.FallAlarmSettings.Angle + ';';\n }\n if (params.FallAlarmSettings.Timeout) {\n command += '12103:' + params.FallAlarmSettings.Timeout + ';';\n }\n if (params.FallAlarmSettings.SilentPreAlarmDelay) {\n command += '12111:' + params.FallAlarmSettings.SilentPreAlarmDelay + ';';\n }\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:0;14320:0;14173:0;14323:0;';\n }\n command += '7222:0;12104:1';\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":16},"AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"HasAck":true,"HexString":false,"Order":18,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5312,\"Name\":\"Fall Alarm SMS 3\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar commandSMS = '';\\nvar command = '';\\nvar commandGprs = '';\\nvar notSend = false;\\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \\\"true\\\") {\\n command = 'setparam ';\\n if (params.FallAlarmSettings.Position) {\\n command += '12101:' + params.FallAlarmSettings.Position + ';';\\n }\\n if (params.FallAlarmSettings.Angle) {\\n command += '12102:' + params.FallAlarmSettings.Angle + ';';\\n }\\n if (params.FallAlarmSettings.Timeout) {\\n command += '12103:' + params.FallAlarmSettings.Timeout + ';';\\n }\\n if (params.FallAlarmSettings.SilentPreAlarmDelay) {\\n command += '12111:' + params.FallAlarmSettings.SilentPreAlarmDelay + ';';\\n }\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:0;14320:0;14173:0;14323:0;';\\n }\\n command += '7222:0;12104:1';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\\n notSend = true;\\n }\\n AddValue(\\\"data\\\", commandGprs);\\n AddValueSMS(\\\"data\\\", commandSMS);\\n}\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS,\\n notSend: notSend\\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}\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\",\"CommandToUpdate\":null,\"Parent\":{\"Id\":5283,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"0.9\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Fall Alarm Options\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \\\"false\\\") {\\n command += '12100:0;';\\n var commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n} else if (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \\\"true\\\") {\\n if (params.FallAlarmSettings.EnableDisableByButtons == 'true') {\\n //Configure Button 1 and button 2 to turn On and Off the feature. Also, the vibration when changed the behaviours.\\n command += '12100:0;';\\n command += '13019:2;13022:3;';\\n } else {\\n command += '12100:1;';\\n command += '13019:0;13022:0;';\\n }\\n var commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n command += '14390:1;14392:5;14393:1;14391:1;14397:1;14430:1;14432:5;14433:1;14431:1;14437:1;';\\n if (params.FallAlarmSettings.Position) {\\n command += '12101:' + params.FallAlarmSettings.Position + ';';\\n }\\n if (params.FallAlarmSettings.Angle) {\\n command += '12102:' + params.FallAlarmSettings.Angle + ';';\\n }\\n if (params.FallAlarmSettings.Timeout) {\\n command += '12103:' + params.FallAlarmSettings.Timeout + ';';\\n }\\n if (params.FallAlarmSettings.SilentPreAlarmDelay) {\\n command += '12111:' + params.FallAlarmSettings.SilentPreAlarmDelay + ';';\\n }\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:0;14320:0;14173:0;14323:0;';\\n }\\n command += '7222:0;12104:1';\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":9,\"Order\":16},\"AvoidResending\":false,\"FollowParentSentType\":true,\"SendingType\":0,\"HasAck\":true,\"HexString\":false,\"Order\":18,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725964993}],"Tags":[{"Id":2087,"Name":"nineteenthCommand","BackendAction":"CommandPriority","Value":"18"}]},{"Id":5311,"Name":"Initialise From Factory Settings SMS 6","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n command = 'setparam ';\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"HasAck":true,"HexString":false,"Order":9,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5311,\"Name\":\"Initialise From Factory Settings SMS 6\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nvar commandGprs = '';\\nvar notSend = false;\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n command = 'setparam ';\\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \\\"true\\\") {\\n command += '13019:2;13022:3;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n } else {\\n command += '13019:0;13022:0;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n }\\n if (params.ReportPositionByButton.ReportPositionByButton === \\\"true\\\") {\\n command += '13048:2;13049:16;';\\n } else {\\n command += '13049:0;';\\n }\\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \\\"true\\\") {\\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\\n } else {\\n command += '6001:;13017:0;';\\n }\\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\\n notSend = true;\\n }\\n AddValue(\\\"data\\\", commandGprs);\\n AddValueSMS(\\\"data\\\", commandSMS);\\n}\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS,\\n notSend: notSend\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":{\"Id\":5298,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"0.9\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Initialise from Factory Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n var zero = '00000000';\\n var packetLengt = '';\\n var codec = '0C';\\n var quantityOfCommands = '01';\\n var commandType = '05';\\n var commandSize = '';\\n command = '';\\n command = 'setparam ';\\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\\n command += '13050:100;'; //13050(Indication Vloume %), \\n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\\n if (params.CallSettings.OneWayCall == 'true') {\\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n } else {\\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n }\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \\n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \\n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \\n if (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n command += '13020:25;13021:26;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n } else {\\n command += '13020:0;13021:0;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n }\\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \\\"true\\\") {\\n command += '13019:2;13022:3;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n } else {\\n command += '13019:0;13022:0;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n }\\n if (params.ReportPositionByButton.ReportPositionByButton === \\\"true\\\") {\\n command += '13048:2;13049:16;';\\n } else {\\n command += '13049:0;';\\n }\\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \\\"true\\\") {\\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\\n } else {\\n command += '6001:;13017:0;';\\n }\\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\\n command = ascii_to_hexa(command);\\n var commandEndSymbol = '0D0A'\\n var quantityOfCommands = '01'\\n var CRC = ''\\n x = (command.length + commandEndSymbol.length) / 2\\n y = (('00000000' + x.toString(16)).slice(-8))\\n commandSize = y\\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\n y2 = (('00000000' + x2.toString(16)).slice(-8))\\n packetLengt = y2\\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\n}\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":9,\"Order\":4},\"AvoidResending\":false,\"FollowParentSentType\":true,\"SendingType\":0,\"HasAck\":true,\"HexString\":false,\"Order\":9,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725963772}],"Tags":[{"Id":2076,"Name":"tenthCommand","BackendAction":"CommandPriority","Value":"9"}]},{"Id":5310,"Name":"Initialise From Factory Settings SMS 2","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettingsSMS2 == 'true') {\n command = 'setparam ';\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"HasAck":true,"HexString":false,"Order":5,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5310,\"Name\":\"Initialise From Factory Settings SMS 2\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nvar commandGprs = '';\\nvar notSend = false;\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettingsSMS2 == 'true') {\\n command = 'setparam ';\\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\\n notSend = true;\\n }\\n AddValue(\\\"data\\\", commandGprs);\\n AddValueSMS(\\\"data\\\", commandSMS);\\n}\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS,\\n notSend: notSend\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":{\"Id\":5298,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"0.9\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Initialise from Factory Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n var zero = '00000000';\\n var packetLengt = '';\\n var codec = '0C';\\n var quantityOfCommands = '01';\\n var commandType = '05';\\n var commandSize = '';\\n command = '';\\n command = 'setparam ';\\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\\n command += '13050:100;'; //13050(Indication Vloume %), \\n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\\n if (params.CallSettings.OneWayCall == 'true') {\\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n } else {\\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n }\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \\n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \\n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \\n if (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n command += '13020:25;13021:26;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n } else {\\n command += '13020:0;13021:0;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n }\\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \\\"true\\\") {\\n command += '13019:2;13022:3;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n } else {\\n command += '13019:0;13022:0;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n }\\n if (params.ReportPositionByButton.ReportPositionByButton === \\\"true\\\") {\\n command += '13048:2;13049:16;';\\n } else {\\n command += '13049:0;';\\n }\\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \\\"true\\\") {\\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\\n } else {\\n command += '6001:;13017:0;';\\n }\\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\\n command = ascii_to_hexa(command);\\n var commandEndSymbol = '0D0A'\\n var quantityOfCommands = '01'\\n var CRC = ''\\n x = (command.length + commandEndSymbol.length) / 2\\n y = (('00000000' + x.toString(16)).slice(-8))\\n commandSize = y\\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\n y2 = (('00000000' + x2.toString(16)).slice(-8))\\n packetLengt = y2\\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\n}\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":9,\"Order\":4},\"AvoidResending\":false,\"FollowParentSentType\":true,\"SendingType\":0,\"HasAck\":true,\"HexString\":false,\"Order\":5,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725963049}],"Tags":[{"Id":2072,"Name":"sixthCommand","BackendAction":"CommandPriority","Value":"5"}]},{"Id":5309,"Name":"Initialise From Factory Settings SMS 3","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n command = 'setparam ';\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"HasAck":true,"HexString":false,"Order":6,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5309,\"Name\":\"Initialise From Factory Settings SMS 3\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nvar commandGprs = '';\\nvar notSend = false;\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n command = 'setparam ';\\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\\n notSend = true;\\n }\\n AddValue(\\\"data\\\", commandGprs);\\n AddValueSMS(\\\"data\\\", commandSMS);\\n}\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS,\\n notSend: notSend\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":{\"Id\":5298,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"0.9\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Initialise from Factory Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n var zero = '00000000';\\n var packetLengt = '';\\n var codec = '0C';\\n var quantityOfCommands = '01';\\n var commandType = '05';\\n var commandSize = '';\\n command = '';\\n command = 'setparam ';\\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\\n command += '13050:100;'; //13050(Indication Vloume %), \\n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\\n if (params.CallSettings.OneWayCall == 'true') {\\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n } else {\\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n }\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \\n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \\n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \\n if (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n command += '13020:25;13021:26;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n } else {\\n command += '13020:0;13021:0;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n }\\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \\\"true\\\") {\\n command += '13019:2;13022:3;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n } else {\\n command += '13019:0;13022:0;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n }\\n if (params.ReportPositionByButton.ReportPositionByButton === \\\"true\\\") {\\n command += '13048:2;13049:16;';\\n } else {\\n command += '13049:0;';\\n }\\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \\\"true\\\") {\\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\\n } else {\\n command += '6001:;13017:0;';\\n }\\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\\n command = ascii_to_hexa(command);\\n var commandEndSymbol = '0D0A'\\n var quantityOfCommands = '01'\\n var CRC = ''\\n x = (command.length + commandEndSymbol.length) / 2\\n y = (('00000000' + x.toString(16)).slice(-8))\\n commandSize = y\\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\n y2 = (('00000000' + x2.toString(16)).slice(-8))\\n packetLengt = y2\\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\n}\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":9,\"Order\":4},\"AvoidResending\":false,\"FollowParentSentType\":true,\"SendingType\":0,\"HasAck\":true,\"HexString\":false,\"Order\":6,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725963077}],"Tags":[{"Id":2073,"Name":"seventhCommand","BackendAction":"CommandPriority","Value":"6"}]},{"Id":5308,"Name":"Initialise From Factory Settings SMS 4","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n command = 'setparam ';\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"HasAck":true,"HexString":false,"Order":7,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5308,\"Name\":\"Initialise From Factory Settings SMS 4\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nvar commandGprs = '';\\nvar notSend = false;\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n command = 'setparam ';\\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \\n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \\n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\\n notSend = true;\\n }\\n AddValue(\\\"data\\\", commandGprs);\\n AddValueSMS(\\\"data\\\", commandSMS);\\n}\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS,\\n notSend: notSend\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":{\"Id\":5298,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"0.9\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Initialise from Factory Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n var zero = '00000000';\\n var packetLengt = '';\\n var codec = '0C';\\n var quantityOfCommands = '01';\\n var commandType = '05';\\n var commandSize = '';\\n command = '';\\n command = 'setparam ';\\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\\n command += '13050:100;'; //13050(Indication Vloume %), \\n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\\n if (params.CallSettings.OneWayCall == 'true') {\\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n } else {\\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n }\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \\n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \\n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \\n if (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n command += '13020:25;13021:26;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n } else {\\n command += '13020:0;13021:0;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n }\\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \\\"true\\\") {\\n command += '13019:2;13022:3;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n } else {\\n command += '13019:0;13022:0;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n }\\n if (params.ReportPositionByButton.ReportPositionByButton === \\\"true\\\") {\\n command += '13048:2;13049:16;';\\n } else {\\n command += '13049:0;';\\n }\\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \\\"true\\\") {\\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\\n } else {\\n command += '6001:;13017:0;';\\n }\\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\\n command = ascii_to_hexa(command);\\n var commandEndSymbol = '0D0A'\\n var quantityOfCommands = '01'\\n var CRC = ''\\n x = (command.length + commandEndSymbol.length) / 2\\n y = (('00000000' + x.toString(16)).slice(-8))\\n commandSize = y\\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\n y2 = (('00000000' + x2.toString(16)).slice(-8))\\n packetLengt = y2\\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\n}\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":9,\"Order\":4},\"AvoidResending\":false,\"FollowParentSentType\":true,\"SendingType\":0,\"HasAck\":true,\"HexString\":false,\"Order\":7,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725963653}],"Tags":[{"Id":2074,"Name":"eighthCommand","BackendAction":"CommandPriority","Value":"7"}]},{"Id":5307,"Name":"Initialise From Factory Settings SMS 7","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n command = 'setparam ';\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"HasAck":true,"HexString":false,"Order":10,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5307,\"Name\":\"Initialise From Factory Settings SMS 7\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nvar commandGprs = '';\\nvar notSend = false;\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n command = 'setparam ';\\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\\n notSend = true;\\n }\\n AddValue(\\\"data\\\", commandGprs);\\n AddValueSMS(\\\"data\\\", commandSMS);\\n}\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS,\\n notSend: notSend\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":{\"Id\":5298,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"0.9\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Initialise from Factory Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n var zero = '00000000';\\n var packetLengt = '';\\n var codec = '0C';\\n var quantityOfCommands = '01';\\n var commandType = '05';\\n var commandSize = '';\\n command = '';\\n command = 'setparam ';\\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\\n command += '13050:100;'; //13050(Indication Vloume %), \\n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\\n if (params.CallSettings.OneWayCall == 'true') {\\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n } else {\\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n }\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \\n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \\n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \\n if (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n command += '13020:25;13021:26;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n } else {\\n command += '13020:0;13021:0;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n }\\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \\\"true\\\") {\\n command += '13019:2;13022:3;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n } else {\\n command += '13019:0;13022:0;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n }\\n if (params.ReportPositionByButton.ReportPositionByButton === \\\"true\\\") {\\n command += '13048:2;13049:16;';\\n } else {\\n command += '13049:0;';\\n }\\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \\\"true\\\") {\\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\\n } else {\\n command += '6001:;13017:0;';\\n }\\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\\n command = ascii_to_hexa(command);\\n var commandEndSymbol = '0D0A'\\n var quantityOfCommands = '01'\\n var CRC = ''\\n x = (command.length + commandEndSymbol.length) / 2\\n y = (('00000000' + x.toString(16)).slice(-8))\\n commandSize = y\\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\n y2 = (('00000000' + x2.toString(16)).slice(-8))\\n packetLengt = y2\\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\n}\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":9,\"Order\":4},\"AvoidResending\":false,\"FollowParentSentType\":true,\"SendingType\":0,\"HasAck\":true,\"HexString\":false,\"Order\":10,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725964073}],"Tags":[{"Id":2078,"Name":"eleventhCommand","BackendAction":"CommandPriority","Value":"10"}]},{"Id":5306,"Name":"Initialise From Factory Settings SMS 5","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n command = 'setparam ';\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":{"Id":5298,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":4},"AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"HasAck":true,"HexString":false,"Order":8,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5306,\"Name\":\"Initialise From Factory Settings SMS 5\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nvar commandGprs = '';\\nvar notSend = false;\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n command = 'setparam ';\\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \\n if (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n command += '13020:25;13021:26;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n } else {\\n command += '13020:0;13021:0;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n }\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\\n notSend = true;\\n }\\n AddValue(\\\"data\\\", commandGprs);\\n AddValueSMS(\\\"data\\\", commandSMS);\\n}\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS,\\n notSend: notSend\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":{\"Id\":5298,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"0.9\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Initialise from Factory Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n var zero = '00000000';\\n var packetLengt = '';\\n var codec = '0C';\\n var quantityOfCommands = '01';\\n var commandType = '05';\\n var commandSize = '';\\n command = '';\\n command = 'setparam ';\\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\\n command += '13050:100;'; //13050(Indication Vloume %), \\n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\\n if (params.CallSettings.OneWayCall == 'true') {\\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n } else {\\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n }\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \\n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \\n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \\n if (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n command += '13020:25;13021:26;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n } else {\\n command += '13020:0;13021:0;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n }\\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \\\"true\\\") {\\n command += '13019:2;13022:3;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n } else {\\n command += '13019:0;13022:0;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n }\\n if (params.ReportPositionByButton.ReportPositionByButton === \\\"true\\\") {\\n command += '13048:2;13049:16;';\\n } else {\\n command += '13049:0;';\\n }\\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \\\"true\\\") {\\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\\n } else {\\n command += '6001:;13017:0;';\\n }\\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\\n command = ascii_to_hexa(command);\\n var commandEndSymbol = '0D0A'\\n var quantityOfCommands = '01'\\n var CRC = ''\\n x = (command.length + commandEndSymbol.length) / 2\\n y = (('00000000' + x.toString(16)).slice(-8))\\n commandSize = y\\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\n y2 = (('00000000' + x2.toString(16)).slice(-8))\\n packetLengt = y2\\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\n}\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":9,\"Order\":4},\"AvoidResending\":false,\"FollowParentSentType\":true,\"SendingType\":0,\"HasAck\":true,\"HexString\":false,\"Order\":8,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725963727}],"Tags":[{"Id":2075,"Name":"eighthCommand","BackendAction":"CommandPriority","Value":"8"}]},{"Id":5305,"Name":"Fall Alarm SMS 2","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar commandSMS = '';\nvar command = '';\nvar commandGprs = '';\nvar notSend = false;\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \"true\") {\n var command = 'setparam 14390:1;14392:5;14393:1;14391:1;14397:1;14430:1;14432:5;14433:1;14431:1;14437:1;';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\n notSend = true;\n }\n AddValue(\"data\", commandGprs);\n AddValueSMS(\"data\", commandSMS);\n}\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS,\n notSend: notSend\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}\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}","CommandToUpdate":null,"Parent":{"Id":5283,"Protocol":{"Id":230,"Code":"Badge","Version":"0.8","FirmwareVersion":null,"Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":false},"Name":"Fall Alarm Options","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \"false\") {\n command += '12100:0;';\n var commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n} else if (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \"true\") {\n if (params.FallAlarmSettings.EnableDisableByButtons == 'true') {\n //Configure Button 1 and button 2 to turn On and Off the feature. Also, the vibration when changed the behaviours.\n command += '12100:0;';\n command += '13019:2;13022:3;';\n } else {\n command += '12100:1;';\n command += '13019:0;13022:0;';\n }\n var commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14390:1;14392:5;14393:1;14391:1;14397:1;14430:1;14432:5;14433:1;14431:1;14437:1;';\n if (params.FallAlarmSettings.Position) {\n command += '12101:' + params.FallAlarmSettings.Position + ';';\n }\n if (params.FallAlarmSettings.Angle) {\n command += '12102:' + params.FallAlarmSettings.Angle + ';';\n }\n if (params.FallAlarmSettings.Timeout) {\n command += '12103:' + params.FallAlarmSettings.Timeout + ';';\n }\n if (params.FallAlarmSettings.SilentPreAlarmDelay) {\n command += '12111:' + params.FallAlarmSettings.SilentPreAlarmDelay + ';';\n }\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:0;14320:0;14173:0;14323:0;';\n }\n command += '7222:0;12104:1';\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":9,"Order":16},"AvoidResending":false,"FollowParentSentType":true,"SendingType":0,"HasAck":true,"HexString":false,"Order":17,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5305,\"Name\":\"Fall Alarm SMS 2\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar commandSMS = '';\\nvar command = '';\\nvar commandGprs = '';\\nvar notSend = false;\\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \\\"true\\\") {\\n var command = 'setparam 14390:1;14392:5;14393:1;14391:1;14397:1;14430:1;14432:5;14433:1;14431:1;14437:1;';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\\n notSend = true;\\n }\\n AddValue(\\\"data\\\", commandGprs);\\n AddValueSMS(\\\"data\\\", commandSMS);\\n}\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS,\\n notSend: notSend\\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}\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\",\"CommandToUpdate\":null,\"Parent\":{\"Id\":5283,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"0.9\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Fall Alarm Options\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \\\"false\\\") {\\n command += '12100:0;';\\n var commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n} else if (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \\\"true\\\") {\\n if (params.FallAlarmSettings.EnableDisableByButtons == 'true') {\\n //Configure Button 1 and button 2 to turn On and Off the feature. Also, the vibration when changed the behaviours.\\n command += '12100:0;';\\n command += '13019:2;13022:3;';\\n } else {\\n command += '12100:1;';\\n command += '13019:0;13022:0;';\\n }\\n var commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n command += '14390:1;14392:5;14393:1;14391:1;14397:1;14430:1;14432:5;14433:1;14431:1;14437:1;';\\n if (params.FallAlarmSettings.Position) {\\n command += '12101:' + params.FallAlarmSettings.Position + ';';\\n }\\n if (params.FallAlarmSettings.Angle) {\\n command += '12102:' + params.FallAlarmSettings.Angle + ';';\\n }\\n if (params.FallAlarmSettings.Timeout) {\\n command += '12103:' + params.FallAlarmSettings.Timeout + ';';\\n }\\n if (params.FallAlarmSettings.SilentPreAlarmDelay) {\\n command += '12111:' + params.FallAlarmSettings.SilentPreAlarmDelay + ';';\\n }\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:0;14320:0;14173:0;14323:0;';\\n }\\n command += '7222:0;12104:1';\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":true,\"HexString\":true,\"SendAttempts\":9,\"Order\":16},\"AvoidResending\":false,\"FollowParentSentType\":true,\"SendingType\":0,\"HasAck\":true,\"HexString\":false,\"Order\":17,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725964966}],"Tags":[{"Id":2085,"Name":"eighteenthCommand","BackendAction":"CommandPriority","Value":"17"}]},{"Id":5304,"Name":"Call Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000'\nvar packetLengt = ''\nvar codec = '0C'\nvar quantityOfCommands = '01'\nvar commandType = '05'\nvar commandSize = ''\nvar command = 'setparam '\n//3020 - Outgoing call in loud speaker (1 active, 0 inactive)\n//13051 - Normal Speaker Volume\n//13052 - Loud Speaker Volume\n//14310 - Call Active Indicator (0 Disabled, 1 Enabled)\n//14240 - Outgoing call Indicator (0 Disabled, 1 Enabled)\n//14030 - Incoming call Indicator (0 Disabled, 1 Enabled)\nif (params.CallSettings.OneWayCall == 'true') {\n command += '3020:1;13052:0;13051:0;14310:0;14240:0;14030:0'\n} else {\n command += '3020:0;13052:50;13051:50;14310:1;14240:1:14030:1'\n}\nvar commandSMS = ''\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\n} else {\n commandSMS = ` ${command}`\n}\ncommand = ascii_to_hexa(command)\nvar commandEndSymbol = '0D0A'\nvar quantityOfCommands = '01'\nvar CRC = ''\nx = (command.length + commandEndSymbol.length) / 2\ny = (('00000000' + x.toString(16)).slice(-8))\ncommandSize = y\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\ny2 = (('00000000' + x2.toString(16)).slice(-8))\npacketLengt = y2\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":20,"SendAttempts":2,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5304,\"Name\":\"Call Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000'\\nvar packetLengt = ''\\nvar codec = '0C'\\nvar quantityOfCommands = '01'\\nvar commandType = '05'\\nvar commandSize = ''\\nvar command = 'setparam '\\n//3020 - Outgoing call in loud speaker (1 active, 0 inactive)\\n//13051 - Normal Speaker Volume\\n//13052 - Loud Speaker Volume\\n//14310 - Call Active Indicator (0 Disabled, 1 Enabled)\\n//14240 - Outgoing call Indicator (0 Disabled, 1 Enabled)\\n//14030 - Incoming call Indicator (0 Disabled, 1 Enabled)\\nif (params.CallSettings.OneWayCall == 'true') {\\n command += '3020:1;13052:0;13051:0;14310:0;14240:0;14030:0'\\n} else {\\n command += '3020:0;13052:50;13051:50;14310:1;14240:1:14030:1'\\n}\\nvar commandSMS = ''\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\\n} else {\\n commandSMS = ` ${command}`\\n}\\ncommand = ascii_to_hexa(command)\\nvar commandEndSymbol = '0D0A'\\nvar quantityOfCommands = '01'\\nvar CRC = ''\\nx = (command.length + commandEndSymbol.length) / 2\\ny = (('00000000' + x.toString(16)).slice(-8))\\ncommandSize = y\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\ny2 = (('00000000' + x2.toString(16)).slice(-8))\\npacketLengt = y2\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":20,\"SendAttempts\":2,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725901331},{"Type":1,"NewValue":"{\"Id\":5304,\"Name\":\"Call Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000'\\nvar packetLengt = ''\\nvar codec = '0C'\\nvar quantityOfCommands = '01'\\nvar commandType = '05'\\nvar commandSize = ''\\nvar command = 'setparam '\\n//3020 - Outgoing call in loud speaker (1 active, 0 inactive)\\n//13051 - Normal Speaker Volume\\n//13052 - Loud Speaker Volume\\n//14310 - Call Active Indicator (0 Disabled, 1 Enabled)\\n//14240 - Outgoing call Indicator (0 Disabled, 1 Enabled)\\n//14030 - Incoming call Indicator (0 Disabled, 1 Enabled)\\nif (params.CallSettings.OneWayCall == 'true') {\\n command += '3020:1;13052:0;13051:0;14310:0;14240:0;14030:0'\\n} else {\\n command += '3020:1;13052:' + `${params.DeviceVolume.DeviceVolumeLevel}` + ';13051:' + `${params.DeviceVolume.DeviceVolumeLevel}` + ';14310:1;14240:1:14030:1'\\n}\\nvar commandSMS = ''\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\\n} else {\\n commandSMS = ` ${command}`\\n}\\ncommand = ascii_to_hexa(command)\\nvar commandEndSymbol = '0D0A'\\nvar quantityOfCommands = '01'\\nvar CRC = ''\\nx = (command.length + commandEndSymbol.length) / 2\\ny = (('00000000' + x.toString(16)).slice(-8))\\ncommandSize = y\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\ny2 = (('00000000' + x2.toString(16)).slice(-8))\\npacketLengt = y2\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":20,\"SendAttempts\":2,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725901772},{"Type":1,"NewValue":"{\"Id\":5304,\"Name\":\"Call Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000'\\nvar packetLengt = ''\\nvar codec = '0C'\\nvar quantityOfCommands = '01'\\nvar commandType = '05'\\nvar commandSize = ''\\nvar command = 'setparam '\\n//3020 - Outgoing call in loud speaker (1 active, 0 inactive)\\n//13051 - Normal Speaker Volume\\n//13052 - Loud Speaker Volume\\n//14310 - Call Active Indicator (0 Disabled, 1 Enabled)\\n//14240 - Outgoing call Indicator (0 Disabled, 1 Enabled)\\n//14030 - Incoming call Indicator (0 Disabled, 1 Enabled)\\nif (params.CallSettings.OneWayCall == 'true') {\\n command += '3020:1;13052:0;13051:0;14310:0;14240:0;14030:0'\\n} else {\\n command += '3020:1;13052:' + `${params.DeviceVolume.DeviceVolumeLevel}` + ';13051:' + `${params.DeviceVolume.DeviceVolumeLevel}` + ';14310:1;14240:1:14030:1'\\n}\\nvar commandSMS = ''\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\\n} else {\\n commandSMS = ` ${command}`\\n}\\ncommand = ascii_to_hexa(command)\\nvar commandEndSymbol = '0D0A'\\nvar quantityOfCommands = '01'\\nvar CRC = ''\\nx = (command.length + commandEndSymbol.length) / 2\\ny = (('00000000' + x.toString(16)).slice(-8))\\ncommandSize = y\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\ny2 = (('00000000' + x2.toString(16)).slice(-8))\\npacketLengt = y2\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":20,\"SendAttempts\":2,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725964798},{"Type":1,"NewValue":"{\"Id\":5304,\"Name\":\"Call Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000'\\nvar packetLengt = ''\\nvar codec = '0C'\\nvar quantityOfCommands = '01'\\nvar commandType = '05'\\nvar commandSize = ''\\nvar command = 'setparam '\\n//3020 - Outgoing call in loud speaker (1 active, 0 inactive)\\n//13051 - Normal Speaker Volume\\n//13052 - Loud Speaker Volume\\n//14310 - Call Active Indicator (0 Disabled, 1 Enabled)\\n//14240 - Outgoing call Indicator (0 Disabled, 1 Enabled)\\n//14030 - Incoming call Indicator (0 Disabled, 1 Enabled)\\nlet audioVolume = params.DeviceVolume.DeviceVolumeLevel ? params.DeviceVolume.DeviceVolumeLevel : 100;\\nif (params.CallSettings.OneWayCall == 'true') {\\n command += '3020:1;13052:0;13051:0;14310:0;14240:0;14030:0'\\n} else {\\n command += '3020:1;13052:' + `${audioVolume}` + ';13051:' + `${audioVolume}` + ';14310:1;14240:1:14030:1'\\n}\\nvar commandSMS = ''\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\\n} else {\\n commandSMS = ` ${command}`\\n}\\ncommand = ascii_to_hexa(command)\\nvar commandEndSymbol = '0D0A'\\nvar quantityOfCommands = '01'\\nvar CRC = ''\\nx = (command.length + commandEndSymbol.length) / 2\\ny = (('00000000' + x.toString(16)).slice(-8))\\ncommandSize = y\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\ny2 = (('00000000' + x2.toString(16)).slice(-8))\\npacketLengt = y2\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":20,\"SendAttempts\":2,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1730114570}],"Tags":[{"Id":2080,"Name":"twentyfirstCommand","BackendAction":"CommandPriority","Value":"20"}]},{"Id":5303,"Name":"Get Info","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'getinfo';\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":13,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5303,\"Name\":\"Get Info\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'getinfo';\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":13,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965018}],"Tags":[{"Id":2086,"Name":"fourteenthCommand","BackendAction":"CommandPriority","Value":"13"}]},{"Id":5302,"Name":"Movement","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"var configs = [];\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nif (params.Movement.EnableDisableMovement === \"false\") {\n command += '12106:0';\n} else if (params.Movement.EnableDisableMovement === \"true\") {\n command += '12106:1;12108:0' + ';12107:' + params.Movement.Timeout;\n}\nif (params.NoMovement.EnableDisableNoMovement === \"false\") {\n command += '12106:0';\n} else if (params.NoMovement.EnableDisableNoMovement === \"true\") {\n command += '12106:1;12108:1' + ';12107:' + params.NoMovement.Timeout; + '12109:' + params.NoMovement.PreAlarm;\n}\ncommand = ascii_to_hexa(command);\n//var command = ascii_to_hexa('setparam 1170:1;1171:1;1172:+447845658205')\n//var command = ascii_to_hexa('getinfo')\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\n//console.log(x)\ny = (('00000000' + x.toString(16)).slice(-8));\n//console.log(y)\ncommandSize = y;\n//console.log(commandSize.length)\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\n//console.log(x2)\ny2 = (('00000000' + x2.toString(16)).slice(-8));\n//console.log(y2)\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\n//prueba = hexStringToString('0C010500000009676574696E666F0D0A01')\n//console.log(CRC16(prueba).toString(16).toUpperCase())\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\n//console.log(message)\nAddValue(\"data\", message);\n//AddValue(\"data\", 'test');\n//msg.push(message);\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}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":19,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5302,\"Name\":\"Movement\",\"TemplateSMS\":null,\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.Movement.EnableDisableMovement === \\\"false\\\") {\\n command += '12106:0';\\n} else if (params.Movement.EnableDisableMovement === \\\"true\\\") {\\n command += '12106:1;12108:0' + ';12107:' + params.Movement.Timeout;\\n}\\nif (params.NoMovement.EnableDisableNoMovement === \\\"false\\\") {\\n command += '12106:0';\\n} else if (params.NoMovement.EnableDisableNoMovement === \\\"true\\\") {\\n command += '12106:1;12108:1' + ';12107:' + params.NoMovement.Timeout; + '12109:' + params.NoMovement.PreAlarm;\\n}\\ncommand = ascii_to_hexa(command);\\n//var command = ascii_to_hexa('setparam 1170:1;1171:1;1172:+447845658205')\\n//var command = ascii_to_hexa('getinfo')\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\n//console.log(x)\\ny = (('00000000' + x.toString(16)).slice(-8));\\n//console.log(y)\\ncommandSize = y;\\n//console.log(commandSize.length)\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\n//console.log(x2)\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\n//console.log(y2)\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\n//prueba = hexStringToString('0C010500000009676574696E666F0D0A01')\\n//console.log(CRC16(prueba).toString(16).toUpperCase())\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\n//console.log(message)\\nAddValue(\\\"data\\\", message);\\n//AddValue(\\\"data\\\", 'test');\\n//msg.push(message);\\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}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":19,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965150},{"Type":1,"NewValue":"{\"Id\":5302,\"Name\":\"Movement\",\"TemplateSMS\":null,\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\n//enable scario settings if either params is true\\nif (params.Movement.EnableDisableMovement === \\\"true\\\" || params.NoMovement.EnableDisableNoMovement === \\\"true\\\") {\\n command += '12106:1;';\\n if (params.Movement.EnableDisableMovement === \\\"true\\\") {\\n command += '12108:0' + ';12107:' + params.Movement.Timeout;\\n } else if (params.NoMovement.EnableDisableNoMovement === \\\"true\\\") {\\n command += '12108:1' + ';12107:' + params.NoMovement.Timeout; + '12109:' + params.NoMovement.PreAlarm;\\n }\\n} else {\\n command += '12106:0'; //disable movement/no movement scenario\\n}\\ncommand = ascii_to_hexa(command);\\n//var command = ascii_to_hexa('setparam 1170:1;1171:1;1172:+447845658205')\\n//var command = ascii_to_hexa('getinfo')\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\n//console.log(x)\\ny = (('00000000' + x.toString(16)).slice(-8));\\n//console.log(y)\\ncommandSize = y;\\n//console.log(commandSize.length)\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\n//console.log(x2)\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\n//console.log(y2)\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\n//prueba = hexStringToString('0C010500000009676574696E666F0D0A01')\\n//console.log(CRC16(prueba).toString(16).toUpperCase())\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\n//console.log(message)\\nAddValue(\\\"data\\\", message);\\n//AddValue(\\\"data\\\", 'test');\\n//msg.push(message);\\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}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":19,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728916105}],"Tags":[{"Id":2091,"Name":"eleventhCommand","BackendAction":"CommandPriority","Value":"19"}]},{"Id":5301,"Name":"Speed Dial Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\n//6001: phone number\n//13017: Button 1 behaviour (8 call)\n//13037: Call to\nif (params.SpeedDialButton.EnableDisableSpeedDialButton == 'true') {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n} else {\n command += '6001:;13017:0';\n}\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":24,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5301,\"Name\":\"Speed Dial Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\n//6001: phone number\\n//13017: Button 1 behaviour (8 call)\\n//13037: Call to\\nif (params.SpeedDialButton.EnableDisableSpeedDialButton == 'true') {\\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\\n} else {\\n command += '6001:;13017:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":24,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965565}],"Tags":[{"Id":2099,"Name":"twentyfifthCommand","BackendAction":"CommandPriority","Value":"24"}]},{"Id":5300,"Name":"White List","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nvar count = 4000;\nfor (var contact in params.WhiteList) {\n command += count + ':' + params.WhiteList[contact].Number + ';';\n count++;\n}\n//Delete last character\ncommand = command.slice(0, -1);\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":25,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5300,\"Name\":\"White List\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nvar count = 4000;\\nfor (var contact in params.WhiteList) {\\n command += count + ':' + params.WhiteList[contact].Number + ';';\\n count++;\\n}\\n//Delete last character\\ncommand = command.slice(0, -1);\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":25,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965596}],"Tags":[{"Id":2100,"Name":"twentysixthCommand","BackendAction":"CommandPriority","Value":"25"}]},{"Id":5299,"Name":"OverSpeeding Options","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nif (params.OverSpeedingSettings.EnableDisableOverSpeedingSettings == 'true') {\n command += '11100:2';\n if (params.OverSpeedingSettings.MaxSpeed) {\n command += ';11104:' + Math.round(params.OverSpeedingSettings.MaxSpeed / 3.6);\n }\n} else {\n command += '11100:0';\n}\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\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}\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":21,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5299,\"Name\":\"OverSpeeding Options\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.OverSpeedingSettings.EnableDisableOverSpeedingSettings == 'true') {\\n command += '11100:2';\\n if (params.OverSpeedingSettings.MaxSpeed) {\\n command += ';11104:' + Math.round(params.OverSpeedingSettings.MaxSpeed / 3.6);\\n }\\n} else {\\n command += '11100:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\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}\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":21,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965170}],"Tags":[{"Id":2092,"Name":"twentysecondCommand","BackendAction":"CommandPriority","Value":"21"}]},{"Id":5298,"Name":"Initialise from Factory Settings","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar command = '';\nvar commandSMS = '';\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\n var zero = '00000000';\n var packetLengt = '';\n var codec = '0C';\n var quantityOfCommands = '01';\n var commandType = '05';\n var commandSize = '';\n command = '';\n command = 'setparam ';\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\n command += '13050:100;'; //13050(Indication Vloume %), \n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\n if (params.CallSettings.OneWayCall == 'true') {\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n } else {\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\n }\n commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \n if (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n command += '13020:25;13021:26;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n } else {\n command += '13020:0;13021:0;';\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n }\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \"true\") {\n command += '13019:2;13022:3;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n } else {\n command += '13019:0;13022:0;';\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:1;14320:1;14173:0;14323:0;';\n }\n }\n if (params.ReportPositionByButton.ReportPositionByButton === \"true\") {\n command += '13048:2;13049:16;';\n } else {\n command += '13049:0;';\n }\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \"true\") {\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\n } else {\n command += '6001:;13017:0;';\n }\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\n command = ascii_to_hexa(command);\n var commandEndSymbol = '0D0A'\n var quantityOfCommands = '01'\n var CRC = ''\n x = (command.length + commandEndSymbol.length) / 2\n y = (('00000000' + x.toString(16)).slice(-8))\n commandSize = y\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\n y2 = (('00000000' + x2.toString(16)).slice(-8))\n packetLengt = y2\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\n}\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":4,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5298,\"Name\":\"Initialise from Factory Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n var zero = '00000000';\\n var packetLengt = '';\\n var codec = '0C';\\n var quantityOfCommands = '01';\\n var commandType = '05';\\n var commandSize = '';\\n command = '';\\n command = 'setparam ';\\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\\n command += '13050:100;'; //13050(Indication Vloume %), \\n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\\n if (params.CallSettings.OneWayCall == 'true') {\\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n } else {\\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n }\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \\n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \\n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \\n if (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n command += '13020:25;13021:26;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n } else {\\n command += '13020:0;13021:0;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n }\\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \\\"true\\\") {\\n command += '13019:2;13022:3;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n } else {\\n command += '13019:0;13022:0;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n }\\n if (params.ReportPositionByButton.ReportPositionByButton === \\\"true\\\") {\\n command += '13048:2;13049:16;';\\n } else {\\n command += '13049:0;';\\n }\\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \\\"true\\\") {\\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\\n } else {\\n command += '6001:;13017:0;';\\n }\\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\\n command = ascii_to_hexa(command);\\n var commandEndSymbol = '0D0A'\\n var quantityOfCommands = '01'\\n var CRC = ''\\n x = (command.length + commandEndSymbol.length) / 2\\n y = (('00000000' + x.toString(16)).slice(-8))\\n commandSize = y\\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\n y2 = (('00000000' + x2.toString(16)).slice(-8))\\n packetLengt = y2\\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\n}\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":4,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965096},{"Type":1,"NewValue":"{\"Id\":5298,\"Name\":\"Initialise from Factory Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n var zero = '00000000';\\n var packetLengt = '';\\n var codec = '0C';\\n var quantityOfCommands = '01';\\n var commandType = '05';\\n var commandSize = '';\\n command = '';\\n command = 'setparam ';\\n command += '107:1;102:1;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):1(GPS Sleep Mode), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\\n command += '13050:100;'; //13050(Indication Vloume %), \\n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\\n command += '136:2'; //Beacon record: No Send\\n command += '13023:29'; //13023(Button3 1 Click):30(On DemandTRacking On)\\n if (params.CallSettings.OneWayCall == 'true') {\\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n } else {\\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n }\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):(ms), 14075(On):(ms), 14076(Off):(ms), 14077(Repeat):(ms)\\n command += '14080:1;14082:;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):(ms), 14085(On):(ms), 14086(Off):(ms), 14087(Repeat):(ms)\\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):(ms), 14191(Enable in Sleep mode)\\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1480-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \\n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1480-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \\n command += '13086:1;'; //13086(PoerON/Off event):1(enabled)\\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1480-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \\n if (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n command += '13020:25;13021:26;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n } else {\\n command += '13020:0;13021:0;';\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n }\\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \\\"true\\\") {\\n command += '13019:2;13022:3;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n } else {\\n command += '13019:0;13022:0;';\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:1;14320:1;14173:0;14323:0;';\\n }\\n }\\n if (params.ReportPositionByButton.ReportPositionByButton === \\\"true\\\") {\\n command += '13048:2;13049:16;';\\n } else {\\n command += '13049:0;';\\n }\\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \\\"true\\\") {\\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;';\\n } else {\\n command += '6001:;13017:0;';\\n }\\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\\n command = ascii_to_hexa(command);\\n var commandEndSymbol = '0D0A'\\n var quantityOfCommands = '01'\\n var CRC = ''\\n x = (command.length + commandEndSymbol.length) / 2\\n y = (('00000000' + x.toString(16)).slice(-8))\\n commandSize = y\\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\n y2 = (('00000000' + x2.toString(16)).slice(-8))\\n packetLengt = y2\\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\n}\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":4,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728300037},{"Type":1,"NewValue":"{\"Id\":5298,\"Name\":\"Initialise from Factory Settings\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar command = '';\\nvar commandSMS = '';\\nif (params.InitialiseFromFactorySettings.InitialiseFromFactorySettings == 'true') {\\n var zero = '00000000';\\n var packetLengt = '';\\n var codec = '0C';\\n var quantityOfCommands = '01';\\n var commandType = '05';\\n var commandSize = '';\\n command = '';\\n command = 'setparam ';\\n command += '107:1;102:3;103:10;4199:+447781482635;'; //107(Records Saving/Sending:1(Always), 102(Sleep Mode):3(Online Deep Sleep), 103(Sleep timeout):10, 4199(Authorised number) 4000-4199:(Essendex number))\\n command += '13050:100;'; //13050(Indication Vloume %), \\n command += '113:1;109:14;14170:1;'; //113(Data Protocol0):1(Codec8 Extended), 109(GNSS Source):14(GPS, GLONASS and Galileo), 14070(Enable Pre Alarm in Sleep Mode):1(Enabled)\\n command += '136:2'; //Beacon record: No Send\\n if (params.CallSettings.OneWayCall == 'true') {\\n command += '14030:0;14240:0;13051:0;13052:0;'; //14030(Incoming Call):0(Disabled), //14240(Outgoing call indication):0(Disabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n } else {\\n command += '14030:1;14240:1;13051:100;13052:100;'; //14030(Incoming Call):1(ENabled), //14240(Outgoing call indication):1(Enabled), 13051(Normal Speed Volume %), 13052(Loud Speaker Volume %)\\n }\\n commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n // incoming call settings\\n command += '14032:3;14033:3;14031:1;14034:1000;14035:100;14036:100;14037:3;'; //14032(LED):3(GSM Green), 14033(Additional indication):3(Vibration and Audio), 14031(Enable in Sleep Mode):1(Enabled),14034(Period):1000(ms), 14035(On):(ms), 14036(Off):(ms), 14037(Repeat)\\n // outgoing call\\n command += '14241:1;14310:1;14311:1;'; //14241(Enabled in Sleep mode):1(Enabled), 14310(Call active indication):1(Enabled), 14311(Enable in sleep mode):1(Enable)\\n //GNSS indication (GPS system)\\n command += '14070:1;14072:4;14074:30000;14075:100;14076:100;14077:3;'; //14070(No GPS Fix):1(Enabled), 14072(LED):4(GNSS Red), 14074(Period):30000(ms), 14075(On):100(ms), 14076(Off):100(ms), 14077(Repeat):3(ms)\\n command += '14080:1;14082:5;14084:60000;14085:100;14086:100;14087:3;'; //14080(GPS Fix):1(Enabled), 14082(LED):5(GNSS Green), 14084(Period):60000(ms), 14085(On):100(ms), 14086(Off):100(ms), 14087(Repeat):3\\n // Iam alive indication\\n command += '14190:1;14192:5;14191:1;14194:10000;'; //14190(I Am Alive):1(Enabled), 14192(LED):5(GNSS Green), 14194(Period):10000(ms), 14191(Enable in Sleep mode)\\n //Amber Active indication\\n command += '14482:3;14483:0;14481:1;14484:2000;14485:500;14486:0;14487:0;'; //1448-Amber active. 14482-LED(3-GSM Green). 14483-Additional Indicator(0-Nothing) . 14481-Enable in Sleep(1-Enable) . 14484-Period(2000) . 14485-On(500) . 14486-Off(0) . 14487-Period(0) \\n command += '14492:3;14491:1;14494:0;14495:200;14496:2000;14497:0;'; //1449-Amber pre-alarm. 14482-LED(3-GSM Green). 14483-Additional Indicator(1-Vibration) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(2000) . 14487-Period(0) \\n //enable power off event\\n command += '13086:1;'; //13086(PowerON/Off event):1(enabled)\\n //Amber alarm indication\\n command += '14502:2;14501:1;14504:0;14505:200;14506:100;14507:0;'; //1450-Amber alarm. 14482-LED(2-GSM Red). 14483-Additional Indicator(3-Vibration and audio) . 14481-Enable in Sleep(1-Enable) . 14484-Period(0) . 14485-On(200) . 14486-Off(100) . 14487-Period(0) \\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';'; // amber alert timeout\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';'; // amber alert pre alarm\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") { // disable after alarm\\n command += '607:1;';\\n } else {\\n command += '607:0;';\\n }\\n if (params.SOSSettings.SOSAction == '0') { // link alarm to general SOS setting i.e. Don't call if call diabled there\\n if (params.AmberAlert.InitialCall === \\\"true\\\") { // initial call when timer is enabled\\n command += '605:1;'; // use number (1) for this call\\n } else {\\n command += '605:0;';\\n }\\n command += '606:1;'; // use number (1) for alarm call\\n } else {\\n command += '605:0;'; // no initial call\\n command += '606:0;'; // no alarm call\\n }\\n if (params.AmberAlert.Indication == '0') { //vibrate and sound\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;'; //14480:1 amber active indication enabled. 14490:1 amber prealarm enabled. 14500:1 amber alarm enabled. 14493:1 pre alarm vibration . 14503:3 alarm vibration and sound\\n } else if (params.AmberAlert.Indication == '1') { //vibrate only \\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;'; //14480:1 amber active indication enabled. 14490:1 amber prealarm enabled. 14500:1 amber alarm enabled. 14493:1 pre alarm vibration . 14503:1 alarm vibration only\\n } else if (params.AmberAlert.Indication == '2') { //nothing\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;'; //14480:1 amber active indication enabled. 14490:1 amber prealarm enabled. 14500:1 amber alarm enabled. 14493:0 no viration and alarm . 14503:0 no vibration and sound\\n }\\n command += '603:1;'; // amber alert priority: record\\n if (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n command += '13020:25;13021:26;'; //13020(Button 2 Click):25(Amber alert ON), 13021(Button 2 DoubleClick):26(Amber alert OFF) (documetation is wrong)\\n } else { // disable amber alert\\n command += '13020:0;13021:0;'; //13020(Button 2 Click):0(Nothing), 13021(Button 2 DoubleClick):0(Nothing)\\n }\\n // fall alarm settings\\n command += '14170:1;14320:1;'; //14170:1 pre-alam indeication enabled 14320:1; man-down indication enabled \\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14173:1;14323:3;'; //14173:1; pre alarm vibration 14323:3 mandown alarm vibration and sound\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14173:1;14323:1;'; //14173:1; pre alarm vibration 14323:1 mandown alarm vibration only\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14173:0;14323:0;'; //14173:0; pre alarm vibration 14323:0 mandown alarm nothing\\n }\\n if (params.FallAlarmSettings.EnableDisableFallAlarmSettings === \\\"true\\\") {\\n command += '13019:2;13022:3;'; //13019(Button 1 Long Click):2(Fall Alarm ON), 13022(Button 1 Long click):3(Fall Alarm OFF)\\n } else {\\n command += '13019:0;13022:0;'; //13019(Button 1 Long Click):0(Nothing), 13022(Button 1 Long click):0(Nothing)\\n }\\n //fall alarm missing params: angle, anable by button, hor/vert, pre alarm, timout\\n if (params.ReportPositionByButton.ReportPositionByButton == 'true') {\\n //Configure the Button to send position. Configure also the vibration when pressed\\n command += '13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\\n } else {\\n command += '13049:0';\\n }\\n if (params.SpeedDialButton.EnableDisableSpeedDialButton === \\\"true\\\") {\\n command += '6001:' + params.SpeedDialButton.PhoneNumber + ';13017:8;13037:2;'; //6001; is first GSM predefeined number, 13017:8: button 1 click, call to predefined number 2?\\n } else {\\n command += '6001:;13017:0;'; //6001; reset GSM predefeined number, 13017:0: button 1 click, do nothing\\n }\\n // define buttons \\n command += '13014:16;13015:18;13016:23;'; //13014(Power Button 1 Click):(Answer), 13014(Power Button 1 Click):(Hang-up), 13014(Power Button 1 Click):(Power Off)\\n command += '13011:1;13012:0;13013:0;'; //13011(Alarm Button 1 Click):(Answer), 13015(Alarm Button 1 Click):(None), 13016(Alarm Button 1 Click):(None)\\n command += '13018:0;'; //13017(Button1 1 Click):(None), 13018(Button1 1 Click):(None), 13019(Button1 1 Click):(None)\\n command += '13023:0;13024:0;13025:0;'; //13023(Button3 1 Click):(None), 13024(Button3 1 Click):(None), 13025(Button3 1 Click):(None)\\n command += '50040:2;50041:5;'; //50040(I/O Sleep Mode Priority):2(High), 50041(Sleep Mode Operand):5(On Change)\\n command += '1000:60;1001:60;'; //1000(Open link timeout(s)), 1001(Response Timeout(s))\\n command += '14000:1;14003:1;14001:1;14004:2000;14005:2000;'; //14000(GSM Error Scenario):1(Enable), 14003(Additional Indication):1(Vibration), 14001(Enable in sleep):1(Enable), 14004(Period):ms, 14005(On):ms\\n command = ascii_to_hexa(command);\\n var commandEndSymbol = '0D0A'\\n var quantityOfCommands = '01'\\n var CRC = ''\\n x = (command.length + commandEndSymbol.length) / 2\\n y = (('00000000' + x.toString(16)).slice(-8))\\n commandSize = y\\n x2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\n y2 = (('00000000' + x2.toString(16)).slice(-8))\\n packetLengt = y2\\n stringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\n CRC = CRC16(stringToCRC).toString(16).toUpperCase()\\n CRC = ('00000000' + CRC.toString(16)).slice(-8)\\n var message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\n}\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":4,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1730898009}],"Tags":[{"Id":2090,"Name":"fifthCommand","BackendAction":"CommandPriority","Value":"4"}]},{"Id":5297,"Name":"SOS Options","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nif (params.SOSSettings.SOSNumber) {\n command += '6000:' + params.SOSSettings.SOSNumber;\n command += ';4198:' + params.SOSSettings.SOSNumber;\n command += ';11711:1;4199:+447781482635;';\n}\nif (params.SOSSettings.SOSAction == '0') {\n command += '11712:1;12105:1;606:1;';\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n}\nif (params.SOSSettings.SOSAction == '1') {\n command += '11712:0;12105:0;606:0;605:0';\n}\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":11,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5297,\"Name\":\"SOS Options\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.SOSSettings.SOSNumber) {\\n command += '6000:' + params.SOSSettings.SOSNumber;\\n command += ';4198:' + params.SOSSettings.SOSNumber;\\n command += ';11711:1;4199:+447781482635;';\\n}\\nif (params.SOSSettings.SOSAction == '0') {\\n command += '11712:1;12105:1;606:1;';\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n}\\nif (params.SOSSettings.SOSAction == '1') {\\n command += '11712:0;12105:0;606:0;605:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":11,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965538}],"Tags":[{"Id":2098,"Name":"twelfthCommand","BackendAction":"CommandPriority","Value":"11"}]},{"Id":5296,"Name":"Amber Alert Options","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nif (params.AmberAlert.EnableDisableAmberAlert === \"true\") {\n //13020 - Button 2. 1 click (25 - Amber Alert On)`\n //13021 - Button 2. 2 click (26 - Amber Alert Off)\n command += '13020:25;13021:26;';\n //14420 - Key 2 Action Activated(1-Enabled), 14430 - Key 2 Action Deactivated(1-Enabled)\n command += '14420:1;14430:1';\n //603-Order Priority. 1(Record)\n command += '603:1;';\n if (params.AmberAlert.Timeout) {\n command += '601:' + params.AmberAlert.Timeout + ';';\n }\n if (params.AmberAlert.PreAlarm) {\n command += '602:' + params.AmberAlert.PreAlarm + ';';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.AmberAlert.DisableAfterAlarm === \"true\") {\n command += '607:0;';\n } else {\n command += '607:1;';\n }\n if (params.SOSSettings.SOSAction == '0') {\n if (params.AmberAlert.InitialCall === \"true\") {\n command += '605:1;';\n } else {\n command += '605:0;';\n }\n } else {\n command += '605:0;';\n }\n if (params.AmberAlert.Indication == '0') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\n } else if (params.AmberAlert.Indication == '1') {\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\n } else if (params.AmberAlert.Indication == '2') {\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\n }\n} else if (params.AmberAlert.EnableDisableAmberAlert === \"false\") {\n command += '13020:0;13021:0;';\n}\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":12,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5296,\"Name\":\"Amber Alert Options\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n //13020 - Button 2. 1 click (25 - Amber Alert On)`\\n //13021 - Button 2. 2 click (26 - Amber Alert Off)\\n command += '13020:25;13021:26;';\\n //14420 - Key 2 Action Activated(1-Enabled), 14430 - Key 2 Action Deactivated(1-Enabled)\\n command += '14420:1;14430:1';\\n //603-Order Priority. 1(Record)\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n } else {\\n command += '605:0;';\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n} else if (params.AmberAlert.EnableDisableAmberAlert === \\\"false\\\") {\\n command += '13020:0;13021:0;';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":12,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725964547},{"Type":1,"NewValue":"{\"Id\":5296,\"Name\":\"Amber Alert Options\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n //13020 - Button 2. 1 click (25 - Amber Alert On)`\\n //13021 - Button 2. 2 click (26 - Amber Alert Off)\\n command += '13020:25;13021:26;';\\n //14420 - Key 2 Action Activated(1-Enabled), 14430 - Key 2 Action Deactivated(1-Enabled)\\n command += '14420:1;14430:1';\\n //603-Order Priority. 1(Record)\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:0;';\\n } else {\\n command += '607:1;';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:1;';\\n } else {\\n command += '607:0;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n command += '606:1;';\\n } else {\\n command += '605:0;';\\n command += '606:0;'; // no alarm call\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n} else if (params.AmberAlert.EnableDisableAmberAlert === \\\"false\\\") {\\n command += '13020:0;13021:0;';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":12,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728472110},{"Type":1,"NewValue":"{\"Id\":5296,\"Name\":\"Amber Alert Options\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.AmberAlert.EnableDisableAmberAlert === \\\"true\\\") {\\n //13020 - Button 2. 1 click (25 - Amber Alert On)`\\n //13021 - Button 2. 2 click (26 - Amber Alert Off)\\n command += '13020:25;13021:26;';\\n //14420 - Key 2 Action Activated(1-Enabled), 14430 - Key 2 Action Deactivated(1-Enabled)\\n command += '14420:1;14430:1';\\n //603-Order Priority. 1(Record)\\n command += '603:1;';\\n if (params.AmberAlert.Timeout) {\\n command += '601:' + params.AmberAlert.Timeout + ';';\\n }\\n if (params.AmberAlert.PreAlarm) {\\n command += '602:' + params.AmberAlert.PreAlarm + ';';\\n }\\n if (params.AmberAlert.DisableAfterAlarm === \\\"true\\\") {\\n command += '607:1;';\\n } else {\\n command += '607:0;';\\n }\\n if (params.SOSSettings.SOSAction == '0') {\\n if (params.AmberAlert.InitialCall === \\\"true\\\") {\\n command += '605:1;';\\n } else {\\n command += '605:0;';\\n }\\n command += '606:1;';\\n } else {\\n command += '605:0;';\\n command += '606:0;'; // no alarm call\\n }\\n if (params.AmberAlert.Indication == '0') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:3;';\\n } else if (params.AmberAlert.Indication == '1') {\\n command += '14480:1;14490:1;14500:1;14493:1;14503:1;';\\n } else if (params.AmberAlert.Indication == '2') {\\n command += '14480:1;14490:1;14500:1;14493:0;14503:0;';\\n }\\n} else if (params.AmberAlert.EnableDisableAmberAlert === \\\"false\\\") {\\n command += '13020:0;13021:0;';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":12,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728473538}],"Tags":[{"Id":2077,"Name":"thirteenthCommand","BackendAction":"CommandPriority","Value":"12"}]},{"Id":5295,"Name":"Report Position By Button","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = '';\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\n //Configure the Button to send position. Configure also the vibration when pressed\n command = 'setparam 13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\n} else {\n command = 'setparam 13049:0';\n}\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":23,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5295,\"Name\":\"Report Position By Button\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = '';\\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\\n //Configure the Button to send position. Configure also the vibration when pressed\\n command = 'setparam 13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\\n} else {\\n command = 'setparam 13049:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":23,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965509},{"Type":1,"NewValue":"{\"Id\":5295,\"Name\":\"Report Position By Button\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = '';\\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\\n //Configure the Button to send position. Configure also the vibration when pressed\\n //setparam 13048:2;13049:16 configures the Button IO Feature, not the button itself, should be: 13023:14\\n // command = 'setparam 13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\\n command = '13023:14;14440:1;14442:5;14443:1;14444:1000;14445:300;14446:300;14447:1';\\n} else {\\n command = 'setparam 13049:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":23,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1727196199},{"Type":1,"NewValue":"{\"Id\":5295,\"Name\":\"Report Position By Button\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = '';\\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\\n //Configure the Button to send position. Configure also the vibration when pressed\\n //setparam 13048:2;13049:16 configures the Button IO Feature, not the button itself, should be: 13023:14\\n // command = 'setparam 13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\\n command = 'setparam 13023:14;14440:1;14442:5;14443:1;14444:1000;14445:300;14446:300;14447:1';\\n} else {\\n command = 'setparam 13049:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":23,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1727197226},{"Type":1,"NewValue":"{\"Id\":5295,\"Name\":\"Report Position By Button\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = '';\\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\\n //Configure the Button to send position. Configure also the vibration when pressed\\n //setparam 13048:2;13049:16 configures the Button IO Feature, not the button itself, should be: 13023:14\\n // command = 'setparam 13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\\n command = 'setparam 13023:11;14440:1;14442:5;14443:1;14444:1000;14445:300;14446:300;14447:1';\\n} else {\\n command = 'setparam 13049:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":23,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1727197539},{"Type":1,"NewValue":"{\"Id\":5295,\"Name\":\"Report Position By Button\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = '';\\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\\n //Configure the Button to send position. Configure also the vibration when pressed\\n //setparam 13048:2;13049:16 configures the Button IO Feature, not the button itself, should be: 13023:14\\n // command = 'setparam 13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\\n command = '13023:16;14440:1;14442:5;14443:1;14444:1000;14445:300;14446:300;14447:1';\\n} else {\\n command = 'setparam 13049:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":23,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1727774996},{"Type":1,"NewValue":"{\"Id\":5295,\"Name\":\"Report Position By Button\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = '';\\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\\n //Configure the Button to send position. Configure also the vibration when pressed\\n //setparam 13048:2;13049:16 configures the Button IO Feature, not the button itself, should be: 13023:14\\n // command = 'setparam 13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\\n command = '13023:14;14440:1;14442:5;14443:1;14444:1000;14445:300;14446:300;14447:1';\\n} else {\\n command = 'setparam 13049:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":23,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1727775197},{"Type":1,"NewValue":"{\"Id\":5295,\"Name\":\"Report Position By Button\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = '';\\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\\n //Configure the Button to send position. Configure also the vibration when pressed\\n //setparam 13048:2;13049:16 configures the Button IO Feature, not the button itself, should be: 13023:29\\n // command = 'setparam 13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\\n command = '13023:29;14440:1;14442:5;14443:1;14444:1000;14445:300;14446:300;14447:1';\\n} else {\\n command = 'setparam 13049:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":23,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728299909},{"Type":1,"NewValue":"{\"Id\":5295,\"Name\":\"Report Position By Button\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\\n //Configure the Button to send position. Configure also the vibration when pressed\\n //setparam 13048:2;13049:16 configures the Button IO Feature, not the button itself, should be: 13023:29\\n // command = 'setparam 13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\\n command += '13023:29;14440:1;14442:5;14443:1;14444:1000;14445:300;14446:300;14447:1';\\n} else {\\n command += '13049:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":23,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728301733},{"Type":1,"NewValue":"{\"Id\":5295,\"Name\":\"Report Position By Button\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.ReportPositionByButton.ReportPositionByButton == 'true') {\\n command += '13048:2;13049:16;14440:1;14442:5;14443:1;14444:300;14445:300;14446:1000;14447:0';\\n} else {\\n command += '13049:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":23,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728391825}],"Tags":[{"Id":2096,"Name":"twentyforthCommand","BackendAction":"CommandPriority","Value":"23"}]},{"Id":5294,"Name":"Incoming Call Action","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000'\nvar packetLengt = ''\nvar codec = '0C'\nvar quantityOfCommands = '01'\nvar commandType = '05'\nvar commandSize = ''\nvar command = 'setparam '\nvar vibration = 0;\nvar ringtone = 0;\nvar behaviour = 0;\nif (params.IncomingCalls.Action) {\n command += '3005:' + params.IncomingCalls.Action + ';'\n}\nif (params.IncomingCalls.Vibration == 'true') {\n vibration = 1;\n}\nif (params.IncomingCalls.Ringtone == 'true') {\n ringtone = 2;\n}\nbehaviour = ringtone + vibration\ncommand += '14033:' + behaviour + ';'\nvar commandSMS = ''\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\n} else {\n commandSMS = ` ${command}`\n}\ncommand = ascii_to_hexa(command)\nvar commandEndSymbol = '0D0A'\nvar quantityOfCommands = '01'\nvar CRC = ''\nx = (command.length + commandEndSymbol.length) / 2\ny = (('00000000' + x.toString(16)).slice(-8))\ncommandSize = y\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\ny2 = (('00000000' + x2.toString(16)).slice(-8))\npacketLengt = y2\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":15,"SendAttempts":2,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5294,\"Name\":\"Incoming Call Action\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000'\\nvar packetLengt = ''\\nvar codec = '0C'\\nvar quantityOfCommands = '01'\\nvar commandType = '05'\\nvar commandSize = ''\\nvar command = 'setparam '\\nvar vibration = 0;\\nvar ringtone = 0;\\nvar behaviour = 0;\\nif (params.IncomingCalls.Action) {\\n command += '3005:' + params.IncomingCalls.Action + ';'\\n}\\nif (params.IncomingCalls.Vibration == 'true') {\\n vibration = 1;\\n}\\nif (params.IncomingCalls.Ringtone == 'true') {\\n ringtone = 2;\\n}\\nbehaviour = ringtone + vibration\\ncommand += '14033:' + behaviour + ';'\\nvar commandSMS = ''\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\\n} else {\\n commandSMS = ` ${command}`\\n}\\ncommand = ascii_to_hexa(command)\\nvar commandEndSymbol = '0D0A'\\nvar quantityOfCommands = '01'\\nvar CRC = ''\\nx = (command.length + commandEndSymbol.length) / 2\\ny = (('00000000' + x.toString(16)).slice(-8))\\ncommandSize = y\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\ny2 = (('00000000' + x2.toString(16)).slice(-8))\\npacketLengt = y2\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":15,\"SendAttempts\":2,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965073},{"Type":1,"NewValue":"{\"Id\":5294,\"Name\":\"Incoming Call Action\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000'\\nvar packetLengt = ''\\nvar codec = '0C'\\nvar quantityOfCommands = '01'\\nvar commandType = '05'\\nvar commandSize = ''\\nvar command = 'setparam '\\nvar vibration = 0;\\nvar ringtone = 0;\\nvar behaviour = 0;\\n// enable or disable incoming calls\\nif (params.IncomingCalls.Action) {\\n command += '3005:' + params.IncomingCalls.Action + ';'\\n}\\n// 14030 - Incoming call Indicator (0 Disabled, 1 Enabled)\\nif (params.CallSettings.OneWayCall == 'true') {\\n command += '14030:1;'\\n} else {\\n command += '14030:0;'\\n}\\nif (params.IncomingCalls.Vibration == 'true') {\\n vibration = 1;\\n}\\nif (params.IncomingCalls.Ringtone == 'true') {\\n ringtone = 2;\\n}\\nbehaviour = ringtone + vibration\\ncommand += '14033:' + behaviour + ';'\\nvar commandSMS = ''\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\\n} else {\\n commandSMS = ` ${command}`\\n}\\ncommand = ascii_to_hexa(command)\\nvar commandEndSymbol = '0D0A'\\nvar quantityOfCommands = '01'\\nvar CRC = ''\\nx = (command.length + commandEndSymbol.length) / 2\\ny = (('00000000' + x.toString(16)).slice(-8))\\ncommandSize = y\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\ny2 = (('00000000' + x2.toString(16)).slice(-8))\\npacketLengt = y2\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":15,\"SendAttempts\":2,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728319152},{"Type":1,"NewValue":"{\"Id\":5294,\"Name\":\"Incoming Call Action\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000'\\nvar packetLengt = ''\\nvar codec = '0C'\\nvar quantityOfCommands = '01'\\nvar commandType = '05'\\nvar commandSize = ''\\nvar command = 'setparam '\\nvar vibration = 0;\\nvar ringtone = 0;\\nvar behaviour = 0;\\n// enable or disable incoming calls\\nif (params.IncomingCalls.Action) {\\n command += '3005:' + params.IncomingCalls.Action + ';'\\n}\\n// 14030 - Incoming call Indicator (0 Disabled, 1 Enabled)\\nif (params.CallSettings.OneWayCall == 'true') {\\n command += '14030:0;'\\n} else {\\n command += '14030:1;'\\n}\\nif (params.IncomingCalls.Vibration == 'true') {\\n vibration = 1;\\n}\\nif (params.IncomingCalls.Ringtone == 'true') {\\n ringtone = 2;\\n}\\nbehaviour = ringtone + vibration\\ncommand += '14033:' + behaviour + ';'\\nvar commandSMS = ''\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\\n} else {\\n commandSMS = ` ${command}`\\n}\\ncommand = ascii_to_hexa(command)\\nvar commandEndSymbol = '0D0A'\\nvar quantityOfCommands = '01'\\nvar CRC = ''\\nx = (command.length + commandEndSymbol.length) / 2\\ny = (('00000000' + x.toString(16)).slice(-8))\\ncommandSize = y\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\ny2 = (('00000000' + x2.toString(16)).slice(-8))\\npacketLengt = y2\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":15,\"SendAttempts\":2,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728319497}],"Tags":[{"Id":2089,"Name":"sixteenthCommand","BackendAction":"CommandPriority","Value":"15"}]},{"Id":5293,"Name":"Cycle Interval","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nvar num = 10000;\nvar minPeriod = params.CycleSettings.CycleInterval * 60;\nvar minSavedRecords = 1;\nvar sendPeriod = 60;\nvar minDistance = 0;\nvar minAngle = 0;\nvar minSpeedDelta = 0;\nvar stop = `${num}:${minPeriod};${(num + 4)}:${minSavedRecords};${(num + 5)}:${sendPeriod};`;\nvar moving = `${(num + 50)}:${minPeriod};${(num + 51)}:${minDistance};${(num + 52)}:${minAngle};${(num + 53)}:${minSpeedDelta};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command += stop}`;\n} else {\n commandSMS = ` ${command += stop}`;\n}\ncommand = command.slice(0, -1);\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":27,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5293,\"Name\":\"Cycle Interval\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nvar num = 10000;\\nvar minPeriod = params.CycleSettings.CycleInterval * 60;\\nvar minSavedRecords = 1;\\nvar sendPeriod = 60;\\nvar minDistance = 0;\\nvar minAngle = 0;\\nvar minSpeedDelta = 0;\\nvar stop = `${num}:${minPeriod};${(num + 4)}:${minSavedRecords};${(num + 5)}:${sendPeriod};`;\\n//var moving = `${(num + 50)}:${minPeriod};${(num + 51)}:${minDistance};${(num + 52)}:${minAngle};${(num + 53)}:${minSpeedDelta};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\\nvar moving = `${(num + 50)}:${minPeriod};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command += stop + moving}`;\\n} else {\\n commandSMS = ` ${command += stop + moving}`;\\n}\\ncommand = command.slice(0, -1);\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":27,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725901889},{"Type":1,"NewValue":"{\"Id\":5293,\"Name\":\"Cycle Interval\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nvar num = 10000;\\nvar minPeriod = params.CycleSettings.CycleInterval * 60;\\nvar minSavedRecords = 1;\\nvar sendPeriod = 60;\\nvar minDistance = 0;\\nvar minAngle = 0;\\nvar minSpeedDelta = 0;\\nvar stop = `${num}:${minPeriod};${(num + 4)}:${minSavedRecords};${(num + 5)}:${sendPeriod};`;\\n//var moving = `${(num + 50)}:${minPeriod};${(num + 51)}:${minDistance};${(num + 52)}:${minAngle};${(num + 53)}:${minSpeedDelta};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\\nvar moving = `${(num + 50)}:${minPeriod};${(num + 54)}:${minSavedRecords};${(num + 55)}:${sendPeriod};`;\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command += stop + moving}`;\\n} else {\\n commandSMS = ` ${command += stop + moving}`;\\n}\\ncommand = command.slice(0, -1);\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":27,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725964852},{"Type":1,"NewValue":"{\"Id\":5293,\"Name\":\"Cycle Interval\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"//params = {\\\"CycleSettings\\\":{\\\"CycleInterval\\\":1},\\\"SMSPassword\\\":{\\\"LoginOld\\\":\\\"1234\\\",\\\"PasswordOld\\\":\\\"1234\\\"}};\\nvar configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nconst STOP_MIN_SAVE_HOME_ID = 10000;\\nconst STOP_MIN_SAVE_ROAMING_ID = 10100;\\nconst STOP_MIN_SAVE_UNKNOWN_ID = 10200;\\nconst MOVING_MIN_SAVE_HOME_ID = 10050;\\nconst MOVING_MIN_SAVE_ROAMING_ID = 10150;\\nconst MOVING_MIN_SAVE_UNKNOWN_ID = 10250;\\nvar minPeriod = params.CycleSettings.CycleInterval * 60;\\nvar minSavedRecords = 1;\\nvar sendPeriod = 60;\\nvar minDistance = 0;\\nvar minAngle = 0;\\nvar minSpeedDelta = 0;\\nconst OPENLINK_TIMEOUT_ID = 1000;\\nconst RESPONSE_TIMEOUT_ID = 1001;\\n// config On Stop for Home, Roaming and Unknown. Note, current SIM uses Unknown\\nvar stopCmd = `${STOP_MIN_SAVE_HOME_ID}:${minPeriod};${(STOP_MIN_SAVE_HOME_ID + 4)}:${minSavedRecords};${(STOP_MIN_SAVE_HOME_ID + 5)}:${sendPeriod};`;\\nstopCmd += `${STOP_MIN_SAVE_ROAMING_ID}:${minPeriod};${(STOP_MIN_SAVE_ROAMING_ID + 4)}:${minSavedRecords};${(STOP_MIN_SAVE_ROAMING_ID + 5)}:${sendPeriod};`;\\nstopCmd += `${STOP_MIN_SAVE_UNKNOWN_ID}:${minPeriod};${(STOP_MIN_SAVE_UNKNOWN_ID + 4)}:${minSavedRecords};${(STOP_MIN_SAVE_UNKNOWN_ID + 5)}:${sendPeriod};`;\\n// config On Moving for Home, Roaming and Unknown\\nvar movingCmd = `${(MOVING_MIN_SAVE_HOME_ID)}:${minPeriod};${(MOVING_MIN_SAVE_HOME_ID + 4)}:${minSavedRecords};${(MOVING_MIN_SAVE_HOME_ID + 5)}:${sendPeriod};`;\\nmovingCmd += `${(MOVING_MIN_SAVE_ROAMING_ID)}:${minPeriod};${(MOVING_MIN_SAVE_ROAMING_ID + 4)}:${minSavedRecords};${(MOVING_MIN_SAVE_ROAMING_ID + 5)}:${sendPeriod};`;\\nmovingCmd += `${(MOVING_MIN_SAVE_UNKNOWN_ID)}:${minPeriod};${(MOVING_MIN_SAVE_UNKNOWN_ID + 4)}:${minSavedRecords};${(MOVING_MIN_SAVE_UNKNOWN_ID + 5)}:${sendPeriod};`;\\n// config OpenLinkTimeout and ResponseTimeout. Not: they need to be smaller than sendPeriod or messages will be mushed together\\nvar grpsSettings = `${OPENLINK_TIMEOUT_ID}:${20};${RESPONSE_TIMEOUT_ID}:${20};`;\\ncommand += stopCmd + movingCmd + grpsSettings;\\n//ToDo: SMS is too long!\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = command.slice(0, -1);\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":27,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1727773311},{"Type":1,"NewValue":"{\"Id\":5293,\"Name\":\"Cycle Interval\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"//params = {\\\"CycleSettings\\\":{\\\"CycleInterval\\\":1},\\\"SMSPassword\\\":{\\\"LoginOld\\\":\\\"1234\\\",\\\"PasswordOld\\\":\\\"1234\\\"}};\\nvar configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nconst STOP_MIN_SAVE_HOME_ID = 10000;\\nconst STOP_MIN_SAVE_ROAMING_ID = 10100;\\nconst STOP_MIN_SAVE_UNKNOWN_ID = 10200;\\nconst MOVING_MIN_SAVE_HOME_ID = 10050;\\nconst MOVING_MIN_SAVE_ROAMING_ID = 10150;\\nconst MOVING_MIN_SAVE_UNKNOWN_ID = 10250;\\nvar minPeriod = params.CycleSettings.CycleInterval * 60;\\nvar minSavedRecords = 1;\\nvar sendPeriod = 60;\\nvar minDistance = 0;\\nvar minAngle = 0;\\nvar minSpeedDelta = 0;\\nconst OPENLINK_TIMEOUT_ID = 1000;\\nconst RESPONSE_TIMEOUT_ID = 1001;\\n// config On Stop for Home, Roaming and Unknown. Note, current SIM uses Unknown\\nvar stopCmd = `${STOP_MIN_SAVE_HOME_ID}:${minPeriod};${(STOP_MIN_SAVE_HOME_ID + 4)}:${minSavedRecords};${(STOP_MIN_SAVE_HOME_ID + 5)}:${sendPeriod};`;\\nstopCmd += `${STOP_MIN_SAVE_ROAMING_ID}:${minPeriod};${(STOP_MIN_SAVE_ROAMING_ID + 4)}:${minSavedRecords};${(STOP_MIN_SAVE_ROAMING_ID + 5)}:${sendPeriod};`;\\nstopCmd += `${STOP_MIN_SAVE_UNKNOWN_ID}:${minPeriod};${(STOP_MIN_SAVE_UNKNOWN_ID + 4)}:${minSavedRecords};${(STOP_MIN_SAVE_UNKNOWN_ID + 5)}:${sendPeriod};`;\\n// config On Moving for Home, Roaming and Unknown\\nvar movingCmd = `${(MOVING_MIN_SAVE_HOME_ID)}:${minPeriod};${(MOVING_MIN_SAVE_HOME_ID + 4)}:${minSavedRecords};${(MOVING_MIN_SAVE_HOME_ID + 5)}:${sendPeriod};`;\\nmovingCmd += `${(MOVING_MIN_SAVE_ROAMING_ID)}:${minPeriod};${(MOVING_MIN_SAVE_ROAMING_ID + 4)}:${minSavedRecords};${(MOVING_MIN_SAVE_ROAMING_ID + 5)}:${sendPeriod};`;\\nmovingCmd += `${(MOVING_MIN_SAVE_UNKNOWN_ID)}:${minPeriod};${(MOVING_MIN_SAVE_UNKNOWN_ID + 4)}:${minSavedRecords};${(MOVING_MIN_SAVE_UNKNOWN_ID + 5)}:${sendPeriod};`;\\n// config OpenLinkTimeout and ResponseTimeout. Note: they need to be smaller than sendPeriod or messages will be mushed together, hardcoe to 30sec\\nvar grpsSettings = `${OPENLINK_TIMEOUT_ID}:${30};${RESPONSE_TIMEOUT_ID}:${30};`;\\ncommand += stopCmd + movingCmd + grpsSettings;\\n//ToDo: SMS is too long!\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = command.slice(0, -1);\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":27,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1727776679},{"Type":1,"NewValue":"{\"Id\":5293,\"Name\":\"Cycle Interval\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"//params = {\\\"CycleSettings\\\":{\\\"CycleInterval\\\":1},\\\"SMSPassword\\\":{\\\"LoginOld\\\":\\\"1234\\\",\\\"PasswordOld\\\":\\\"1234\\\"}};\\nvar configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nconst STOP_MIN_SAVE_HOME_ID = 10000;\\nconst STOP_MIN_SAVE_ROAMING_ID = 10100;\\nconst STOP_MIN_SAVE_UNKNOWN_ID = 10200;\\nconst MOVING_MIN_SAVE_HOME_ID = 10050;\\nconst MOVING_MIN_SAVE_ROAMING_ID = 10150;\\nconst MOVING_MIN_SAVE_UNKNOWN_ID = 10250;\\nvar minPeriod = params.CycleSettings.CycleInterval * 60;\\nvar minStopPeriod = minPeriod * 6;\\nvar minSavedRecords = 1;\\nvar sendPeriod = 60;\\nvar minDistance = 0;\\nvar minAngle = 0;\\nvar minSpeedDelta = 0;\\nconst OPENLINK_TIMEOUT_ID = 1000;\\nconst RESPONSE_TIMEOUT_ID = 1001;\\n// config On Stop for Home, Roaming and Unknown. Note, current SIM uses Unknown\\nvar stopCmd = `${STOP_MIN_SAVE_HOME_ID}:${minStopPeriod};${(STOP_MIN_SAVE_HOME_ID + 4)}:${minSavedRecords};${(STOP_MIN_SAVE_HOME_ID + 5)}:${sendPeriod};`;\\nstopCmd += `${STOP_MIN_SAVE_ROAMING_ID}:${minStopPeriod};${(STOP_MIN_SAVE_ROAMING_ID + 4)}:${minSavedRecords};${(STOP_MIN_SAVE_ROAMING_ID + 5)}:${sendPeriod};`;\\nstopCmd += `${STOP_MIN_SAVE_UNKNOWN_ID}:${minStopPeriod};${(STOP_MIN_SAVE_UNKNOWN_ID + 4)}:${minSavedRecords};${(STOP_MIN_SAVE_UNKNOWN_ID + 5)}:${sendPeriod};`;\\n// config On Moving for Home, Roaming and Unknown\\nvar movingCmd = `${(MOVING_MIN_SAVE_HOME_ID)}:${minPeriod};${(MOVING_MIN_SAVE_HOME_ID + 4)}:${minSavedRecords};${(MOVING_MIN_SAVE_HOME_ID + 5)}:${sendPeriod};`;\\nmovingCmd += `${(MOVING_MIN_SAVE_ROAMING_ID)}:${minPeriod};${(MOVING_MIN_SAVE_ROAMING_ID + 4)}:${minSavedRecords};${(MOVING_MIN_SAVE_ROAMING_ID + 5)}:${sendPeriod};`;\\nmovingCmd += `${(MOVING_MIN_SAVE_UNKNOWN_ID)}:${minPeriod};${(MOVING_MIN_SAVE_UNKNOWN_ID + 4)}:${minSavedRecords};${(MOVING_MIN_SAVE_UNKNOWN_ID + 5)}:${sendPeriod};`;\\n// config OpenLinkTimeout and ResponseTimeout. Note: they need to be smaller than sendPeriod or messages will be mushed together, hardcoe to 30sec\\nvar grpsSettings = `${OPENLINK_TIMEOUT_ID}:${30};${RESPONSE_TIMEOUT_ID}:${30};`;\\ncommand += stopCmd + movingCmd + grpsSettings;\\n//ToDo: SMS is too long!\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = command.slice(0, -1);\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":27,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728922718}],"Tags":[{"Id":2081,"Name":"twentyeighthCommand","BackendAction":"CommandPriority","Value":"27"}]},{"Id":5292,"Name":"Get Version","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'getver';\nvar commandSMS = '';\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n} else {\n commandSMS = ` ${command}`;\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":14,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5292,\"Name\":\"Get Version\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'getver';\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":14,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965040}],"Tags":[{"Id":2088,"Name":"fifteenthCommand","BackendAction":"CommandPriority","Value":"14"}]},{"Id":5291,"Name":"Password","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000'\nvar packetLengt = ''\nvar codec = '0C'\nvar quantityOfCommands = '01'\nvar commandType = '05'\nvar commandSize = ''\nvar command = 'setparam '\nif (params.SMSPassword.Login) {\n command += '3003:' + params.SMSPassword.Login + ';'\n} else {\n command += '3003:;'\n}\nif (params.SMSPassword.Password) {\n command += '3004:' + params.SMSPassword.Password + ';'\n} else {\n command += '3004:;'\n}\nvar commandSMS = ''\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\n} else {\n commandSMS = ` ${command}`\n}\ncommand = ascii_to_hexa(command)\nvar commandEndSymbol = '0D0A'\nvar quantityOfCommands = '01'\nvar CRC = ''\nx = (command.length + commandEndSymbol.length) / 2\ny = (('00000000' + x.toString(16)).slice(-8))\ncommandSize = y\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\ny2 = (('00000000' + x2.toString(16)).slice(-8))\npacketLengt = y2\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":21,"SendAttempts":2,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5291,\"Name\":\"Password\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.OverSpeedingSettings.EnableDisableOverSpeedingSettings == 'true') {\\n command += '11100:2';\\n if (params.OverSpeedingSettings.MaxSpeed) {\\n command += ';11104:' + Math.round(params.OverSpeedingSettings.MaxSpeed / 3.6);\\n }\\n} else {\\n command += '11100:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\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}\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":21,\"SendAttempts\":2,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725960641},{"Type":1,"NewValue":"{\"Id\":5291,\"Name\":\"Password\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.OverSpeedingSettings.EnableDisableOverSpeedingSettings == 'true') {\\n command += '11100:2';\\n if (params.OverSpeedingSettings.MaxSpeed) {\\n command += ';11104:' + Math.round(params.OverSpeedingSettings.MaxSpeed / 3.6);\\n }\\n} else {\\n command += '11100:0';\\n}\\nvar commandSMS = '';\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n} else {\\n commandSMS = ` ${command}`;\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\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}\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":21,\"SendAttempts\":2,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965198},{"Type":1,"NewValue":"{\"Id\":5291,\"Name\":\"Password\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000'\\nvar packetLengt = ''\\nvar codec = '0C'\\nvar quantityOfCommands = '01'\\nvar commandType = '05'\\nvar commandSize = ''\\nvar command = 'setparam '\\nif (params.SMSPassword.Login) {\\n command += '3003:' + params.SMSPassword.Login + ';'\\n} else {\\n command += '3003:;'\\n}\\nif (params.SMSPassword.Password) {\\n command += '3004:' + params.SMSPassword.Password + ';'\\n} else {\\n command += '3004:;'\\n}\\nvar commandSMS = ''\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`\\n} else {\\n commandSMS = ` ${command}`\\n}\\ncommand = ascii_to_hexa(command)\\nvar commandEndSymbol = '0D0A'\\nvar quantityOfCommands = '01'\\nvar CRC = ''\\nx = (command.length + commandEndSymbol.length) / 2\\ny = (('00000000' + x.toString(16)).slice(-8))\\ncommandSize = y\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2\\ny2 = (('00000000' + x2.toString(16)).slice(-8))\\npacketLengt = y2\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands)\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase()\\nCRC = ('00000000' + CRC.toString(16)).slice(-8)\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase()\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":21,\"SendAttempts\":2,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1727800344}],"Tags":[{"Id":2093,"Name":"twentysecondCommand","BackendAction":"CommandPriority","Value":"21"}]},{"Id":5290,"Name":"APN","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar apnString = params.APNConfig.APN.split(',');\nvar apn = apnString[0];\nvar apn_username = apnString[1];\nvar apn_password = apnString[2];\nvar serverString = params.APNConfig.Server.split(',');\nvar domain = serverString[0];\nvar port = serverString[1];\nvar message = \"\";\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 2001:${apn};2002:${apn_username};2003:${apn_password};2004:${domain};2005:${port};2006:0`;\n} else {\n message = ` setparam 2001:${apn};2002:${apn_username};2003:${apn_password};2004:${domain};2005:${port};2006:0`;\n}\nAddValue(\"data\", message);\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":2,"HasAck":true,"HexString":false,"Order":0,"SendAttempts":4,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5290,\"Name\":\"APN\",\"TemplateSMS\":null,\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar apnString = params.APNConfig.APN.split(',');\\nvar apn = apnString[0];\\nvar apn_username = apnString[1];\\nvar apn_password = apnString[2];\\nvar serverString = params.APNConfig.Server.split(',');\\nvar domain = serverString[0];\\nvar port = serverString[1];\\nvar message = \\\"\\\";\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 2001:${apn};2002:${apn_username};2003:${apn_password};2004:${domain};2005:${port};2006:0`;\\n} else {\\n message = ` setparam 2001:${apn};2002:${apn_username};2003:${apn_password};2004:${domain};2005:${port};2006:0`;\\n}\\nAddValue(\\\"data\\\", message);\\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\":2,\"HasAck\":true,\"HexString\":false,\"Order\":0,\"SendAttempts\":4,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725901259},{"Type":1,"NewValue":"{\"Id\":5290,\"Name\":\"APN\",\"TemplateSMS\":null,\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar apnString = params.APNConfig.APN.split(',');\\nvar apn = apnString[0];\\nvar apn_username = apnString[1];\\nvar apn_password = apnString[2];\\nvar serverString = params.APNConfig.Server.split(',');\\nvar domain = serverString[0];\\nvar port = serverString[1];\\nvar message = \\\"\\\";\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 2001:${apn};2002:${apn_username};2003:${apn_password};2004:${domain};2005:${port};2006:0`;\\n} else {\\n message = ` setparam 2001:${apn};2002:${apn_username};2003:${apn_password};2004:${domain};2005:${port};2006:0`;\\n}\\nAddValue(\\\"data\\\", message);\\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\":2,\"HasAck\":true,\"HexString\":false,\"Order\":0,\"SendAttempts\":4,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725964763}],"Tags":[{"Id":2079,"Name":"firstCommand","BackendAction":"CommandPriority","Value":"0"}]},{"Id":5289,"Name":"Proximity","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"var configs = [];\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = '';\nif (params.Proximity.EnableDisableProximity == 'true') {\n var call = 0;\n if (params.Proximity.Call == 'true') {\n call = 1;\n }\n //If the proximity is active, GPS Sleep mode cannot be active. If proximity is not, we can use GPS Sleep mode to extend battery life\n //320(BT Home Zone):1(Enabled);322(BLE Geofence):4(Proximity);323(Pre-alarm):(s);324(RSSI):(dBm);1115(Non stop scan):(0 dis/ 1 enabled);1100(Update frequency):();1113(BLE Scan duration):();1114(Scan retries until error):();1110(BT Power level):();1111(BLE broadcasting service ID):();1000():();1112(BLE connecton protocol):(0 Prohibit/ 1 allow);325(Generate event):2(On Both);326(Call to):(0 No call/ 1 SOS Numnber);102(Sleep Mode):0(Disabled)\n command = ascii_to_hexa('setparam 320:1;322:4;323:' + params.Proximity.Prealarm + ';324:-72;1115:0;1100:5;1113:5;1114:30;1110:3;1111:1000;1112:0;325:2;326:' + params.Proximity.Call + ';102:0');\n} else {\n //320(BT Home Zone):1(Enabled)\n command = ascii_to_hexa('setparam 320:0');\n}\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\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}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":30,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5289,\"Name\":\"Proximity\",\"TemplateSMS\":null,\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = '';\\nif (params.Proximity.EnableDisableProximity == 'true') {\\n var call = 0;\\n if (params.Proximity.Call == 'true') {\\n call = 1;\\n }\\n //If the proximity is active, GPS Sleep mode cannot be active. If proximity is not, we can use GPS Sleep mode to extend battery life\\n //320(BT Home Zone):1(Enabled);322(BLE Geofence):4(Proximity);323(Pre-alarm):(s);324(RSSI):(dBm);1115(Non stop scan):(0 dis/ 1 enabled);1100(Update frequency):();1113(BLE Scan duration):();1114(Scan retries until error):();1110(BT Power level):();1111(BLE broadcasting service ID):();1000():();1112(BLE connecton protocol):(0 Prohibit/ 1 allow);325(Generate event):2(On Both);326(Call to):(0 No call/ 1 SOS Numnber);102(Sleep Mode):0(Disabled)\\n command = ascii_to_hexa('setparam 320:1;322:4;323:' + params.Proximity.Prealarm + ';324:-72;1115:0;1100:5;1113:5;1114:30;1110:3;1111:1000;1112:0;325:2;326:' + params.Proximity.Call + ';102:0');\\n} else {\\n //320(BT Home Zone):1(Enabled)\\n command = ascii_to_hexa('setparam 320:0');\\n}\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\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}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":30,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965440}],"Tags":[{"Id":2094,"Name":"noUsed","BackendAction":"CommandPriority","Value":"30"}]},{"Id":5288,"Name":"Real Time Location","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"//This command will be sent by SMS\nvar configs = [];\nvar message = \"\";\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} getgps`;\n} else {\n message = \" getgps\";\n}\nAddValue(\"data\", message);\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":2,"HasAck":true,"HexString":false,"Order":22,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5288,\"Name\":\"Real Time Location\",\"TemplateSMS\":null,\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"//This command will be sent by SMS\\nvar configs = [];\\nvar message = \\\"\\\";\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} getgps`;\\n} else {\\n message = \\\" getgps\\\";\\n}\\nAddValue(\\\"data\\\", message);\\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\":2,\"HasAck\":true,\"HexString\":false,\"Order\":22,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965464}],"Tags":[{"Id":2095,"Name":"twentythirdCommand","BackendAction":"CommandPriority","Value":"22"}]},{"Id":5287,"Name":"Delete Records","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar message = \"\"\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} deleterecords`\n} else {\n message = \" deleterecords\"\n}\nAddValue(\"data\", message);\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":2,"HasAck":true,"HexString":false,"Order":3,"SendAttempts":2,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5287,\"Name\":\"Delete Records\",\"TemplateSMS\":null,\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar message = \\\"\\\"\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} deleterecords`\\n} else {\\n message = \\\" deleterecords\\\"\\n}\\nAddValue(\\\"data\\\", message);\\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\":2,\"HasAck\":true,\"HexString\":false,\"Order\":3,\"SendAttempts\":2,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725964910}],"Tags":[{"Id":2083,"Name":"fourthCommand","BackendAction":"CommandPriority","Value":"3"}]},{"Id":5286,"Name":"Pre Config 2","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"//This command will be sent by SMS\nvar configs = [];\nvar message = \"\";\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 10151:0;10152:0;10153:0;10154:1;10155:60;10200:60;10204:1;10205:60;10250:60;10251:0;10252:0;10253:0;10254:1;10255:60;102:0;103:10;`;\n} else {\n message = \" setparam 10151:0;10152:0;10153:0;10154:1;10155:60;10200:60;10204:1;10205:60;10250:60;10251:0;10252:0;10253:0;10254:1;10255:60;102:1;103:10;\";\n}\nAddValue(\"data\", message);\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":2,"HasAck":true,"HexString":false,"Order":2,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5286,\"Name\":\"Pre Config 2\",\"TemplateSMS\":null,\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"//This command will be sent by SMS\\nvar configs = [];\\nvar message = \\\"\\\";\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 10151:0;10152:0;10153:0;10154:1;10155:60;10200:60;10204:1;10205:60;10250:60;10251:0;10252:0;10253:0;10254:1;10255:60;102:0;103:10;`;\\n} else {\\n message = \\\" setparam 10151:0;10152:0;10153:0;10154:1;10155:60;10200:60;10204:1;10205:60;10250:60;10251:0;10252:0;10253:0;10254:1;10255:60;102:1;103:10;\\\";\\n}\\nAddValue(\\\"data\\\", message);\\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\":2,\"HasAck\":true,\"HexString\":false,\"Order\":2,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725962265},{"Type":1,"NewValue":"{\"Id\":5286,\"Name\":\"Pre Config 2\",\"TemplateSMS\":null,\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"//This command will be sent by SMS\\nvar configs = [];\\nvar message = \\\"\\\";\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 10151:0;10152:0;10153:0;10154:1;10155:60;10200:60;10204:1;10205:60;10250:60;10251:0;10252:0;10253:0;10254:1;10255:60;102:0;103:10;`;\\n} else {\\n message = \\\" setparam 10151:0;10152:0;10153:0;10154:1;10155:60;10200:60;10204:1;10205:60;10250:60;10251:0;10252:0;10253:0;10254:1;10255:60;102:1;103:10;\\\";\\n}\\nAddValue(\\\"data\\\", message);\\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\":2,\"HasAck\":true,\"HexString\":false,\"Order\":2,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725962773}],"Tags":[{"Id":2071,"Name":"thirdCommand","BackendAction":"CommandPriority","Value":"2"}]},{"Id":5285,"Name":"Pre Config 1","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"//This command will be sent by SMS\nvar configs = [];\nvar message = \"\";\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 10004:1;10000:60;10005:60;10050:60;10051:0;10052:0;10053:0;10054:1;10055:60;10100:60;10104:1;10105:60;10150:60;10200:60;`;\n} else {\n message = \" setparam 10004:1;10000:60;10005:60;10050:60;10051:0;10052:0;10053:0;10054:1;10055:60;10100:60;10104:1;10105:60;10150:60;10200:60;\";\n}\nAddValue(\"data\", message);\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":2,"HasAck":true,"HexString":false,"Order":1,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5285,\"Name\":\"Pre Config 1\",\"TemplateSMS\":null,\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"//This command will be sent by SMS\\nvar configs = [];\\nvar message = \\\"\\\";\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 10004:1;10000:60;10005:60;10050:60;10051:0;10052:0;10053:0;10054:1;10055:60;10100:60;10104:1;10105:60;10150:60;10200:60;`;\\n} else {\\n message = \\\" setparam 10004:1;10000:60;10005:60;10050:60;10051:0;10052:0;10053:0;10054:1;10055:60;10100:60;10104:1;10105:60;10150:60;10200:60;\\\";\\n}\\nAddValue(\\\"data\\\", message);\\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\":2,\"HasAck\":true,\"HexString\":false,\"Order\":1,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725962210}],"Tags":[{"Id":2070,"Name":"secondCommand","BackendAction":"CommandPriority","Value":"1"}]},{"Id":5284,"Name":"Reboot","TemplateSMS":"","Template":"<>","AckTemplate":null,"Operation":"//This command will be sent by SMS\nvar configs = [];\nvar message = \"\";\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} cpureset`;\n} else {\n message = \" cpureset\";\n}\nAddValue(\"data\", message);\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":2,"HasAck":false,"HexString":false,"Order":29,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5284,\"Name\":\"Reboot\",\"TemplateSMS\":\"\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"//This command will be sent by SMS\\nvar configs = [];\\nvar message = \\\"\\\";\\nif (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} cpureset`;\\n} else {\\n message = \\\" cpureset\\\";\\n}\\nAddValue(\\\"data\\\", message);\\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\":2,\"HasAck\":false,\"HexString\":false,\"Order\":29,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725965486}],"Tags":[{"Id":2097,"Name":"thitiethCommand","BackendAction":"CommandPriority","Value":"29"}]},{"Id":5283,"Name":"Fall Alarm Options","TemplateSMS":"<>","Template":"<>","AckTemplate":null,"Operation":"var configs = [];\nvar configsSMS = [];\nvar zero = '00000000';\nvar packetLengt = '';\nvar codec = '0C';\nvar quantityOfCommands = '01';\nvar commandType = '05';\nvar commandSize = '';\nvar command = 'setparam ';\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \"false\") {\n command += '12100:0;';\n var commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n} else if (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \"true\") {\n if (params.FallAlarmSettings.EnableDisableByButtons == 'true') {\n //Configure Button 1 and button 2 to turn On and Off the feature. Also, the vibration when changed the behaviours.\n command += '12100:0;';\n command += '13019:2;13022:3;';\n } else {\n command += '12100:1;';\n command += '13019:0;13022:0;';\n }\n var commandSMS = '';\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\n } else {\n commandSMS = ` ${command}`;\n }\n command += '14390:1;14392:5;14393:1;14391:1;14397:1;14430:1;14432:5;14433:1;14431:1;14437:1;';\n if (params.FallAlarmSettings.Position) {\n command += '12101:' + params.FallAlarmSettings.Position + ';';\n }\n if (params.FallAlarmSettings.Angle) {\n command += '12102:' + params.FallAlarmSettings.Angle + ';';\n }\n if (params.FallAlarmSettings.Timeout) {\n command += '12103:' + params.FallAlarmSettings.Timeout + ';';\n }\n if (params.FallAlarmSettings.SilentPreAlarmDelay) {\n command += '12111:' + params.FallAlarmSettings.SilentPreAlarmDelay + ';';\n }\n if (params.FallAlarmSettings.Indication == '0') {\n command += '14170:1;14320:1;14173:1;14323:3;';\n } else if (params.FallAlarmSettings.Indication == '1') {\n command += '14170:1;14320:1;14173:1;14323:1;';\n } else if (params.FallAlarmSettings.Indication == '2') {\n command += '14170:0;14320:0;14173:0;14323:0;';\n }\n command += '7222:0;12104:1';\n}\ncommand = ascii_to_hexa(command);\nvar commandEndSymbol = '0D0A';\nvar quantityOfCommands = '01';\nvar CRC = '';\nx = (command.length + commandEndSymbol.length) / 2;\ny = (('00000000' + x.toString(16)).slice(-8));\ncommandSize = y;\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\ny2 = (('00000000' + x2.toString(16)).slice(-8));\npacketLengt = y2;\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\nAddValue(\"data\", message);\nAddValueSMS(\"data\", commandSMS);\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}\n\nfunction hexStringToString(inputstr) {\n var hex = inputstr.toString(); //force conversion\n var str = '';\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\n\nfunction ascii_to_hexa(str) {\n var arr1 = [];\n for (var n = 0, l = str.length; n < l; n++) {\n var hex = Number(str.charCodeAt(n)).toString(16);\n arr1.push(hex);\n }\n return arr1.join('');\n}\n\nfunction CRC16(test) {\n var crc = 0x0000;\n var str = test;\n for (var pos = 0; pos < str.length; pos++) {\n crc ^= str.charCodeAt(pos);\n for (var i = 8; i !== 0; i--) {\n if ((crc & 0x0001) !== 0) {\n crc >>= 1;\n crc ^= 0xA001;\n } else crc >>= 1;\n }\n }\n return crc;\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":16,"SendAttempts":9,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":5283,\"Name\":\"Fall Alarm Options\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar zero = '00000000';\\nvar packetLengt = '';\\nvar codec = '0C';\\nvar quantityOfCommands = '01';\\nvar commandType = '05';\\nvar commandSize = '';\\nvar command = 'setparam ';\\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \\\"false\\\") {\\n command += '12100:0;';\\n var commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n} else if (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \\\"true\\\") {\\n if (params.FallAlarmSettings.EnableDisableByButtons == 'true') {\\n //Configure Button 1 and button 2 to turn On and Off the feature. Also, the vibration when changed the behaviours.\\n command += '12100:0;';\\n command += '13019:2;13022:3;';\\n } else {\\n command += '12100:1;';\\n command += '13019:0;13022:0;';\\n }\\n var commandSMS = '';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n command += '14390:1;14392:5;14393:1;14391:1;14397:1;14430:1;14432:5;14433:1;14431:1;14437:1;';\\n if (params.FallAlarmSettings.Position) {\\n command += '12101:' + params.FallAlarmSettings.Position + ';';\\n }\\n if (params.FallAlarmSettings.Angle) {\\n command += '12102:' + params.FallAlarmSettings.Angle + ';';\\n }\\n if (params.FallAlarmSettings.Timeout) {\\n command += '12103:' + params.FallAlarmSettings.Timeout + ';';\\n }\\n if (params.FallAlarmSettings.SilentPreAlarmDelay) {\\n command += '12111:' + params.FallAlarmSettings.SilentPreAlarmDelay + ';';\\n }\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:0;14320:0;14173:0;14323:0;';\\n }\\n command += '7222:0;12104:1';\\n}\\ncommand = ascii_to_hexa(command);\\nvar commandEndSymbol = '0D0A';\\nvar quantityOfCommands = '01';\\nvar CRC = '';\\nx = (command.length + commandEndSymbol.length) / 2;\\ny = (('00000000' + x.toString(16)).slice(-8));\\ncommandSize = y;\\nx2 = (codec.length + (quantityOfCommands.length * 2) + commandType.length + commandSize.length + command.length + commandEndSymbol.length) / 2;\\ny2 = (('00000000' + x2.toString(16)).slice(-8));\\npacketLengt = y2;\\nstringToCRC = hexStringToString(codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands);\\nCRC = CRC16(stringToCRC).toString(16).toUpperCase();\\nCRC = ('00000000' + CRC.toString(16)).slice(-8);\\nvar message = (zero + packetLengt + codec + quantityOfCommands + commandType + commandSize + command + commandEndSymbol + quantityOfCommands + CRC).toUpperCase();\\nAddValue(\\\"data\\\", message);\\nAddValueSMS(\\\"data\\\", commandSMS);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\\n\\nfunction hexStringToString(inputstr) {\\n var hex = inputstr.toString(); //force conversion\\n var str = '';\\n for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\\n return str;\\n}\\n\\nfunction ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n}\\n\\nfunction CRC16(test) {\\n var crc = 0x0000;\\n var str = test;\\n for (var pos = 0; pos < str.length; pos++) {\\n crc ^= str.charCodeAt(pos);\\n for (var i = 8; i !== 0; i--) {\\n if ((crc & 0x0001) !== 0) {\\n crc >>= 1;\\n crc ^= 0xA001;\\n } else crc >>= 1;\\n }\\n }\\n return crc;\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":true,\"Order\":16,\"SendAttempts\":9,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725964938}],"Tags":[{"Id":2084,"Name":"seventeenthCommand","BackendAction":"CommandPriority","Value":"16"}]},{"Id":5314,"Name":"Control Configuration Mode","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"//This command will be sent by SMS\nvar configs = [];\nvar message = \"\";\nif (params.Reboot.Reboot == 'true') {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 10000:60;10004:1;10005:60`; // set cycle to 60 seconds / 1 minute\n} else {\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 10000:600;10004:1;10005:600`; // set cycle to 600 seconds / 10 minute\n}\nAddValue(\"data\", message);\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":3,"ProtocolActionObjects":[{"Type":0,"NewValue":"{\"Id\":5314,\"Name\":\"Control Configuration Mode\",\"TemplateSMS\":null,\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"//This command will be sent by SMS\\nvar configs = [];\\nvar message = \\\"\\\";\\nif (params.Reboot.Reboot == 'true') {\\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 10000:60;10004:1;10005:60`; // set cycle to 60 seconds / 1 minute\\n} else {\\n message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} setparam 10000:600;10004:1;10005:600`; // set cycle to 600 seconds / 10 minute\\n}\\nAddValue(\\\"data\\\", message);\\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\":3,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725901472}],"Tags":[]},{"Id":5315,"Name":"Power Off","TemplateSMS":null,"Template":"<>","AckTemplate":null,"Operation":"//This command will be sent by SMS\nvar configs = [];\nvar message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} shutdown`; // set cycle to 60 seconds / 1 minute\nAddValue(\"data\", message);\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":2,"HasAck":false,"HexString":false,"Order":null,"SendAttempts":4,"ProtocolActionObjects":[{"Type":0,"NewValue":"{\"Id\":5315,\"Name\":\"Power Off\",\"TemplateSMS\":null,\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"//This command will be sent by SMS\\nvar configs = [];\\nvar message = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} shutdown`; // set cycle to 60 seconds / 1 minute\\nAddValue(\\\"data\\\", message);\\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\":2,\"HasAck\":false,\"HexString\":false,\"Order\":null,\"SendAttempts\":4,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725960726}],"Tags":[]}],"Operations":[{"Id":332,"Name":"GH5200","Operation":"if (typeof localTesting === \"undefined\") {\r\n var localTesting = \"False\";\r\n}\r\nvar index = 20;\r\nvar timeout = 1500;\r\nvar fix_state;\r\nvar satelites;\r\nvar latitude;\r\nvar longitude;\r\nvar altitude;\r\nvar speed;\r\nvar event_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\r\nvar location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\r\nvar location_accuracy = \"5000\";\r\nvar onTrackingDemand = false;\r\nvar isSleep = 'false'\r\nvar amber_State = '';\r\nvar amber_Timer = '';\r\nvar movement_Value = '';\r\nvar dataToReceiver = [];\r\nvar codeValues = [];\r\nvar configsToAck = [];\r\n//If the event type matches a global template\r\nif (globalTemplate == \"True\") {\r\n //In case the message is \"STC\" (Start Connection)\r\n if (messageTypeLocalCode == \"STC\") {\r\n var imei = hex_to_ascii(rawFromBytes).slice(2);\r\n AddValue(codeValues, \"imei\", imei);\r\n var c = createConnection(5678, '127.0.0.1');\r\n c.write(`GH5200-STC,${imei},${serverParams.Guid}`);\r\n //Imei is recevied in hex\r\n AddValue(codeValues, \"ack_stc\", \"01\");\r\n c.end();\r\n //In case the message is a codec8 (either codec8 or codec8 Extended)\r\n } else if (messageTypeLocalCode == \"COD8-Global\") {\r\n var ack;\r\n //Get the full hex message in a readable format\r\n var message = rawFromBytes;\r\n var codecID = message.substring(16, 18);\r\n //Get the imei from serverParams\r\n var imei = serverParams.Imei\r\n //Either codec 8 or codec 8 Extended\r\n if (codecID == '08' || codecID == '8E') {\r\n messages = decryptCodec8(message);\r\n var numberOfData = message.substring(18, 20)\r\n // var c = createConnection(5678, '127.0.0.1');\r\n // c.on('data', function(data) {\r\n // var msgLocal = [];\r\n // //if ack ends with OTD, then onTrackingDemand = true\r\n // if (data.toString().endsWith('OTD')) {\r\n // onTrackingDemand = true\r\n // }\r\n // //The device can send more than one event on the same message. In this case, a part of the ack is the number of messages received\r\n // //So, we only ack when we have received the last event of the message.\r\n // if (data.toString().startsWith(`L${messages.length}`)) {\r\n // //In case the event demands a tracking, the ack is the number of data followed by the command on_demand_tracking2 (already encoded)\r\n // if (onTrackingDemand == true) {\r\n // AddValue(msgLocal, 'ack_cod8', `000000${numberOfData}000000000000001D0C0105000000156F6E5F64656D616E645F747261636B696E67320D0A0100002EB9`);\r\n // //Mandatory to push the imei when on a global template\r\n // AddValue(msgLocal, 'imei', imei);\r\n // //Mandatory to do console.log(msg);\r\n // console.log(msgLocal);\r\n // c.end();\r\n // }\r\n // //The device needs to be ack'ed the number of data in 4 bytes\r\n // else {\r\n //Ack with the number of messages received to make the device know that the server understood the full message.\r\n AddValue(codeValues, 'ack_cod8', `000000${numberOfData}`);\r\n //Mandatory to push the imei when on a global template\r\n AddValue(codeValues, 'imei', imei);\r\n //Mandatory to do console.log(msg);\r\n //console.log(msg);\r\n // c.end();\r\n // }\r\n // }\r\n // });\r\n //Internally send all the events on the same message received.\r\n for (let i = 0; i < messages.length; i++) {\r\n //c.write(messages[i]);\r\n connect(5678, messages, i);\r\n //console.log(messages[i]);\r\n }\r\n //In case the message is a codec12 (command ack)\r\n } else if (codecID == '0C') {\r\n var codec12 = decryptCodec12(message)\r\n var c = createConnection(5678, '127.0.0.1');\r\n //Internally send a codec12 message in the homogenous ascii format\r\n c.write(`GH5200-COD12,${serverParams.Imei},${codec12}`);\r\n c.end();\r\n //Because the codec12 message is matched by the same global template than the codec8 message, we need to push \"ack_cod8\" as an empty string.\r\n AddValue(codeValues, 'ack_cod8', '');\r\n //Mandatory to push the imei when on a global template\r\n AddValue(codeValues, 'imei', imei);\r\n }\r\n }\r\n}\r\n//In the case the message is matched by an oystaTemplate\r\nif (oystaTemplate == \"True\") {\r\n //If the message is a decrypted version for start the connection\r\n if (messageTypeLocalCode == \"STC\") {\r\n // stc conditions\r\n AddValue(codeValues, 'ack_stc', '01');\r\n }\r\n //If the message is a codec8 (event not taken into account by us) \r\n else if (messageTypeLocalCode == 'COD8') {\r\n if (params.recordNumber) {\r\n params.recordNumber = parseInt(params.recordNumber) + 1\r\n //Push the record number of each message.\r\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\r\n }\r\n }\r\n //In case the message is Real Time Location\r\n else if (messageTypeLocalCode == \"RTL\") {\r\n //If the message has a gps fix\r\n if (params.gps == \"1\") {\r\n AddValue(codeValues, \"fix_state\", 1)\r\n //Speed to m/s\r\n AddValue(codeValues, \"speed\", params.speed_raw / 3.6)\r\n //Location time to actual time. It is not provided on the message\r\n location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\r\n //Event time to actual time. It is not provided on the message\r\n AddValue(codeValues, \"event_time\", event_time)\r\n AddValue(codeValues, \"location_time\", location_time)\r\n //Hardcoded accuracy of 500. No hdop or satellites are provided on the message\r\n AddValue(codeValues, \"location_accuracy\", 500)\r\n }\r\n //If the message does not have a gps fix, we do not use it as we cannot make sure it is real\r\n else if (params.gps == \"0\") {\r\n AddValue(codeValues, \"fix_state\", 0)\r\n event_time = moment.utc().unix();\r\n location_time = moment.utc().unix();\r\n AddValue(codeValues, \"event_time\", event_time)\r\n AddValue(codeValues, \"location_time\", location_time)\r\n AddValue(codeValues, \"location_accuracy\", 0)\r\n }\r\n }\r\n //If the event is an Alarm or Position By Button, send a flag (ODT) so the device is asked for on_demand_tracking\r\n else if (messageTypeLocalCode == \"PBB\" || messageTypeCode.startsWith('AL')) {\r\n params.recordNumber = parseInt(params.recordNumber) + 1\r\n //Push the record number of each message. If it is a Position by button or any kind of alarm, it needs to be follow by \"ODT\" in order to ask for a tracking\r\n //This is used to make sure the gps is awake. It will solve the error of alarms sent before there is a gps fix\r\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}OTD`);\r\n //If the event is an ack for a SMS command (Redirected from Esendex)\r\n } else if (messageTypeLocalCode.startsWith('ACK-SMS')) {\r\n //No fix state\r\n AddValue(codeValues, \"fix_state\", 0)\r\n //Event and location time to actual time in order to show the messages on the events table\r\n event_time = moment.utc().unix();\r\n location_time = moment.utc().unix();\r\n AddValue(codeValues, \"event_time\", event_time)\r\n AddValue(codeValues, \"location_time\", location_time)\r\n AddValue(codeValues, \"location_accuracy\", 0)\r\n var c = createConnection(5678, '127.0.0.1');\r\n //If the message is a sms ack for a \"normal command\" (this means the ack will start with \"New value \")\r\n if (messageTypeLocalCode == \"ACK-SMS\") {\r\n if (params.smsAck) {\r\n //Add \"-SMS\" at the end so we can differentiate between a sms and grps ack for a command.\r\n var smsAck = params.smsAck + '-SMS;'\r\n // the essendex message the device sends in gets converted here\r\n c.write(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\r\n debug(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\r\n if (!smsAck.startsWith('2001:')) {\r\n //Add tag no commands so no commands are sent to the device after a sms ack. The device will not accept a command after a sms ack. This prevents lots of problems.\r\n AddValue(codeValues, 'no_commands', 'true');\r\n //As it is redirected from Esende, it is mandatroy to push the imei\r\n AddValue(codeValues, 'imei', serverParams.Imei);\r\n }\r\n }\r\n }\r\n //We do not need to send the tag \"no_commands\" on the next 3 message types since we have already checked that option on the message type that matched the Esendex resend.\r\n //If the message is a sms ack for \"Delete Records\". Internally send specific message\r\n if (messageTypeLocalCode == \"ACK-SMS-DR\") {\r\n var smsAck = '-SMS'\r\n c.write(`GH5200-COD12,${serverParams.Imei},All records are erased${smsAck}`);\r\n }\r\n //If the message is a sms ack for \"Get Info\". Internally send specific message\r\n if (messageTypeLocalCode == \"ACK-SMS-GI\") {\r\n if (params.smsAck) {\r\n var smsAck = params.smsAck + '-SMS'\r\n c.write(`GH5200-COD12,${serverParams.Imei},RTC:${smsAck}`);\r\n }\r\n }\r\n //If the message is a sms ack for \"Get Version\". Internally send specific message\r\n if (messageTypeLocalCode == \"ACK-SMS-GV\") {\r\n if (params.smsAck) {\r\n var smsAck = params.smsAck + '-SMS'\r\n c.write(`GH5200-COD12,${serverParams.Imei},Ver:${smsAck}`);\r\n }\r\n }\r\n c.end()\r\n } else if (messageTypeLocalCode.startsWith(\"ACK-ALF\")) {\r\n if (messageTypeLocalCode == \"ACK-ALF\") {\r\n var newAlldata = \"12100:\" + params.alldata;\r\n } else if (messageTypeLocalCode == \"ACK-ALFSMS2\") {\r\n var newAlldata = \"14390:\" + params.alldata;\r\n } else if (messageTypeLocalCode == \"ACK-ALFSMS3\") {\r\n var newAlldata = \"12101:\" + params.alldata;\r\n }\r\n if (newAlldata != null) {\r\n var keyValues = ['12101', '12102', '12103', '12111', '12100', '13019', '13022', '14390', '14392', '14393', '14391', '14397', '14430', '14432', '14433', '14431', '14437', '14170', '14320', '14173', '14323', '7222', '12104'];\r\n var configParamNames = ['FallAlarmSettings.Position', 'FallAlarmSettings.Angle', 'FallAlarmSettings.Timeout', 'FallAlarmSettings.SilentPreAlarmDelay', 'FallAlarmSettings.EnableDisableFallAlarmSettings', 'FallAlarmSettings.EnableDisableByButtons', 'FallAlarmSettings.EnableDisableByButtons', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'FallAlarmSettings.Indication', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed'];\r\n var ackSMSArray = newAlldata.split(';');\r\n var findIndexOfBlankSMS = ackSMSArray.findIndex(element => element.includes(\"-SMS\"));\r\n if (ackSMSArray[findIndexOfBlankSMS] === \"-SMS\") {\r\n ackSMSArray.pop()\r\n }\r\n AddValue(codeValues, \"imei\", serverParams.Imei);\r\n for (let i = 0; i < ackSMSArray.length; i++) {\r\n var keyId = ackSMSArray[i].split(':')[0]; // id of the param saved in the array\r\n var keyValue = ackSMSArray[i].split(':')[1]; // value of the param \r\n var findIndex = keyValues.indexOf(keyId)\r\n if (configParamNames[findIndex] != \"No-Ack-Needed\") {\r\n var intellicareDataSetValue = eval('configs' + '.' + configParamNames[findIndex])\r\n if (configParamNames[findIndex] == \"FallAlarmSettings.EnableDisableFallAlarmSettings\") {\r\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\r\n if (intellicareDataSetValue == \"true\") {\r\n intellicareDataSetValue = \"1\"\r\n } else {\r\n intellicareDataSetValue = \"0\"\r\n }\r\n // if enableDisableByButtonsIndex is unchecked then overwrite the EnableDisableFallAlarmSettings value\r\n var enableDisableByButtonsIndex = ackSMSArray.findIndex(element => element.includes(\"13019\" || \"13022\"));\r\n var valueOfenableDisableByButtons = ackSMSArray[enableDisableByButtonsIndex].slice(-1)\r\n if (valueOfenableDisableByButtons != \"0\") {\r\n intellicareDataSetValue = \"0\"\r\n }\r\n }\r\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\r\n if (configParamNames[findIndex] == \"FallAlarmSettings.EnableDisableByButtons\") {\r\n if (intellicareDataSetValue == \"true\") {\r\n if (keyId == \"13019\") {\r\n intellicareDataSetValue = \"2\"\r\n } else if (keyId == \"13022\") {\r\n intellicareDataSetValue = \"3\"\r\n }\r\n } else {\r\n intellicareDataSetValue = \"0\"\r\n }\r\n }\r\n if (keyValue == intellicareDataSetValue) {\r\n configsToAck.push(eval('configIds' + '.' + configParamNames[findIndex]))\r\n debug(\"Matched values of param\" + configParamNames[findIndex]);\r\n } else {\r\n debug(\"Not matched values of param\" + configParamNames[findIndex]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n //If the message is an ack, push the needed information to appear on the UI events.\r\n else if (messageTypeLocalCode.startsWith('ACK-')) {\r\n AddValue(codeValues, \"fix_state\", 0)\r\n event_time = moment.utc().unix();\r\n location_time = moment.utc().unix();\r\n AddValue(codeValues, \"event_time\", event_time)\r\n AddValue(codeValues, \"location_time\", location_time)\r\n AddValue(codeValues, \"location_accuracy\", 0)\r\n }\r\n //If the message is a decrypted version for codec8. This will include Cycles, and all the rest of messages not represented on the else if before \r\n else {\r\n params.recordNumber = parseInt(params.recordNumber) + 1\r\n //Push the record number of each message.\r\n //AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\r\n }\r\n}\r\nif (configsToAck.length > 0) {\r\n var dataToReceiver = {\r\n 'values': codeValues,\r\n 'configsToAck': configsToAck,\r\n };\r\n} else {\r\n var dataToReceiver = {\r\n 'values': codeValues\r\n };\r\n}\r\nconsole.log(dataToReceiver);\r\n/**\r\n * Decrypt Codec 12 messages from hexadecimal to ascii\r\n * @param {String} message Hexadecimal message\r\n * @return {String} Ascii message\r\n */\r\nfunction decryptCodec12(message) {\r\n var decoded = '';\r\n var data12 = message.slice(30, -10);\r\n data12 = hex_to_ascii(data12);\r\n return data12;\r\n}\r\n/**\r\n * Decrypt Codec 12 messages from hexadecimal to ascii\r\n * @param {String} message Hexadecimal message\r\n * @return {Array} Array of Ascii messages\r\n */\r\nfunction decryptCodec8(message) {\r\n //Initialise variables\r\n var decoded = '';\r\n var codecID = message.substring(16, 18);\r\n decoded += codecID + ';';\r\n var numberOfData = message.substring(18, 20);\r\n decoded += numberOfData + ';';\r\n var records = [];\r\n var prox = 0;\r\n //Loop number of events on a message times\r\n for (i = 0; i < hexToDecimal(numberOfData); i++) {\r\n //Initialise and transform variables\r\n isSleep = 'false'\r\n amber_State = '';\r\n amber_Timer = '';\r\n var decoded_final = '';\r\n var record = '';\r\n var timestamp = message.substring(index, index += 16);\r\n timestamp = hexToDecimal(timestamp).toString().slice(0, -3)\r\n timestamp = parseInt(timestamp, 10);\r\n var priority = message.substring(index, index += 2);\r\n var longitude = message.substring(index, index += 8);\r\n longitude = hexToDecimalSigned(longitude) / 10000000;\r\n var latitude = message.substring(index, index += 8);\r\n latitude = hexToDecimalSigned(latitude) / 10000000;\r\n var altitude = message.substring(index, index += 4);\r\n altitude = hexToDecimalSigned(altitude);\r\n var angle = message.substring(index, index += 4);\r\n angle = hexToDecimalSigned(angle);\r\n var satelites = message.substring(index, index += 2);\r\n satelites = hexToDecimal(satelites);\r\n var speed = message.substring(index, index += 4);\r\n //Speed to m/s\r\n speed = (hexToDecimal(speed) / 3.6).toFixed(2)\r\n //If the message is a codec 8\r\n if (codecID == '8E') {\r\n var ioEvent = message.substring(index, index += 4);\r\n var ioElementsTotal = message.substring(index, index += 4);\r\n }\r\n //If the message is a codec 8 Extended\r\n else if (codecID == '08') {\r\n var ioEvent = message.substring(index, index += 2);\r\n var ioElementsTotal = message.substring(index, index += 2);\r\n }\r\n ioEvent = hexToDecimal(ioEvent);\r\n //Switch to determine which is the event on the message\r\n switch (ioEvent) {\r\n case 0:\r\n ioEvent = 'NoEvent';\r\n break;\r\n case 236:\r\n ioEvent = 'Alarm';\r\n break;\r\n case 242:\r\n ioEvent = 'ManDown';\r\n break;\r\n case 255:\r\n ioEvent = 'OverSpeeding';\r\n break;\r\n case 310:\r\n ioEvent = 'Movement_Event';\r\n break;\r\n case 389:\r\n ioEvent = 'ButtonClick';\r\n break;\r\n case 1000:\r\n ioEvent = 'Cycle';\r\n break;\r\n case 240:\r\n ioEvent = 'Movement';\r\n break\r\n case 874:\r\n ioEvent = 'BLT_violation_state';\r\n break;\r\n case 875:\r\n ioEvent = 'Proximity_violation_source';\r\n break;\r\n case 874:\r\n ioEvent = 'Proximity_duration';\r\n break;\r\n case 874:\r\n ioEvent = 'BLT_MAC_Address';\r\n break;\r\n case 200:\r\n ioEvent = 'Sleep_Mode';\r\n break;\r\n case 390:\r\n ioEvent = 'PowerOff';\r\n break;\r\n case 200000:\r\n ioEvent = 'PowerOn';\r\n break;\r\n case 400:\r\n ioEvent = 'AmberAlert';\r\n break;\r\n default:\r\n ioEvent = ioEvent + ':Not_recognised';\r\n }\r\n //Get the IO ids part of the message\r\n var iods = IOIdsValues(message, ioElementsTotal, timestamp);\r\n //Internally send the events translated to a readable format and using the format needed to match the message types.\r\n if (ioEvent == 'Alarm') {\r\n record = `GH5200-ALSOS,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n } else if (ioEvent == 'ManDown') {\r\n record = `GH5200-ALF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n } else if (ioEvent == 'OverSpeeding') {\r\n record = `GH5200-ALSP,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n } else if (ioEvent == 'AutoGeofenceEvent' || ioEvent.startsWith('Geofence')) {\r\n record = `GH5200-AGEO,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n } else if (ioEvent == 'NoEvent' || ioEvent == 'Cycle') {\r\n //If the device is on sleep mode, it will not have send locations. For this reason, the message will be a Heartbeat and not a Cycle\r\n if (isSleep == 'true') {\r\n record = `GH5200-HTB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n } else {\r\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n }\r\n } else if (ioEvent == 'Movement_Event') {\r\n if (movement_Value == 'Movement_Event=NoMovement') {\r\n record = `GH5200-ALNM,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n } else if (movement_Value == 'Movement_Event=Movement') {\r\n record = `GH5200-ALMV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n }\r\n }\r\n //If the event is triggered because the device has entrered on Sleep mode, set an accuracy on 5000 to force a location. With this, we make sure we sent the last know location and we don't lose it.\r\n //Without this, it can happen that a location is sent, another one acquired but never sent because went to sleep mode\r\n else if (ioEvent == 'Sleep_Mode') {\r\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n var iodsValues = iods.split(\";\");\r\n iodsValues[0] = 1\r\n if (iodsValues[2] == 0 && longitude != '0' && latitude != '0') {\r\n iodsValues[2] = 5000\r\n }\r\n iods = iodsValues.join(\";\");\r\n //} else if (ioEvent == 'Movement') {\r\n // record = `GH5200-MV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n } else if (ioEvent == 'Proximity_violation_source' || ioEvent == 'Proximity_duration' || ioEvent == 'BLT_MAC_Address') {\r\n record = `${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n prox = 1;\r\n } else if (ioEvent == 'ButtonClick') {\r\n record = `GH5200-PBB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n } else if (ioEvent == 'AmberAlert') {\r\n if (amber_State && amber_Timer) {\r\n if (amber_State == 'Amber_Alert_State=Cancelled') {\r\n record = `GH5200-ALA-C,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n }\r\n if (amber_State == 'Amber_Alert_State=On') {\r\n record = `GH5200-ALA-O,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n }\r\n if (amber_State == 'Amber_Alert_State=Snoozed') {\r\n record = `GH5200-ALA-S,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n }\r\n if (amber_State == 'Amber_Alert_State=Alarm') {\r\n record = `GH5200-ALA,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n }\r\n }\r\n } else if (ioEvent == 'PowerOn') {\r\n record = `GH5200-PWRN,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n } else if (ioEvent == 'PowerOff') {\r\n record = `GH5200-PWRF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n }\r\n //In case the event has been created by an \"unknown\" IO Event (or not considered)\r\n else {\r\n record = `GH5200-COD8,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\r\n }\r\n //console.log('--------------------' + decoded_final)\r\n record = record + iods;\r\n if (prox == 1) {\r\n var values = iods.split(\";\");\r\n if (values[4].startsWith('Proximity_duration')) {\r\n var prox_duration = values[4].split(\"=\");\r\n if (prox_duration[1] < 1) {\r\n record = 'GH5200-PROXS,' + record;\r\n } else if (prox_duration[1] >= 1) {\r\n record = 'GH5200-PROXE,' + record;\r\n }\r\n }\r\n prox = 0\r\n }\r\n //Push each record into a records array\r\n records.push(record);\r\n debug(record);\r\n }\r\n var CRC = message.substring(index + 2, index + 10);\r\n //return an array with all records stored\r\n return records;\r\n}\r\n/**\r\n * Decrypts part of the message that contains the IO Ids and its values\r\n * @param {String} message String to decrypt\r\n * @param {String} ioElementsTotal Number of IO elements present on the message\r\n * @param {Int} timestamp Unix timestamp given from the message\r\n * @return {String} String with the IO Ids and its values decrypted on a readable format\r\n */\r\nfunction IOIdsValues(message, ioElementsTotal, timestamp) {\r\n //Variable initialisation\r\n var decoded = '';\r\n var iods = '';\r\n var gpsTime = 0;\r\n var prox_source = '';\r\n var prox_duration = '';\r\n var BLT_state = '';\r\n var BLT_MAC = '';\r\n for (let i = 1; i <= 8; i = i * 2) {\r\n if (codecID == '8E') {\r\n var ioNumElements = message.substring(index, index += 4);\r\n } else if (codecID == '08') {\r\n var ioNumElements = message.substring(index, index += 2);\r\n }\r\n var x = hexToDecimal(ioNumElements);\r\n var pos = 2 * i;\r\n iods = '';\r\n //Loop number of elements\r\n for (let j = 0; j < x; j++) {\r\n //Id length depends on the codec\r\n if (codecID == '8E') {\r\n var id = message.substring(index, index += 4);\r\n } else if (codecID == '08') {\r\n var id = message.substring(index, index += 2);\r\n }\r\n var value = message.substring(index, index += pos);\r\n id = hexToDecimal(id);\r\n value = hexToDecimal(value);\r\n //Set the fix status\r\n if (id == 69) {\r\n if (value != 1) {\r\n value = 0\r\n }\r\n var fix_state = value;\r\n }\r\n //transform hdop to location accuracy in meters\r\n if (id == 182) {\r\n id = 'hdop'\r\n var location_accuracy = value * 5;\r\n }\r\n //Switch to set a name for each id and to get the value\r\n switch (id) {\r\n case 80:\r\n id = 'DataMode';\r\n break;\r\n case 24:\r\n id = 'Speed';\r\n break;\r\n case 113:\r\n id = 'BatteryLevel';\r\n var battery_percentage = value;\r\n break;\r\n case 17:\r\n id = 'AxisX';\r\n break;\r\n case 18:\r\n id = 'AxisY';\r\n break;\r\n case 19:\r\n id = 'AxisZ';\r\n break;\r\n case 69:\r\n id = 'GNSSStatus';\r\n break;\r\n case 874:\r\n id = 'BLT_violation_state';\r\n var mask = value;\r\n if (mask == 0) {\r\n value = 'None';\r\n }\r\n if (mask >= 8) {\r\n value = 'Tamper removed ';\r\n mask -= 8;\r\n }\r\n if (mask >= 4) {\r\n value = 'BLE Missing ';\r\n mask -= 4;\r\n }\r\n if (mask >= 2) {\r\n value = 'RSSI treshold violation ';\r\n mask -= 2;\r\n }\r\n if (mask == 1) {\r\n value = 'Movement';\r\n }\r\n //BLT_state = id + '=' + value;\r\n break;\r\n case 875:\r\n id = 'Proximity_violation_source';\r\n value = hex_to_ascii(valueHex);\r\n prox_source = id + '=' + value;\r\n break;\r\n case 890:\r\n id = 'Proximity_duration';\r\n prox_duration = id + '=' + value;\r\n break;\r\n case 891:\r\n id = 'BLT_MAC_Address';\r\n value = hex_to_ascii(valueHex);\r\n BLT_MAC = id + '=' + value;\r\n break;\r\n case 400:\r\n id = 'Amber_Alert_State';\r\n if (value == '1') value = 'On';\r\n else if (value == '2') value = 'Snoozed';\r\n else if (value == '3') value = 'Alarm';\r\n else if (value == '0') value = 'Cancelled'\r\n amber_State = id + '=' + value;\r\n break;\r\n case 401:\r\n id = 'Amber_Alert_Timer';\r\n amber_Timer = id + '=' + value;\r\n break;\r\n case 200:\r\n id = 'Sleep_Mode';\r\n if (value == '1') {\r\n isSleep = 'true'\r\n }\r\n break;\r\n case 310:\r\n id = 'Movement_Event';\r\n if (value == '0') value = 'Movement';\r\n else if (value == '1') value = 'NoMovement';\r\n movement_Value = id + '=' + value;\r\n break;\r\n }\r\n iods += id + '=' + value + ';';\r\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\r\n if (id == 'GNSSStatus' && value == 1) {\r\n gpsTime = timestamp;\r\n } else {\r\n gpsTime = moment.utc().unix();\r\n }\r\n }\r\n //Return decoded string with all the ids and its values on a readable format\r\n decoded += ioNumElements + ';' + iods;\r\n }\r\n //ids with variable length on codec8 Extended\r\n if (codecID == '8E') {\r\n var ioNumElements = message.substring(index, index += 4);\r\n var x = hexToDecimal(ioNumElements);\r\n iods = '';\r\n //Loop number of elements\r\n for (let j = 0; j < x; j++) {\r\n var id = message.substring(index, index += 4);\r\n var len = message.substring(index, index += 4);\r\n len = hexToDecimal(len) * 2;\r\n var value = message.substring(index, index += len);\r\n valueHex = value;\r\n id = hexToDecimal(id);\r\n value = hexToDecimal(value);\r\n //Set the fix status\r\n if (id == 69) {\r\n if (value != 1) {\r\n value = 0\r\n }\r\n var fix_state = value;\r\n }\r\n //transform hdop to location accuracy in meters\r\n if (id == 182) {\r\n id = 'hdop'\r\n var location_accuracy = value * 5;\r\n }\r\n //Switch to set a name for each id and to get the value\r\n switch (id) {\r\n case 80:\r\n id = 'DataMode';\r\n break;\r\n case 24:\r\n id = 'Speed';\r\n break;\r\n case 113:\r\n id = 'BatteryLevel';\r\n var battery_percentage = value;\r\n break;\r\n case 17:\r\n id = 'AxisX';\r\n break;\r\n case 18:\r\n id = 'AxisY';\r\n break;\r\n case 19:\r\n id = 'AxisZ';\r\n break;\r\n case 69:\r\n id = 'GNSSStatus';\r\n break;\r\n case 874:\r\n id = 'BLT_violation_state';\r\n var mask = value;\r\n if (mask == 0) {\r\n value = 'None';\r\n }\r\n if (mask >= 8) {\r\n value = 'Tamper removed ';\r\n mask -= 8;\r\n }\r\n if (mask >= 4) {\r\n value = 'BLE Missing ';\r\n mask -= 4;\r\n }\r\n if (mask >= 2) {\r\n value = 'RSSI treshold violation ';\r\n mask -= 2;\r\n }\r\n if (mask == 1) {\r\n value = 'Movement';\r\n }\r\n //BLT_state = id + '=' + value;\r\n break;\r\n case 875:\r\n id = 'Proximity_violation_source';\r\n value = hex_to_ascii(valueHex);\r\n prox_source = id + '=' + value;\r\n break;\r\n case 890:\r\n id = 'Proximity_duration';\r\n prox_duration = id + '=' + value;\r\n break;\r\n case 891:\r\n id = 'BLT_MAC_Address';\r\n value = hex_to_ascii(valueHex);\r\n BLT_MAC = id + '=' + value;\r\n break;\r\n case 400:\r\n id = 'Amber_Alert_State';\r\n if (value == '1') value = 'On';\r\n else if (value == '2') value = 'Snoozed';\r\n else if (value == '3') value = 'Alarm';\r\n else if (value == '0') value = 'Cancelled'\r\n amber_State = id + '=' + value;\r\n break;\r\n case 401:\r\n id = 'Amber_Alert_Timer';\r\n amber_Timer = id + '=' + value;\r\n break;\r\n case 200:\r\n id = 'Sleep_Mode';\r\n if (value == '1') {\r\n isSleep = 'true'\r\n }\r\n break;\r\n }\r\n iods += id + '=' + value + ';';\r\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\r\n if (id == 'GNSSStatus' && value == 1) {\r\n gpsTime = timestamp;\r\n } else {\r\n gpsTime = moment.utc().unix();\r\n }\r\n }\r\n decoded += ioNumElements + ';' + iods;\r\n }\r\n //Making sure location_accuracy has a value\r\n if (!location_accuracy) location_accuracy = 0;\r\n //Making sure battery_percentage has a value\r\n if (!battery_percentage) battery_percentage = 0;\r\n decoded_final = fix_state + ';' + gpsTime + ';' + location_accuracy + ';' + battery_percentage;\r\n if (BLT_state) {\r\n decoded_final += ';' + BLT_state;\r\n }\r\n if (prox_source) {\r\n decoded_final += ';' + prox_source;\r\n }\r\n if (prox_duration) {\r\n decoded_final += ';' + prox_duration;\r\n }\r\n if (BLT_MAC) {\r\n decoded_final += ';' + BLT_MAC;\r\n }\r\n if (amber_State && amber_Timer) {\r\n decoded_final += ';' + amber_State + ';' + amber_Timer;\r\n }\r\n decoded_final += ';;' + ioElementsTotal + ';' + decoded;\r\n //Return final string with decoed iods\r\n return decoded_final;\r\n}\r\n/**\r\n * Create connection to the server\r\n * @param {Int} port Port to connect\r\n * @param {String} server Server to connect\r\n * @return {net.socket} The newly created socket used to start the connection.\r\n */\r\nfunction createConnection(port, server) {\r\n c = net.createConnection(port, server);\r\n c.on('error', function(error) {\r\n c = createConnection(port, server);\r\n });\r\n return c;\r\n}\r\n\r\nfunction connect(port, inter, a) {\r\n return new Promise(resolve => {\r\n const socket = net.createConnection(port, '127.0.0.1', () => {\r\n socket.write(inter[a], () => {\r\n socket.destroy(); //socket.destroy(); to socket.close();\r\n resolve();\r\n });\r\n });\r\n });\r\n}\r\n\r\nfunction debug(str) { // write debug info to console log, if localTesting\r\n if (localTesting === \"True\") {\r\n console.log(str);\r\n }\r\n}\r\n/**\r\n * Convert from ascii to hexadecimal\r\n * @param {String} str Ascii string\r\n * @return {Array} str converted to Hexadecimal\r\n */\r\nfunction ascii_to_hexa(str) {\r\n var arr1 = [];\r\n for (var n = 0, l = str.length; n < l; n++) {\r\n var hex = Number(str.charCodeAt(n)).toString(16);\r\n arr1.push(hex);\r\n }\r\n return arr1.join('');\r\n}\r\n/**\r\n * Convert from Hexadecimal to Ascii\r\n * @param {String} str1 Hexadecimal string\r\n * @return {String} str1 converted to Ascii\r\n */\r\nfunction hex_to_ascii(str1) {\r\n var hex = str1.toString();\r\n var str = '';\r\n for (var n = 0; n < hex.length; n += 2) {\r\n str += String.fromCharCode(parseInt(hex.substr(n, 2), 16));\r\n }\r\n return str;\r\n}\r\n/**\r\n * Convert from Hexadecimal to Decimal signed (allowing negative numbers)\r\n * @param {Double} hex Hexadecimal number\r\n * @return {Double} hex converted to Decimal signed\r\n */\r\nfunction hexToDecimalSigned(hex) {\r\n if (hex.length % 2 != 0) {\r\n hex = \"0\" + hex;\r\n }\r\n var num = parseInt(hex, 16);\r\n var maxVal = Math.pow(2, hex.length / 2 * 8);\r\n if (num > maxVal / 2 - 1) {\r\n num = num - maxVal\r\n }\r\n return num;\r\n}\r\n/**\r\n * Convert from Hexadecimal to Decimal\r\n * @param {Double} x Hexadecimal number\r\n * @return {Double} x converted to Decimal\r\n */\r\nfunction hexToDecimal(x) {\r\n x = parseInt(x, 16);\r\n return x;\r\n}\r\n/**\r\n * Push value to the message arrray\r\n * @param {String} p1 Name given to the code to push\r\n * @param {} p2 Value to push\r\n */\r\n// pass everything into codevaluearray\r\nfunction AddValue(codeValueArray, p1, p2) {\r\n var cvpair = {\r\n code: p1,\r\n value: p2\r\n };\r\n codeValueArray.push(cvpair);\r\n}","Type":0,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":332,\"Name\":\"GH5200\",\"Operation\":\"function execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, localTesting) {\\n //###############################################################################################################################################################################################################\\n // Badege Operation Script\\n // * Operation script for Badge\\n // * Uses Long Connection: true\\n // *\\n // * GLOBAL TEMPLATE: <>,<>,<>, <>\\n // * Encrypted: true\\n // * \\n // * CYCLE TEMPLATE:\\n // * GH5200-CYC,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>\\n //###############################################################################################################################################################################################################\\n //=================================================================================\\n // VARIABLES \\n //=================================================================================\\n if (typeof localTesting === \\\"undefined\\\") {\\n var localTesting = \\\"False\\\";\\n }\\n var customIdValue = '';\\n var isCorrectOperation = true;\\n var index = 20;\\n var timeout = 1500;\\n var fix_state;\\n var satelites;\\n var latitude;\\n var longitude;\\n var altitude;\\n var speed;\\n var event_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_accuracy = \\\"5000\\\";\\n var onTrackingDemand = false;\\n var isSleep = 'false'\\n var amber_State = '';\\n var amber_Timer = '';\\n var movement_Value = '';\\n var dataToReceiver = [];\\n var codeValues = [];\\n var configsToAck = [];\\n //If the event type matches a global template\\n if (globalTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //In case the message is \\\"STC\\\" (Start Connection)\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n var imei = hex_to_ascii(rawFromBytes).slice(2);\\n AddValue(codeValues, \\\"imei\\\", imei);\\n var c = createConnection(5678, '127.0.0.1');\\n c.write(`GH5200-STC,${imei},${serverParams.Guid}`);\\n //Imei is recevied in hex\\n AddValue(codeValues, \\\"ack_stc\\\", \\\"01\\\");\\n c.end();\\n //In case the message is a codec8 (either codec8 or codec8 Extended)\\n } else if (messageTypeLocalCode == \\\"COD8-Global\\\") {\\n var ack;\\n //Get the full hex message in a readable format\\n var message = rawFromBytes;\\n var codecID = message.substring(16, 18);\\n //Get the imei from serverParams\\n var imei = serverParams.Imei\\n //Either codec 8 or codec 8 Extended\\n if (codecID == '08' || codecID == '8E') {\\n messages = decryptCodec8(message);\\n if (isCorrectOperation == false) {\\n return;\\n }\\n var numberOfData = message.substring(18, 20)\\n // var c = createConnection(5678, '127.0.0.1');\\n // c.on('data', function(data) {\\n // var msgLocal = [];\\n // //if ack ends with OTD, then onTrackingDemand = true\\n // if (data.toString().endsWith('OTD')) {\\n // onTrackingDemand = true\\n // }\\n // //The device can send more than one event on the same message. In this case, a part of the ack is the number of messages received\\n // //So, we only ack when we have received the last event of the message.\\n // if (data.toString().startsWith(`L${messages.length}`)) {\\n // //In case the event demands a tracking, the ack is the number of data followed by the command on_demand_tracking2 (already encoded)\\n // if (onTrackingDemand == true) {\\n // AddValue(msgLocal, 'ack_cod8', `000000${numberOfData}000000000000001D0C0105000000156F6E5F64656D616E645F747261636B696E67320D0A0100002EB9`);\\n // //Mandatory to push the imei when on a global template\\n // AddValue(msgLocal, 'imei', imei);\\n // //Mandatory to do console.log(msg);\\n // console.log(msgLocal);\\n // c.end();\\n // }\\n // //The device needs to be ack'ed the number of data in 4 bytes\\n // else {\\n //Ack with the number of messages received to make the device know that the server understood the full message.\\n AddValue(codeValues, 'ack_cod8', `000000${numberOfData}`);\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n //Mandatory to do console.log(msg);\\n //console.log(msg);\\n // c.end();\\n // }\\n // }\\n // });\\n //Internally send all the events on the same message received.\\n for (let i = 0; i < messages.length; i++) {\\n //c.write(messages[i]);\\n connect(5678, messages, i);\\n //console.log(messages[i]);\\n }\\n //In case the message is a codec12 (command ack)\\n } else if (codecID == '0C') {\\n var codec12 = decryptCodec12(message)\\n var c = createConnection(5678, '127.0.0.1');\\n //Internally send a codec12 message in the homogenous ascii format\\n c.write(`GH5200-COD12,${serverParams.Imei},${codec12}`);\\n c.end();\\n //Because the codec12 message is matched by the same global template than the codec8 message, we need to push \\\"ack_cod8\\\" as an empty string.\\n AddValue(codeValues, 'ack_cod8', '');\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n }\\n }\\n }\\n //In the case the message is matched by an oystaTemplate\\n if (oystaTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //If the message is a decrypted version for start the connection\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n // stc conditions\\n AddValue(codeValues, 'ack_stc', '01');\\n }\\n //If the message is a codec8 (event not taken into account by us) \\n else if (messageTypeLocalCode == 'COD8') {\\n if (params.recordNumber) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n //In case the message is Real Time Location\\n else if (messageTypeLocalCode == \\\"RTL\\\") {\\n //If the message has a gps fix\\n if (params.gps == \\\"1\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 1)\\n //Speed to m/s\\n AddValue(codeValues, \\\"speed\\\", params.speed_raw / 3.6)\\n //Location time to actual time. It is not provided on the message\\n location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n //Event time to actual time. It is not provided on the message\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n //Hardcoded accuracy of 500. No hdop or satellites are provided on the message\\n AddValue(codeValues, \\\"location_accuracy\\\", 500)\\n }\\n //If the message does not have a gps fix, we do not use it as we cannot make sure it is real\\n else if (params.gps == \\\"0\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n }\\n //If the event is an Alarm or Position By Button, send a flag (ODT) so the device is asked for on_demand_tracking\\n else if (messageTypeLocalCode == \\\"PBB\\\" || messageTypeCode.startsWith('AL')) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message. If it is a Position by button or any kind of alarm, it needs to be follow by \\\"ODT\\\" in order to ask for a tracking\\n //This is used to make sure the gps is awake. It will solve the error of alarms sent before there is a gps fix\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}OTD`);\\n //If the event is an ack for a SMS command (Redirected from Esendex)\\n } else if (messageTypeLocalCode.startsWith('ACK-SMS')) {\\n //No fix state\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n //Event and location time to actual time in order to show the messages on the events table\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n var c = createConnection(5678, '127.0.0.1');\\n //If the message is a sms ack for a \\\"normal command\\\" (this means the ack will start with \\\"New value \\\")\\n if (messageTypeLocalCode == \\\"ACK-SMS\\\") {\\n if (params.smsAck) {\\n //Add \\\"-SMS\\\" at the end so we can differentiate between a sms and grps ack for a command.\\n var smsAck = params.smsAck + '-SMS;'\\n // the essendex message the device sends in gets converted here\\n c.write(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n debug(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n if (!smsAck.startsWith('2001:')) {\\n //Add tag no commands so no commands are sent to the device after a sms ack. The device will not accept a command after a sms ack. This prevents lots of problems.\\n AddValue(codeValues, 'no_commands', 'true');\\n //As it is redirected from Esende, it is mandatroy to push the imei\\n AddValue(codeValues, 'imei', serverParams.Imei);\\n }\\n }\\n }\\n //We do not need to send the tag \\\"no_commands\\\" on the next 3 message types since we have already checked that option on the message type that matched the Esendex resend.\\n //If the message is a sms ack for \\\"Delete Records\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-DR\\\") {\\n var smsAck = '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},All records are erased${smsAck}`);\\n }\\n //If the message is a sms ack for \\\"Get Info\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GI\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},RTC:${smsAck}`);\\n }\\n }\\n //If the message is a sms ack for \\\"Get Version\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GV\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},Ver:${smsAck}`);\\n }\\n }\\n c.end()\\n } else if (messageTypeLocalCode.startsWith(\\\"ACK-ALF\\\")) {\\n if (messageTypeLocalCode == \\\"ACK-ALF\\\") {\\n var newAlldata = \\\"12100:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS2\\\") {\\n var newAlldata = \\\"14390:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS3\\\") {\\n var newAlldata = \\\"12101:\\\" + params.alldata;\\n }\\n if (newAlldata != null) {\\n var keyValues = ['12101', '12102', '12103', '12111', '12100', '13019', '13022', '14390', '14392', '14393', '14391', '14397', '14430', '14432', '14433', '14431', '14437', '14170', '14320', '14173', '14323', '7222', '12104'];\\n var configParamNames = ['FallAlarmSettings.Position', 'FallAlarmSettings.Angle', 'FallAlarmSettings.Timeout', 'FallAlarmSettings.SilentPreAlarmDelay', 'FallAlarmSettings.EnableDisableFallAlarmSettings', 'FallAlarmSettings.EnableDisableByButtons', 'FallAlarmSettings.EnableDisableByButtons', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'FallAlarmSettings.Indication', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed'];\\n var ackSMSArray = newAlldata.split(';');\\n var findIndexOfBlankSMS = ackSMSArray.findIndex(element => element.includes(\\\"-SMS\\\"));\\n if (ackSMSArray[findIndexOfBlankSMS] === \\\"-SMS\\\") {\\n ackSMSArray.pop()\\n }\\n AddValue(codeValues, \\\"imei\\\", serverParams.Imei);\\n for (let i = 0; i < ackSMSArray.length; i++) {\\n var keyId = ackSMSArray[i].split(':')[0]; // id of the param saved in the array\\n var keyValue = ackSMSArray[i].split(':')[1]; // value of the param \\n var findIndex = keyValues.indexOf(keyId)\\n if (configParamNames[findIndex] != \\\"No-Ack-Needed\\\") {\\n var intellicareDataSetValue = eval('configs' + '.' + configParamNames[findIndex])\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableFallAlarmSettings\\\") {\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (intellicareDataSetValue == \\\"true\\\") {\\n intellicareDataSetValue = \\\"1\\\"\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n // if enableDisableByButtonsIndex is unchecked then overwrite the EnableDisableFallAlarmSettings value\\n var enableDisableByButtonsIndex = ackSMSArray.findIndex(element => element.includes(\\\"13019\\\" || \\\"13022\\\"));\\n var valueOfenableDisableByButtons = ackSMSArray[enableDisableByButtonsIndex].slice(-1)\\n if (valueOfenableDisableByButtons != \\\"0\\\") {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableByButtons\\\") {\\n if (intellicareDataSetValue == \\\"true\\\") {\\n if (keyId == \\\"13019\\\") {\\n intellicareDataSetValue = \\\"2\\\"\\n } else if (keyId == \\\"13022\\\") {\\n intellicareDataSetValue = \\\"3\\\"\\n }\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n if (keyValue == intellicareDataSetValue) {\\n configsToAck.push(eval('configIds' + '.' + configParamNames[findIndex]))\\n debug(\\\"Matched values of param\\\" + configParamNames[findIndex]);\\n } else {\\n debug(\\\"Not matched values of param\\\" + configParamNames[findIndex]);\\n }\\n }\\n }\\n }\\n }\\n //If the message is an ack, push the needed information to appear on the UI events.\\n else if (messageTypeLocalCode.startsWith('ACK-')) {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n //If the message is a decrypted version for codec8. This will include Cycles, and all the rest of messages not represented on the else if before \\n else {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n //AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n // If customID is not set....\\n if (isCorrectOperation) {\\n if (configsToAck.length > 0) {\\n var dataToReceiver = {\\n 'values': codeValues,\\n 'configsToAck': configsToAck,\\n };\\n } else {\\n var dataToReceiver = {\\n 'values': codeValues\\n };\\n }\\n console.log(dataToReceiver);\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {String} Ascii message\\n */\\n function decryptCodec12(message) {\\n var decoded = '';\\n var data12 = message.slice(30, -10);\\n data12 = hex_to_ascii(data12);\\n return data12;\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {Array} Array of Ascii messages\\n */\\n function decryptCodec8(message) {\\n //Initialise variables\\n var decoded = '';\\n var codecID = message.substring(16, 18);\\n decoded += codecID + ';';\\n var numberOfData = message.substring(18, 20);\\n decoded += numberOfData + ';';\\n var records = [];\\n var prox = 0;\\n //Loop number of events on a message times\\n for (i = 0; i < hexToDecimal(numberOfData); i++) {\\n //Initialise and transform variables\\n isSleep = 'false'\\n amber_State = '';\\n amber_Timer = '';\\n var decoded_final = '';\\n var record = '';\\n var timestamp = message.substring(index, index += 16);\\n timestamp = hexToDecimal(timestamp).toString().slice(0, -3)\\n timestamp = parseInt(timestamp, 10);\\n var priority = message.substring(index, index += 2);\\n var longitude = message.substring(index, index += 8);\\n longitude = hexToDecimalSigned(longitude) / 10000000;\\n var latitude = message.substring(index, index += 8);\\n latitude = hexToDecimalSigned(latitude) / 10000000;\\n var altitude = message.substring(index, index += 4);\\n altitude = hexToDecimalSigned(altitude);\\n var angle = message.substring(index, index += 4);\\n angle = hexToDecimalSigned(angle);\\n var satelites = message.substring(index, index += 2);\\n satelites = hexToDecimal(satelites);\\n var speed = message.substring(index, index += 4);\\n //Speed to m/s\\n speed = (hexToDecimal(speed) / 3.6).toFixed(2)\\n //If the message is a codec 8\\n if (codecID == '8E') {\\n var ioEvent = message.substring(index, index += 4);\\n var ioElementsTotal = message.substring(index, index += 4);\\n }\\n //If the message is a codec 8 Extended\\n else if (codecID == '08') {\\n var ioEvent = message.substring(index, index += 2);\\n var ioElementsTotal = message.substring(index, index += 2);\\n }\\n ioEvent = hexToDecimal(ioEvent);\\n //Switch to determine which is the event on the message\\n switch (ioEvent) {\\n case 0:\\n ioEvent = 'NoEvent';\\n break;\\n case 236:\\n ioEvent = 'Alarm';\\n break;\\n case 242:\\n ioEvent = 'ManDown';\\n break;\\n case 255:\\n ioEvent = 'OverSpeeding';\\n break;\\n case 310:\\n ioEvent = 'Movement_Event';\\n break;\\n case 389:\\n ioEvent = 'ButtonClick';\\n break;\\n case 1000:\\n ioEvent = 'Cycle';\\n break;\\n case 240:\\n ioEvent = 'Movement';\\n break\\n case 874:\\n ioEvent = 'BLT_violation_state';\\n break;\\n case 875:\\n ioEvent = 'Proximity_violation_source';\\n break;\\n case 874:\\n ioEvent = 'Proximity_duration';\\n break;\\n case 874:\\n ioEvent = 'BLT_MAC_Address';\\n break;\\n case 200:\\n ioEvent = 'Sleep_Mode';\\n break;\\n case 390:\\n ioEvent = 'PowerOff';\\n break;\\n case 200000:\\n ioEvent = 'PowerOn';\\n break;\\n case 400:\\n ioEvent = 'AmberAlert';\\n break;\\n default:\\n ioEvent = ioEvent + ':Not_recognised';\\n }\\n //Get the IO ids part of the message\\n var iods = IOIdsValues(message, ioElementsTotal, timestamp);\\n if (customIdValue != '') {\\n //we find the customIdValue at any point, \\n //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n isCorrectOperation = false;\\n return;\\n }\\n //Internally send the events translated to a readable format and using the format needed to match the message types.\\n if (ioEvent == 'Alarm') {\\n record = `GH5200-ALSOS,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'ManDown') {\\n record = `GH5200-ALF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'OverSpeeding') {\\n record = `GH5200-ALSP,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AutoGeofenceEvent' || ioEvent.startsWith('Geofence')) {\\n record = `GH5200-AGEO,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'NoEvent' || ioEvent == 'Cycle') {\\n //If the device is on sleep mode, it will not have send locations. For this reason, the message will be a Heartbeat and not a Cycle\\n if (isSleep == 'true') {\\n record = `GH5200-HTB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n } else if (ioEvent == 'Movement_Event') {\\n if (movement_Value == 'Movement_Event=NoMovement') {\\n record = `GH5200-ALNM,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (movement_Value == 'Movement_Event=Movement') {\\n record = `GH5200-ALMV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n //If the event is triggered because the device has entrered on Sleep mode, set an accuracy on 5000 to force a location. With this, we make sure we sent the last know location and we don't lose it.\\n //Without this, it can happen that a location is sent, another one acquired but never sent because went to sleep mode\\n else if (ioEvent == 'Sleep_Mode') {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n var iodsValues = iods.split(\\\";\\\");\\n iodsValues[0] = 1\\n if (iodsValues[2] == 0 && longitude != '0' && latitude != '0') {\\n iodsValues[2] = 5000\\n }\\n iods = iodsValues.join(\\\";\\\");\\n //} else if (ioEvent == 'Movement') {\\n // record = `GH5200-MV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'Proximity_violation_source' || ioEvent == 'Proximity_duration' || ioEvent == 'BLT_MAC_Address') {\\n record = `${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n prox = 1;\\n } else if (ioEvent == 'ButtonClick') {\\n record = `GH5200-PBB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AmberAlert') {\\n if (amber_State && amber_Timer) {\\n if (amber_State == 'Amber_Alert_State=Cancelled') {\\n record = `GH5200-ALA-C,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=On') {\\n record = `GH5200-ALA-O,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Snoozed') {\\n record = `GH5200-ALA-S,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Alarm') {\\n record = `GH5200-ALA,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n } else if (ioEvent == 'PowerOn') {\\n record = `GH5200-PWRN,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'PowerOff') {\\n record = `GH5200-PWRF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //In case the event has been created by an \\\"unknown\\\" IO Event (or not considered)\\n else {\\n record = `GH5200-COD8,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //console.log('--------------------' + decoded_final)\\n record = record + iods;\\n if (prox == 1) {\\n var values = iods.split(\\\";\\\");\\n if (values[4].startsWith('Proximity_duration')) {\\n var prox_duration = values[4].split(\\\"=\\\");\\n if (prox_duration[1] < 1) {\\n record = 'GH5200-PROXS,' + record;\\n } else if (prox_duration[1] >= 1) {\\n record = 'GH5200-PROXE,' + record;\\n }\\n }\\n prox = 0\\n }\\n //Push each record into a records array\\n records.push(record);\\n debug(record);\\n }\\n var CRC = message.substring(index + 2, index + 10);\\n //return an array with all records stored\\n return records;\\n }\\n /**\\n * Decrypts part of the message that contains the IO Ids and its values\\n * @param {String} message String to decrypt\\n * @param {String} ioElementsTotal Number of IO elements present on the message\\n * @param {Int} timestamp Unix timestamp given from the message\\n * @return {String} String with the IO Ids and its values decrypted on a readable format\\n */\\n function IOIdsValues(message, ioElementsTotal, timestamp) {\\n //Variable initialisation\\n var decoded = '';\\n var iods = '';\\n var gpsTime = 0;\\n var prox_source = '';\\n var prox_duration = '';\\n var BLT_state = '';\\n var BLT_MAC = '';\\n for (let i = 1; i <= 8; i = i * 2) {\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var ioNumElements = message.substring(index, index += 2);\\n }\\n var x = hexToDecimal(ioNumElements);\\n var pos = 2 * i;\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n //Id length depends on the codec\\n if (codecID == '8E') {\\n var id = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var id = message.substring(index, index += 2);\\n }\\n var value = message.substring(index, index += pos);\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n case 310:\\n id = 'Movement_Event';\\n if (value == '0') value = 'Movement';\\n else if (value == '1') value = 'NoMovement';\\n movement_Value = id + '=' + value;\\n break;\\n case 854: //Custom ID\\n customIdValue = value;\\n if (value != '') {\\n //we get the customIdValue at any point, \\n //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n isCorrectOperation = false;\\n return;\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n //Return decoded string with all the ids and its values on a readable format\\n decoded += ioNumElements + ';' + iods;\\n }\\n //ids with variable length on codec8 Extended\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n var x = hexToDecimal(ioNumElements);\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n var id = message.substring(index, index += 4);\\n var len = message.substring(index, index += 4);\\n len = hexToDecimal(len) * 2;\\n var value = message.substring(index, index += len);\\n valueHex = value;\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n decoded += ioNumElements + ';' + iods;\\n }\\n //Making sure location_accuracy has a value\\n if (!location_accuracy) location_accuracy = 0;\\n //Making sure battery_percentage has a value\\n if (!battery_percentage) battery_percentage = 0;\\n decoded_final = fix_state + ';' + gpsTime + ';' + location_accuracy + ';' + battery_percentage;\\n if (BLT_state) {\\n decoded_final += ';' + BLT_state;\\n }\\n if (prox_source) {\\n decoded_final += ';' + prox_source;\\n }\\n if (prox_duration) {\\n decoded_final += ';' + prox_duration;\\n }\\n if (BLT_MAC) {\\n decoded_final += ';' + BLT_MAC;\\n }\\n if (amber_State && amber_Timer) {\\n decoded_final += ';' + amber_State + ';' + amber_Timer;\\n }\\n decoded_final += ';;' + ioElementsTotal + ';' + decoded;\\n //Return final string with decoed iods\\n return decoded_final;\\n }\\n /**\\n * Create connection to the server\\n * @param {Int} port Port to connect\\n * @param {String} server Server to connect\\n * @return {net.socket} The newly created socket used to start the connection.\\n */\\n function createConnection(port, server) {\\n c = net.createConnection(port, server);\\n c.on('error', function(error) {\\n c = createConnection(port, server);\\n });\\n return c;\\n }\\n\\n function connect(port, inter, a) {\\n return new Promise(resolve => {\\n const socket = net.createConnection(port, '127.0.0.1', () => {\\n socket.write(inter[a], () => {\\n socket.destroy(); //socket.destroy(); to socket.close();\\n resolve();\\n });\\n });\\n });\\n }\\n\\n function debug(str) { // write debug info to console log, if localTesting\\n if (localTesting === \\\"True\\\") {\\n console.log(str);\\n }\\n }\\n /**\\n * Convert from ascii to hexadecimal\\n * @param {String} str Ascii string\\n * @return {Array} str converted to Hexadecimal\\n */\\n function ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n }\\n /**\\n * Convert from Hexadecimal to Ascii\\n * @param {String} str1 Hexadecimal string\\n * @return {String} str1 converted to Ascii\\n */\\n function 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 /**\\n * Convert from Hexadecimal to Decimal signed (allowing negative numbers)\\n * @param {Double} hex Hexadecimal number\\n * @return {Double} hex converted to Decimal signed\\n */\\n function hexToDecimalSigned(hex) {\\n if (hex.length % 2 != 0) {\\n hex = \\\"0\\\" + hex;\\n }\\n var num = parseInt(hex, 16);\\n var maxVal = Math.pow(2, hex.length / 2 * 8);\\n if (num > maxVal / 2 - 1) {\\n num = num - maxVal\\n }\\n return num;\\n }\\n /**\\n * Convert from Hexadecimal to Decimal\\n * @param {Double} x Hexadecimal number\\n * @return {Double} x converted to Decimal\\n */\\n function hexToDecimal(x) {\\n x = parseInt(x, 16);\\n return x;\\n }\\n /**\\n * Push value to the message arrray\\n * @param {String} p1 Name given to the code to push\\n * @param {} p2 Value to push\\n */\\n // pass everything into codevaluearray\\n function AddValue(codeValueArray, p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n codeValueArray.push(cvpair);\\n }\\n // modify to return the object that contains your data\\n return dataToReceiver;\\n}\\n// params is not defined locally -> export as module\\nif (typeof(params) === 'undefined') {\\n module.exports = {\\n execute_ops\\n }\\n} else { // on server use local defined vars\\n let return_values = execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, false)\\n // define global returns\\n msg = return_values;\\n}\",\"Type\":0,\"ProtocolActionObjects\":[]}","Timestamp":1725898185},{"Type":1,"NewValue":"{\"Id\":332,\"Name\":\"GH5200\",\"Operation\":\"function execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, localTesting) {\\n //###############################################################################################################################################################################################################\\n // Badege Operation Script\\n // * Operation script for Badge\\n // * Uses Long Connection: true\\n // *\\n // * GLOBAL TEMPLATE: <>,<>,<>, <>\\n // * Encrypted: true\\n // * \\n // * CYCLE TEMPLATE:\\n // * GH5200-CYC,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>\\n //###############################################################################################################################################################################################################\\n //=================================================================================\\n // VARIABLES \\n //=================================================================================\\n if (typeof localTesting === \\\"undefined\\\") {\\n var localTesting = \\\"False\\\";\\n }\\n var customIdValue = '';\\n var isCorrectOperation = true;\\n var index = 20;\\n var timeout = 1500;\\n var fix_state;\\n var satelites;\\n var latitude;\\n var longitude;\\n var altitude;\\n var speed;\\n var event_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_accuracy = \\\"5000\\\";\\n var onTrackingDemand = false;\\n var isSleep = 'false'\\n var amber_State = '';\\n var amber_Timer = '';\\n var movement_Value = '';\\n var dataToReceiver = [];\\n var codeValues = [];\\n var configsToAck = [];\\n //If the event type matches a global template\\n if (globalTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE10');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //In case the message is \\\"STC\\\" (Start Connection)\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n var imei = hex_to_ascii(rawFromBytes).slice(2);\\n AddValue(codeValues, \\\"imei\\\", imei);\\n var c = createConnection(5678, '127.0.0.1');\\n c.write(`GH5200-STC,${imei},${serverParams.Guid}`);\\n //Imei is recevied in hex\\n AddValue(codeValues, \\\"ack_stc\\\", \\\"01\\\");\\n c.end();\\n //In case the message is a codec8 (either codec8 or codec8 Extended)\\n } else if (messageTypeLocalCode == \\\"COD8-Global\\\") {\\n var ack;\\n //Get the full hex message in a readable format\\n var message = rawFromBytes;\\n var codecID = message.substring(16, 18);\\n //Get the imei from serverParams\\n var imei = serverParams.Imei\\n //Either codec 8 or codec 8 Extended\\n if (codecID == '08' || codecID == '8E') {\\n messages = decryptCodec8(message);\\n if (isCorrectOperation == false) {\\n return;\\n }\\n var numberOfData = message.substring(18, 20)\\n // var c = createConnection(5678, '127.0.0.1');\\n // c.on('data', function(data) {\\n // var msgLocal = [];\\n // //if ack ends with OTD, then onTrackingDemand = true\\n // if (data.toString().endsWith('OTD')) {\\n // onTrackingDemand = true\\n // }\\n // //The device can send more than one event on the same message. In this case, a part of the ack is the number of messages received\\n // //So, we only ack when we have received the last event of the message.\\n // if (data.toString().startsWith(`L${messages.length}`)) {\\n // //In case the event demands a tracking, the ack is the number of data followed by the command on_demand_tracking2 (already encoded)\\n // if (onTrackingDemand == true) {\\n // AddValue(msgLocal, 'ack_cod8', `000000${numberOfData}000000000000001D0C0105000000156F6E5F64656D616E645F747261636B696E67320D0A0100002EB9`);\\n // //Mandatory to push the imei when on a global template\\n // AddValue(msgLocal, 'imei', imei);\\n // //Mandatory to do console.log(msg);\\n // console.log(msgLocal);\\n // c.end();\\n // }\\n // //The device needs to be ack'ed the number of data in 4 bytes\\n // else {\\n //Ack with the number of messages received to make the device know that the server understood the full message.\\n AddValue(codeValues, 'ack_cod8', `000000${numberOfData}`);\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n //Mandatory to do console.log(msg);\\n //console.log(msg);\\n // c.end();\\n // }\\n // }\\n // });\\n //Internally send all the events on the same message received.\\n for (let i = 0; i < messages.length; i++) {\\n //c.write(messages[i]);\\n connect(5678, messages, i);\\n //console.log(messages[i]);\\n }\\n //In case the message is a codec12 (command ack)\\n } else if (codecID == '0C') {\\n var codec12 = decryptCodec12(message)\\n var c = createConnection(5678, '127.0.0.1');\\n //Internally send a codec12 message in the homogenous ascii format\\n c.write(`GH5200-COD12,${serverParams.Imei},${codec12}`);\\n c.end();\\n //Because the codec12 message is matched by the same global template than the codec8 message, we need to push \\\"ack_cod8\\\" as an empty string.\\n AddValue(codeValues, 'ack_cod8', '');\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n }\\n }\\n }\\n //In the case the message is matched by an oystaTemplate\\n if (oystaTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //If the message is a decrypted version for start the connection\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n // stc conditions\\n AddValue(codeValues, 'ack_stc', '01');\\n }\\n //If the message is a codec8 (event not taken into account by us) \\n else if (messageTypeLocalCode == 'COD8') {\\n if (params.recordNumber) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n //In case the message is Real Time Location\\n else if (messageTypeLocalCode == \\\"RTL\\\") {\\n //If the message has a gps fix\\n if (params.gps == \\\"1\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 1)\\n //Speed to m/s\\n AddValue(codeValues, \\\"speed\\\", params.speed_raw / 3.6)\\n //Location time to actual time. It is not provided on the message\\n location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n //Event time to actual time. It is not provided on the message\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n //Hardcoded accuracy of 500. No hdop or satellites are provided on the message\\n AddValue(codeValues, \\\"location_accuracy\\\", 500)\\n }\\n //If the message does not have a gps fix, we do not use it as we cannot make sure it is real\\n else if (params.gps == \\\"0\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n }\\n //If the event is an Alarm or Position By Button, send a flag (ODT) so the device is asked for on_demand_tracking\\n else if (messageTypeLocalCode == \\\"PBB\\\" || messageTypeCode.startsWith('AL')) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message. If it is a Position by button or any kind of alarm, it needs to be follow by \\\"ODT\\\" in order to ask for a tracking\\n //This is used to make sure the gps is awake. It will solve the error of alarms sent before there is a gps fix\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}OTD`);\\n //If the event is an ack for a SMS command (Redirected from Esendex)\\n } else if (messageTypeLocalCode.startsWith('ACK-SMS')) {\\n //No fix state\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n //Event and location time to actual time in order to show the messages on the events table\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n var c = createConnection(5678, '127.0.0.1');\\n //If the message is a sms ack for a \\\"normal command\\\" (this means the ack will start with \\\"New value \\\")\\n if (messageTypeLocalCode == \\\"ACK-SMS\\\") {\\n if (params.smsAck) {\\n //Add \\\"-SMS\\\" at the end so we can differentiate between a sms and grps ack for a command.\\n var smsAck = params.smsAck + '-SMS;'\\n // the essendex message the device sends in gets converted here\\n c.write(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n debug(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n if (!smsAck.startsWith('2001:')) {\\n //Add tag no commands so no commands are sent to the device after a sms ack. The device will not accept a command after a sms ack. This prevents lots of problems.\\n AddValue(codeValues, 'no_commands', 'true');\\n //As it is redirected from Esende, it is mandatroy to push the imei\\n AddValue(codeValues, 'imei', serverParams.Imei);\\n }\\n }\\n }\\n //We do not need to send the tag \\\"no_commands\\\" on the next 3 message types since we have already checked that option on the message type that matched the Esendex resend.\\n //If the message is a sms ack for \\\"Delete Records\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-DR\\\") {\\n var smsAck = '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},All records are erased${smsAck}`);\\n }\\n //If the message is a sms ack for \\\"Get Info\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GI\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},RTC:${smsAck}`);\\n }\\n }\\n //If the message is a sms ack for \\\"Get Version\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GV\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},Ver:${smsAck}`);\\n }\\n }\\n c.end()\\n } else if (messageTypeLocalCode.startsWith(\\\"ACK-ALF\\\")) {\\n if (messageTypeLocalCode == \\\"ACK-ALF\\\") {\\n var newAlldata = \\\"12100:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS2\\\") {\\n var newAlldata = \\\"14390:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS3\\\") {\\n var newAlldata = \\\"12101:\\\" + params.alldata;\\n }\\n if (newAlldata != null) {\\n var keyValues = ['12101', '12102', '12103', '12111', '12100', '13019', '13022', '14390', '14392', '14393', '14391', '14397', '14430', '14432', '14433', '14431', '14437', '14170', '14320', '14173', '14323', '7222', '12104'];\\n var configParamNames = ['FallAlarmSettings.Position', 'FallAlarmSettings.Angle', 'FallAlarmSettings.Timeout', 'FallAlarmSettings.SilentPreAlarmDelay', 'FallAlarmSettings.EnableDisableFallAlarmSettings', 'FallAlarmSettings.EnableDisableByButtons', 'FallAlarmSettings.EnableDisableByButtons', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'FallAlarmSettings.Indication', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed'];\\n var ackSMSArray = newAlldata.split(';');\\n var findIndexOfBlankSMS = ackSMSArray.findIndex(element => element.includes(\\\"-SMS\\\"));\\n if (ackSMSArray[findIndexOfBlankSMS] === \\\"-SMS\\\") {\\n ackSMSArray.pop()\\n }\\n AddValue(codeValues, \\\"imei\\\", serverParams.Imei);\\n for (let i = 0; i < ackSMSArray.length; i++) {\\n var keyId = ackSMSArray[i].split(':')[0]; // id of the param saved in the array\\n var keyValue = ackSMSArray[i].split(':')[1]; // value of the param \\n var findIndex = keyValues.indexOf(keyId)\\n if (configParamNames[findIndex] != \\\"No-Ack-Needed\\\") {\\n var intellicareDataSetValue = eval('configs' + '.' + configParamNames[findIndex])\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableFallAlarmSettings\\\") {\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (intellicareDataSetValue == \\\"true\\\") {\\n intellicareDataSetValue = \\\"1\\\"\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n // if enableDisableByButtonsIndex is unchecked then overwrite the EnableDisableFallAlarmSettings value\\n var enableDisableByButtonsIndex = ackSMSArray.findIndex(element => element.includes(\\\"13019\\\" || \\\"13022\\\"));\\n var valueOfenableDisableByButtons = ackSMSArray[enableDisableByButtonsIndex].slice(-1)\\n if (valueOfenableDisableByButtons != \\\"0\\\") {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableByButtons\\\") {\\n if (intellicareDataSetValue == \\\"true\\\") {\\n if (keyId == \\\"13019\\\") {\\n intellicareDataSetValue = \\\"2\\\"\\n } else if (keyId == \\\"13022\\\") {\\n intellicareDataSetValue = \\\"3\\\"\\n }\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n if (keyValue == intellicareDataSetValue) {\\n configsToAck.push(eval('configIds' + '.' + configParamNames[findIndex]))\\n debug(\\\"Matched values of param\\\" + configParamNames[findIndex]);\\n } else {\\n debug(\\\"Not matched values of param\\\" + configParamNames[findIndex]);\\n }\\n }\\n }\\n }\\n }\\n //If the message is an ack, push the needed information to appear on the UI events.\\n else if (messageTypeLocalCode.startsWith('ACK-')) {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n //If the message is a decrypted version for codec8. This will include Cycles, and all the rest of messages not represented on the else if before \\n else {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n //AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n // If customID is not set....\\n if (isCorrectOperation) {\\n if (configsToAck.length > 0) {\\n var dataToReceiver = {\\n 'values': codeValues,\\n 'configsToAck': configsToAck,\\n };\\n } else {\\n var dataToReceiver = {\\n 'values': codeValues\\n };\\n }\\n console.log(dataToReceiver);\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {String} Ascii message\\n */\\n function decryptCodec12(message) {\\n var decoded = '';\\n var data12 = message.slice(30, -10);\\n data12 = hex_to_ascii(data12);\\n return data12;\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {Array} Array of Ascii messages\\n */\\n function decryptCodec8(message) {\\n //Initialise variables\\n var decoded = '';\\n var codecID = message.substring(16, 18);\\n decoded += codecID + ';';\\n var numberOfData = message.substring(18, 20);\\n decoded += numberOfData + ';';\\n var records = [];\\n var prox = 0;\\n //Loop number of events on a message times\\n for (i = 0; i < hexToDecimal(numberOfData); i++) {\\n //Initialise and transform variables\\n isSleep = 'false'\\n amber_State = '';\\n amber_Timer = '';\\n var decoded_final = '';\\n var record = '';\\n var timestamp = message.substring(index, index += 16);\\n timestamp = hexToDecimal(timestamp).toString().slice(0, -3)\\n timestamp = parseInt(timestamp, 10);\\n var priority = message.substring(index, index += 2);\\n var longitude = message.substring(index, index += 8);\\n longitude = hexToDecimalSigned(longitude) / 10000000;\\n var latitude = message.substring(index, index += 8);\\n latitude = hexToDecimalSigned(latitude) / 10000000;\\n var altitude = message.substring(index, index += 4);\\n altitude = hexToDecimalSigned(altitude);\\n var angle = message.substring(index, index += 4);\\n angle = hexToDecimalSigned(angle);\\n var satelites = message.substring(index, index += 2);\\n satelites = hexToDecimal(satelites);\\n var speed = message.substring(index, index += 4);\\n //Speed to m/s\\n speed = (hexToDecimal(speed) / 3.6).toFixed(2)\\n //If the message is a codec 8\\n if (codecID == '8E') {\\n var ioEvent = message.substring(index, index += 4);\\n var ioElementsTotal = message.substring(index, index += 4);\\n }\\n //If the message is a codec 8 Extended\\n else if (codecID == '08') {\\n var ioEvent = message.substring(index, index += 2);\\n var ioElementsTotal = message.substring(index, index += 2);\\n }\\n ioEvent = hexToDecimal(ioEvent);\\n //Switch to determine which is the event on the message\\n switch (ioEvent) {\\n case 0:\\n ioEvent = 'NoEvent';\\n break;\\n case 236:\\n ioEvent = 'Alarm';\\n break;\\n case 242:\\n ioEvent = 'ManDown';\\n break;\\n case 255:\\n ioEvent = 'OverSpeeding';\\n break;\\n case 310:\\n ioEvent = 'Movement_Event';\\n break;\\n case 389:\\n ioEvent = 'ButtonClick';\\n break;\\n case 1000:\\n ioEvent = 'Cycle';\\n break;\\n case 240:\\n ioEvent = 'Movement';\\n break\\n case 874:\\n ioEvent = 'BLT_violation_state';\\n break;\\n case 875:\\n ioEvent = 'Proximity_violation_source';\\n break;\\n case 874:\\n ioEvent = 'Proximity_duration';\\n break;\\n case 874:\\n ioEvent = 'BLT_MAC_Address';\\n break;\\n case 200:\\n ioEvent = 'Sleep_Mode';\\n break;\\n case 390:\\n ioEvent = 'PowerOff';\\n break;\\n case 200000:\\n ioEvent = 'PowerOn';\\n break;\\n case 400:\\n ioEvent = 'AmberAlert';\\n break;\\n default:\\n ioEvent = ioEvent + ':Not_recognised';\\n }\\n //Get the IO ids part of the message\\n var iods = IOIdsValues(message, ioElementsTotal, timestamp);\\n if (customIdValue != '') {\\n //we find the customIdValue at any point, \\n //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n isCorrectOperation = false;\\n return;\\n }\\n //Internally send the events translated to a readable format and using the format needed to match the message types.\\n if (ioEvent == 'Alarm') {\\n record = `GH5200-ALSOS,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'ManDown') {\\n record = `GH5200-ALF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'OverSpeeding') {\\n record = `GH5200-ALSP,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AutoGeofenceEvent' || ioEvent.startsWith('Geofence')) {\\n record = `GH5200-AGEO,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'NoEvent' || ioEvent == 'Cycle') {\\n //If the device is on sleep mode, it will not have send locations. For this reason, the message will be a Heartbeat and not a Cycle\\n if (isSleep == 'true') {\\n record = `GH5200-HTB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n } else if (ioEvent == 'Movement_Event') {\\n if (movement_Value == 'Movement_Event=NoMovement') {\\n record = `GH5200-ALNM,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (movement_Value == 'Movement_Event=Movement') {\\n record = `GH5200-ALMV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n //If the event is triggered because the device has entrered on Sleep mode, set an accuracy on 5000 to force a location. With this, we make sure we sent the last know location and we don't lose it.\\n //Without this, it can happen that a location is sent, another one acquired but never sent because went to sleep mode\\n else if (ioEvent == 'Sleep_Mode') {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n var iodsValues = iods.split(\\\";\\\");\\n iodsValues[0] = 1\\n if (iodsValues[2] == 0 && longitude != '0' && latitude != '0') {\\n iodsValues[2] = 5000\\n }\\n iods = iodsValues.join(\\\";\\\");\\n //} else if (ioEvent == 'Movement') {\\n // record = `GH5200-MV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'Proximity_violation_source' || ioEvent == 'Proximity_duration' || ioEvent == 'BLT_MAC_Address') {\\n record = `${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n prox = 1;\\n } else if (ioEvent == 'ButtonClick') {\\n record = `GH5200-PBB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AmberAlert') {\\n if (amber_State && amber_Timer) {\\n if (amber_State == 'Amber_Alert_State=Cancelled') {\\n record = `GH5200-ALA-C,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=On') {\\n record = `GH5200-ALA-O,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Snoozed') {\\n record = `GH5200-ALA-S,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Alarm') {\\n record = `GH5200-ALA,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n } else if (ioEvent == 'PowerOn') {\\n record = `GH5200-PWRN,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'PowerOff') {\\n record = `GH5200-PWRF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //In case the event has been created by an \\\"unknown\\\" IO Event (or not considered)\\n else {\\n record = `GH5200-COD8,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //console.log('--------------------' + decoded_final)\\n record = record + iods;\\n if (prox == 1) {\\n var values = iods.split(\\\";\\\");\\n if (values[4].startsWith('Proximity_duration')) {\\n var prox_duration = values[4].split(\\\"=\\\");\\n if (prox_duration[1] < 1) {\\n record = 'GH5200-PROXS,' + record;\\n } else if (prox_duration[1] >= 1) {\\n record = 'GH5200-PROXE,' + record;\\n }\\n }\\n prox = 0\\n }\\n //Push each record into a records array\\n records.push(record);\\n debug(record);\\n }\\n var CRC = message.substring(index + 2, index + 10);\\n //return an array with all records stored\\n return records;\\n }\\n /**\\n * Decrypts part of the message that contains the IO Ids and its values\\n * @param {String} message String to decrypt\\n * @param {String} ioElementsTotal Number of IO elements present on the message\\n * @param {Int} timestamp Unix timestamp given from the message\\n * @return {String} String with the IO Ids and its values decrypted on a readable format\\n */\\n function IOIdsValues(message, ioElementsTotal, timestamp) {\\n //Variable initialisation\\n var decoded = '';\\n var iods = '';\\n var gpsTime = 0;\\n var prox_source = '';\\n var prox_duration = '';\\n var BLT_state = '';\\n var BLT_MAC = '';\\n for (let i = 1; i <= 8; i = i * 2) {\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var ioNumElements = message.substring(index, index += 2);\\n }\\n var x = hexToDecimal(ioNumElements);\\n var pos = 2 * i;\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n //Id length depends on the codec\\n if (codecID == '8E') {\\n var id = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var id = message.substring(index, index += 2);\\n }\\n var value = message.substring(index, index += pos);\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n case 310:\\n id = 'Movement_Event';\\n if (value == '0') value = 'Movement';\\n else if (value == '1') value = 'NoMovement';\\n movement_Value = id + '=' + value;\\n break;\\n case 854: //Custom ID\\n customIdValue = value;\\n if (value != '') {\\n //we get the customIdValue at any point, \\n //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n isCorrectOperation = false;\\n return;\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n //Return decoded string with all the ids and its values on a readable format\\n decoded += ioNumElements + ';' + iods;\\n }\\n //ids with variable length on codec8 Extended\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n var x = hexToDecimal(ioNumElements);\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n var id = message.substring(index, index += 4);\\n var len = message.substring(index, index += 4);\\n len = hexToDecimal(len) * 2;\\n var value = message.substring(index, index += len);\\n valueHex = value;\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n decoded += ioNumElements + ';' + iods;\\n }\\n //Making sure location_accuracy has a value\\n if (!location_accuracy) location_accuracy = 0;\\n //Making sure battery_percentage has a value\\n if (!battery_percentage) battery_percentage = 0;\\n decoded_final = fix_state + ';' + gpsTime + ';' + location_accuracy + ';' + battery_percentage;\\n if (BLT_state) {\\n decoded_final += ';' + BLT_state;\\n }\\n if (prox_source) {\\n decoded_final += ';' + prox_source;\\n }\\n if (prox_duration) {\\n decoded_final += ';' + prox_duration;\\n }\\n if (BLT_MAC) {\\n decoded_final += ';' + BLT_MAC;\\n }\\n if (amber_State && amber_Timer) {\\n decoded_final += ';' + amber_State + ';' + amber_Timer;\\n }\\n decoded_final += ';;' + ioElementsTotal + ';' + decoded;\\n //Return final string with decoed iods\\n return decoded_final;\\n }\\n /**\\n * Create connection to the server\\n * @param {Int} port Port to connect\\n * @param {String} server Server to connect\\n * @return {net.socket} The newly created socket used to start the connection.\\n */\\n function createConnection(port, server) {\\n c = net.createConnection(port, server);\\n c.on('error', function(error) {\\n c = createConnection(port, server);\\n });\\n return c;\\n }\\n\\n function connect(port, inter, a) {\\n return new Promise(resolve => {\\n const socket = net.createConnection(port, '127.0.0.1', () => {\\n socket.write(inter[a], () => {\\n socket.destroy(); //socket.destroy(); to socket.close();\\n resolve();\\n });\\n });\\n });\\n }\\n\\n function debug(str) { // write debug info to console log, if localTesting\\n if (localTesting === \\\"True\\\") {\\n console.log(str);\\n }\\n }\\n /**\\n * Convert from ascii to hexadecimal\\n * @param {String} str Ascii string\\n * @return {Array} str converted to Hexadecimal\\n */\\n function ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n }\\n /**\\n * Convert from Hexadecimal to Ascii\\n * @param {String} str1 Hexadecimal string\\n * @return {String} str1 converted to Ascii\\n */\\n function 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 /**\\n * Convert from Hexadecimal to Decimal signed (allowing negative numbers)\\n * @param {Double} hex Hexadecimal number\\n * @return {Double} hex converted to Decimal signed\\n */\\n function hexToDecimalSigned(hex) {\\n if (hex.length % 2 != 0) {\\n hex = \\\"0\\\" + hex;\\n }\\n var num = parseInt(hex, 16);\\n var maxVal = Math.pow(2, hex.length / 2 * 8);\\n if (num > maxVal / 2 - 1) {\\n num = num - maxVal\\n }\\n return num;\\n }\\n /**\\n * Convert from Hexadecimal to Decimal\\n * @param {Double} x Hexadecimal number\\n * @return {Double} x converted to Decimal\\n */\\n function hexToDecimal(x) {\\n x = parseInt(x, 16);\\n return x;\\n }\\n /**\\n * Push value to the message arrray\\n * @param {String} p1 Name given to the code to push\\n * @param {} p2 Value to push\\n */\\n // pass everything into codevaluearray\\n function AddValue(codeValueArray, p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n codeValueArray.push(cvpair);\\n }\\n // modify to return the object that contains your data\\n return dataToReceiver;\\n}\\n// params is not defined locally -> export as module\\nif (typeof(params) === 'undefined') {\\n module.exports = {\\n execute_ops\\n }\\n} else { // on server use local defined vars\\n let return_values = execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, false)\\n // define global returns\\n msg = return_values;\\n}\",\"Type\":0,\"ProtocolActionObjects\":[]}","Timestamp":1727779248},{"Type":1,"NewValue":"{\"Id\":332,\"Name\":\"GH5200\",\"Operation\":\"function execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, localTesting) {\\n //###############################################################################################################################################################################################################\\n // Badege Operation Script\\n // * Operation script for Badge\\n // * Uses Long Connection: true\\n // *\\n // * GLOBAL TEMPLATE: <>,<>,<>, <>\\n // * Encrypted: true\\n // * \\n // * CYCLE TEMPLATE:\\n // * GH5200-CYC,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>\\n //###############################################################################################################################################################################################################\\n //=================================================================================\\n // VARIABLES \\n //=================================================================================\\n if (typeof localTesting === \\\"undefined\\\") {\\n var localTesting = \\\"False\\\";\\n }\\n var customIdValue = '';\\n var isCorrectOperation = true;\\n var index = 20;\\n var timeout = 1500;\\n var fix_state;\\n var satelites;\\n var latitude;\\n var longitude;\\n var altitude;\\n var speed;\\n var event_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_accuracy = \\\"5000\\\";\\n var onTrackingDemand = false;\\n var isSleep = 'false'\\n var amber_State = '';\\n var amber_Timer = '';\\n var movement_Value = '';\\n var dataToReceiver = [];\\n var codeValues = [];\\n var configsToAck = [];\\n //If the event type matches a global template\\n if (globalTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE10');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //In case the message is \\\"STC\\\" (Start Connection)\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n var imei = hex_to_ascii(rawFromBytes).slice(2);\\n AddValue(codeValues, \\\"imei\\\", imei);\\n var c = createConnection(5678, '127.0.0.1');\\n c.write(`GH5200-STC,${imei},${serverParams.Guid}`);\\n //Imei is recevied in hex\\n AddValue(codeValues, \\\"ack_stc\\\", \\\"01\\\");\\n c.end();\\n //In case the message is a codec8 (either codec8 or codec8 Extended)\\n } else if (messageTypeLocalCode == \\\"COD8-Global\\\") {\\n var ack;\\n //Get the full hex message in a readable format\\n var message = rawFromBytes;\\n var codecID = message.substring(16, 18);\\n //Get the imei from serverParams\\n var imei = serverParams.Imei\\n //Either codec 8 or codec 8 Extended\\n if (codecID == '08' || codecID == '8E') {\\n messages = decryptCodec8(message);\\n if (isCorrectOperation == false) {\\n return;\\n }\\n var numberOfData = message.substring(18, 20)\\n // var c = createConnection(5678, '127.0.0.1');\\n // c.on('data', function(data) {\\n // var msgLocal = [];\\n // //if ack ends with OTD, then onTrackingDemand = true\\n // if (data.toString().endsWith('OTD')) {\\n // onTrackingDemand = true\\n // }\\n // //The device can send more than one event on the same message. In this case, a part of the ack is the number of messages received\\n // //So, we only ack when we have received the last event of the message.\\n // if (data.toString().startsWith(`L${messages.length}`)) {\\n // //In case the event demands a tracking, the ack is the number of data followed by the command on_demand_tracking2 (already encoded)\\n // if (onTrackingDemand == true) {\\n // AddValue(msgLocal, 'ack_cod8', `000000${numberOfData}000000000000001D0C0105000000156F6E5F64656D616E645F747261636B696E67320D0A0100002EB9`);\\n // //Mandatory to push the imei when on a global template\\n // AddValue(msgLocal, 'imei', imei);\\n // //Mandatory to do console.log(msg);\\n // console.log(msgLocal);\\n // c.end();\\n // }\\n // //The device needs to be ack'ed the number of data in 4 bytes\\n // else {\\n //Ack with the number of messages received to make the device know that the server understood the full message.\\n AddValue(codeValues, 'ack_cod8', `000000${numberOfData}`);\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n //Mandatory to do console.log(msg);\\n //console.log(msg);\\n // c.end();\\n // }\\n // }\\n // });\\n //Internally send all the events on the same message received.\\n for (let i = 0; i < messages.length; i++) {\\n //c.write(messages[i]);\\n connect(5678, messages, i);\\n //console.log(messages[i]);\\n }\\n //In case the message is a codec12 (command ack)\\n } else if (codecID == '0C') {\\n var codec12 = decryptCodec12(message)\\n var c = createConnection(5678, '127.0.0.1');\\n //Internally send a codec12 message in the homogenous ascii format\\n c.write(`GH5200-COD12,${serverParams.Imei},${codec12}`);\\n c.end();\\n //Because the codec12 message is matched by the same global template than the codec8 message, we need to push \\\"ack_cod8\\\" as an empty string.\\n AddValue(codeValues, 'ack_cod8', '');\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n }\\n }\\n }\\n //In the case the message is matched by an oystaTemplate\\n if (oystaTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE10');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //If the message is a decrypted version for start the connection\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n // stc conditions\\n AddValue(codeValues, 'ack_stc', '01');\\n }\\n //If the message is a codec8 (event not taken into account by us) \\n else if (messageTypeLocalCode == 'COD8') {\\n if (params.recordNumber) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n //In case the message is Real Time Location\\n else if (messageTypeLocalCode == \\\"RTL\\\") {\\n //If the message has a gps fix\\n if (params.gps == \\\"1\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 1)\\n //Speed to m/s\\n AddValue(codeValues, \\\"speed\\\", params.speed_raw / 3.6)\\n //Location time to actual time. It is not provided on the message\\n location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n //Event time to actual time. It is not provided on the message\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n //Hardcoded accuracy of 500. No hdop or satellites are provided on the message\\n AddValue(codeValues, \\\"location_accuracy\\\", 500)\\n }\\n //If the message does not have a gps fix, we do not use it as we cannot make sure it is real\\n else if (params.gps == \\\"0\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n }\\n //If the event is an Alarm or Position By Button, send a flag (ODT) so the device is asked for on_demand_tracking\\n else if (messageTypeLocalCode == \\\"PBB\\\" || messageTypeCode.startsWith('AL')) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message. If it is a Position by button or any kind of alarm, it needs to be follow by \\\"ODT\\\" in order to ask for a tracking\\n //This is used to make sure the gps is awake. It will solve the error of alarms sent before there is a gps fix\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}OTD`);\\n //If the event is an ack for a SMS command (Redirected from Esendex)\\n } else if (messageTypeLocalCode.startsWith('ACK-SMS')) {\\n //No fix state\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n //Event and location time to actual time in order to show the messages on the events table\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n var c = createConnection(5678, '127.0.0.1');\\n //If the message is a sms ack for a \\\"normal command\\\" (this means the ack will start with \\\"New value \\\")\\n if (messageTypeLocalCode == \\\"ACK-SMS\\\") {\\n if (params.smsAck) {\\n //Add \\\"-SMS\\\" at the end so we can differentiate between a sms and grps ack for a command.\\n var smsAck = params.smsAck + '-SMS;'\\n // the essendex message the device sends in gets converted here\\n c.write(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n debug(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n if (!smsAck.startsWith('2001:')) {\\n //Add tag no commands so no commands are sent to the device after a sms ack. The device will not accept a command after a sms ack. This prevents lots of problems.\\n AddValue(codeValues, 'no_commands', 'true');\\n //As it is redirected from Esende, it is mandatroy to push the imei\\n AddValue(codeValues, 'imei', serverParams.Imei);\\n }\\n }\\n }\\n //We do not need to send the tag \\\"no_commands\\\" on the next 3 message types since we have already checked that option on the message type that matched the Esendex resend.\\n //If the message is a sms ack for \\\"Delete Records\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-DR\\\") {\\n var smsAck = '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},All records are erased${smsAck}`);\\n }\\n //If the message is a sms ack for \\\"Get Info\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GI\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},RTC:${smsAck}`);\\n }\\n }\\n //If the message is a sms ack for \\\"Get Version\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GV\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},Ver:${smsAck}`);\\n }\\n }\\n c.end()\\n } else if (messageTypeLocalCode.startsWith(\\\"ACK-ALF\\\")) {\\n if (messageTypeLocalCode == \\\"ACK-ALF\\\") {\\n var newAlldata = \\\"12100:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS2\\\") {\\n var newAlldata = \\\"14390:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS3\\\") {\\n var newAlldata = \\\"12101:\\\" + params.alldata;\\n }\\n if (newAlldata != null) {\\n var keyValues = ['12101', '12102', '12103', '12111', '12100', '13019', '13022', '14390', '14392', '14393', '14391', '14397', '14430', '14432', '14433', '14431', '14437', '14170', '14320', '14173', '14323', '7222', '12104'];\\n var configParamNames = ['FallAlarmSettings.Position', 'FallAlarmSettings.Angle', 'FallAlarmSettings.Timeout', 'FallAlarmSettings.SilentPreAlarmDelay', 'FallAlarmSettings.EnableDisableFallAlarmSettings', 'FallAlarmSettings.EnableDisableByButtons', 'FallAlarmSettings.EnableDisableByButtons', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'FallAlarmSettings.Indication', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed'];\\n var ackSMSArray = newAlldata.split(';');\\n var findIndexOfBlankSMS = ackSMSArray.findIndex(element => element.includes(\\\"-SMS\\\"));\\n if (ackSMSArray[findIndexOfBlankSMS] === \\\"-SMS\\\") {\\n ackSMSArray.pop()\\n }\\n AddValue(codeValues, \\\"imei\\\", serverParams.Imei);\\n for (let i = 0; i < ackSMSArray.length; i++) {\\n var keyId = ackSMSArray[i].split(':')[0]; // id of the param saved in the array\\n var keyValue = ackSMSArray[i].split(':')[1]; // value of the param \\n var findIndex = keyValues.indexOf(keyId)\\n if (configParamNames[findIndex] != \\\"No-Ack-Needed\\\") {\\n var intellicareDataSetValue = eval('configs' + '.' + configParamNames[findIndex])\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableFallAlarmSettings\\\") {\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (intellicareDataSetValue == \\\"true\\\") {\\n intellicareDataSetValue = \\\"1\\\"\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n // if enableDisableByButtonsIndex is unchecked then overwrite the EnableDisableFallAlarmSettings value\\n var enableDisableByButtonsIndex = ackSMSArray.findIndex(element => element.includes(\\\"13019\\\" || \\\"13022\\\"));\\n var valueOfenableDisableByButtons = ackSMSArray[enableDisableByButtonsIndex].slice(-1)\\n if (valueOfenableDisableByButtons != \\\"0\\\") {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableByButtons\\\") {\\n if (intellicareDataSetValue == \\\"true\\\") {\\n if (keyId == \\\"13019\\\") {\\n intellicareDataSetValue = \\\"2\\\"\\n } else if (keyId == \\\"13022\\\") {\\n intellicareDataSetValue = \\\"3\\\"\\n }\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n if (keyValue == intellicareDataSetValue) {\\n configsToAck.push(eval('configIds' + '.' + configParamNames[findIndex]))\\n debug(\\\"Matched values of param\\\" + configParamNames[findIndex]);\\n } else {\\n debug(\\\"Not matched values of param\\\" + configParamNames[findIndex]);\\n }\\n }\\n }\\n }\\n }\\n //If the message is an ack, push the needed information to appear on the UI events.\\n else if (messageTypeLocalCode.startsWith('ACK-')) {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n //If the message is a decrypted version for codec8. This will include Cycles, and all the rest of messages not represented on the else if before \\n else {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n //AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n // If customID is not set....\\n if (isCorrectOperation) {\\n if (configsToAck.length > 0) {\\n var dataToReceiver = {\\n 'values': codeValues,\\n 'configsToAck': configsToAck,\\n };\\n } else {\\n var dataToReceiver = {\\n 'values': codeValues\\n };\\n }\\n console.log(dataToReceiver);\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {String} Ascii message\\n */\\n function decryptCodec12(message) {\\n var decoded = '';\\n var data12 = message.slice(30, -10);\\n data12 = hex_to_ascii(data12);\\n return data12;\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {Array} Array of Ascii messages\\n */\\n function decryptCodec8(message) {\\n //Initialise variables\\n var decoded = '';\\n var codecID = message.substring(16, 18);\\n decoded += codecID + ';';\\n var numberOfData = message.substring(18, 20);\\n decoded += numberOfData + ';';\\n var records = [];\\n var prox = 0;\\n //Loop number of events on a message times\\n for (i = 0; i < hexToDecimal(numberOfData); i++) {\\n //Initialise and transform variables\\n isSleep = 'false'\\n amber_State = '';\\n amber_Timer = '';\\n var decoded_final = '';\\n var record = '';\\n var timestamp = message.substring(index, index += 16);\\n timestamp = hexToDecimal(timestamp).toString().slice(0, -3)\\n timestamp = parseInt(timestamp, 10);\\n var priority = message.substring(index, index += 2);\\n var longitude = message.substring(index, index += 8);\\n longitude = hexToDecimalSigned(longitude) / 10000000;\\n var latitude = message.substring(index, index += 8);\\n latitude = hexToDecimalSigned(latitude) / 10000000;\\n var altitude = message.substring(index, index += 4);\\n altitude = hexToDecimalSigned(altitude);\\n var angle = message.substring(index, index += 4);\\n angle = hexToDecimalSigned(angle);\\n var satelites = message.substring(index, index += 2);\\n satelites = hexToDecimal(satelites);\\n var speed = message.substring(index, index += 4);\\n //Speed to m/s\\n speed = (hexToDecimal(speed) / 3.6).toFixed(2)\\n //If the message is a codec 8\\n if (codecID == '8E') {\\n var ioEvent = message.substring(index, index += 4);\\n var ioElementsTotal = message.substring(index, index += 4);\\n }\\n //If the message is a codec 8 Extended\\n else if (codecID == '08') {\\n var ioEvent = message.substring(index, index += 2);\\n var ioElementsTotal = message.substring(index, index += 2);\\n }\\n ioEvent = hexToDecimal(ioEvent);\\n //Switch to determine which is the event on the message\\n switch (ioEvent) {\\n case 0:\\n ioEvent = 'NoEvent';\\n break;\\n case 236:\\n ioEvent = 'Alarm';\\n break;\\n case 242:\\n ioEvent = 'ManDown';\\n break;\\n case 255:\\n ioEvent = 'OverSpeeding';\\n break;\\n case 310:\\n ioEvent = 'Movement_Event';\\n break;\\n case 389:\\n ioEvent = 'ButtonClick';\\n break;\\n case 1000:\\n ioEvent = 'Cycle';\\n break;\\n case 240:\\n ioEvent = 'Movement';\\n break\\n case 874:\\n ioEvent = 'BLT_violation_state';\\n break;\\n case 875:\\n ioEvent = 'Proximity_violation_source';\\n break;\\n case 874:\\n ioEvent = 'Proximity_duration';\\n break;\\n case 874:\\n ioEvent = 'BLT_MAC_Address';\\n break;\\n case 200:\\n ioEvent = 'Sleep_Mode';\\n break;\\n case 390:\\n ioEvent = 'PowerOff';\\n break;\\n case 200000:\\n ioEvent = 'PowerOn';\\n break;\\n case 400:\\n ioEvent = 'AmberAlert';\\n break;\\n default:\\n ioEvent = ioEvent + ':Not_recognised';\\n }\\n //Get the IO ids part of the message\\n var iods = IOIdsValues(message, ioElementsTotal, timestamp);\\n if (customIdValue != '') {\\n //we find the customIdValue at any point, \\n //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n isCorrectOperation = false;\\n return;\\n }\\n //Internally send the events translated to a readable format and using the format needed to match the message types.\\n if (ioEvent == 'Alarm') {\\n record = `GH5200-ALSOS,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'ManDown') {\\n record = `GH5200-ALF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'OverSpeeding') {\\n record = `GH5200-ALSP,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AutoGeofenceEvent' || ioEvent.startsWith('Geofence')) {\\n record = `GH5200-AGEO,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'NoEvent' || ioEvent == 'Cycle') {\\n //If the device is on sleep mode, it will not have send locations. For this reason, the message will be a Heartbeat and not a Cycle\\n if (isSleep == 'true') {\\n record = `GH5200-HTB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n } else if (ioEvent == 'Movement_Event') {\\n if (movement_Value == 'Movement_Event=NoMovement') {\\n record = `GH5200-ALNM,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (movement_Value == 'Movement_Event=Movement') {\\n record = `GH5200-ALMV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n //If the event is triggered because the device has entrered on Sleep mode, set an accuracy on 5000 to force a location. With this, we make sure we sent the last know location and we don't lose it.\\n //Without this, it can happen that a location is sent, another one acquired but never sent because went to sleep mode\\n else if (ioEvent == 'Sleep_Mode') {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n var iodsValues = iods.split(\\\";\\\");\\n iodsValues[0] = 1\\n if (iodsValues[2] == 0 && longitude != '0' && latitude != '0') {\\n iodsValues[2] = 5000\\n }\\n iods = iodsValues.join(\\\";\\\");\\n //} else if (ioEvent == 'Movement') {\\n // record = `GH5200-MV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'Proximity_violation_source' || ioEvent == 'Proximity_duration' || ioEvent == 'BLT_MAC_Address') {\\n record = `${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n prox = 1;\\n } else if (ioEvent == 'ButtonClick') {\\n record = `GH5200-PBB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AmberAlert') {\\n if (amber_State && amber_Timer) {\\n if (amber_State == 'Amber_Alert_State=Cancelled') {\\n record = `GH5200-ALA-C,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=On') {\\n record = `GH5200-ALA-O,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Snoozed') {\\n record = `GH5200-ALA-S,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Alarm') {\\n record = `GH5200-ALA,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n } else if (ioEvent == 'PowerOn') {\\n record = `GH5200-PWRN,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'PowerOff') {\\n record = `GH5200-PWRF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //In case the event has been created by an \\\"unknown\\\" IO Event (or not considered)\\n else {\\n record = `GH5200-COD8,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //console.log('--------------------' + decoded_final)\\n record = record + iods;\\n if (prox == 1) {\\n var values = iods.split(\\\";\\\");\\n if (values[4].startsWith('Proximity_duration')) {\\n var prox_duration = values[4].split(\\\"=\\\");\\n if (prox_duration[1] < 1) {\\n record = 'GH5200-PROXS,' + record;\\n } else if (prox_duration[1] >= 1) {\\n record = 'GH5200-PROXE,' + record;\\n }\\n }\\n prox = 0\\n }\\n //Push each record into a records array\\n records.push(record);\\n debug(record);\\n }\\n var CRC = message.substring(index + 2, index + 10);\\n //return an array with all records stored\\n return records;\\n }\\n /**\\n * Decrypts part of the message that contains the IO Ids and its values\\n * @param {String} message String to decrypt\\n * @param {String} ioElementsTotal Number of IO elements present on the message\\n * @param {Int} timestamp Unix timestamp given from the message\\n * @return {String} String with the IO Ids and its values decrypted on a readable format\\n */\\n function IOIdsValues(message, ioElementsTotal, timestamp) {\\n //Variable initialisation\\n var decoded = '';\\n var iods = '';\\n var gpsTime = 0;\\n var prox_source = '';\\n var prox_duration = '';\\n var BLT_state = '';\\n var BLT_MAC = '';\\n for (let i = 1; i <= 8; i = i * 2) {\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var ioNumElements = message.substring(index, index += 2);\\n }\\n var x = hexToDecimal(ioNumElements);\\n var pos = 2 * i;\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n //Id length depends on the codec\\n if (codecID == '8E') {\\n var id = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var id = message.substring(index, index += 2);\\n }\\n var value = message.substring(index, index += pos);\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n case 310:\\n id = 'Movement_Event';\\n if (value == '0') value = 'Movement';\\n else if (value == '1') value = 'NoMovement';\\n movement_Value = id + '=' + value;\\n break;\\n case 854: //Custom ID\\n customIdValue = value;\\n if (value != '') {\\n //we get the customIdValue at any point, \\n //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n isCorrectOperation = false;\\n return;\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n //Return decoded string with all the ids and its values on a readable format\\n decoded += ioNumElements + ';' + iods;\\n }\\n //ids with variable length on codec8 Extended\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n var x = hexToDecimal(ioNumElements);\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n var id = message.substring(index, index += 4);\\n var len = message.substring(index, index += 4);\\n len = hexToDecimal(len) * 2;\\n var value = message.substring(index, index += len);\\n valueHex = value;\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n decoded += ioNumElements + ';' + iods;\\n }\\n //Making sure location_accuracy has a value\\n if (!location_accuracy) location_accuracy = 0;\\n //Making sure battery_percentage has a value\\n if (!battery_percentage) battery_percentage = 0;\\n decoded_final = fix_state + ';' + gpsTime + ';' + location_accuracy + ';' + battery_percentage;\\n if (BLT_state) {\\n decoded_final += ';' + BLT_state;\\n }\\n if (prox_source) {\\n decoded_final += ';' + prox_source;\\n }\\n if (prox_duration) {\\n decoded_final += ';' + prox_duration;\\n }\\n if (BLT_MAC) {\\n decoded_final += ';' + BLT_MAC;\\n }\\n if (amber_State && amber_Timer) {\\n decoded_final += ';' + amber_State + ';' + amber_Timer;\\n }\\n decoded_final += ';;' + ioElementsTotal + ';' + decoded;\\n //Return final string with decoed iods\\n return decoded_final;\\n }\\n /**\\n * Create connection to the server\\n * @param {Int} port Port to connect\\n * @param {String} server Server to connect\\n * @return {net.socket} The newly created socket used to start the connection.\\n */\\n function createConnection(port, server) {\\n c = net.createConnection(port, server);\\n c.on('error', function(error) {\\n c = createConnection(port, server);\\n });\\n return c;\\n }\\n\\n function connect(port, inter, a) {\\n return new Promise(resolve => {\\n const socket = net.createConnection(port, '127.0.0.1', () => {\\n socket.write(inter[a], () => {\\n socket.destroy(); //socket.destroy(); to socket.close();\\n resolve();\\n });\\n });\\n });\\n }\\n\\n function debug(str) { // write debug info to console log, if localTesting\\n if (localTesting === \\\"True\\\") {\\n console.log(str);\\n }\\n }\\n /**\\n * Convert from ascii to hexadecimal\\n * @param {String} str Ascii string\\n * @return {Array} str converted to Hexadecimal\\n */\\n function ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n }\\n /**\\n * Convert from Hexadecimal to Ascii\\n * @param {String} str1 Hexadecimal string\\n * @return {String} str1 converted to Ascii\\n */\\n function 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 /**\\n * Convert from Hexadecimal to Decimal signed (allowing negative numbers)\\n * @param {Double} hex Hexadecimal number\\n * @return {Double} hex converted to Decimal signed\\n */\\n function hexToDecimalSigned(hex) {\\n if (hex.length % 2 != 0) {\\n hex = \\\"0\\\" + hex;\\n }\\n var num = parseInt(hex, 16);\\n var maxVal = Math.pow(2, hex.length / 2 * 8);\\n if (num > maxVal / 2 - 1) {\\n num = num - maxVal\\n }\\n return num;\\n }\\n /**\\n * Convert from Hexadecimal to Decimal\\n * @param {Double} x Hexadecimal number\\n * @return {Double} x converted to Decimal\\n */\\n function hexToDecimal(x) {\\n x = parseInt(x, 16);\\n return x;\\n }\\n /**\\n * Push value to the message arrray\\n * @param {String} p1 Name given to the code to push\\n * @param {} p2 Value to push\\n */\\n // pass everything into codevaluearray\\n function AddValue(codeValueArray, p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n codeValueArray.push(cvpair);\\n }\\n // modify to return the object that contains your data\\n return dataToReceiver;\\n}\\n// params is not defined locally -> export as module\\nif (typeof(params) === 'undefined') {\\n module.exports = {\\n execute_ops\\n }\\n} else { // on server use local defined vars\\n let return_values = execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, false)\\n // define global returns\\n msg = return_values;\\n}\",\"Type\":0,\"ProtocolActionObjects\":[]}","Timestamp":1727798088},{"Type":1,"NewValue":"{\"Id\":332,\"Name\":\"GH5200\",\"Operation\":\"function execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, localTesting) {\\n //###############################################################################################################################################################################################################\\n // Badege Operation Script\\n // * Operation script for Badge\\n // * Uses Long Connection: true\\n // *\\n // * GLOBAL TEMPLATE: <>,<>,<>, <>\\n // * Encrypted: true\\n // * \\n // * CYCLE TEMPLATE:\\n // * GH5200-CYC,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>\\n //###############################################################################################################################################################################################################\\n //=================================================================================\\n // VARIABLES \\n //=================================================================================\\n if (typeof localTesting === \\\"undefined\\\") {\\n var localTesting = \\\"False\\\";\\n }\\n var customIdValue = '';\\n var isCorrectOperation = true;\\n var index = 20;\\n var timeout = 1500;\\n var fix_state;\\n var satelites;\\n var latitude;\\n var longitude;\\n var altitude;\\n var speed;\\n var event_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_accuracy = \\\"5000\\\";\\n var onTrackingDemand = false;\\n var isSleep = 'false'\\n var amber_State = '';\\n var amber_Timer = '';\\n var movement_Value = '';\\n var dataToReceiver = [];\\n var codeValues = [];\\n var configsToAck = [];\\n //If the event type matches a global template\\n if (globalTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE10');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //In case the message is \\\"STC\\\" (Start Connection)\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n var imei = hex_to_ascii(rawFromBytes).slice(2);\\n AddValue(codeValues, \\\"imei\\\", imei);\\n sendMessageToLocalhost(`GH5200-STC,${imei},${serverParams.Guid}`);\\n // var c = createConnection(5678, '127.0.0.1');\\n // c.write(`GH5200-STC,${imei},${serverParams.Guid}`);\\n // //Imei is recevied in hex\\n // AddValue(codeValues, \\\"ack_stc\\\", \\\"01\\\");\\n // c.end();\\n //In case the message is a codec8 (either codec8 or codec8 Extended)\\n } else if (messageTypeLocalCode == \\\"COD8-Global\\\") {\\n var ack;\\n //Get the full hex message in a readable format\\n var message = rawFromBytes;\\n var codecID = message.substring(16, 18);\\n //Get the imei from serverParams\\n var imei = serverParams.Imei\\n //Either codec 8 or codec 8 Extended\\n if (codecID == '08' || codecID == '8E') {\\n messages = decryptCodec8(message);\\n if (isCorrectOperation == false) {\\n return;\\n }\\n var numberOfData = message.substring(18, 20)\\n // var c = createConnection(5678, '127.0.0.1');\\n // c.on('data', function(data) {\\n // var msgLocal = [];\\n // //if ack ends with OTD, then onTrackingDemand = true\\n // if (data.toString().endsWith('OTD')) {\\n // onTrackingDemand = true\\n // }\\n // //The device can send more than one event on the same message. In this case, a part of the ack is the number of messages received\\n // //So, we only ack when we have received the last event of the message.\\n // if (data.toString().startsWith(`L${messages.length}`)) {\\n // //In case the event demands a tracking, the ack is the number of data followed by the command on_demand_tracking2 (already encoded)\\n // if (onTrackingDemand == true) {\\n // AddValue(msgLocal, 'ack_cod8', `000000${numberOfData}000000000000001D0C0105000000156F6E5F64656D616E645F747261636B696E67320D0A0100002EB9`);\\n // //Mandatory to push the imei when on a global template\\n // AddValue(msgLocal, 'imei', imei);\\n // //Mandatory to do console.log(msg);\\n // console.log(msgLocal);\\n // c.end();\\n // }\\n // //The device needs to be ack'ed the number of data in 4 bytes\\n // else {\\n //Ack with the number of messages received to make the device know that the server understood the full message.\\n AddValue(codeValues, 'ack_cod8', `000000${numberOfData}`);\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n //Mandatory to do console.log(msg);\\n //console.log(msg);\\n // c.end();\\n // }\\n // }\\n // });\\n //Internally send all the events on the same message received.\\n for (let i = 0; i < messages.length; i++) {\\n //c.write(messages[i]);\\n sendMessageToLocalhost(messages[i]);\\n // connect(5678, messages, i);\\n //console.log(messages[i]);\\n }\\n //In case the message is a codec12 (command ack)\\n } else if (codecID == '0C') {\\n var codec12 = decryptCodec12(message)\\n sendMessageToLocalhost(`GH5200-COD12,${serverParams.Imei},${codec12}`);\\n // var c = createConnection(5678, '127.0.0.1');\\n // //Internally send a codec12 message in the homogenous ascii format\\n // c.write(`GH5200-COD12,${serverParams.Imei},${codec12}`);\\n // c.end();\\n //Because the codec12 message is matched by the same global template than the codec8 message, we need to push \\\"ack_cod8\\\" as an empty string.\\n AddValue(codeValues, 'ack_cod8', '');\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n }\\n }\\n }\\n //In the case the message is matched by an oystaTemplate\\n if (oystaTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE10');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //If the message is a decrypted version for start the connection\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n // stc conditions\\n AddValue(codeValues, 'ack_stc', '01');\\n }\\n //If the message is a codec8 (event not taken into account by us) \\n else if (messageTypeLocalCode == 'COD8') {\\n if (params.recordNumber) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n //In case the message is Real Time Location\\n else if (messageTypeLocalCode == \\\"RTL\\\") {\\n //If the message has a gps fix\\n if (params.gps == \\\"1\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 1)\\n //Speed to m/s\\n AddValue(codeValues, \\\"speed\\\", params.speed_raw / 3.6)\\n //Location time to actual time. It is not provided on the message\\n location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n //Event time to actual time. It is not provided on the message\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n //Hardcoded accuracy of 500. No hdop or satellites are provided on the message\\n AddValue(codeValues, \\\"location_accuracy\\\", 500)\\n }\\n //If the message does not have a gps fix, we do not use it as we cannot make sure it is real\\n else if (params.gps == \\\"0\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n }\\n //If the event is an Alarm or Position By Button, send a flag (ODT) so the device is asked for on_demand_tracking\\n else if (messageTypeLocalCode == \\\"PBB\\\" || messageTypeCode.startsWith('AL')) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message. If it is a Position by button or any kind of alarm, it needs to be follow by \\\"ODT\\\" in order to ask for a tracking\\n //This is used to make sure the gps is awake. It will solve the error of alarms sent before there is a gps fix\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}OTD`);\\n //If the event is an ack for a SMS command (Redirected from Esendex)\\n } else if (messageTypeLocalCode.startsWith('ACK-SMS')) {\\n //No fix state\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n //Event and location time to actual time in order to show the messages on the events table\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n var c = createConnection(5678, '127.0.0.1');\\n //If the message is a sms ack for a \\\"normal command\\\" (this means the ack will start with \\\"New value \\\")\\n if (messageTypeLocalCode == \\\"ACK-SMS\\\") {\\n if (params.smsAck) {\\n //Add \\\"-SMS\\\" at the end so we can differentiate between a sms and grps ack for a command.\\n var smsAck = params.smsAck + '-SMS;'\\n // the essendex message the device sends in gets converted here\\n c.write(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n debug(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n if (!smsAck.startsWith('2001:')) {\\n //Add tag no commands so no commands are sent to the device after a sms ack. The device will not accept a command after a sms ack. This prevents lots of problems.\\n AddValue(codeValues, 'no_commands', 'true');\\n //As it is redirected from Esende, it is mandatroy to push the imei\\n AddValue(codeValues, 'imei', serverParams.Imei);\\n }\\n }\\n }\\n //We do not need to send the tag \\\"no_commands\\\" on the next 3 message types since we have already checked that option on the message type that matched the Esendex resend.\\n //If the message is a sms ack for \\\"Delete Records\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-DR\\\") {\\n var smsAck = '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},All records are erased${smsAck}`);\\n }\\n //If the message is a sms ack for \\\"Get Info\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GI\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},RTC:${smsAck}`);\\n }\\n }\\n //If the message is a sms ack for \\\"Get Version\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GV\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},Ver:${smsAck}`);\\n }\\n }\\n c.end()\\n } else if (messageTypeLocalCode.startsWith(\\\"ACK-ALF\\\")) {\\n if (messageTypeLocalCode == \\\"ACK-ALF\\\") {\\n var newAlldata = \\\"12100:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS2\\\") {\\n var newAlldata = \\\"14390:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS3\\\") {\\n var newAlldata = \\\"12101:\\\" + params.alldata;\\n }\\n if (newAlldata != null) {\\n var keyValues = ['12101', '12102', '12103', '12111', '12100', '13019', '13022', '14390', '14392', '14393', '14391', '14397', '14430', '14432', '14433', '14431', '14437', '14170', '14320', '14173', '14323', '7222', '12104'];\\n var configParamNames = ['FallAlarmSettings.Position', 'FallAlarmSettings.Angle', 'FallAlarmSettings.Timeout', 'FallAlarmSettings.SilentPreAlarmDelay', 'FallAlarmSettings.EnableDisableFallAlarmSettings', 'FallAlarmSettings.EnableDisableByButtons', 'FallAlarmSettings.EnableDisableByButtons', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'FallAlarmSettings.Indication', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed'];\\n var ackSMSArray = newAlldata.split(';');\\n var findIndexOfBlankSMS = ackSMSArray.findIndex(element => element.includes(\\\"-SMS\\\"));\\n if (ackSMSArray[findIndexOfBlankSMS] === \\\"-SMS\\\") {\\n ackSMSArray.pop()\\n }\\n AddValue(codeValues, \\\"imei\\\", serverParams.Imei);\\n for (let i = 0; i < ackSMSArray.length; i++) {\\n var keyId = ackSMSArray[i].split(':')[0]; // id of the param saved in the array\\n var keyValue = ackSMSArray[i].split(':')[1]; // value of the param \\n var findIndex = keyValues.indexOf(keyId)\\n if (configParamNames[findIndex] != \\\"No-Ack-Needed\\\") {\\n var intellicareDataSetValue = eval('configs' + '.' + configParamNames[findIndex])\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableFallAlarmSettings\\\") {\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (intellicareDataSetValue == \\\"true\\\") {\\n intellicareDataSetValue = \\\"1\\\"\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n // if enableDisableByButtonsIndex is unchecked then overwrite the EnableDisableFallAlarmSettings value\\n var enableDisableByButtonsIndex = ackSMSArray.findIndex(element => element.includes(\\\"13019\\\" || \\\"13022\\\")); // button 1 long click or button 2 long click\\n if (enableDisableByButtonsIndex != -1) {\\n var valueOfenableDisableByButtons = ackSMSArray[enableDisableByButtonsIndex].slice(-1)\\n if (valueOfenableDisableByButtons != \\\"0\\\") {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n }\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableByButtons\\\") {\\n if (intellicareDataSetValue == \\\"true\\\") {\\n if (keyId == \\\"13019\\\") {\\n intellicareDataSetValue = \\\"2\\\"\\n } else if (keyId == \\\"13022\\\") {\\n intellicareDataSetValue = \\\"3\\\"\\n }\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n if (keyValue == intellicareDataSetValue) {\\n configsToAck.push(eval('configIds' + '.' + configParamNames[findIndex]))\\n debug(\\\"Matched values of param\\\" + configParamNames[findIndex]);\\n } else {\\n debug(\\\"Not matched values of param\\\" + configParamNames[findIndex]);\\n }\\n }\\n }\\n }\\n }\\n //If the message is an ack, push the needed information to appear on the UI events.\\n else if (messageTypeLocalCode.startsWith('ACK-')) {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n //If the message is a decrypted version for codec8. This will include Cycles, and all the rest of messages not represented on the else if before \\n else {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n //AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n // If customID is not set....\\n if (isCorrectOperation) {\\n if (configsToAck.length > 0) {\\n dataToReceiver = {\\n 'values': codeValues,\\n 'configsToAck': configsToAck,\\n };\\n } else {\\n dataToReceiver = {\\n 'values': codeValues\\n };\\n }\\n console.log(dataToReceiver);\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {String} Ascii message\\n */\\n function decryptCodec12(message) {\\n var decoded = '';\\n var data12 = message.slice(30, -10);\\n data12 = hex_to_ascii(data12);\\n return data12;\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {Array} Array of Ascii messages\\n */\\n function decryptCodec8(message) {\\n //Initialise variables\\n var decoded = '';\\n var codecID = message.substring(16, 18);\\n decoded += codecID + ';';\\n var numberOfData = message.substring(18, 20);\\n decoded += numberOfData + ';';\\n var records = [];\\n var prox = 0;\\n //Loop number of events on a message times\\n for (i = 0; i < hexToDecimal(numberOfData); i++) {\\n //Initialise and transform variables\\n isSleep = 'false'\\n amber_State = '';\\n amber_Timer = '';\\n var decoded_final = '';\\n var record = '';\\n var timestamp = message.substring(index, index += 16);\\n timestamp = hexToDecimal(timestamp).toString().slice(0, -3)\\n timestamp = parseInt(timestamp, 10);\\n var priority = message.substring(index, index += 2);\\n var longitude = message.substring(index, index += 8);\\n longitude = hexToDecimalSigned(longitude) / 10000000;\\n var latitude = message.substring(index, index += 8);\\n latitude = hexToDecimalSigned(latitude) / 10000000;\\n var altitude = message.substring(index, index += 4);\\n altitude = hexToDecimalSigned(altitude);\\n var angle = message.substring(index, index += 4);\\n angle = hexToDecimalSigned(angle);\\n var satelites = message.substring(index, index += 2);\\n satelites = hexToDecimal(satelites);\\n var speed = message.substring(index, index += 4);\\n //Speed to m/s\\n speed = (hexToDecimal(speed) / 3.6).toFixed(2)\\n //If the message is a codec 8\\n if (codecID == '8E') {\\n var ioEvent = message.substring(index, index += 4);\\n var ioElementsTotal = message.substring(index, index += 4);\\n }\\n //If the message is a codec 8 Extended\\n else if (codecID == '08') {\\n var ioEvent = message.substring(index, index += 2);\\n var ioElementsTotal = message.substring(index, index += 2);\\n }\\n ioEvent = hexToDecimal(ioEvent);\\n //Switch to determine which is the event on the message\\n switch (ioEvent) {\\n case 0:\\n ioEvent = 'NoEvent';\\n break;\\n case 236:\\n ioEvent = 'Alarm';\\n break;\\n case 242:\\n ioEvent = 'ManDown';\\n break;\\n case 255:\\n ioEvent = 'OverSpeeding';\\n break;\\n case 310:\\n ioEvent = 'Movement_Event';\\n break;\\n case 389:\\n ioEvent = 'ButtonClick';\\n break;\\n case 1000:\\n ioEvent = 'Cycle';\\n break;\\n case 240:\\n ioEvent = 'Movement';\\n break\\n case 874:\\n ioEvent = 'BLT_violation_state';\\n break;\\n case 875:\\n ioEvent = 'Proximity_violation_source';\\n break;\\n case 874:\\n ioEvent = 'Proximity_duration';\\n break;\\n case 874:\\n ioEvent = 'BLT_MAC_Address';\\n break;\\n case 200:\\n ioEvent = 'Sleep_Mode';\\n break;\\n case 390:\\n ioEvent = 'PowerOff';\\n break;\\n case 200000:\\n ioEvent = 'PowerOn';\\n break;\\n case 400:\\n ioEvent = 'AmberAlert';\\n break;\\n default:\\n ioEvent = ioEvent + ':Not_recognised';\\n }\\n //Get the IO ids part of the message\\n var iods = IOIdsValues(message, ioElementsTotal, timestamp);\\n // if (customIdValue != '') {\\n // //we find the customIdValue at any point, \\n // //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n // isCorrectOperation = false;\\n // return;\\n // }\\n //Internally send the events translated to a readable format and using the format needed to match the message types.\\n if (ioEvent == 'Alarm') {\\n record = `GH5200-ALSOS,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'ManDown') {\\n record = `GH5200-ALF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'OverSpeeding') {\\n record = `GH5200-ALSP,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AutoGeofenceEvent' || ioEvent.startsWith('Geofence')) {\\n record = `GH5200-AGEO,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'NoEvent' || ioEvent == 'Cycle') {\\n //If the device is on sleep mode, it will not have send locations. For this reason, the message will be a Heartbeat and not a Cycle\\n if (isSleep == 'true') {\\n record = `GH5200-HTB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n } else if (ioEvent == 'Movement_Event') {\\n if (movement_Value == 'Movement_Event=NoMovement') {\\n record = `GH5200-ALNM,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (movement_Value == 'Movement_Event=Movement') {\\n record = `GH5200-ALMV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n //If the event is triggered because the device has entrered on Sleep mode, set an accuracy on 5000 to force a location. With this, we make sure we sent the last know location and we don't lose it.\\n //Without this, it can happen that a location is sent, another one acquired but never sent because went to sleep mode\\n else if (ioEvent == 'Sleep_Mode') {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n var iodsValues = iods.split(\\\";\\\");\\n iodsValues[0] = 1\\n if (iodsValues[2] == 0 && longitude != '0' && latitude != '0') {\\n iodsValues[2] = 5000\\n }\\n iods = iodsValues.join(\\\";\\\");\\n //} else if (ioEvent == 'Movement') {\\n // record = `GH5200-MV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'Proximity_violation_source' || ioEvent == 'Proximity_duration' || ioEvent == 'BLT_MAC_Address') {\\n record = `${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n prox = 1;\\n } else if (ioEvent == 'ButtonClick') {\\n record = `GH5200-PBB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AmberAlert') {\\n if (amber_State && amber_Timer) {\\n if (amber_State == 'Amber_Alert_State=Cancelled') {\\n record = `GH5200-ALA-C,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=On') {\\n record = `GH5200-ALA-O,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Snoozed') {\\n record = `GH5200-ALA-S,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Alarm') {\\n record = `GH5200-ALA,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n } else if (ioEvent == 'PowerOn') {\\n record = `GH5200-PWRN,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'PowerOff') {\\n record = `GH5200-PWRF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //In case the event has been created by an \\\"unknown\\\" IO Event (or not considered)\\n else {\\n record = `GH5200-COD8,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //console.log('--------------------' + decoded_final)\\n record = record + iods;\\n if (prox == 1) {\\n var values = iods.split(\\\";\\\");\\n if (values[4].startsWith('Proximity_duration')) {\\n var prox_duration = values[4].split(\\\"=\\\");\\n if (prox_duration[1] < 1) {\\n record = 'GH5200-PROXS,' + record;\\n } else if (prox_duration[1] >= 1) {\\n record = 'GH5200-PROXE,' + record;\\n }\\n }\\n prox = 0\\n }\\n //Push each record into a records array\\n records.push(record);\\n debug(record);\\n }\\n var CRC = message.substring(index + 2, index + 10);\\n //return an array with all records stored\\n return records;\\n }\\n /**\\n * Decrypts part of the message that contains the IO Ids and its values\\n * @param {String} message String to decrypt\\n * @param {String} ioElementsTotal Number of IO elements present on the message\\n * @param {Int} timestamp Unix timestamp given from the message\\n * @return {String} String with the IO Ids and its values decrypted on a readable format\\n */\\n function IOIdsValues(message, ioElementsTotal, timestamp) {\\n //Variable initialisation\\n var decoded = '';\\n var iods = '';\\n var gpsTime = 0;\\n var prox_source = '';\\n var prox_duration = '';\\n var BLT_state = '';\\n var BLT_MAC = '';\\n for (let i = 1; i <= 8; i = i * 2) {\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var ioNumElements = message.substring(index, index += 2);\\n }\\n var x = hexToDecimal(ioNumElements);\\n var pos = 2 * i;\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n //Id length depends on the codec\\n if (codecID == '8E') {\\n var id = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var id = message.substring(index, index += 2);\\n }\\n var value = message.substring(index, index += pos);\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n case 310:\\n id = 'Movement_Event';\\n if (value == '0') value = 'Movement';\\n else if (value == '1') value = 'NoMovement';\\n movement_Value = id + '=' + value;\\n break;\\n case 854: //Custom ID\\n customIdValue = value;\\n if (value != '') {\\n //we get the customIdValue at any point, \\n //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n isCorrectOperation = false;\\n return;\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n //Return decoded string with all the ids and its values on a readable format\\n decoded += ioNumElements + ';' + iods;\\n }\\n //ids with variable length on codec8 Extended\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n var x = hexToDecimal(ioNumElements);\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n var id = message.substring(index, index += 4);\\n var len = message.substring(index, index += 4);\\n len = hexToDecimal(len) * 2;\\n var value = message.substring(index, index += len);\\n valueHex = value;\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n decoded += ioNumElements + ';' + iods;\\n }\\n //Making sure location_accuracy has a value\\n if (!location_accuracy) location_accuracy = 0;\\n //Making sure battery_percentage has a value\\n if (!battery_percentage) battery_percentage = 0;\\n decoded_final = fix_state + ';' + gpsTime + ';' + location_accuracy + ';' + battery_percentage;\\n if (BLT_state) {\\n decoded_final += ';' + BLT_state;\\n }\\n if (prox_source) {\\n decoded_final += ';' + prox_source;\\n }\\n if (prox_duration) {\\n decoded_final += ';' + prox_duration;\\n }\\n if (BLT_MAC) {\\n decoded_final += ';' + BLT_MAC;\\n }\\n if (amber_State && amber_Timer) {\\n decoded_final += ';' + amber_State + ';' + amber_Timer;\\n }\\n decoded_final += ';;' + ioElementsTotal + ';' + decoded;\\n //Return final string with decoed iods\\n return decoded_final;\\n }\\n\\n function sendMessageToLocalhost(str) {\\n if (localTesting) {\\n console.log(\\\"Sending message to server: \\\" + str);\\n } else {\\n var server = '127.0.0.1';\\n var c = createConnection(5678, server);\\n c.write(`${str}`);\\n c.end();\\n }\\n }\\n /**\\n * Create connection to the server\\n * @param {Int} port Port to connect\\n * @param {String} server Server to connect\\n * @return {net.socket} The newly created socket used to start the connection.\\n */\\n function createConnection(port, server) {\\n c = net.createConnection(port, server);\\n c.on('error', function(error) {\\n c = createConnection(port, server);\\n });\\n return c;\\n }\\n\\n function connect(port, inter, a) {\\n return new Promise(resolve => {\\n const socket = net.createConnection(port, '127.0.0.1', () => {\\n socket.write(inter[a], () => {\\n socket.destroy(); //socket.destroy(); to socket.close();\\n resolve();\\n });\\n });\\n });\\n }\\n\\n function debug(str) { // write debug info to console log, if localTesting\\n if (localTesting === \\\"True\\\") {\\n console.log(str);\\n }\\n }\\n /**\\n * Convert from ascii to hexadecimal\\n * @param {String} str Ascii string\\n * @return {Array} str converted to Hexadecimal\\n */\\n function ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n }\\n /**\\n * Convert from Hexadecimal to Ascii\\n * @param {String} str1 Hexadecimal string\\n * @return {String} str1 converted to Ascii\\n */\\n function 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 /**\\n * Convert from Hexadecimal to Decimal signed (allowing negative numbers)\\n * @param {Double} hex Hexadecimal number\\n * @return {Double} hex converted to Decimal signed\\n */\\n function hexToDecimalSigned(hex) {\\n if (hex.length % 2 != 0) {\\n hex = \\\"0\\\" + hex;\\n }\\n var num = parseInt(hex, 16);\\n var maxVal = Math.pow(2, hex.length / 2 * 8);\\n if (num > maxVal / 2 - 1) {\\n num = num - maxVal\\n }\\n return num;\\n }\\n /**\\n * Convert from Hexadecimal to Decimal\\n * @param {Double} x Hexadecimal number\\n * @return {Double} x converted to Decimal\\n */\\n function hexToDecimal(x) {\\n x = parseInt(x, 16);\\n return x;\\n }\\n /**\\n * Push value to the message arrray\\n * @param {String} p1 Name given to the code to push\\n * @param {} p2 Value to push\\n */\\n // pass everything into codevaluearray\\n function AddValue(codeValueArray, p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n codeValueArray.push(cvpair);\\n }\\n // modify to return the object that contains your data\\n return dataToReceiver;\\n}\\n// params is not defined locally -> export as module\\nif (typeof(params) === 'undefined') {\\n module.exports = {\\n execute_ops\\n }\\n} else { // on server use local defined vars\\n let return_values = execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, false)\\n // define global returns\\n msg = return_values;\\n}\",\"Type\":0,\"ProtocolActionObjects\":[]}","Timestamp":1729519680},{"Type":1,"NewValue":"{\"Id\":332,\"Name\":\"GH5200\",\"Operation\":\"function execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, localTesting) {\\n //###############################################################################################################################################################################################################\\n // Badege Operation Script\\n // * Operation script for Badge\\n // * Uses Long Connection: true\\n // *\\n // * GLOBAL TEMPLATE: <>,<>,<>, <>\\n // * Encrypted: true\\n // * \\n // * CYCLE TEMPLATE:\\n // * GH5200-CYC,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>\\n //###############################################################################################################################################################################################################\\n //=================================================================================\\n // VARIABLES \\n //=================================================================================\\n if (typeof localTesting === \\\"undefined\\\") {\\n var localTesting = \\\"False\\\";\\n }\\n var customIdValue = '';\\n var isCorrectOperation = true;\\n var index = 20;\\n var timeout = 1500;\\n var fix_state;\\n var satelites;\\n var latitude;\\n var longitude;\\n var altitude;\\n var speed;\\n var event_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_accuracy = \\\"5000\\\";\\n var onTrackingDemand = false;\\n var isSleep = 'false'\\n var amber_State = '';\\n var amber_Timer = '';\\n var movement_Value = '';\\n var dataToReceiver = [];\\n var codeValues = [];\\n var configsToAck = [];\\n //If the event type matches a global template\\n if (globalTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE10');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //In case the message is \\\"STC\\\" (Start Connection)\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n var imei = hex_to_ascii(rawFromBytes).slice(2);\\n AddValue(codeValues, \\\"imei\\\", imei);\\n sendMessageToLocalhost(`GH5200-STC,${imei},${serverParams.Guid}`);\\n // var c = createConnection(5678, '127.0.0.1');\\n // c.write(`GH5200-STC,${imei},${serverParams.Guid}`);\\n // //Imei is recevied in hex\\n // AddValue(codeValues, \\\"ack_stc\\\", \\\"01\\\");\\n // c.end();\\n //In case the message is a codec8 (either codec8 or codec8 Extended)\\n } else if (messageTypeLocalCode == \\\"COD8-Global\\\") {\\n var ack;\\n //Get the full hex message in a readable format\\n var message = rawFromBytes;\\n var codecID = message.substring(16, 18);\\n //Get the imei from serverParams\\n var imei = serverParams.Imei\\n //Either codec 8 or codec 8 Extended\\n if (codecID == '08' || codecID == '8E') {\\n messages = decryptCodec8(message);\\n if (isCorrectOperation == false) {\\n return;\\n }\\n var numberOfData = message.substring(18, 20)\\n // var c = createConnection(5678, '127.0.0.1');\\n // c.on('data', function(data) {\\n // var msgLocal = [];\\n // //if ack ends with OTD, then onTrackingDemand = true\\n // if (data.toString().endsWith('OTD')) {\\n // onTrackingDemand = true\\n // }\\n // //The device can send more than one event on the same message. In this case, a part of the ack is the number of messages received\\n // //So, we only ack when we have received the last event of the message.\\n // if (data.toString().startsWith(`L${messages.length}`)) {\\n // //In case the event demands a tracking, the ack is the number of data followed by the command on_demand_tracking2 (already encoded)\\n // if (onTrackingDemand == true) {\\n // AddValue(msgLocal, 'ack_cod8', `000000${numberOfData}000000000000001D0C0105000000156F6E5F64656D616E645F747261636B696E67320D0A0100002EB9`);\\n // //Mandatory to push the imei when on a global template\\n // AddValue(msgLocal, 'imei', imei);\\n // //Mandatory to do console.log(msg);\\n // console.log(msgLocal);\\n // c.end();\\n // }\\n // //The device needs to be ack'ed the number of data in 4 bytes\\n // else {\\n //Ack with the number of messages received to make the device know that the server understood the full message.\\n AddValue(codeValues, 'ack_cod8', `000000${numberOfData}`);\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n //Mandatory to do console.log(msg);\\n //console.log(msg);\\n // c.end();\\n // }\\n // }\\n // });\\n //Internally send all the events on the same message received.\\n for (let i = 0; i < messages.length; i++) {\\n //c.write(messages[i]);\\n sendMessageToLocalhost(messages[i]);\\n // connect(5678, messages, i);\\n //console.log(messages[i]);\\n }\\n //In case the message is a codec12 (command ack)\\n } else if (codecID == '0C') {\\n var codec12 = decryptCodec12(message)\\n sendMessageToLocalhost(`GH5200-COD12,${serverParams.Imei},${codec12}`);\\n // var c = createConnection(5678, '127.0.0.1');\\n // //Internally send a codec12 message in the homogenous ascii format\\n // c.write(`GH5200-COD12,${serverParams.Imei},${codec12}`);\\n // c.end();\\n //Because the codec12 message is matched by the same global template than the codec8 message, we need to push \\\"ack_cod8\\\" as an empty string.\\n AddValue(codeValues, 'ack_cod8', '');\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n }\\n }\\n }\\n //In the case the message is matched by an oystaTemplate\\n if (oystaTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE10');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //If the message is a decrypted version for start the connection\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n // stc conditions\\n AddValue(codeValues, 'ack_stc', '01');\\n }\\n //If the message is a codec8 (event not taken into account by us) \\n else if (messageTypeLocalCode == 'COD8') {\\n if (params.recordNumber) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n //In case the message is Real Time Location\\n else if (messageTypeLocalCode == \\\"RTL\\\") {\\n //If the message has a gps fix\\n if (params.gps == \\\"1\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 1)\\n //Speed to m/s\\n AddValue(codeValues, \\\"speed\\\", params.speed_raw / 3.6)\\n //Location time to actual time. It is not provided on the message\\n location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n //Event time to actual time. It is not provided on the message\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n //Hardcoded accuracy of 500. No hdop or satellites are provided on the message\\n AddValue(codeValues, \\\"location_accuracy\\\", 500)\\n }\\n //If the message does not have a gps fix, we do not use it as we cannot make sure it is real\\n else if (params.gps == \\\"0\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n }\\n //If the event is an Alarm or Position By Button, send a flag (ODT) so the device is asked for on_demand_tracking\\n else if (messageTypeLocalCode == \\\"PBB\\\" || messageTypeCode.startsWith('AL')) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message. If it is a Position by button or any kind of alarm, it needs to be follow by \\\"ODT\\\" in order to ask for a tracking\\n //This is used to make sure the gps is awake. It will solve the error of alarms sent before there is a gps fix\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}OTD`);\\n //If the event is an ack for a SMS command (Redirected from Esendex)\\n } else if (messageTypeLocalCode.startsWith('ACK-SMS')) {\\n //No fix state\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n //Event and location time to actual time in order to show the messages on the events table\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n var c = createConnection(5678, '127.0.0.1');\\n //If the message is a sms ack for a \\\"normal command\\\" (this means the ack will start with \\\"New value \\\")\\n if (messageTypeLocalCode == \\\"ACK-SMS\\\") {\\n if (params.smsAck) {\\n //Add \\\"-SMS\\\" at the end so we can differentiate between a sms and grps ack for a command.\\n var smsAck = params.smsAck + '-SMS;'\\n // the essendex message the device sends in gets converted here\\n c.write(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n debug(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n if (!smsAck.startsWith('2001:')) {\\n //Add tag no commands so no commands are sent to the device after a sms ack. The device will not accept a command after a sms ack. This prevents lots of problems.\\n AddValue(codeValues, 'no_commands', 'true');\\n //As it is redirected from Esende, it is mandatroy to push the imei\\n AddValue(codeValues, 'imei', serverParams.Imei);\\n }\\n }\\n }\\n //We do not need to send the tag \\\"no_commands\\\" on the next 3 message types since we have already checked that option on the message type that matched the Esendex resend.\\n //If the message is a sms ack for \\\"Delete Records\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-DR\\\") {\\n var smsAck = '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},All records are erased${smsAck}`);\\n }\\n //If the message is a sms ack for \\\"Get Info\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GI\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},RTC:${smsAck}`);\\n }\\n }\\n //If the message is a sms ack for \\\"Get Version\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GV\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},Ver:${smsAck}`);\\n }\\n }\\n c.end()\\n } else if (messageTypeLocalCode.startsWith(\\\"ACK-ALF\\\")) {\\n if (messageTypeLocalCode == \\\"ACK-ALF\\\") {\\n var newAlldata = \\\"12100:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS2\\\") {\\n var newAlldata = \\\"14390:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS3\\\") {\\n var newAlldata = \\\"12101:\\\" + params.alldata;\\n }\\n if (newAlldata != null) {\\n var keyValues = ['12101', '12102', '12103', '12111', '12100', '13019', '13022', '14390', '14392', '14393', '14391', '14397', '14430', '14432', '14433', '14431', '14437', '14170', '14320', '14173', '14323', '7222', '12104'];\\n var configParamNames = ['FallAlarmSettings.Position', 'FallAlarmSettings.Angle', 'FallAlarmSettings.Timeout', 'FallAlarmSettings.SilentPreAlarmDelay', 'FallAlarmSettings.EnableDisableFallAlarmSettings', 'FallAlarmSettings.EnableDisableByButtons', 'FallAlarmSettings.EnableDisableByButtons', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'FallAlarmSettings.Indication', 'No-Ack-Needed', 'No-Ack-Needed'];\\n var ackSMSArray = newAlldata.split(';');\\n var findIndexOfBlankSMS = ackSMSArray.findIndex(element => element.includes(\\\"-SMS\\\"));\\n if (ackSMSArray[findIndexOfBlankSMS] === \\\"-SMS\\\") {\\n ackSMSArray.pop()\\n }\\n AddValue(codeValues, \\\"imei\\\", serverParams.Imei);\\n for (let i = 0; i < ackSMSArray.length; i++) {\\n var keyId = ackSMSArray[i].split(':')[0]; // id of the param saved in the array\\n var keyValue = ackSMSArray[i].split(':')[1]; // value of the param \\n var findIndex = keyValues.indexOf(keyId)\\n if (configParamNames[findIndex] != \\\"No-Ack-Needed\\\") {\\n var intellicareDataSetValue = eval('configs' + '.' + configParamNames[findIndex])\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableFallAlarmSettings\\\") {\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (intellicareDataSetValue == \\\"true\\\") {\\n intellicareDataSetValue = \\\"1\\\"\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n // if enableDisableByButtonsIndex is unchecked then overwrite the EnableDisableFallAlarmSettings value\\n var enableDisableByButtonsIndex = ackSMSArray.findIndex(element => element.includes(\\\"13019\\\" || \\\"13022\\\")); // button 1 long click or button 2 long click\\n if (enableDisableByButtonsIndex != -1) {\\n var valueOfenableDisableByButtons = ackSMSArray[enableDisableByButtonsIndex].slice(-1)\\n if (valueOfenableDisableByButtons != \\\"0\\\") {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n }\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableByButtons\\\") {\\n if (intellicareDataSetValue == \\\"true\\\") {\\n if (keyId == \\\"13019\\\") {\\n intellicareDataSetValue = \\\"2\\\"\\n } else if (keyId == \\\"13022\\\") {\\n intellicareDataSetValue = \\\"3\\\"\\n }\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.Indication\\\") {\\n if (intellicareDataSetValue == \\\"0\\\") { // on device 3 = vibrate and sound = 0 on IC\\n intellicareDataSetValue = \\\"3\\\"\\n } else if (intellicareDataSetValue == \\\"1\\\") { // on device 1 = vibrate = 1 on IC\\n intellicareDataSetValue = \\\"1\\\"\\n } else if (intellicareDataSetValue == \\\"2\\\") { // on device 0 = off = 2 on IC\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n if (keyValue == intellicareDataSetValue) {\\n configsToAck.push(eval('configIds' + '.' + configParamNames[findIndex]))\\n debug(\\\"Matched values of param\\\" + configParamNames[findIndex]);\\n } else {\\n debug(\\\"Not matched values of param\\\" + configParamNames[findIndex]);\\n }\\n }\\n }\\n }\\n }\\n //If the message is an ack, push the needed information to appear on the UI events.\\n else if (messageTypeLocalCode.startsWith('ACK-')) {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n //If the message is a decrypted version for codec8. This will include Cycles, and all the rest of messages not represented on the else if before \\n else {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n //AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n // If customID is not set....\\n if (isCorrectOperation) {\\n if (configsToAck.length > 0) {\\n dataToReceiver = {\\n 'values': codeValues,\\n 'configsToAck': configsToAck,\\n };\\n } else {\\n dataToReceiver = {\\n 'values': codeValues\\n };\\n }\\n console.log(dataToReceiver);\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {String} Ascii message\\n */\\n function decryptCodec12(message) {\\n var decoded = '';\\n var data12 = message.slice(30, -10);\\n data12 = hex_to_ascii(data12);\\n return data12;\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {Array} Array of Ascii messages\\n */\\n function decryptCodec8(message) {\\n //Initialise variables\\n var decoded = '';\\n var codecID = message.substring(16, 18);\\n decoded += codecID + ';';\\n var numberOfData = message.substring(18, 20);\\n decoded += numberOfData + ';';\\n var records = [];\\n var prox = 0;\\n //Loop number of events on a message times\\n for (i = 0; i < hexToDecimal(numberOfData); i++) {\\n //Initialise and transform variables\\n isSleep = 'false'\\n amber_State = '';\\n amber_Timer = '';\\n var decoded_final = '';\\n var record = '';\\n var timestamp = message.substring(index, index += 16);\\n timestamp = hexToDecimal(timestamp).toString().slice(0, -3)\\n timestamp = parseInt(timestamp, 10);\\n var priority = message.substring(index, index += 2);\\n var longitude = message.substring(index, index += 8);\\n longitude = hexToDecimalSigned(longitude) / 10000000;\\n var latitude = message.substring(index, index += 8);\\n latitude = hexToDecimalSigned(latitude) / 10000000;\\n var altitude = message.substring(index, index += 4);\\n altitude = hexToDecimalSigned(altitude);\\n var angle = message.substring(index, index += 4);\\n angle = hexToDecimalSigned(angle);\\n var satelites = message.substring(index, index += 2);\\n satelites = hexToDecimal(satelites);\\n var speed = message.substring(index, index += 4);\\n //Speed to m/s\\n speed = (hexToDecimal(speed) / 3.6).toFixed(2)\\n //If the message is a codec 8\\n if (codecID == '8E') {\\n var ioEvent = message.substring(index, index += 4);\\n var ioElementsTotal = message.substring(index, index += 4);\\n }\\n //If the message is a codec 8 Extended\\n else if (codecID == '08') {\\n var ioEvent = message.substring(index, index += 2);\\n var ioElementsTotal = message.substring(index, index += 2);\\n }\\n ioEvent = hexToDecimal(ioEvent);\\n //Switch to determine which is the event on the message\\n switch (ioEvent) {\\n case 0:\\n ioEvent = 'NoEvent';\\n break;\\n case 236:\\n ioEvent = 'Alarm';\\n break;\\n case 242:\\n ioEvent = 'ManDown';\\n break;\\n case 255:\\n ioEvent = 'OverSpeeding';\\n break;\\n case 310:\\n ioEvent = 'Movement_Event';\\n break;\\n case 389:\\n ioEvent = 'ButtonClick';\\n break;\\n case 1000:\\n ioEvent = 'Cycle';\\n break;\\n case 240:\\n ioEvent = 'Movement';\\n break\\n case 874:\\n ioEvent = 'BLT_violation_state';\\n break;\\n case 875:\\n ioEvent = 'Proximity_violation_source';\\n break;\\n case 874:\\n ioEvent = 'Proximity_duration';\\n break;\\n case 874:\\n ioEvent = 'BLT_MAC_Address';\\n break;\\n case 200:\\n ioEvent = 'Sleep_Mode';\\n break;\\n case 390:\\n ioEvent = 'PowerOff';\\n break;\\n case 200000:\\n ioEvent = 'PowerOn';\\n break;\\n case 400:\\n ioEvent = 'AmberAlert';\\n break;\\n default:\\n ioEvent = ioEvent + ':Not_recognised';\\n }\\n //Get the IO ids part of the message\\n var iods = IOIdsValues(message, ioElementsTotal, timestamp);\\n // if (customIdValue != '') {\\n // //we find the customIdValue at any point, \\n // //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n // isCorrectOperation = false;\\n // return;\\n // }\\n //Internally send the events translated to a readable format and using the format needed to match the message types.\\n if (ioEvent == 'Alarm') {\\n record = `GH5200-ALSOS,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'ManDown') {\\n record = `GH5200-ALF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'OverSpeeding') {\\n record = `GH5200-ALSP,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AutoGeofenceEvent' || ioEvent.startsWith('Geofence')) {\\n record = `GH5200-AGEO,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'NoEvent' || ioEvent == 'Cycle') {\\n //If the device is on sleep mode, it will not have send locations. For this reason, the message will be a Heartbeat and not a Cycle\\n if (isSleep == 'true') {\\n record = `GH5200-HTB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n } else if (ioEvent == 'Movement_Event') {\\n if (movement_Value == 'Movement_Event=NoMovement') {\\n record = `GH5200-ALNM,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (movement_Value == 'Movement_Event=Movement') {\\n record = `GH5200-ALMV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n //If the event is triggered because the device has entrered on Sleep mode, set an accuracy on 5000 to force a location. With this, we make sure we sent the last know location and we don't lose it.\\n //Without this, it can happen that a location is sent, another one acquired but never sent because went to sleep mode\\n else if (ioEvent == 'Sleep_Mode') {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n var iodsValues = iods.split(\\\";\\\");\\n iodsValues[0] = 1\\n if (iodsValues[2] == 0 && longitude != '0' && latitude != '0') {\\n iodsValues[2] = 5000\\n }\\n iods = iodsValues.join(\\\";\\\");\\n //} else if (ioEvent == 'Movement') {\\n // record = `GH5200-MV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'Proximity_violation_source' || ioEvent == 'Proximity_duration' || ioEvent == 'BLT_MAC_Address') {\\n record = `${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n prox = 1;\\n } else if (ioEvent == 'ButtonClick') {\\n record = `GH5200-PBB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AmberAlert') {\\n if (amber_State && amber_Timer) {\\n if (amber_State == 'Amber_Alert_State=Cancelled') {\\n record = `GH5200-ALA-C,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=On') {\\n record = `GH5200-ALA-O,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Snoozed') {\\n record = `GH5200-ALA-S,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Alarm') {\\n record = `GH5200-ALA,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n } else if (ioEvent == 'PowerOn') {\\n record = `GH5200-PWRN,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'PowerOff') {\\n record = `GH5200-PWRF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //In case the event has been created by an \\\"unknown\\\" IO Event (or not considered)\\n else {\\n record = `GH5200-COD8,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //console.log('--------------------' + decoded_final)\\n record = record + iods;\\n if (prox == 1) {\\n var values = iods.split(\\\";\\\");\\n if (values[4].startsWith('Proximity_duration')) {\\n var prox_duration = values[4].split(\\\"=\\\");\\n if (prox_duration[1] < 1) {\\n record = 'GH5200-PROXS,' + record;\\n } else if (prox_duration[1] >= 1) {\\n record = 'GH5200-PROXE,' + record;\\n }\\n }\\n prox = 0\\n }\\n //Push each record into a records array\\n records.push(record);\\n debug(record);\\n }\\n var CRC = message.substring(index + 2, index + 10);\\n //return an array with all records stored\\n return records;\\n }\\n /**\\n * Decrypts part of the message that contains the IO Ids and its values\\n * @param {String} message String to decrypt\\n * @param {String} ioElementsTotal Number of IO elements present on the message\\n * @param {Int} timestamp Unix timestamp given from the message\\n * @return {String} String with the IO Ids and its values decrypted on a readable format\\n */\\n function IOIdsValues(message, ioElementsTotal, timestamp) {\\n //Variable initialisation\\n var decoded = '';\\n var iods = '';\\n var gpsTime = 0;\\n var prox_source = '';\\n var prox_duration = '';\\n var BLT_state = '';\\n var BLT_MAC = '';\\n for (let i = 1; i <= 8; i = i * 2) {\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var ioNumElements = message.substring(index, index += 2);\\n }\\n var x = hexToDecimal(ioNumElements);\\n var pos = 2 * i;\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n //Id length depends on the codec\\n if (codecID == '8E') {\\n var id = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var id = message.substring(index, index += 2);\\n }\\n var value = message.substring(index, index += pos);\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n case 310:\\n id = 'Movement_Event';\\n if (value == '0') value = 'Movement';\\n else if (value == '1') value = 'NoMovement';\\n movement_Value = id + '=' + value;\\n break;\\n case 854: //Custom ID\\n customIdValue = value;\\n if (value != '') {\\n //we get the customIdValue at any point, \\n //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n isCorrectOperation = false;\\n return;\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n //Return decoded string with all the ids and its values on a readable format\\n decoded += ioNumElements + ';' + iods;\\n }\\n //ids with variable length on codec8 Extended\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n var x = hexToDecimal(ioNumElements);\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n var id = message.substring(index, index += 4);\\n var len = message.substring(index, index += 4);\\n len = hexToDecimal(len) * 2;\\n var value = message.substring(index, index += len);\\n valueHex = value;\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n decoded += ioNumElements + ';' + iods;\\n }\\n //Making sure location_accuracy has a value\\n if (!location_accuracy) location_accuracy = 0;\\n //Making sure battery_percentage has a value\\n if (!battery_percentage) battery_percentage = 0;\\n decoded_final = fix_state + ';' + gpsTime + ';' + location_accuracy + ';' + battery_percentage;\\n if (BLT_state) {\\n decoded_final += ';' + BLT_state;\\n }\\n if (prox_source) {\\n decoded_final += ';' + prox_source;\\n }\\n if (prox_duration) {\\n decoded_final += ';' + prox_duration;\\n }\\n if (BLT_MAC) {\\n decoded_final += ';' + BLT_MAC;\\n }\\n if (amber_State && amber_Timer) {\\n decoded_final += ';' + amber_State + ';' + amber_Timer;\\n }\\n decoded_final += ';;' + ioElementsTotal + ';' + decoded;\\n //Return final string with decoed iods\\n return decoded_final;\\n }\\n\\n function sendMessageToLocalhost(str) {\\n if (localTesting) {\\n console.log(\\\"Sending message to server: \\\" + str);\\n } else {\\n var server = '127.0.0.1';\\n var c = createConnection(5678, server);\\n c.write(`${str}`);\\n c.end();\\n }\\n }\\n /**\\n * Create connection to the server\\n * @param {Int} port Port to connect\\n * @param {String} server Server to connect\\n * @return {net.socket} The newly created socket used to start the connection.\\n */\\n function createConnection(port, server) {\\n c = net.createConnection(port, server);\\n c.on('error', function(error) {\\n c = createConnection(port, server);\\n });\\n return c;\\n }\\n\\n function connect(port, inter, a) {\\n return new Promise(resolve => {\\n const socket = net.createConnection(port, '127.0.0.1', () => {\\n socket.write(inter[a], () => {\\n socket.destroy(); //socket.destroy(); to socket.close();\\n resolve();\\n });\\n });\\n });\\n }\\n\\n function debug(str) { // write debug info to console log, if localTesting\\n if (localTesting === \\\"True\\\") {\\n console.log(str);\\n }\\n }\\n /**\\n * Convert from ascii to hexadecimal\\n * @param {String} str Ascii string\\n * @return {Array} str converted to Hexadecimal\\n */\\n function ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n }\\n /**\\n * Convert from Hexadecimal to Ascii\\n * @param {String} str1 Hexadecimal string\\n * @return {String} str1 converted to Ascii\\n */\\n function 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 /**\\n * Convert from Hexadecimal to Decimal signed (allowing negative numbers)\\n * @param {Double} hex Hexadecimal number\\n * @return {Double} hex converted to Decimal signed\\n */\\n function hexToDecimalSigned(hex) {\\n if (hex.length % 2 != 0) {\\n hex = \\\"0\\\" + hex;\\n }\\n var num = parseInt(hex, 16);\\n var maxVal = Math.pow(2, hex.length / 2 * 8);\\n if (num > maxVal / 2 - 1) {\\n num = num - maxVal\\n }\\n return num;\\n }\\n /**\\n * Convert from Hexadecimal to Decimal\\n * @param {Double} x Hexadecimal number\\n * @return {Double} x converted to Decimal\\n */\\n function hexToDecimal(x) {\\n x = parseInt(x, 16);\\n return x;\\n }\\n /**\\n * Push value to the message arrray\\n * @param {String} p1 Name given to the code to push\\n * @param {} p2 Value to push\\n */\\n // pass everything into codevaluearray\\n function AddValue(codeValueArray, p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n codeValueArray.push(cvpair);\\n }\\n // modify to return the object that contains your data\\n return dataToReceiver;\\n}\\n// params is not defined locally -> export as module\\nif (typeof(params) === 'undefined') {\\n module.exports = {\\n execute_ops\\n }\\n} else { // on server use local defined vars\\n let return_values = execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, false)\\n // define global returns\\n msg = return_values;\\n}\",\"Type\":0,\"ProtocolActionObjects\":[]}","Timestamp":1729523049},{"Type":1,"NewValue":"{\"Id\":332,\"Name\":\"GH5200\",\"Operation\":\"function execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, localTesting) {\\n //###############################################################################################################################################################################################################\\n // Badege Operation Script\\n // * Operation script for Badge\\n // * Uses Long Connection: true\\n // *\\n // * GLOBAL TEMPLATE: <>,<>,<>, <>\\n // * Encrypted: true\\n // * \\n // * CYCLE TEMPLATE:\\n // * GH5200-CYC,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>\\n //###############################################################################################################################################################################################################\\n //=================================================================================\\n // VARIABLES \\n //=================================================================================\\n if (typeof localTesting === \\\"undefined\\\") {\\n var localTesting = \\\"False\\\";\\n }\\n var customIdValue = '';\\n var isCorrectOperation = true;\\n var index = 20;\\n var timeout = 1500;\\n var fix_state;\\n var satelites;\\n var latitude;\\n var longitude;\\n var altitude;\\n var speed;\\n var event_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_accuracy = \\\"5000\\\";\\n var onTrackingDemand = false;\\n var isSleep = 'false'\\n var amber_State = '';\\n var amber_Timer = '';\\n var movement_Value = '';\\n var dataToReceiver = [];\\n var codeValues = [];\\n var configsToAck = [];\\n //If the event type matches a global template\\n if (globalTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE10');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //In case the message is \\\"STC\\\" (Start Connection)\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n var imei = hex_to_ascii(rawFromBytes).slice(2);\\n AddValue(codeValues, \\\"imei\\\", imei);\\n sendMessageToLocalhost(`GH5200-STC,${imei},${serverParams.Guid}`);\\n // var c = createConnection(5678, '127.0.0.1');\\n // c.write(`GH5200-STC,${imei},${serverParams.Guid}`);\\n // //Imei is recevied in hex\\n AddValue(codeValues, \\\"ack_stc\\\", \\\"01\\\");\\n // c.end();\\n //In case the message is a codec8 (either codec8 or codec8 Extended)\\n } else if (messageTypeLocalCode == \\\"COD8-Global\\\") {\\n var ack;\\n //Get the full hex message in a readable format\\n var message = rawFromBytes;\\n var codecID = message.substring(16, 18);\\n //Get the imei from serverParams\\n var imei = serverParams.Imei\\n //Either codec 8 or codec 8 Extended\\n if (codecID == '08' || codecID == '8E') {\\n messages = decryptCodec8(message);\\n if (isCorrectOperation == false) {\\n return;\\n }\\n var numberOfData = message.substring(18, 20)\\n // var c = createConnection(5678, '127.0.0.1');\\n // c.on('data', function(data) {\\n // var msgLocal = [];\\n // //if ack ends with OTD, then onTrackingDemand = true\\n // if (data.toString().endsWith('OTD')) {\\n // onTrackingDemand = true\\n // }\\n // //The device can send more than one event on the same message. In this case, a part of the ack is the number of messages received\\n // //So, we only ack when we have received the last event of the message.\\n // if (data.toString().startsWith(`L${messages.length}`)) {\\n // //In case the event demands a tracking, the ack is the number of data followed by the command on_demand_tracking2 (already encoded)\\n // if (onTrackingDemand == true) {\\n // AddValue(msgLocal, 'ack_cod8', `000000${numberOfData}000000000000001D0C0105000000156F6E5F64656D616E645F747261636B696E67320D0A0100002EB9`);\\n // //Mandatory to push the imei when on a global template\\n // AddValue(msgLocal, 'imei', imei);\\n // //Mandatory to do console.log(msg);\\n // console.log(msgLocal);\\n // c.end();\\n // }\\n // //The device needs to be ack'ed the number of data in 4 bytes\\n // else {\\n //Ack with the number of messages received to make the device know that the server understood the full message.\\n AddValue(codeValues, 'ack_cod8', `000000${numberOfData}`);\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n //Mandatory to do console.log(msg);\\n //console.log(msg);\\n // c.end();\\n // }\\n // }\\n // });\\n //Internally send all the events on the same message received.\\n for (let i = 0; i < messages.length; i++) {\\n //c.write(messages[i]);\\n sendMessageToLocalhost(messages[i]);\\n // connect(5678, messages, i);\\n //console.log(messages[i]);\\n }\\n //In case the message is a codec12 (command ack)\\n } else if (codecID == '0C') {\\n var codec12 = decryptCodec12(message)\\n sendMessageToLocalhost(`GH5200-COD12,${serverParams.Imei},${codec12}`);\\n // var c = createConnection(5678, '127.0.0.1');\\n // //Internally send a codec12 message in the homogenous ascii format\\n // c.write(`GH5200-COD12,${serverParams.Imei},${codec12}`);\\n // c.end();\\n //Because the codec12 message is matched by the same global template than the codec8 message, we need to push \\\"ack_cod8\\\" as an empty string.\\n AddValue(codeValues, 'ack_cod8', '');\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n }\\n }\\n }\\n //In the case the message is matched by an oystaTemplate\\n if (oystaTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE10');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //If the message is a decrypted version for start the connection\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n // stc conditions\\n AddValue(codeValues, 'ack_stc', '01');\\n }\\n //If the message is a codec8 (event not taken into account by us) \\n else if (messageTypeLocalCode == 'COD8') {\\n if (params.recordNumber) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n //In case the message is Real Time Location\\n else if (messageTypeLocalCode == \\\"RTL\\\") {\\n //If the message has a gps fix\\n if (params.gps == \\\"1\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 1)\\n //Speed to m/s\\n AddValue(codeValues, \\\"speed\\\", params.speed_raw / 3.6)\\n //Location time to actual time. It is not provided on the message\\n location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n //Event time to actual time. It is not provided on the message\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n //Hardcoded accuracy of 500. No hdop or satellites are provided on the message\\n AddValue(codeValues, \\\"location_accuracy\\\", 500)\\n }\\n //If the message does not have a gps fix, we do not use it as we cannot make sure it is real\\n else if (params.gps == \\\"0\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n }\\n //If the event is an Alarm or Position By Button, send a flag (ODT) so the device is asked for on_demand_tracking\\n else if (messageTypeLocalCode == \\\"PBB\\\" || messageTypeCode.startsWith('AL')) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message. If it is a Position by button or any kind of alarm, it needs to be follow by \\\"ODT\\\" in order to ask for a tracking\\n //This is used to make sure the gps is awake. It will solve the error of alarms sent before there is a gps fix\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}OTD`);\\n //If the event is an ack for a SMS command (Redirected from Esendex)\\n } else if (messageTypeLocalCode.startsWith('ACK-SMS')) {\\n //No fix state\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n //Event and location time to actual time in order to show the messages on the events table\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n var c = createConnection(5678, '127.0.0.1');\\n //If the message is a sms ack for a \\\"normal command\\\" (this means the ack will start with \\\"New value \\\")\\n if (messageTypeLocalCode == \\\"ACK-SMS\\\") {\\n if (params.smsAck) {\\n //Add \\\"-SMS\\\" at the end so we can differentiate between a sms and grps ack for a command.\\n var smsAck = params.smsAck + '-SMS;'\\n // the essendex message the device sends in gets converted here\\n c.write(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n debug(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n if (!smsAck.startsWith('2001:')) {\\n //Add tag no commands so no commands are sent to the device after a sms ack. The device will not accept a command after a sms ack. This prevents lots of problems.\\n AddValue(codeValues, 'no_commands', 'true');\\n //As it is redirected from Esende, it is mandatroy to push the imei\\n AddValue(codeValues, 'imei', serverParams.Imei);\\n }\\n }\\n }\\n //We do not need to send the tag \\\"no_commands\\\" on the next 3 message types since we have already checked that option on the message type that matched the Esendex resend.\\n //If the message is a sms ack for \\\"Delete Records\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-DR\\\") {\\n var smsAck = '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},All records are erased${smsAck}`);\\n }\\n //If the message is a sms ack for \\\"Get Info\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GI\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},RTC:${smsAck}`);\\n }\\n }\\n //If the message is a sms ack for \\\"Get Version\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GV\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},Ver:${smsAck}`);\\n }\\n }\\n c.end()\\n } else if (messageTypeLocalCode.startsWith(\\\"ACK-ALF\\\")) {\\n if (messageTypeLocalCode == \\\"ACK-ALF\\\") {\\n var newAlldata = \\\"12100:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS2\\\") {\\n var newAlldata = \\\"14390:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS3\\\") {\\n var newAlldata = \\\"12101:\\\" + params.alldata;\\n }\\n if (newAlldata != null) {\\n var keyValues = ['12101', '12102', '12103', '12111', '12100', '13019', '13022', '14390', '14392', '14393', '14391', '14397', '14430', '14432', '14433', '14431', '14437', '14170', '14320', '14173', '14323', '7222', '12104'];\\n var configParamNames = ['FallAlarmSettings.Position', 'FallAlarmSettings.Angle', 'FallAlarmSettings.Timeout', 'FallAlarmSettings.SilentPreAlarmDelay', 'FallAlarmSettings.EnableDisableFallAlarmSettings', 'FallAlarmSettings.EnableDisableByButtons', 'FallAlarmSettings.EnableDisableByButtons', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'FallAlarmSettings.Indication', 'No-Ack-Needed', 'No-Ack-Needed'];\\n var ackSMSArray = newAlldata.split(';');\\n var findIndexOfBlankSMS = ackSMSArray.findIndex(element => element.includes(\\\"-SMS\\\"));\\n if (ackSMSArray[findIndexOfBlankSMS] === \\\"-SMS\\\") {\\n ackSMSArray.pop()\\n }\\n AddValue(codeValues, \\\"imei\\\", serverParams.Imei);\\n for (let i = 0; i < ackSMSArray.length; i++) {\\n var keyId = ackSMSArray[i].split(':')[0]; // id of the param saved in the array\\n var keyValue = ackSMSArray[i].split(':')[1]; // value of the param \\n var findIndex = keyValues.indexOf(keyId)\\n if (configParamNames[findIndex] != \\\"No-Ack-Needed\\\") {\\n var intellicareDataSetValue = eval('configs' + '.' + configParamNames[findIndex])\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableFallAlarmSettings\\\") {\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (intellicareDataSetValue == \\\"true\\\") {\\n intellicareDataSetValue = \\\"1\\\"\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n // if enableDisableByButtonsIndex is unchecked then overwrite the EnableDisableFallAlarmSettings value\\n var enableDisableByButtonsIndex = ackSMSArray.findIndex(element => element.includes(\\\"13019\\\" || \\\"13022\\\")); // button 1 long click or button 2 long click\\n if (enableDisableByButtonsIndex != -1) {\\n var valueOfenableDisableByButtons = ackSMSArray[enableDisableByButtonsIndex].slice(-1)\\n if (valueOfenableDisableByButtons != \\\"0\\\") {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n }\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableByButtons\\\") {\\n if (intellicareDataSetValue == \\\"true\\\") {\\n if (keyId == \\\"13019\\\") {\\n intellicareDataSetValue = \\\"2\\\"\\n } else if (keyId == \\\"13022\\\") {\\n intellicareDataSetValue = \\\"3\\\"\\n }\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.Indication\\\") {\\n if (intellicareDataSetValue == \\\"0\\\") { // on device 3 = vibrate and sound = 0 on IC\\n intellicareDataSetValue = \\\"3\\\"\\n } else if (intellicareDataSetValue == \\\"1\\\") { // on device 1 = vibrate = 1 on IC\\n intellicareDataSetValue = \\\"1\\\"\\n } else if (intellicareDataSetValue == \\\"2\\\") { // on device 0 = off = 2 on IC\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n if (keyValue == intellicareDataSetValue) {\\n configsToAck.push(eval('configIds' + '.' + configParamNames[findIndex]))\\n debug(\\\"Matched values of param\\\" + configParamNames[findIndex]);\\n } else {\\n debug(\\\"Not matched values of param\\\" + configParamNames[findIndex]);\\n }\\n }\\n }\\n }\\n }\\n //If the message is an ack, push the needed information to appear on the UI events.\\n else if (messageTypeLocalCode.startsWith('ACK-')) {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n //If the message is a decrypted version for codec8. This will include Cycles, and all the rest of messages not represented on the else if before \\n else {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n //AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n // If customID is not set....\\n if (isCorrectOperation) {\\n if (configsToAck.length > 0) {\\n dataToReceiver = {\\n 'values': codeValues,\\n 'configsToAck': configsToAck,\\n };\\n } else {\\n dataToReceiver = {\\n 'values': codeValues\\n };\\n }\\n console.log(dataToReceiver);\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {String} Ascii message\\n */\\n function decryptCodec12(message) {\\n var decoded = '';\\n var data12 = message.slice(30, -10);\\n data12 = hex_to_ascii(data12);\\n return data12;\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {Array} Array of Ascii messages\\n */\\n function decryptCodec8(message) {\\n //Initialise variables\\n var decoded = '';\\n var codecID = message.substring(16, 18);\\n decoded += codecID + ';';\\n var numberOfData = message.substring(18, 20);\\n decoded += numberOfData + ';';\\n var records = [];\\n var prox = 0;\\n //Loop number of events on a message times\\n for (i = 0; i < hexToDecimal(numberOfData); i++) {\\n //Initialise and transform variables\\n isSleep = 'false'\\n amber_State = '';\\n amber_Timer = '';\\n var decoded_final = '';\\n var record = '';\\n var timestamp = message.substring(index, index += 16);\\n timestamp = hexToDecimal(timestamp).toString().slice(0, -3)\\n timestamp = parseInt(timestamp, 10);\\n var priority = message.substring(index, index += 2);\\n var longitude = message.substring(index, index += 8);\\n longitude = hexToDecimalSigned(longitude) / 10000000;\\n var latitude = message.substring(index, index += 8);\\n latitude = hexToDecimalSigned(latitude) / 10000000;\\n var altitude = message.substring(index, index += 4);\\n altitude = hexToDecimalSigned(altitude);\\n var angle = message.substring(index, index += 4);\\n angle = hexToDecimalSigned(angle);\\n var satelites = message.substring(index, index += 2);\\n satelites = hexToDecimal(satelites);\\n var speed = message.substring(index, index += 4);\\n //Speed to m/s\\n speed = (hexToDecimal(speed) / 3.6).toFixed(2)\\n //If the message is a codec 8\\n if (codecID == '8E') {\\n var ioEvent = message.substring(index, index += 4);\\n var ioElementsTotal = message.substring(index, index += 4);\\n }\\n //If the message is a codec 8 Extended\\n else if (codecID == '08') {\\n var ioEvent = message.substring(index, index += 2);\\n var ioElementsTotal = message.substring(index, index += 2);\\n }\\n ioEvent = hexToDecimal(ioEvent);\\n //Switch to determine which is the event on the message\\n switch (ioEvent) {\\n case 0:\\n ioEvent = 'NoEvent';\\n break;\\n case 236:\\n ioEvent = 'Alarm';\\n break;\\n case 242:\\n ioEvent = 'ManDown';\\n break;\\n case 255:\\n ioEvent = 'OverSpeeding';\\n break;\\n case 310:\\n ioEvent = 'Movement_Event';\\n break;\\n case 389:\\n ioEvent = 'ButtonClick';\\n break;\\n case 1000:\\n ioEvent = 'Cycle';\\n break;\\n case 240:\\n ioEvent = 'Movement';\\n break\\n case 874:\\n ioEvent = 'BLT_violation_state';\\n break;\\n case 875:\\n ioEvent = 'Proximity_violation_source';\\n break;\\n case 874:\\n ioEvent = 'Proximity_duration';\\n break;\\n case 874:\\n ioEvent = 'BLT_MAC_Address';\\n break;\\n case 200:\\n ioEvent = 'Sleep_Mode';\\n break;\\n case 390:\\n ioEvent = 'PowerOff';\\n break;\\n case 200000:\\n ioEvent = 'PowerOn';\\n break;\\n case 400:\\n ioEvent = 'AmberAlert';\\n break;\\n default:\\n ioEvent = ioEvent + ':Not_recognised';\\n }\\n //Get the IO ids part of the message\\n var iods = IOIdsValues(message, ioElementsTotal, timestamp);\\n // if (customIdValue != '') {\\n // //we find the customIdValue at any point, \\n // //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n // isCorrectOperation = false;\\n // return;\\n // }\\n //Internally send the events translated to a readable format and using the format needed to match the message types.\\n if (ioEvent == 'Alarm') {\\n record = `GH5200-ALSOS,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'ManDown') {\\n record = `GH5200-ALF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'OverSpeeding') {\\n record = `GH5200-ALSP,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AutoGeofenceEvent' || ioEvent.startsWith('Geofence')) {\\n record = `GH5200-AGEO,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'NoEvent' || ioEvent == 'Cycle') {\\n //If the device is on sleep mode, it will not have send locations. For this reason, the message will be a Heartbeat and not a Cycle\\n if (isSleep == 'true') {\\n record = `GH5200-HTB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n } else if (ioEvent == 'Movement_Event') {\\n if (movement_Value == 'Movement_Event=NoMovement') {\\n record = `GH5200-ALNM,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (movement_Value == 'Movement_Event=Movement') {\\n record = `GH5200-ALMV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n //If the event is triggered because the device has entrered on Sleep mode, set an accuracy on 5000 to force a location. With this, we make sure we sent the last know location and we don't lose it.\\n //Without this, it can happen that a location is sent, another one acquired but never sent because went to sleep mode\\n else if (ioEvent == 'Sleep_Mode') {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n var iodsValues = iods.split(\\\";\\\");\\n iodsValues[0] = 1\\n if (iodsValues[2] == 0 && longitude != '0' && latitude != '0') {\\n iodsValues[2] = 5000\\n }\\n iods = iodsValues.join(\\\";\\\");\\n //} else if (ioEvent == 'Movement') {\\n // record = `GH5200-MV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'Proximity_violation_source' || ioEvent == 'Proximity_duration' || ioEvent == 'BLT_MAC_Address') {\\n record = `${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n prox = 1;\\n } else if (ioEvent == 'ButtonClick') {\\n record = `GH5200-PBB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AmberAlert') {\\n if (amber_State && amber_Timer) {\\n if (amber_State == 'Amber_Alert_State=Cancelled') {\\n record = `GH5200-ALA-C,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=On') {\\n record = `GH5200-ALA-O,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Snoozed') {\\n record = `GH5200-ALA-S,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Alarm') {\\n record = `GH5200-ALA,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n } else if (ioEvent == 'PowerOn') {\\n record = `GH5200-PWRN,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'PowerOff') {\\n record = `GH5200-PWRF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //In case the event has been created by an \\\"unknown\\\" IO Event (or not considered)\\n else {\\n record = `GH5200-COD8,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //console.log('--------------------' + decoded_final)\\n record = record + iods;\\n if (prox == 1) {\\n var values = iods.split(\\\";\\\");\\n if (values[4].startsWith('Proximity_duration')) {\\n var prox_duration = values[4].split(\\\"=\\\");\\n if (prox_duration[1] < 1) {\\n record = 'GH5200-PROXS,' + record;\\n } else if (prox_duration[1] >= 1) {\\n record = 'GH5200-PROXE,' + record;\\n }\\n }\\n prox = 0\\n }\\n //Push each record into a records array\\n records.push(record);\\n debug(record);\\n }\\n var CRC = message.substring(index + 2, index + 10);\\n //return an array with all records stored\\n return records;\\n }\\n /**\\n * Decrypts part of the message that contains the IO Ids and its values\\n * @param {String} message String to decrypt\\n * @param {String} ioElementsTotal Number of IO elements present on the message\\n * @param {Int} timestamp Unix timestamp given from the message\\n * @return {String} String with the IO Ids and its values decrypted on a readable format\\n */\\n function IOIdsValues(message, ioElementsTotal, timestamp) {\\n //Variable initialisation\\n var decoded = '';\\n var iods = '';\\n var gpsTime = 0;\\n var prox_source = '';\\n var prox_duration = '';\\n var BLT_state = '';\\n var BLT_MAC = '';\\n for (let i = 1; i <= 8; i = i * 2) {\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var ioNumElements = message.substring(index, index += 2);\\n }\\n var x = hexToDecimal(ioNumElements);\\n var pos = 2 * i;\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n //Id length depends on the codec\\n if (codecID == '8E') {\\n var id = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var id = message.substring(index, index += 2);\\n }\\n var value = message.substring(index, index += pos);\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n case 310:\\n id = 'Movement_Event';\\n if (value == '0') value = 'Movement';\\n else if (value == '1') value = 'NoMovement';\\n movement_Value = id + '=' + value;\\n break;\\n case 854: //Custom ID\\n customIdValue = value;\\n if (value != '') {\\n //we get the customIdValue at any point, \\n //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n isCorrectOperation = false;\\n return;\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n //Return decoded string with all the ids and its values on a readable format\\n decoded += ioNumElements + ';' + iods;\\n }\\n //ids with variable length on codec8 Extended\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n var x = hexToDecimal(ioNumElements);\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n var id = message.substring(index, index += 4);\\n var len = message.substring(index, index += 4);\\n len = hexToDecimal(len) * 2;\\n var value = message.substring(index, index += len);\\n valueHex = value;\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n decoded += ioNumElements + ';' + iods;\\n }\\n //Making sure location_accuracy has a value\\n if (!location_accuracy) location_accuracy = 0;\\n //Making sure battery_percentage has a value\\n if (!battery_percentage) battery_percentage = 0;\\n decoded_final = fix_state + ';' + gpsTime + ';' + location_accuracy + ';' + battery_percentage;\\n if (BLT_state) {\\n decoded_final += ';' + BLT_state;\\n }\\n if (prox_source) {\\n decoded_final += ';' + prox_source;\\n }\\n if (prox_duration) {\\n decoded_final += ';' + prox_duration;\\n }\\n if (BLT_MAC) {\\n decoded_final += ';' + BLT_MAC;\\n }\\n if (amber_State && amber_Timer) {\\n decoded_final += ';' + amber_State + ';' + amber_Timer;\\n }\\n decoded_final += ';;' + ioElementsTotal + ';' + decoded;\\n //Return final string with decoed iods\\n return decoded_final;\\n }\\n\\n function sendMessageToLocalhost(str) {\\n if (localTesting) {\\n console.log(\\\"Sending message to server: \\\" + str);\\n } else {\\n var server = '127.0.0.1';\\n var c = createConnection(5678, server);\\n c.write(`${str}`);\\n c.end();\\n }\\n }\\n /**\\n * Create connection to the server\\n * @param {Int} port Port to connect\\n * @param {String} server Server to connect\\n * @return {net.socket} The newly created socket used to start the connection.\\n */\\n function createConnection(port, server) {\\n c = net.createConnection(port, server);\\n c.on('error', function(error) {\\n c = createConnection(port, server);\\n });\\n return c;\\n }\\n\\n function connect(port, inter, a) {\\n return new Promise(resolve => {\\n const socket = net.createConnection(port, '127.0.0.1', () => {\\n socket.write(inter[a], () => {\\n socket.destroy(); //socket.destroy(); to socket.close();\\n resolve();\\n });\\n });\\n });\\n }\\n\\n function debug(str) { // write debug info to console log, if localTesting\\n if (localTesting === \\\"True\\\") {\\n console.log(str);\\n }\\n }\\n /**\\n * Convert from ascii to hexadecimal\\n * @param {String} str Ascii string\\n * @return {Array} str converted to Hexadecimal\\n */\\n function ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n }\\n /**\\n * Convert from Hexadecimal to Ascii\\n * @param {String} str1 Hexadecimal string\\n * @return {String} str1 converted to Ascii\\n */\\n function 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 /**\\n * Convert from Hexadecimal to Decimal signed (allowing negative numbers)\\n * @param {Double} hex Hexadecimal number\\n * @return {Double} hex converted to Decimal signed\\n */\\n function hexToDecimalSigned(hex) {\\n if (hex.length % 2 != 0) {\\n hex = \\\"0\\\" + hex;\\n }\\n var num = parseInt(hex, 16);\\n var maxVal = Math.pow(2, hex.length / 2 * 8);\\n if (num > maxVal / 2 - 1) {\\n num = num - maxVal\\n }\\n return num;\\n }\\n /**\\n * Convert from Hexadecimal to Decimal\\n * @param {Double} x Hexadecimal number\\n * @return {Double} x converted to Decimal\\n */\\n function hexToDecimal(x) {\\n x = parseInt(x, 16);\\n return x;\\n }\\n /**\\n * Push value to the message arrray\\n * @param {String} p1 Name given to the code to push\\n * @param {} p2 Value to push\\n */\\n // pass everything into codevaluearray\\n function AddValue(codeValueArray, p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n codeValueArray.push(cvpair);\\n }\\n // modify to return the object that contains your data\\n return dataToReceiver;\\n}\\n// params is not defined locally -> export as module\\nif (typeof(params) === 'undefined') {\\n module.exports = {\\n execute_ops\\n }\\n} else { // on server use local defined vars\\n let return_values = execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, false)\\n // define global returns\\n msg = return_values;\\n}\",\"Type\":0,\"ProtocolActionObjects\":[]}","Timestamp":1729527636},{"Type":1,"NewValue":"{\"Id\":332,\"Name\":\"GH5200\",\"Operation\":\"function execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, localTesting) {\\n //###############################################################################################################################################################################################################\\n // Badege Operation Script\\n // * Operation script for Badge\\n // * Uses Long Connection: true\\n // *\\n // * GLOBAL TEMPLATE: <>,<>,<>, <>\\n // * Encrypted: true\\n // * \\n // * CYCLE TEMPLATE:\\n // * GH5200-CYC,<>,<>,<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;<>;;<>\\n //###############################################################################################################################################################################################################\\n //=================================================================================\\n // VARIABLES \\n //=================================================================================\\n // if (typeof localTesting === \\\"undefined\\\") {\\n // var localTesting = \\\"False\\\";\\n // }\\n var customIdValue = '';\\n var isCorrectOperation = true;\\n var index = 20;\\n var timeout = 1500;\\n var fix_state;\\n var satelites;\\n var latitude;\\n var longitude;\\n var altitude;\\n var speed;\\n var event_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n var location_accuracy = \\\"5000\\\";\\n var onTrackingDemand = false;\\n var isSleep = 'false'\\n var amber_State = '';\\n var amber_Timer = '';\\n var movement_Value = '';\\n var dataToReceiver = [];\\n var codeValues = [];\\n var configsToAck = [];\\n //If the event type matches a global template\\n if (globalTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE10');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n AddValue(codeValues, 'localCode', messageTypeLocalCode);\\n //In case the message is \\\"STC\\\" (Start Connection)\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n var imei = hex_to_ascii(rawFromBytes).slice(2);\\n AddValue(codeValues, \\\"imei\\\", imei);\\n sendMessageToLocalhost(`GH5200-STC,${imei},${serverParams.Guid}`);\\n // var c = createConnection(5678, '127.0.0.1');\\n // c.write(`GH5200-STC,${imei},${serverParams.Guid}`);\\n // //Imei is recevied in hex\\n AddValue(codeValues, \\\"ack_stc\\\", \\\"01\\\");\\n // c.end();\\n //In case the message is a codec8 (either codec8 or codec8 Extended)\\n } else if (messageTypeLocalCode == \\\"COD8-Global\\\") {\\n var ack;\\n //Get the full hex message in a readable format\\n var message = rawFromBytes;\\n var codecID = message.substring(16, 18);\\n //Get the imei from serverParams\\n var imei = serverParams.Imei\\n //Either codec 8 or codec 8 Extended\\n if (codecID == '08' || codecID == '8E') {\\n messages = decryptCodec8(message);\\n if (isCorrectOperation == false) {\\n return;\\n }\\n var numberOfData = message.substring(18, 20)\\n // var c = createConnection(5678, '127.0.0.1');\\n // c.on('data', function(data) {\\n // var msgLocal = [];\\n // //if ack ends with OTD, then onTrackingDemand = true\\n // if (data.toString().endsWith('OTD')) {\\n // onTrackingDemand = true\\n // }\\n // //The device can send more than one event on the same message. In this case, a part of the ack is the number of messages received\\n // //So, we only ack when we have received the last event of the message.\\n // if (data.toString().startsWith(`L${messages.length}`)) {\\n // //In case the event demands a tracking, the ack is the number of data followed by the command on_demand_tracking2 (already encoded)\\n // if (onTrackingDemand == true) {\\n // AddValue(msgLocal, 'ack_cod8', `000000${numberOfData}000000000000001D0C0105000000156F6E5F64656D616E645F747261636B696E67320D0A0100002EB9`);\\n // //Mandatory to push the imei when on a global template\\n // AddValue(msgLocal, 'imei', imei);\\n // //Mandatory to do console.log(msg);\\n // console.log(msgLocal);\\n // c.end();\\n // }\\n // //The device needs to be ack'ed the number of data in 4 bytes\\n // else {\\n //Ack with the number of messages received to make the device know that the server understood the full message.\\n AddValue(codeValues, 'ack_cod8', `000000${numberOfData}`);\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n //Mandatory to do console.log(msg);\\n //console.log(msg);\\n // c.end();\\n // }\\n // }\\n // });\\n //Internally send all the events on the same message received.\\n for (let i = 0; i < messages.length; i++) {\\n //c.write(messages[i]);\\n sendMessageToLocalhost(messages[i]);\\n // connect(5678, messages, i);\\n //console.log(messages[i]);\\n }\\n //In case the message is a codec12 (command ack)\\n } else if (codecID == '0C') {\\n var codec12 = decryptCodec12(message)\\n sendMessageToLocalhost(`GH5200-COD12,${serverParams.Imei},${codec12}`);\\n // var c = createConnection(5678, '127.0.0.1');\\n // //Internally send a codec12 message in the homogenous ascii format\\n // c.write(`GH5200-COD12,${serverParams.Imei},${codec12}`);\\n // c.end();\\n //Because the codec12 message is matched by the same global template than the codec8 message, we need to push \\\"ack_cod8\\\" as an empty string.\\n AddValue(codeValues, 'ack_cod8', '');\\n //Mandatory to push the imei when on a global template\\n AddValue(codeValues, 'imei', imei);\\n }\\n }\\n }\\n //In the case the message is matched by an oystaTemplate\\n if (oystaTemplate == \\\"True\\\") {\\n AddValue(codeValues, 'protocol_template', 'BADGE10');\\n AddValue(codeValues, 'product', serverParams.ProductName);\\n //If the message is a decrypted version for start the connection\\n if (messageTypeLocalCode == \\\"STC\\\") {\\n // stc conditions\\n AddValue(codeValues, 'ack_stc', '01');\\n }\\n //If the message is a codec8 (event not taken into account by us) \\n else if (messageTypeLocalCode == 'COD8') {\\n if (params.recordNumber) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n //In case the message is Real Time Location\\n else if (messageTypeLocalCode == \\\"RTL\\\") {\\n //If the message has a gps fix\\n if (params.gps == \\\"1\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 1)\\n //Speed to m/s\\n AddValue(codeValues, \\\"speed\\\", params.speed_raw / 3.6)\\n //Location time to actual time. It is not provided on the message\\n location_time = moment(params.date + ' ' + params.hour, 'YYYY-MM-DD HH:mm:ss').unix();\\n //Event time to actual time. It is not provided on the message\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n //Hardcoded accuracy of 500. No hdop or satellites are provided on the message\\n AddValue(codeValues, \\\"location_accuracy\\\", 500)\\n }\\n //If the message does not have a gps fix, we do not use it as we cannot make sure it is real\\n else if (params.gps == \\\"0\\\") {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n }\\n //If the event is an Alarm or Position By Button, send a flag (ODT) so the device is asked for on_demand_tracking\\n else if (messageTypeLocalCode == \\\"PBB\\\" || messageTypeCode.startsWith('AL')) {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message. If it is a Position by button or any kind of alarm, it needs to be follow by \\\"ODT\\\" in order to ask for a tracking\\n //This is used to make sure the gps is awake. It will solve the error of alarms sent before there is a gps fix\\n AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}OTD`);\\n //If the event is an ack for a SMS command (Redirected from Esendex)\\n } else if (messageTypeLocalCode.startsWith('ACK-SMS')) {\\n //No fix state\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n //Event and location time to actual time in order to show the messages on the events table\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n var c = createConnection(5678, '127.0.0.1');\\n //If the message is a sms ack for a \\\"normal command\\\" (this means the ack will start with \\\"New value \\\")\\n if (messageTypeLocalCode == \\\"ACK-SMS\\\") {\\n if (params.smsAck) {\\n //Add \\\"-SMS\\\" at the end so we can differentiate between a sms and grps ack for a command.\\n var smsAck = params.smsAck + '-SMS;'\\n // the essendex message the device sends in gets converted here\\n c.write(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n debug(`GH5200-COD12,${serverParams.Imei},New value ${smsAck}`);\\n if (!smsAck.startsWith('2001:')) {\\n //Add tag no commands so no commands are sent to the device after a sms ack. The device will not accept a command after a sms ack. This prevents lots of problems.\\n AddValue(codeValues, 'no_commands', 'true');\\n //As it is redirected from Esende, it is mandatroy to push the imei\\n AddValue(codeValues, 'imei', serverParams.Imei);\\n }\\n }\\n }\\n //We do not need to send the tag \\\"no_commands\\\" on the next 3 message types since we have already checked that option on the message type that matched the Esendex resend.\\n //If the message is a sms ack for \\\"Delete Records\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-DR\\\") {\\n var smsAck = '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},All records are erased${smsAck}`);\\n }\\n //If the message is a sms ack for \\\"Get Info\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GI\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},RTC:${smsAck}`);\\n }\\n }\\n //If the message is a sms ack for \\\"Get Version\\\". Internally send specific message\\n if (messageTypeLocalCode == \\\"ACK-SMS-GV\\\") {\\n if (params.smsAck) {\\n var smsAck = params.smsAck + '-SMS'\\n c.write(`GH5200-COD12,${serverParams.Imei},Ver:${smsAck}`);\\n }\\n }\\n c.end()\\n } else if (messageTypeLocalCode.startsWith(\\\"ACK-ALF\\\")) {\\n if (messageTypeLocalCode == \\\"ACK-ALF\\\") {\\n var newAlldata = \\\"12100:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS2\\\") {\\n var newAlldata = \\\"14390:\\\" + params.alldata;\\n } else if (messageTypeLocalCode == \\\"ACK-ALFSMS3\\\") {\\n var newAlldata = \\\"12101:\\\" + params.alldata;\\n }\\n if (newAlldata != null) {\\n var keyValues = ['12101', '12102', '12103', '12111', '12100', '13019', '13022', '14390', '14392', '14393', '14391', '14397', '14430', '14432', '14433', '14431', '14437', '14170', '14320', '14173', '14323', '7222', '12104'];\\n var configParamNames = ['FallAlarmSettings.Position', 'FallAlarmSettings.Angle', 'FallAlarmSettings.Timeout', 'FallAlarmSettings.SilentPreAlarmDelay', 'FallAlarmSettings.EnableDisableFallAlarmSettings', 'FallAlarmSettings.EnableDisableByButtons', 'FallAlarmSettings.EnableDisableByButtons', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'No-Ack-Needed', 'FallAlarmSettings.Indication', 'No-Ack-Needed', 'No-Ack-Needed'];\\n var ackSMSArray = newAlldata.split(';');\\n var findIndexOfBlankSMS = ackSMSArray.findIndex(element => element.includes(\\\"-SMS\\\"));\\n if (ackSMSArray[findIndexOfBlankSMS] === \\\"-SMS\\\") {\\n ackSMSArray.pop()\\n }\\n AddValue(codeValues, \\\"imei\\\", serverParams.Imei);\\n for (let i = 0; i < ackSMSArray.length; i++) {\\n var keyId = ackSMSArray[i].split(':')[0]; // id of the param saved in the array\\n var keyValue = ackSMSArray[i].split(':')[1]; // value of the param \\n var findIndex = keyValues.indexOf(keyId)\\n if (configParamNames[findIndex] != \\\"No-Ack-Needed\\\") {\\n var intellicareDataSetValue = eval('configs' + '.' + configParamNames[findIndex])\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableFallAlarmSettings\\\") {\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (intellicareDataSetValue == \\\"true\\\") {\\n intellicareDataSetValue = \\\"1\\\"\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n // if enableDisableByButtonsIndex is unchecked then overwrite the EnableDisableFallAlarmSettings value\\n var enableDisableByButtonsIndex = ackSMSArray.findIndex(element => element.includes(\\\"13019\\\" || \\\"13022\\\")); // button 1 long click or button 2 long click\\n if (enableDisableByButtonsIndex != -1) {\\n var valueOfenableDisableByButtons = ackSMSArray[enableDisableByButtonsIndex].slice(-1)\\n if (valueOfenableDisableByButtons != \\\"0\\\") {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n }\\n // intellicare values come in true/false and local values are set to 0/1 so this converstion is needed to match them together\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.EnableDisableByButtons\\\") {\\n if (intellicareDataSetValue == \\\"true\\\") {\\n if (keyId == \\\"13019\\\") {\\n intellicareDataSetValue = \\\"2\\\"\\n } else if (keyId == \\\"13022\\\") {\\n intellicareDataSetValue = \\\"3\\\"\\n }\\n } else {\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n if (configParamNames[findIndex] == \\\"FallAlarmSettings.Indication\\\") {\\n if (intellicareDataSetValue == \\\"0\\\") { // on device 3 = vibrate and sound = 0 on IC\\n intellicareDataSetValue = \\\"3\\\"\\n } else if (intellicareDataSetValue == \\\"1\\\") { // on device 1 = vibrate = 1 on IC\\n intellicareDataSetValue = \\\"1\\\"\\n } else if (intellicareDataSetValue == \\\"2\\\") { // on device 0 = off = 2 on IC\\n intellicareDataSetValue = \\\"0\\\"\\n }\\n }\\n if (keyValue == intellicareDataSetValue) {\\n configsToAck.push(eval('configIds' + '.' + configParamNames[findIndex]))\\n debug(\\\"Matched values of param\\\" + configParamNames[findIndex]);\\n } else {\\n debug(\\\"Not matched values of param\\\" + configParamNames[findIndex]);\\n }\\n }\\n }\\n }\\n }\\n //If the message is an ack, push the needed information to appear on the UI events.\\n else if (messageTypeLocalCode.startsWith('ACK-')) {\\n AddValue(codeValues, \\\"fix_state\\\", 0)\\n event_time = moment.utc().unix();\\n location_time = moment.utc().unix();\\n AddValue(codeValues, \\\"event_time\\\", event_time)\\n AddValue(codeValues, \\\"location_time\\\", location_time)\\n AddValue(codeValues, \\\"location_accuracy\\\", 0)\\n }\\n //If the message is a decrypted version for codec8. This will include Cycles, and all the rest of messages not represented on the else if before \\n else {\\n params.recordNumber = parseInt(params.recordNumber) + 1\\n //Push the record number of each message.\\n //AddValue(codeValues, 'ack_cod8', `L${params.recordNumber}`);\\n }\\n }\\n // If customID is not set....\\n if (isCorrectOperation) {\\n if (configsToAck.length > 0) {\\n dataToReceiver = {\\n 'values': codeValues,\\n 'configsToAck': configsToAck,\\n };\\n } else {\\n dataToReceiver = {\\n 'values': codeValues\\n };\\n }\\n console.log(dataToReceiver);\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {String} Ascii message\\n */\\n function decryptCodec12(message) {\\n var decoded = '';\\n var data12 = message.slice(30, -10);\\n data12 = hex_to_ascii(data12);\\n return data12;\\n }\\n /**\\n * Decrypt Codec 12 messages from hexadecimal to ascii\\n * @param {String} message Hexadecimal message\\n * @return {Array} Array of Ascii messages\\n */\\n function decryptCodec8(message) {\\n //Initialise variables\\n var decoded = '';\\n var codecID = message.substring(16, 18);\\n decoded += codecID + ';';\\n var numberOfData = message.substring(18, 20);\\n decoded += numberOfData + ';';\\n var records = [];\\n var prox = 0;\\n //Loop number of events on a message times\\n for (i = 0; i < hexToDecimal(numberOfData); i++) {\\n //Initialise and transform variables\\n isSleep = 'false'\\n amber_State = '';\\n amber_Timer = '';\\n var decoded_final = '';\\n var record = '';\\n var timestamp = message.substring(index, index += 16);\\n timestamp = hexToDecimal(timestamp).toString().slice(0, -3)\\n timestamp = parseInt(timestamp, 10);\\n var priority = message.substring(index, index += 2);\\n var longitude = message.substring(index, index += 8);\\n longitude = hexToDecimalSigned(longitude) / 10000000;\\n var latitude = message.substring(index, index += 8);\\n latitude = hexToDecimalSigned(latitude) / 10000000;\\n var altitude = message.substring(index, index += 4);\\n altitude = hexToDecimalSigned(altitude);\\n var angle = message.substring(index, index += 4);\\n angle = hexToDecimalSigned(angle);\\n var satelites = message.substring(index, index += 2);\\n satelites = hexToDecimal(satelites);\\n var speed = message.substring(index, index += 4);\\n //Speed to m/s\\n speed = (hexToDecimal(speed) / 3.6).toFixed(2)\\n //If the message is a codec 8\\n if (codecID == '8E') {\\n var ioEvent = message.substring(index, index += 4);\\n var ioElementsTotal = message.substring(index, index += 4);\\n }\\n //If the message is a codec 8 Extended\\n else if (codecID == '08') {\\n var ioEvent = message.substring(index, index += 2);\\n var ioElementsTotal = message.substring(index, index += 2);\\n }\\n ioEvent = hexToDecimal(ioEvent);\\n //Switch to determine which is the event on the message\\n switch (ioEvent) {\\n case 0:\\n ioEvent = 'NoEvent';\\n break;\\n case 236:\\n ioEvent = 'Alarm';\\n break;\\n case 242:\\n ioEvent = 'ManDown';\\n break;\\n case 255:\\n ioEvent = 'OverSpeeding';\\n break;\\n case 310:\\n ioEvent = 'Movement_Event';\\n break;\\n case 389:\\n ioEvent = 'ButtonClick';\\n break;\\n case 1000:\\n ioEvent = 'Cycle';\\n break;\\n case 240:\\n ioEvent = 'Movement';\\n break\\n case 874:\\n ioEvent = 'BLT_violation_state';\\n break;\\n case 875:\\n ioEvent = 'Proximity_violation_source';\\n break;\\n case 874:\\n ioEvent = 'Proximity_duration';\\n break;\\n case 874:\\n ioEvent = 'BLT_MAC_Address';\\n break;\\n case 200:\\n ioEvent = 'Sleep_Mode';\\n break;\\n case 390:\\n ioEvent = 'PowerOff';\\n break;\\n case 200000:\\n ioEvent = 'PowerOn';\\n break;\\n case 400:\\n ioEvent = 'AmberAlert';\\n break;\\n default:\\n ioEvent = ioEvent + ':Not_recognised';\\n }\\n //Get the IO ids part of the message\\n var iods = IOIdsValues(message, ioElementsTotal, timestamp);\\n // if (customIdValue != '') {\\n // //we find the customIdValue at any point, \\n // //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n // isCorrectOperation = false;\\n // return;\\n // }\\n //Internally send the events translated to a readable format and using the format needed to match the message types.\\n if (ioEvent == 'Alarm') {\\n record = `GH5200-ALSOS,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'ManDown') {\\n record = `GH5200-ALF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'OverSpeeding') {\\n record = `GH5200-ALSP,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AutoGeofenceEvent' || ioEvent.startsWith('Geofence')) {\\n record = `GH5200-AGEO,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'NoEvent' || ioEvent == 'Cycle') {\\n //If the device is on sleep mode, it will not have send locations. For this reason, the message will be a Heartbeat and not a Cycle\\n if (isSleep == 'true') {\\n record = `GH5200-HTB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n } else if (ioEvent == 'Movement_Event') {\\n if (movement_Value == 'Movement_Event=NoMovement') {\\n record = `GH5200-ALNM,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (movement_Value == 'Movement_Event=Movement') {\\n record = `GH5200-ALMV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n //If the event is triggered because the device has entrered on Sleep mode, set an accuracy on 5000 to force a location. With this, we make sure we sent the last know location and we don't lose it.\\n //Without this, it can happen that a location is sent, another one acquired but never sent because went to sleep mode\\n else if (ioEvent == 'Sleep_Mode') {\\n record = `GH5200-CYC,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n var iodsValues = iods.split(\\\";\\\");\\n iodsValues[0] = 1\\n if (iodsValues[2] == 0 && longitude != '0' && latitude != '0') {\\n iodsValues[2] = 5000\\n }\\n iods = iodsValues.join(\\\";\\\");\\n //} else if (ioEvent == 'Movement') {\\n // record = `GH5200-MV,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'Proximity_violation_source' || ioEvent == 'Proximity_duration' || ioEvent == 'BLT_MAC_Address') {\\n record = `${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n prox = 1;\\n } else if (ioEvent == 'ButtonClick') {\\n record = `GH5200-PBB,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'AmberAlert') {\\n if (amber_State && amber_Timer) {\\n if (amber_State == 'Amber_Alert_State=Cancelled') {\\n record = `GH5200-ALA-C,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=On') {\\n record = `GH5200-ALA-O,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Snoozed') {\\n record = `GH5200-ALA-S,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n if (amber_State == 'Amber_Alert_State=Alarm') {\\n record = `GH5200-ALA,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n }\\n } else if (ioEvent == 'PowerOn') {\\n record = `GH5200-PWRN,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n } else if (ioEvent == 'PowerOff') {\\n record = `GH5200-PWRF,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //In case the event has been created by an \\\"unknown\\\" IO Event (or not considered)\\n else {\\n record = `GH5200-COD8,${serverParams.Imei},${i},${timestamp};${priority};${longitude};${latitude};${altitude};${angle};${satelites};${speed};${ioEvent};`;\\n }\\n //console.log('--------------------' + decoded_final)\\n record = record + iods;\\n if (prox == 1) {\\n var values = iods.split(\\\";\\\");\\n if (values[4].startsWith('Proximity_duration')) {\\n var prox_duration = values[4].split(\\\"=\\\");\\n if (prox_duration[1] < 1) {\\n record = 'GH5200-PROXS,' + record;\\n } else if (prox_duration[1] >= 1) {\\n record = 'GH5200-PROXE,' + record;\\n }\\n }\\n prox = 0\\n }\\n //Push each record into a records array\\n records.push(record);\\n debug(record);\\n }\\n var CRC = message.substring(index + 2, index + 10);\\n //return an array with all records stored\\n return records;\\n }\\n /**\\n * Decrypts part of the message that contains the IO Ids and its values\\n * @param {String} message String to decrypt\\n * @param {String} ioElementsTotal Number of IO elements present on the message\\n * @param {Int} timestamp Unix timestamp given from the message\\n * @return {String} String with the IO Ids and its values decrypted on a readable format\\n */\\n function IOIdsValues(message, ioElementsTotal, timestamp) {\\n //Variable initialisation\\n var decoded = '';\\n var iods = '';\\n var gpsTime = 0;\\n var prox_source = '';\\n var prox_duration = '';\\n var BLT_state = '';\\n var BLT_MAC = '';\\n for (let i = 1; i <= 8; i = i * 2) {\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var ioNumElements = message.substring(index, index += 2);\\n }\\n var x = hexToDecimal(ioNumElements);\\n var pos = 2 * i;\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n //Id length depends on the codec\\n if (codecID == '8E') {\\n var id = message.substring(index, index += 4);\\n } else if (codecID == '08') {\\n var id = message.substring(index, index += 2);\\n }\\n var value = message.substring(index, index += pos);\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n case 310:\\n id = 'Movement_Event';\\n if (value == '0') value = 'Movement';\\n else if (value == '1') value = 'NoMovement';\\n movement_Value = id + '=' + value;\\n break;\\n case 854: //Custom ID\\n customIdValue = value;\\n if (value != '') {\\n //we get the customIdValue at any point, \\n //which most likely means the customID is set, and therefor is a Oysta ID and the wrong Protocol\\n isCorrectOperation = false;\\n return;\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n //Return decoded string with all the ids and its values on a readable format\\n decoded += ioNumElements + ';' + iods;\\n }\\n //ids with variable length on codec8 Extended\\n if (codecID == '8E') {\\n var ioNumElements = message.substring(index, index += 4);\\n var x = hexToDecimal(ioNumElements);\\n iods = '';\\n //Loop number of elements\\n for (let j = 0; j < x; j++) {\\n var id = message.substring(index, index += 4);\\n var len = message.substring(index, index += 4);\\n len = hexToDecimal(len) * 2;\\n var value = message.substring(index, index += len);\\n valueHex = value;\\n id = hexToDecimal(id);\\n value = hexToDecimal(value);\\n //Set the fix status\\n if (id == 69) {\\n if (value != 1) {\\n value = 0\\n }\\n var fix_state = value;\\n }\\n //transform hdop to location accuracy in meters\\n if (id == 182) {\\n id = 'hdop'\\n var location_accuracy = value * 5;\\n }\\n //Switch to set a name for each id and to get the value\\n switch (id) {\\n case 80:\\n id = 'DataMode';\\n break;\\n case 24:\\n id = 'Speed';\\n break;\\n case 113:\\n id = 'BatteryLevel';\\n var battery_percentage = value;\\n break;\\n case 17:\\n id = 'AxisX';\\n break;\\n case 18:\\n id = 'AxisY';\\n break;\\n case 19:\\n id = 'AxisZ';\\n break;\\n case 69:\\n id = 'GNSSStatus';\\n break;\\n case 874:\\n id = 'BLT_violation_state';\\n var mask = value;\\n if (mask == 0) {\\n value = 'None';\\n }\\n if (mask >= 8) {\\n value = 'Tamper removed ';\\n mask -= 8;\\n }\\n if (mask >= 4) {\\n value = 'BLE Missing ';\\n mask -= 4;\\n }\\n if (mask >= 2) {\\n value = 'RSSI treshold violation ';\\n mask -= 2;\\n }\\n if (mask == 1) {\\n value = 'Movement';\\n }\\n //BLT_state = id + '=' + value;\\n break;\\n case 875:\\n id = 'Proximity_violation_source';\\n value = hex_to_ascii(valueHex);\\n prox_source = id + '=' + value;\\n break;\\n case 890:\\n id = 'Proximity_duration';\\n prox_duration = id + '=' + value;\\n break;\\n case 891:\\n id = 'BLT_MAC_Address';\\n value = hex_to_ascii(valueHex);\\n BLT_MAC = id + '=' + value;\\n break;\\n case 400:\\n id = 'Amber_Alert_State';\\n if (value == '1') value = 'On';\\n else if (value == '2') value = 'Snoozed';\\n else if (value == '3') value = 'Alarm';\\n else if (value == '0') value = 'Cancelled'\\n amber_State = id + '=' + value;\\n break;\\n case 401:\\n id = 'Amber_Alert_Timer';\\n amber_Timer = id + '=' + value;\\n break;\\n case 200:\\n id = 'Sleep_Mode';\\n if (value == '1') {\\n isSleep = 'true'\\n }\\n break;\\n }\\n iods += id + '=' + value + ';';\\n //Check if there is GPS fix, so we get the GPS time. 0 if not.\\n if (id == 'GNSSStatus' && value == 1) {\\n gpsTime = timestamp;\\n } else {\\n gpsTime = moment.utc().unix();\\n }\\n }\\n decoded += ioNumElements + ';' + iods;\\n }\\n //Making sure location_accuracy has a value\\n if (!location_accuracy) location_accuracy = 0;\\n //Making sure battery_percentage has a value\\n if (!battery_percentage) battery_percentage = 0;\\n decoded_final = fix_state + ';' + gpsTime + ';' + location_accuracy + ';' + battery_percentage;\\n if (BLT_state) {\\n decoded_final += ';' + BLT_state;\\n }\\n if (prox_source) {\\n decoded_final += ';' + prox_source;\\n }\\n if (prox_duration) {\\n decoded_final += ';' + prox_duration;\\n }\\n if (BLT_MAC) {\\n decoded_final += ';' + BLT_MAC;\\n }\\n if (amber_State && amber_Timer) {\\n decoded_final += ';' + amber_State + ';' + amber_Timer;\\n }\\n decoded_final += ';;' + ioElementsTotal + ';' + decoded;\\n //Return final string with decoed iods\\n return decoded_final;\\n }\\n\\n function sendMessageToLocalhost(str) {\\n if (localTesting) {\\n console.log(\\\"Sending message to server: \\\" + str);\\n } else {\\n var server = '127.0.0.1';\\n AddValue(codeValues, \\\"sending\\\", str);\\n var c = createConnection(5678, server);\\n c.write(`${str}`);\\n c.end();\\n }\\n }\\n /**\\n * Create connection to the server\\n * @param {Int} port Port to connect\\n * @param {String} server Server to connect\\n * @return {net.socket} The newly created socket used to start the connection.\\n */\\n function createConnection(port, server) {\\n c = net.createConnection(port, server);\\n c.on('error', function(error) {\\n c = createConnection(port, server);\\n });\\n return c;\\n }\\n\\n function connect(port, inter, a) {\\n return new Promise(resolve => {\\n const socket = net.createConnection(port, '127.0.0.1', () => {\\n socket.write(inter[a], () => {\\n socket.destroy(); //socket.destroy(); to socket.close();\\n resolve();\\n });\\n });\\n });\\n }\\n\\n function debug(str) { // write debug info to console log, if localTesting\\n if (localTesting) {\\n console.log(str);\\n }\\n }\\n /**\\n * Convert from ascii to hexadecimal\\n * @param {String} str Ascii string\\n * @return {Array} str converted to Hexadecimal\\n */\\n function ascii_to_hexa(str) {\\n var arr1 = [];\\n for (var n = 0, l = str.length; n < l; n++) {\\n var hex = Number(str.charCodeAt(n)).toString(16);\\n arr1.push(hex);\\n }\\n return arr1.join('');\\n }\\n /**\\n * Convert from Hexadecimal to Ascii\\n * @param {String} str1 Hexadecimal string\\n * @return {String} str1 converted to Ascii\\n */\\n function 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 /**\\n * Convert from Hexadecimal to Decimal signed (allowing negative numbers)\\n * @param {Double} hex Hexadecimal number\\n * @return {Double} hex converted to Decimal signed\\n */\\n function hexToDecimalSigned(hex) {\\n if (hex.length % 2 != 0) {\\n hex = \\\"0\\\" + hex;\\n }\\n var num = parseInt(hex, 16);\\n var maxVal = Math.pow(2, hex.length / 2 * 8);\\n if (num > maxVal / 2 - 1) {\\n num = num - maxVal\\n }\\n return num;\\n }\\n /**\\n * Convert from Hexadecimal to Decimal\\n * @param {Double} x Hexadecimal number\\n * @return {Double} x converted to Decimal\\n */\\n function hexToDecimal(x) {\\n x = parseInt(x, 16);\\n return x;\\n }\\n /**\\n * Push value to the message arrray\\n * @param {String} p1 Name given to the code to push\\n * @param {} p2 Value to push\\n */\\n // pass everything into codevaluearray\\n function AddValue(codeValueArray, p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n codeValueArray.push(cvpair);\\n }\\n // modify to return the object that contains your data\\n return dataToReceiver;\\n}\\n// params is not defined locally -> export as module\\nif (typeof(params) === 'undefined') {\\n module.exports = {\\n execute_ops\\n }\\n} else { // on server use local defined vars\\n let return_values = execute_ops(moment, msg, net, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, false)\\n // define global returns\\n msg = return_values;\\n}\",\"Type\":0,\"ProtocolActionObjects\":[]}","Timestamp":1729596587}]}],"Groups":[{"Id":6473,"Parent":null,"Name":"Admin Settings","Json":"{ \"description\": \"Admin Settings\", \"columns\": 1, \"order\": 1, \"listSize\": 1, \"toTranslate\": [ \"name\", \"description\" ]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"ProtocolActionObjects":[]},{"Id":6474,"Parent":null,"Name":"Feature Settings","Json":"{ \"description\": null, \"columns\": 1, \"order\": 2, \"listSize\": 1, \"toTranslate\": [ \"name\", \"description\" ]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6475,"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Report Position By Button","Json":"{\"description\":null,\"columns\":1,\"order\":12,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6476,"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Real Time Locate","Json":"{\"description\":null,\"columns\":1,\"order\":10,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6477,"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"SOS Settings","Json":"{\"description\":null,\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6478,"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"White List","Json":"{\"description\":null,\"columns\":1,\"order\":11,\"listSize\":5,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6479,"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Get Version","Json":"{ \"description\": null, \"columns\": 1, \"order\": 2, \"listSize\": 1, \"toTranslate\": [ \"name\", \"description\" ]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"ProtocolActionObjects":[]},{"Id":6480,"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Over Speeding Settings","Json":"{\"description\":\"\",\"columns\":1,\"order\":7,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6481,"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Amber Alert","Json":"{\"description\":\"\",\"columns\":1,\"order\":5,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6482,"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Speed Dial Buttons","Json":"{\"description\":null,\"columns\":1,\"order\":9,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6483,"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Proximity","Json":"{\"description\":null,\"columns\":1,\"order\":13,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"ProtocolActionObjects":[]},{"Id":6484,"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Fall Alarm Settings","Json":"{\"description\":null,\"columns\":1,\"order\":6,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6485,"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"No Activity","Json":"{\"description\":\"No Activity\",\"columns\":1,\"order\":2,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6486,"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Movement","Json":"{\"description\":null,\"columns\":1,\"order\":4,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6487,"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Cycle Settings","Json":"{ \"description\": \"\", \"columns\": 1, \"order\": 4, \"listSize\": 1, \"toTranslate\": [ \"name\", \"description\" ]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6488,"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"APN Config","Json":"{ \"description\": null, \"columns\": 1, \"order\": 5, \"listSize\": 1, \"toTranslate\": [ \"name\", \"description\" ]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6489,"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Get Info","Json":"{ \"description\": \"\", \"columns\": 1, \"order\": 3, \"listSize\": 1, \"toTranslate\": [ \"name\", \"description\" ]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"ProtocolActionObjects":[]},{"Id":6490,"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Call Settings","Json":"{ \"description\": null, \"columns\": 1, \"order\": 6, \"listSize\": 1, \"toTranslate\": [ \"name\", \"description\" ]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6491,"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Initialise From Factory Settings","Json":"{\"description\":\"\",\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"ProtocolActionObjects":[]},{"Id":6492,"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"SMS Password","Json":"{ \"description\": \"Login and Password for SMS\", \"columns\": 1, \"order\": 7, \"listSize\": 1, \"toTranslate\": [ \"name\", \"description\" ]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6493,"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"NoMovement","Json":"{\"description\":null,\"columns\":1,\"order\":3,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6494,"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Reboot","Json":"{\"description\":null,\"columns\":1,\"order\":8,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6495,"Parent":{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Incoming Calls","Json":"{\"description\":null,\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6496,"Parent":{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Speed Dial Button","Json":"{ \"description\": \"\", \"columns\": 1, \"order\": 1, \"listSize\": 1, \"toTranslate\": [ \"name\", \"description\" ]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":6497,"Parent":{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Device Volume","Json":"{\"description\":null,\"columns\":1,\"order\":2,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]}],"GroupParams":[{"Id":11594,"Group":{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Report Position By Button","Json":"{ \"name\": \"Report Position By Button\", \"default\": \"true\", \"description\": \"Report Position By Button\", \"type\": \"checkbox\", \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"futureOnly\": \"\", \"integerOnly\": false, \"minLength\": null, \"maxLength\": null, \"helpText\": \"Set button 3 to report a position by button when pressed on the device\", \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ]}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11593,"Group":{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Real Time Locate","Json":"{\"name\":\"Real Time Locate\",\"default\":\"\",\"description\":\"Real Time Locate\",\"type\":\"button\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Select to request an updated location from the device\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11591,"Group":{"Id":6477,"Name":"SOS Settings","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"SOS Number","Json":"{ \"name\": \"SOS Number\", \"default\": \"\", \"description\": \"Alarm Phone Number\", \"type\": \"phone\", \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"futureOnly\": \"\", \"integerOnly\": false, \"minLength\": null, \"maxLength\": null, \"helpText\": \"The phone number will be used for alarm calls\", \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11592,"Group":{"Id":6477,"Name":"SOS Settings","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"SOS Action","Json":"{\"name\":\"SOS Action\",\"default\":\"\",\"description\":\"Alarm Action\",\"type\":\"radioGroup\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":null,\"integerOnly\":null,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Select the alarm action\",\"options\":[{\"label\":\"Call and Event\",\"value\":\"0\"},{\"label\":\"Event Only\",\"value\":\"1\"}],\"toTranslate\":[\"name\",\"description\",\"helpText\",\"label\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11589,"Group":{"Id":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},"Name":"Number","Json":"{ \"name\": \"Number\", \"default\": \"\", \"description\": null, \"type\": \"phone\", \"order\": 1, \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"minLength\": null, \"maxLength\": null, \"helpText\": null, \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11581,"Group":{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":true,"Deleted":false,"Children":[]},"Name":"Get Version","Json":"{\"name\":\"Get Version\",\"default\":\"\",\"description\":\"Get Version\",\"type\":\"button\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":null,\"integerOnly\":null,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11595,"Group":{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Max Speed","Json":"{ \"name\": \"Max Speed\", \"default\": \"90\", \"description\": \"Max Speed\", \"type\": \"number\", \"suffix\": null, \"prefix\": null, \"min\": 0, \"max\": 260, \"futureOnly\": null, \"integerOnly\": true, \"minLength\": null, \"maxLength\": null, \"helpText\": \"Km/h\", \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ], \"order\": 1}","Default":"90","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11596,"Group":{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Enable Disable Over Speeding Settings","Json":"{ \"name\": \"Enable Disable Over Speeding Settings\", \"default\": \"true\", \"description\": null, \"type\": \"enable\", \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"futureOnly\": \"\", \"integerOnly\": false, \"minLength\": null, \"maxLength\": null, \"helpText\": \"Select to enable or disable the Over Speed feature\", \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ]}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11585,"Group":{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Initial Call","Json":"{\"name\":\"Initial Call\",\"default\":\"false\",\"description\":\"Initial Call\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Make a call when starting the Amber timer\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11590,"Group":{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Enable Disable Amber Alert","Json":"{ \"name\": \"Enable Disable Amber Alert\", \"default\": \"false\", \"description\": \"\", \"type\": \"enable\", \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"futureOnly\": null, \"integerOnly\": null, \"minLength\": null, \"maxLength\": null, \"helpText\": \"Select to enable or disable the Amber Alert feature\", \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ], \"order\": 0}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11603,"Group":{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"PreAlarm","Json":"{\"name\":\"PreAlarm\",\"default\":\"\",\"description\":\"PreAlarm\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"In seconds\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11602,"Group":{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Disable After Alarm","Json":"{\"name\":\"Disable After Alarm\",\"default\":\"false\",\"description\":\"Disable After Alarm\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":null,\"integerOnly\":null,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Select this checkbox if you wish the Amber Alert process to stop after an alarm\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":2}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11586,"Group":{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Indication","Json":"{\"name\":\"Indication\",\"default\":\"\",\"description\":null,\"type\":\"radioGroup\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[{\"label\":\"Vibrate and sound\",\"value\":\"0\"},{\"label\":\"Vibrate\",\"value\":\"1\"},{\"label\":\"Nothing\",\"value\":\"2\"}],\"toTranslate\":[\"name\",\"description\",\"helpText\",\"label\"],\"order\":1}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11587,"Group":{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Timeout","Json":"{\"name\":\"Timeout\",\"default\":\"\",\"description\":\"\\nTimeout\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"In seconds\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":11587,\"Group\":{\"Id\":6481,\"Name\":\"Amber Alert\",\"Json\":{\"description\":\"\",\"columns\":1,\"order\":5,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]},\"Parent\":null,\"Device\":null,\"DeviceRelated\":false,\"IsList\":false,\"IsAdminOnly\":false,\"Deleted\":false,\"Children\":[]},\"Name\":\"Timeout\",\"Json\":\"{\\\"name\\\":\\\"Timeout\\\",\\\"default\\\":\\\"\\\",\\\"description\\\":\\\"\\\\nTimeout\\\",\\\"type\\\":\\\"number\\\",\\\"suffix\\\":null,\\\"prefix\\\":null,\\\"min\\\":180,\\\"max\\\":null,\\\"futureOnly\\\":false,\\\"integerOnly\\\":true,\\\"isReadOnly\\\":false,\\\"isHidden\\\":false,\\\"minLength\\\":null,\\\"maxLength\\\":null,\\\"helpText\\\":\\\"In seconds\\\",\\\"options\\\":[],\\\"toTranslate\\\":[\\\"name\\\",\\\"description\\\",\\\"helpText\\\"]}\",\"Default\":\"\",\"Command\":null,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728469479}],"Tags":[]},{"Id":11598,"Group":{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":true,"Deleted":false,"Children":[]},"Name":"Enable Disable Proximity","Json":"{\"name\":\"Enable Disable Proximity\",\"default\":\"true\",\"description\":\"\",\"type\":\"enable\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":true,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Select to enable or disable the Proximity feature\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11599,"Group":{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":true,"Deleted":false,"Children":[]},"Name":"Prealarm","Json":"{\"name\":\"Prealarm\",\"default\":\"20\",\"description\":\"Prealarm\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":true,\"isHidden\":true,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Seconds\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"20","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11597,"Group":{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":true,"Deleted":false,"Children":[]},"Name":"Call","Json":"{\"name\":\"Call\",\"default\":\"true\",\"description\":\"Call\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":true,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11562,"Group":{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Enable Disable By Buttons","Json":"{\"name\":\"Enable Disable By Buttons\",\"default\":\"\",\"description\":\"Enable Disable By Buttons\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"If checked, the user will be able to enable/disable the functionality by the corresponding button.\\nIf checked, Fall alarm will be OFF by default. If unchecked, Fall alarm will be ON by default\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":0}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11563,"Group":{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Angle","Json":"{\"name\":\"Angle\",\"default\":\"\",\"description\":\"Angle\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":30,\"max\":150,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Degrees\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":1}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11561,"Group":{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Position","Json":"{\"name\":\"Position\",\"default\":\"\",\"description\":null,\"type\":\"radioGroup\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Orientation\",\"options\":[{\"label\":\"Horizontal\",\"value\":\"0\"},{\"label\":\"Vertical\",\"value\":\"1\"}],\"toTranslate\":[\"name\",\"description\",\"helpText\",\"label\"],\"order\":3}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11560,"Group":{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Enable Disable Fall Alarm Settings","Json":"{\"name\":\"Enable Disable Fall Alarm Settings\",\"default\":\"\",\"description\":null,\"type\":\"enable\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Select to enable or disable the Fall Alarm feature\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":2}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11559,"Group":{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Silent PreAlarm Delay","Json":"{\"name\":\"Silent PreAlarm Delay\",\"default\":\"\",\"description\":\"Silent PreAlarm Delay\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":0,\"max\":600,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Seconds\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":4}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11558,"Group":{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Timeout","Json":"{\"name\":\"Timeout\",\"default\":\"\",\"description\":\"Timeout\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":0,\"max\":65500,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Seconds\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":5}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11557,"Group":{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Indication","Json":"{\"name\":\"Indication\",\"default\":\"\",\"description\":null,\"type\":\"radioGroup\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[{\"label\":\"Vibrate and sound\",\"value\":\"0\"},{\"label\":\"Vibrate\",\"value\":\"1\"},{\"label\":\"Nothing\",\"value\":\"2\"}],\"toTranslate\":[\"name\",\"description\",\"helpText\",\"label\"],\"order\":6}","Default":"","Command":null,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":11557,\"Group\":{\"Id\":6484,\"Name\":\"Fall Alarm Settings\",\"Json\":{\"description\":null,\"columns\":1,\"order\":6,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]},\"Parent\":null,\"Device\":null,\"DeviceRelated\":false,\"IsList\":false,\"IsAdminOnly\":false,\"Deleted\":false,\"Children\":[]},\"Name\":\"Indication\",\"Json\":\"{\\\"name\\\":\\\"Indication\\\",\\\"default\\\":\\\"\\\",\\\"description\\\":null,\\\"type\\\":\\\"radioGroup\\\",\\\"suffix\\\":null,\\\"prefix\\\":null,\\\"min\\\":null,\\\"max\\\":null,\\\"futureOnly\\\":false,\\\"integerOnly\\\":false,\\\"isReadOnly\\\":false,\\\"isHidden\\\":false,\\\"minLength\\\":null,\\\"maxLength\\\":null,\\\"helpText\\\":null,\\\"options\\\":[{\\\"value\\\":\\\"0\\\",\\\"label\\\":\\\"Vibrate and sound\\\"},{\\\"value\\\":\\\"1\\\",\\\"label\\\":\\\"Vibrate\\\"},{\\\"value\\\":\\\"2\\\",\\\"label\\\":\\\"Nothing\\\"}],\\\"toTranslate\\\":[\\\"name\\\",\\\"description\\\",\\\"helpText\\\",\\\"label\\\"]}\",\"Default\":\"\",\"Command\":null,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728395985},{"Type":2,"NewValue":"{\"Id\":11557,\"Group\":{\"Id\":6484,\"Name\":\"Fall Alarm Settings\",\"Json\":{\"description\":null,\"columns\":1,\"order\":6,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]},\"Parent\":null,\"Device\":null,\"DeviceRelated\":false,\"IsList\":false,\"IsAdminOnly\":false,\"Deleted\":false,\"Children\":[]},\"Name\":\"Indication\",\"Json\":\"{\\\"name\\\":\\\"Indication\\\",\\\"default\\\":\\\"\\\",\\\"description\\\":null,\\\"type\\\":\\\"radioGroup\\\",\\\"suffix\\\":null,\\\"prefix\\\":null,\\\"min\\\":null,\\\"max\\\":null,\\\"futureOnly\\\":false,\\\"integerOnly\\\":false,\\\"isReadOnly\\\":false,\\\"isHidden\\\":false,\\\"minLength\\\":null,\\\"maxLength\\\":null,\\\"helpText\\\":null,\\\"options\\\":[{\\\"value\\\":\\\"0\\\",\\\"label\\\":\\\"Vibrate and sound\\\"},{\\\"value\\\":\\\"1\\\",\\\"label\\\":\\\"Vibrate\\\"},{\\\"value\\\":\\\"2\\\",\\\"label\\\":\\\"Nothing\\\"}],\\\"toTranslate\\\":[\\\"name\\\",\\\"description\\\",\\\"helpText\\\",\\\"label\\\"]}\",\"Default\":\"\",\"Command\":{\"Id\":5305,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"1.0\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Fall Alarm SMS 2\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar commandSMS = '';\\nvar command = '';\\nvar commandGprs = '';\\nvar notSend = false;\\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \\\"true\\\") {\\n var command = 'setparam 14390:1;14392:5;14393:1;14391:1;14397:1;14430:1;14432:5;14433:1;14431:1;14437:1;';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\\n notSend = true;\\n }\\n AddValue(\\\"data\\\", commandGprs);\\n AddValueSMS(\\\"data\\\", commandSMS);\\n}\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS,\\n notSend: notSend\\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}\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":true,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":5283,\"Parent\":null,\"HasAck\":true,\"HexString\":false,\"SendAttempts\":9,\"Order\":17},\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728395990},{"Type":2,"NewValue":"{\"Id\":11557,\"Group\":{\"Id\":6484,\"Name\":\"Fall Alarm Settings\",\"Json\":{\"description\":null,\"columns\":1,\"order\":6,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]},\"Parent\":null,\"Device\":null,\"DeviceRelated\":false,\"IsList\":false,\"IsAdminOnly\":false,\"Deleted\":false,\"Children\":[]},\"Name\":\"Indication\",\"Json\":\"{\\\"name\\\":\\\"Indication\\\",\\\"default\\\":\\\"\\\",\\\"description\\\":null,\\\"type\\\":\\\"radioGroup\\\",\\\"suffix\\\":null,\\\"prefix\\\":null,\\\"min\\\":null,\\\"max\\\":null,\\\"futureOnly\\\":false,\\\"integerOnly\\\":false,\\\"isReadOnly\\\":false,\\\"isHidden\\\":false,\\\"minLength\\\":null,\\\"maxLength\\\":null,\\\"helpText\\\":null,\\\"options\\\":[{\\\"value\\\":\\\"0\\\",\\\"label\\\":\\\"Vibrate and sound\\\"},{\\\"value\\\":\\\"1\\\",\\\"label\\\":\\\"Vibrate\\\"},{\\\"value\\\":\\\"2\\\",\\\"label\\\":\\\"Nothing\\\"}],\\\"toTranslate\\\":[\\\"name\\\",\\\"description\\\",\\\"helpText\\\",\\\"label\\\"]}\",\"Default\":\"\",\"Command\":{\"Id\":5312,\"Protocol\":{\"Id\":230,\"Code\":\"Badge\",\"Version\":\"1.0\",\"FirmwareVersion\":null,\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"Fall Alarm SMS 3\",\"TemplateSMS\":\"<>\",\"Template\":\"<>\",\"AckTemplate\":null,\"Operation\":\"var configs = [];\\nvar configsSMS = [];\\nvar commandSMS = '';\\nvar command = '';\\nvar commandGprs = '';\\nvar notSend = false;\\nif (params.FallAlarmSettings.EnableDisableFallAlarmSettings == \\\"true\\\") {\\n command = 'setparam ';\\n if (params.FallAlarmSettings.Position) {\\n command += '12101:' + params.FallAlarmSettings.Position + ';';\\n }\\n if (params.FallAlarmSettings.Angle) {\\n command += '12102:' + params.FallAlarmSettings.Angle + ';';\\n }\\n if (params.FallAlarmSettings.Timeout) {\\n command += '12103:' + params.FallAlarmSettings.Timeout + ';';\\n }\\n if (params.FallAlarmSettings.SilentPreAlarmDelay) {\\n command += '12111:' + params.FallAlarmSettings.SilentPreAlarmDelay + ';';\\n }\\n if (params.FallAlarmSettings.Indication == '0') {\\n command += '14170:1;14320:1;14173:1;14323:3;';\\n } else if (params.FallAlarmSettings.Indication == '1') {\\n command += '14170:1;14320:1;14173:1;14323:1;';\\n } else if (params.FallAlarmSettings.Indication == '2') {\\n command += '14170:0;14320:0;14173:0;14323:0;';\\n }\\n command += '7222:0;12104:1';\\n if (params.SMSPassword.LoginOld && params.SMSPassword.PasswordOld) {\\n commandSMS = `${params.SMSPassword.LoginOld} ${params.SMSPassword.PasswordOld} ${command}`;\\n } else {\\n commandSMS = ` ${command}`;\\n }\\n if (isForcedBySMS == 'False' && ((serverParams.CommandType == 'ByGPRS') || (serverParams.CommandType == 'Default' && ((serverParams.ParentCommandType == 'ByGPRS') || (serverParams.ParentCommandType == 'Default' && serverParams.ConfigType == 'GPRS') || (serverParams.ParentCommandType === null && serverParams.ConfigType == 'GPRS'))))) {\\n notSend = true;\\n }\\n AddValue(\\\"data\\\", commandGprs);\\n AddValueSMS(\\\"data\\\", commandSMS);\\n}\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n configs: configs,\\n configsSMS: configsSMS,\\n notSend: notSend\\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}\\n\\nfunction AddValueSMS(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configsSMS.push(cvpair);\\n}\",\"AvoidResending\":false,\"FollowParentSentType\":true,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":5283,\"Parent\":null,\"HasAck\":true,\"HexString\":false,\"SendAttempts\":9,\"Order\":18},\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1728395995}],"Tags":[]},{"Id":11588,"Group":{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Enable Disable No Activity","Json":"{\"name\":\"Enable Disable No Activity\",\"default\":\"\",\"description\":\"Enable Disable No Activity\",\"type\":\"enable\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Enable or disable no activity alerts\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"false","Command":null,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":11588,\"Group\":{\"Id\":6485,\"Name\":\"No Activity\",\"Json\":{\"description\":\"No Activity\",\"columns\":1,\"order\":2,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]},\"Parent\":null,\"Device\":null,\"DeviceRelated\":false,\"IsList\":false,\"IsAdminOnly\":false,\"Deleted\":false,\"Children\":[]},\"Name\":\"Enable Disable No Activity\",\"Json\":\"{\\\"name\\\":\\\"Enable Disable No Activity\\\",\\\"default\\\":\\\"false\\\",\\\"description\\\":\\\"Enable Disable No Activity\\\",\\\"type\\\":\\\"enable\\\",\\\"suffix\\\":null,\\\"prefix\\\":null,\\\"min\\\":null,\\\"max\\\":null,\\\"futureOnly\\\":false,\\\"integerOnly\\\":false,\\\"isReadOnly\\\":false,\\\"isHidden\\\":false,\\\"minLength\\\":null,\\\"maxLength\\\":null,\\\"helpText\\\":\\\"Enable or disable no activity alerts\\\",\\\"options\\\":[],\\\"toTranslate\\\":[\\\"name\\\",\\\"description\\\",\\\"helpText\\\"]}\",\"Default\":\"true\",\"Command\":null,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725900688}],"Tags":[{"Id":2068,"Name":"noActivityActivate","BackendAction":"ActivateNoActivity","Value":""}]},{"Id":11582,"Group":{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"No Activity","Json":"{\"name\":\"No Activity\",\"default\":\"\",\"description\":\"Set No Activity Events\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":4,\"max\":10080,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Set No Activity Alerts in minutes. If the device does not report in the time frame it triggers a No Activity alert\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":11582,\"Group\":{\"Id\":6485,\"Name\":\"No Activity\",\"Json\":{\"description\":\"No Activity\",\"columns\":1,\"order\":2,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]},\"Parent\":null,\"Device\":null,\"DeviceRelated\":false,\"IsList\":false,\"IsAdminOnly\":false,\"Deleted\":false,\"Children\":[]},\"Name\":\"No Activity\",\"Json\":\"{\\\"name\\\":\\\"No Activity\\\",\\\"default\\\":\\\"\\\",\\\"description\\\":\\\"Set No Activity Events\\\",\\\"type\\\":\\\"number\\\",\\\"suffix\\\":null,\\\"prefix\\\":null,\\\"min\\\":4,\\\"max\\\":10080,\\\"futureOnly\\\":false,\\\"integerOnly\\\":true,\\\"isReadOnly\\\":false,\\\"isHidden\\\":false,\\\"minLength\\\":null,\\\"maxLength\\\":null,\\\"helpText\\\":\\\"Set No Activity Alerts in minutes. If the device does not report in the time frame it triggers a No Activity alert\\\",\\\"options\\\":[],\\\"toTranslate\\\":[\\\"name\\\",\\\"description\\\",\\\"helpText\\\"]}\",\"Default\":\"\",\"Command\":null,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1725900731}],"Tags":[{"Id":2069,"Name":"noActivityInterval","BackendAction":"NoActivityInterval","Value":""}]},{"Id":11555,"Group":{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Enable Disable Movement","Json":"{\"name\":\"Enable Disable Movement\",\"default\":\"\",\"description\":null,\"type\":\"enable\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11556,"Group":{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":"Timeout","Json":"{\"name\":\"Timeout\",\"default\":\"\",\"description\":\"Timeout\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":0,\"max\":65500,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Seconds\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11564,"Group":{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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 Interval","Json":"{\"name\":\"Cycle Interval\",\"default\":\"\",\"description\":\"Cycle Interval\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":0,\"max\":2592000,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Set how often you want a location from the device in minutes\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11565,"Group":{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":"APN","Json":"{ \"name\": \"APN\", \"default\": \"\", \"description\": \"APN\", \"type\": \"apn\", \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"futureOnly\": \"\", \"integerOnly\": false, \"minLength\": null, \"maxLength\": null, \"helpText\": \"Select the APN needed for the selected sim\", \"options\": [ { \"value\": \"internet.spacefon.com,guest,guest\", \"label\": \"Vodafone (Ghana) [Ghana]\" }, { \"value\": \"internet,gprs,gprs\", \"label\": \"O2 IRE [Ireland]\" }, { \"value\": \"data.myeirmobile.ie,,\", \"label\": \"EIR Ire [Ireland]\" }, { \"value\": \"Internet,web,web\", \"label\": \"Vodafone internet\" }, { \"value\": \"iot.cslm2m.com,0,0\", \"label\": \"CSL (iot.csl)\" }, { \"value\": \"i-apn.net,oystatech,oystatech\", \"label\": \"Wireless Logic\" }, { \"value\": \"internet.vodafone.gr,,\", \"label\": \"Greece Vodafone [Greece]\" }, { \"value\": \"internet,,\", \"label\": \"Vodafone Internet (Global) []\" }, { \"value\": \"open.internet,,\", \"label\": \"Three IRE [Ireland]\" }, { \"value\": \" ,,\", \"label\": \"None\" }, { \"value\": \"chubbie.telefonica.com,,\", \"label\": \"Telefonica Chubb IE [Ireland]\" }, { \"value\": \"live.vodafone.com,vodafone,vodafone\", \"label\": \"Vodafone Ireland 2 [Ireland]\" }, { \"value\": \"apn.sml.ie,,\", \"label\": \"Jasper - Smart Monitoring [Ireland]\" }, { \"value\": \"everywhere,,\", \"label\": \"EE Internet [UK]\" }, { \"value\": \"everywhere,eesecure,secure\", \"label\": \"T-Mobile Internet [UK]\" }, { \"value\": \"i-viohalko,,\", \"label\": \"Cosmote [Greece]\" }, { \"value\": \"yesinternet,,\", \"label\": \"Optus [Australia]\" }, { \"value\": \"ESEYE1,USER,PASS\", \"label\": \"ESEYE1\" }, { \"value\": \"internet.vodafone.pt,,\", \"label\": \"Vodafone Telecel [Portugal]\" }, { \"value\": \"Network,,\", \"label\": \"Network [Ghana]\" }, { \"value\": \"jawalnet.com.sa,,\", \"label\": \"STC [Saudi Arabia]\" }, { \"value\": \"internetm2m,,\", \"label\": \"Portugal Telecom [Portugal]\" }, { \"value\": \"eapn1.net,web,web\", \"label\": \"Mobius [uk]\" }, { \"value\": \"eseye.com,user,pass\", \"label\": \"ESeye \" }, { \"value\": \"stream.co.uk,default,void \", \"label\": \"Static Stream [UK]\" }, { \"value\": \"mobile.o2.co.uk,vertigo,password\", \"label\": \"G4S UK O2 [UK]\" }, { \"value\": \"wap.vodafone.co.uk,wap,wap\", \"label\": \"Vodafone WAP [UK]\" }, { \"value\": \"autoselect,,\", \"label\": \"autoselect \" }, { \"value\": \"payandgo.o2.co.uk,payandgo,payandgo\", \"label\": \"O2 (pre-pay) [UK]\" }, { \"value\": \"isp.vodafone.ie,vodafone,vodafone\", \"label\": \"Vodafone (contract) [Ireland]\" }, { \"value\": \"hs.vodafone.ie ,vodafone,vodafone\", \"label\": \"Vodafone IRE + username and password [Ireland]\" }, { \"value\": \"lpwa.vodafone.iot,,\", \"label\": \"VODAFONE_lpwa \\t [spain]\" }, { \"value\": \"ukiot,,\", \"label\": \"BT-EE-trial [UK]\" }, { \"value\": \"i.euskaltel.mobi,,\", \"label\": \"Euskaltel []\" }, { \"value\": \"wlapn.com,deimos,deimos\", \"label\": \"DEIMOS [Spain]\" }, { \"value\": \"geminit2.m2m,,\", \"label\": \"CSL (gemenit2) [UK]\" }, { \"value\": \"iot.cslm2m.com,,\", \"label\": \"CSL (IoT) [UK]\" }, { \"value\": \"m2m.vodafone.es,Vodafone,Vodafone\", \"label\": \"m2m.vodafone.es [Spain]\" }, { \"value\": \"movistar.es,movistar,movistar\", \"label\": \"Movistar Spain [Spain]\" }, { \"value\": \"airtelwap.es,wap@wap,wap\", \"label\": \"Airtel WAP [Spain]\" }, { \"value\": \"stream.co.uk,streamip,streamip\", \"label\": \"Stream [UK]\" }, { \"value\": \"inetd.vfes,,\", \"label\": \"Spainiot [Spain]\" }, { \"value\": \"ac.vodafone.es,vodafone,vodafone\", \"label\": \"ac.vodafone.es [Spain]\" }, { \"value\": \"movistar.es,MOVISTAR,MOVISTAR\", \"label\": \"Movistar [Spain]\" }, { \"value\": \"internet.spacefon.com,0,0\", \"label\": \"Ghana Vodafone [Ghana]\" }, { \"value\": \"airtelnet.es,vodafone,vodafone\", \"label\": \"VodafoneAirtel [Spain]\" }, { \"value\": \"internet,0,0\", \"label\": \"China Mobile GPRS [China]\" }, { \"value\": \"orangeinternet,,\", \"label\": \"Orange (UK) [UK]\" }, { \"value\": \"hs.vodafone.ie,,\", \"label\": \"Vodafone HS [Ireland]\" }, { \"value\": \"Internet,web,web\", \"label\": \"Vodafone internet - Internet\" }, { \"value\": \"m2m.movistar.es,movistar,movistar\", \"label\": \"Movistar M2M Spain [Spain]\" }, { \"value\": \"mobile.o2.co.uk,o2web,password\", \"label\": \"mobile.o2.co.uk [United Kingdom]\" }, { \"value\": \"orangeworld,orange,orange\", \"label\": \"orangeworld [Spain]\" }, { \"value\": \"g4sglobal.gr,a,aa\", \"label\": \"Vodafone Global [Greece]\" } ], \"toTranslate\": [ \"name\", \"description\", \"helpText\", \"label\" ], \"order\": 0}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11566,"Group":{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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\": \"Acceptance\", \"description\": \"Server\", \"type\": \"select\", \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"futureOnly\": \"\", \"integerOnly\": false, \"minLength\": null, \"maxLength\": null, \"helpText\": null, \"options\": [ { \"label\": \"Acceptance\", \"value\": \"52.174.17.77,5678\" }, { \"label\": \"Production\", \"value\": \"52.232.85.255,5678\" } ], \"toTranslate\": [ \"name\", \"description\", \"helpText\", \"label\" ], \"order\": 1}","Default":"Acceptance","Command":null,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":11566,\"Group\":{\"Id\":6488,\"Name\":\"APN Config\",\"Json\":{\"description\":null,\"columns\":1,\"order\":5,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]},\"Parent\":null,\"Device\":null,\"DeviceRelated\":false,\"IsList\":false,\"IsAdminOnly\":false,\"Deleted\":false,\"Children\":[]},\"Name\":\"Server\",\"Json\":\"{\\\"name\\\":\\\"Server\\\",\\\"default\\\":\\\"Acceptance\\\",\\\"description\\\":\\\"Server\\\",\\\"type\\\":\\\"select\\\",\\\"suffix\\\":null,\\\"prefix\\\":null,\\\"min\\\":null,\\\"max\\\":null,\\\"futureOnly\\\":false,\\\"integerOnly\\\":false,\\\"isReadOnly\\\":false,\\\"isHidden\\\":false,\\\"minLength\\\":null,\\\"maxLength\\\":null,\\\"helpText\\\":null,\\\"options\\\":[{\\\"value\\\":\\\"52.174.17.77,5678\\\",\\\"label\\\":\\\"Acceptance\\\"},{\\\"value\\\":\\\"52.232.85.255,5678\\\",\\\"label\\\":\\\"Production\\\"},{\\\"label\\\":\\\"Protocol-Import\\\",\\\"value\\\":\\\"52.174.17.77,5778\\\"}],\\\"toTranslate\\\":[\\\"name\\\",\\\"description\\\",\\\"helpText\\\",\\\"label\\\"]}\",\"Default\":\"Acceptance\",\"Command\":null,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1729501544}],"Tags":[]},{"Id":11567,"Group":{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":true,"Deleted":false,"Children":[]},"Name":"Get Info","Json":"{ \"name\": \"Get Info\", \"default\": \"\", \"description\": \"Get Device Info\", \"type\": \"button\", \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"futureOnly\": null, \"integerOnly\": true, \"minLength\": null, \"maxLength\": null, \"helpText\": null, \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11568,"Group":{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"One Way Call","Json":"{ \"name\": \"One Way Call\", \"default\": \"false\", \"description\": \"One-Way Call\", \"type\": \"checkbox\", \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"futureOnly\": null, \"integerOnly\": null, \"minLength\": null, \"maxLength\": null, \"helpText\": \"Select to use the configuration one-way call\", \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ]}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11569,"Group":{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":true,"Deleted":false,"Children":[]},"Name":"Initialise From Factory Settings","Json":"{\"name\":\"Initialise From Factory Settings\",\"default\":\"true\",\"description\":\"Initialise from Factory Settings\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":1}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11577,"Group":{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":true,"Deleted":false,"Children":[]},"Name":"Initialise From Factory Settings SMS6","Json":"{\"name\":\"Initialise From Factory Settings SMS6\",\"default\":\"\",\"description\":\"Initialise From Factory Settings SMS6\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":5}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11578,"Group":{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":true,"Deleted":false,"Children":[]},"Name":"Initialise From Factory Settings SMS3","Json":"{\"name\":\"Initialise From Factory Settings SMS3\",\"default\":\"\",\"description\":\"Initialise From Factory Settings SMS3\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":2}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11576,"Group":{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":true,"Deleted":false,"Children":[]},"Name":"Pre Config 2","Json":"{\"name\":\"Pre Config 2\",\"default\":\"\",\"description\":\"Pre Config 2\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":9}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11575,"Group":{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":true,"Deleted":false,"Children":[]},"Name":"Pre Config 1","Json":"{\"name\":\"Pre Config 1\",\"default\":\"\",\"description\":\"Pre Config 1\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":8}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11574,"Group":{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":true,"Deleted":false,"Children":[]},"Name":"Delete Records","Json":"{\"name\":\"Delete Records\",\"default\":\"false\",\"description\":\"Delete Records\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Delete buffered records\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11573,"Group":{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":true,"Deleted":false,"Children":[]},"Name":"Initialise From Factory Settings SMS7","Json":"{\"name\":\"Initialise From Factory Settings SMS7\",\"default\":\"\",\"description\":\"Initialise From Factory Settings SMS7\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":7}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11572,"Group":{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":true,"Deleted":false,"Children":[]},"Name":"Initialise From Factory Settings SMS4","Json":"{\"name\":\"Initialise From Factory Settings SMS4\",\"default\":\"\",\"description\":\"Initialise From Factory Settings SMS4\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":3}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11571,"Group":{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":true,"Deleted":false,"Children":[]},"Name":"Initialise From Factory Settings SMS2","Json":"{\"name\":\"Initialise From Factory Settings SMS2\",\"default\":\"\",\"description\":\"Initialise From Factory Settings SMS2\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":2}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11570,"Group":{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":true,"Deleted":false,"Children":[]},"Name":"Initialise From Factory Settings SMS5","Json":"{\"name\":\"Initialise From Factory Settings SMS5\",\"default\":\"\",\"description\":\"Initialise From Factory Settings SMS5\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":4}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11579,"Group":{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":"Password","Json":"{ \"name\": \"Password\", \"default\": \"\", \"description\": \"Password\", \"type\": \"text\", \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"futureOnly\": null, \"integerOnly\": null, \"minLength\": 4, \"maxLength\": 5, \"helpText\": null, \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11580,"Group":{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":"Login","Json":"{ \"name\": \"Login\", \"default\": \"\", \"description\": \"Username\", \"type\": \"text\", \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"futureOnly\": null, \"integerOnly\": null, \"minLength\": 4, \"maxLength\": 5, \"helpText\": null, \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11584,"Group":{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"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":"Enable Disable NoMovement","Json":"{\"name\":\"Enable Disable NoMovement\",\"default\":\"\",\"description\":null,\"type\":\"enable\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11601,"Group":{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"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":"PreAlarm","Json":"{\"name\":\"PreAlarm\",\"default\":\"\",\"description\":\"Pre - Alarm\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":0,\"max\":65500,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Seconds\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11600,"Group":{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"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":"Timeout","Json":"{\"name\":\"Timeout\",\"default\":\"\",\"description\":\"Timeout\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":0,\"max\":65500,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Seconds\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11583,"Group":{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6495,"Name":"Incoming Calls","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":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"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":"Reboot","Json":"{\"name\":\"Reboot\",\"default\":\"\",\"description\":\"Reboot\",\"type\":\"button\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Press the button to restart the device\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11609,"Group":{"Id":6495,"Name":"Incoming Calls","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":[{"Id":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"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":"Ringtone","Json":"{\"name\":\"Ringtone\",\"default\":\"false\",\"description\":\"Ringtone\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Select if you would like the device to ring for an incoming call\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11608,"Group":{"Id":6495,"Name":"Incoming Calls","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":[{"Id":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"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":"Vibration","Json":"{\"name\":\"Vibration\",\"default\":\"false\",\"description\":\"Vibration\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":null,\"integerOnly\":null,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Select if you would like the device to vibrate for an incoming call\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":2}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11607,"Group":{"Id":6495,"Name":"Incoming Calls","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":[{"Id":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"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":"Action","Json":"{\"name\":\"Action\",\"default\":\"\",\"description\":\"Action\",\"type\":\"select\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Select the behaviour for an incoming call\",\"options\":[{\"value\":\"0\",\"label\":\"Normal\"},{\"value\":\"3\",\"label\":\"Auto-Answer\"},{\"value\":\"1\",\"label\":\"Block\"}],\"toTranslate\":[\"name\",\"description\",\"helpText\",\"label\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11604,"Group":{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":[]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},"Name":"Enable Disable Speed Dial Button","Json":"{ \"name\": \"Enable Disable Speed Dial Button\", \"default\": \"true\", \"description\": \"Enable Disable Speed Dial Button\", \"type\": \"enable\", \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"futureOnly\": \"\", \"integerOnly\": false, \"minLength\": null, \"maxLength\": null, \"helpText\": \"Select to enable or disable the Speed Dial feature (Button 1)\", \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ]}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11605,"Group":{"Id":6496,"Name":"Speed Dial Button","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6482,"Name":"Speed Dial Buttons","Json":{"description":null,"columns":1,"order":9,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6474,"Name":"Feature Settings","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":6475,"Name":"Report Position By Button","Json":{"description":null,"columns":1,"order":12,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6476,"Name":"Real Time Locate","Json":{"description":null,"columns":1,"order":10,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6477,"Name":"SOS Settings","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":6478,"Name":"White List","Json":{"description":null,"columns":1,"order":11,"listSize":5,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":true,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6480,"Name":"Over Speeding Settings","Json":{"description":"","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6481,"Name":"Amber Alert","Json":{"description":"","columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6483,"Name":"Proximity","Json":{"description":null,"columns":1,"order":13,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6484,"Name":"Fall Alarm Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6485,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6486,"Name":"Movement","Json":{"description":null,"columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6493,"Name":"NoMovement","Json":{"description":null,"columns":1,"order":3,"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":[]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},"Name":"Phone Number","Json":"{ \"name\": \"Phone Number\", \"default\": \"\", \"description\": \"Speed Dial Button 1\", \"type\": \"phone\", \"order\": 1, \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"minLength\": null, \"maxLength\": null, \"helpText\": null, \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":11606,"Group":{"Id":6497,"Name":"Device Volume","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6490,"Name":"Call Settings","Json":{"description":null,"columns":1,"order":6,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":6473,"Name":"Admin Settings","Json":{"description":"Admin Settings","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":6479,"Name":"Get Version","Json":{"description":null,"columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6487,"Name":"Cycle Settings","Json":{"description":"","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6488,"Name":"APN Config","Json":{"description":null,"columns":1,"order":5,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6489,"Name":"Get Info","Json":{"description":"","columns":1,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6491,"Name":"Initialise From Factory Settings","Json":{"description":"","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":6492,"Name":"SMS Password","Json":{"description":"Login and Password for SMS","columns":1,"order":7,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":6494,"Name":"Reboot","Json":{"description":null,"columns":1,"order":8,"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":[{"Id":6495,"Name":"Incoming Calls","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":"Device Volume Level","Json":"{\"name\":\"Device Volume Level\",\"default\":\"\",\"description\":null,\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":0,\"max\":100,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]}],"ProtocolChanges":[{"Version":"0.9","UserName":"Sean-Admin","Resource":"Operation","Name":"GH5200","Message":"(Update) (GH5200) add customId to ops, add wrapper","Timestamp":1725898185},{"Version":"0.9","UserName":"Sean-Admin","Resource":"MessageType","Name":"PWRF","Message":"(Create) (PWRF) Added PWRF","Timestamp":1725899787},{"Version":"0.9","UserName":"Sean-Admin","Resource":"MessageType","Name":"BT","Message":"(Create) (BT) Add Beacon message","Timestamp":1725899916},{"Version":"0.9","UserName":"Sean-Admin","Resource":"GroupParam","Name":"Enable Disable No Activity","Message":"(Update) (Enable Disable No Activity) ActivatenoActivity to billing","Timestamp":1725900688},{"Version":"0.9","UserName":"Sean-Admin","Resource":"GroupParam","Name":"No Activity","Message":"(Update) (No Activity) noActivityInterval to Billing\n","Timestamp":1725900731},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"APN","Message":"(Update) (APN) update setAPN use APNConfig instead of CommunicationSettings","Timestamp":1725901259},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Call Settings","Message":"(Update) (Call Settings) fix device volume","Timestamp":1725901331},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Control Configuration Mode","Message":"(Create) (Control Configuration Mode) control config mode added","Timestamp":1725901472},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Call Settings","Message":"(Update) (Call Settings) fix volume in call settings","Timestamp":1725901772},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Cycle Interval","Message":"(Update) (Cycle Interval) fix cycle interval","Timestamp":1725901889},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Password","Message":"(Update) (Password) update overspeed settings command","Timestamp":1725960641},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Power Off","Message":"(Create) (Power Off) add power off command","Timestamp":1725960726},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Pre Config 1","Message":"(Update) (Pre Config 1) add Pre Config Command Priority","Timestamp":1725962210},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Pre Config 2","Message":"(Update) (Pre Config 2) set command priority","Timestamp":1725962265},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Pre Config 2","Message":"(Update) (Pre Config 2) setting again - saw an error","Timestamp":1725962773},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Initialise From Factory Settings SMS 2","Message":"(Update) (Initialise From Factory Settings SMS 2) add command prio","Timestamp":1725963049},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Initialise From Factory Settings SMS 3","Message":"(Update) (Initialise From Factory Settings SMS 3) set command prio","Timestamp":1725963077},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Initialise From Factory Settings SMS 4","Message":"(Update) (Initialise From Factory Settings SMS 4) set command prio","Timestamp":1725963653},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Initialise From Factory Settings SMS 5","Message":"(Update) (Initialise From Factory Settings SMS 5) set command prio","Timestamp":1725963727},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Initialise From Factory Settings SMS 6","Message":"(Update) (Initialise From Factory Settings SMS 6) set command prio","Timestamp":1725963772},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Initialise From Factory Settings SMS 7","Message":"(Update) (Initialise From Factory Settings SMS 7) add command prio","Timestamp":1725964073},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Amber Alert Options","Message":"(Update) (Amber Alert Options) add command priority","Timestamp":1725964547},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"APN","Message":"(Update) (APN) add command priority","Timestamp":1725964763},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Call Settings","Message":"(Update) (Call Settings) add command prio","Timestamp":1725964798},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Cycle Interval","Message":"(Update) (Cycle Interval) add command prio","Timestamp":1725964852},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Cycle Interval SMS 2","Message":"(Update) (Cycle Interval SMS 2) add command prio","Timestamp":1725964883},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Delete Records","Message":"(Update) (Delete Records) add command prio","Timestamp":1725964910},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Fall Alarm Options","Message":"(Update) (Fall Alarm Options) add command prio","Timestamp":1725964938},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Fall Alarm SMS 2","Message":"(Update) (Fall Alarm SMS 2) add command prio","Timestamp":1725964966},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Fall Alarm SMS 3","Message":"(Update) (Fall Alarm SMS 3) add command prio","Timestamp":1725964993},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Get Info","Message":"(Update) (Get Info) add command prio","Timestamp":1725965018},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Get Version","Message":"(Update) (Get Version) add command prio","Timestamp":1725965040},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Incoming Call Action","Message":"(Update) (Incoming Call Action) add command prio","Timestamp":1725965073},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Initialise from Factory Settings","Message":"(Update) (Initialise from Factory Settings) add command prio","Timestamp":1725965096},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Movement","Message":"(Update) (Movement) add command prio","Timestamp":1725965150},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"OverSpeeding Options","Message":"(Update) (OverSpeeding Options) add command prio","Timestamp":1725965170},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Password","Message":"(Update) (Password) add command prio","Timestamp":1725965198},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Proximity","Message":"(Update) (Proximity) add command prio","Timestamp":1725965440},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Real Time Location","Message":"(Update) (Real Time Location) add command prio","Timestamp":1725965464},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Reboot","Message":"(Update) (Reboot) add command prio","Timestamp":1725965486},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Report Position By Button","Message":"(Update) (Report Position By Button) add command prio","Timestamp":1725965509},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"SOS Options","Message":"(Update) (SOS Options) add command prio","Timestamp":1725965538},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"Speed Dial Settings","Message":"(Update) (Speed Dial Settings) add command prio","Timestamp":1725965565},{"Version":"0.9","UserName":"Sean-Admin","Resource":"Command","Name":"White List","Message":"(Update) (White List) add command prio","Timestamp":1725965596},{"Version":"0.9","UserName":"SeanWestgate","Resource":"Protocol","Name":null,"Message":"Completed manual update of protocol fixes","Timestamp":1725965792},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Report Position By Button","Message":"(Update) (Report Position By Button) modify get pos button command","Timestamp":1727196199},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Report Position By Button","Message":"(Update) (Report Position By Button) fix set button 3 command","Timestamp":1727197226},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Report Position By Button","Message":"(Update) (Report Position By Button) fix again","Timestamp":1727197539},{"Version":"1.0","UserName":"Sean-Admin","Resource":"MessageType","Name":"ACK-RPBB","Message":"(Update) (ACK-RPBB) fix setting tracking button","Timestamp":1727711460},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Cycle Interval","Message":"(Update) (Cycle Interval) fix Cycle settings","Timestamp":1727773311},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Report Position By Button","Message":"(Update) (Report Position By Button) change action from trcking on to Ondemand tracking on","Timestamp":1727774996},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Report Position By Button","Message":"(Update) (Report Position By Button) reverting change","Timestamp":1727775197},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Cycle Interval","Message":"(Update) (Cycle Interval) Set timeouts to 30sec","Timestamp":1727776679},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Operation","Name":"GH5200","Message":"(Update) (GH5200) add version to protocol identifier","Timestamp":1727779248},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Operation","Name":"GH5200","Message":"(Update) (GH5200) mark protocol","Timestamp":1727798088},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Password","Message":"(Update) (Password) update password command","Timestamp":1727800344},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Report Position By Button","Message":"(Update) (Report Position By Button) fix ondemand tracking button 3","Timestamp":1728299909},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Initialise from Factory Settings","Message":"(Update) (Initialise from Factory Settings) remove beacon messages","Timestamp":1728300037},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Report Position By Button","Message":"(Update) (Report Position By Button) missed setparam for position by button","Timestamp":1728301733},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Incoming Call Action","Message":"(Update) (Incoming Call Action) indicator for incoming calls","Timestamp":1728319152},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Incoming Call Action","Message":"(Update) (Incoming Call Action) reverse settings for incoing call indication","Timestamp":1728319497},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Report Position By Button","Message":"(Update) (Report Position By Button) report position by button 3 - remove ondemand tracking","Timestamp":1728391825},{"Version":"1.0","UserName":"Sean-Admin","Resource":"GroupParam","Name":"Indication","Message":"(Update) (Indication) remove SMS commands from fall alarm options","Timestamp":1728395985},{"Version":"1.0","UserName":"Sean-Admin","Resource":"GroupParam","Name":"Indication","Message":"Dissociate groupParam Indication from command Fall Alarm SMS 2","Timestamp":1728395990},{"Version":"1.0","UserName":"Sean-Admin","Resource":"GroupParam","Name":"Indication","Message":"Dissociate groupParam Indication from command Fall Alarm SMS 3","Timestamp":1728395995},{"Version":"1.0","UserName":"Sean-Admin","Resource":"MessageType","Name":"ACK-RPBB","Message":"(Update) (ACK-RPBB) fix pBB ack","Timestamp":1728402542},{"Version":"1.0","UserName":"Sean-Admin","Resource":"MessageType","Name":"ACK-ICA (Incoming Call Action)","Message":"(Update) (ACK-ICA (Incoming Call Action)) fix incoming call ack","Timestamp":1728466130},{"Version":"1.0","UserName":"Sean-Admin","Resource":"GroupParam","Name":"Timeout","Message":"(Update) (Timeout) set minimum timeout for amber alert","Timestamp":1728469479},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Amber Alert Options","Message":"(Update) (Amber Alert Options) fix Amber Alert settings","Timestamp":1728472110},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Amber Alert Options","Message":"(Update) (Amber Alert Options) small change amber alert settings","Timestamp":1728473538},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Movement","Message":"(Update) (Movement) fix movement - no movement command","Timestamp":1728916105},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Command","Name":"Cycle Interval","Message":"(Update) (Cycle Interval) change stop min period to 6 x moving min period","Timestamp":1728922718},{"Version":"1.0","UserName":"Sean-Admin","Resource":"GroupParam","Name":"Server","Message":"(Update) (Server) Added server option for Protocol-Import","Timestamp":1729501544},{"Version":"1.0","UserName":"Sean-Admin","Resource":"MessageType","Name":"ACK-ALF","Message":"(Update) (ACK-ALF) Fix ACK for Fall Alarm options","Timestamp":1729517990},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Operation","Name":"GH5200","Message":"(Update) (GH5200) fix disable fall setttings bug","Timestamp":1729519680},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Operation","Name":"GH5200","Message":"(Update) (GH5200) Fix Fall alarm indication ack","Timestamp":1729523049},{"Version":"1.0","UserName":"Sean-Admin","Resource":"Protocol","Name":null,"Message":"fixed various bugs and acks, i.e. CYC settings, added protocol import server","Timestamp":1729524268},{"Version":"1.1","UserName":"Sean-Admin","Resource":"Operation","Name":"GH5200","Message":"(Update) (GH5200) fix initial connction ACK","Timestamp":1729527636},{"Version":"1.1","UserName":"Sean-Admin","Resource":"Protocol","Name":null,"Message":"fixed initial connect ack","Timestamp":1729528680},{"Version":"1.2","UserName":"Sean-Admin","Resource":"Operation","Name":"GH5200","Message":"(Update) (GH5200) Debugging connection","Timestamp":1729596587},{"Version":"1.2","UserName":"Sean-Admin","Resource":"Command","Name":"Call Settings","Message":"(Update) (Call Settings) fix audio level when not set","Timestamp":1730114570},{"Version":"1.2","UserName":"Sean-Admin","Resource":"Protocol","Name":null,"Message":"new release candidate with audio fix","Timestamp":1730724756},{"Version":"1.3","UserName":"Sean-Admin","Resource":"Command","Name":"Initialise from Factory Settings","Message":"(Update) (Initialise from Factory Settings) change sleep to online deep sleep","Timestamp":1730898009}],"ProtocolActionObjects":[],"Tags":[{"Id":2104,"Name":"Permit Dups","BackendAction":"PermitReceiverDublicates","Value":"True"},{"Id":2108,"Name":"One CommandSender","BackendAction":"OneCommandSender","Value":"True"},{"Id":2106,"Name":"FromOystaNumber","BackendAction":"FromOystaNumber","Value":"+447781482635"}]} \ No newline at end of file