From b0d4410b17996c465c09031e0392aee43d42ab68 Mon Sep 17 00:00:00 2001 From: oysta_admin Date: Wed, 14 Oct 2026 13:19:50 +0000 Subject: [PATCH] Initial Commit - same as dv --- access-dv-victim | 1 + 1 file changed, 1 insertion(+) create mode 100644 access-dv-victim diff --git a/access-dv-victim b/access-dv-victim new file mode 100644 index 0000000..f5a79e7 --- /dev/null +++ b/access-dv-victim @@ -0,0 +1 @@ +{"Id":358,"Name":null,"Description":null,"FirmwareVersion":"","InProgress":true,"MessageTypes":[{"Id":8449,"Code":"REGISTER","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"DVV-<>;<>;mid=<>;REGISTER=<>,<>;","HasTemplateGlobal":false,"ResponseTemplate":"ACK-MSG;<>;OK;[0a]","TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^DVV-[^;]*;[^;;]*;mid=[^;;]*;REGISTER=[^,;]*,[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":8450,"Code":"IS_ACTIVATED","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"DVV-<>;<>;mid=<>;IS_ACTIVATED;","HasTemplateGlobal":false,"ResponseTemplate":"ACK-MSG;<>;OK;[0a]","TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^DVV-[^;]*;[^;;]*;mid=[^;;]*;IS_ACTIVATED;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":8451,"Code":"BTNBAT","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"DVV-<>;<>;mid=<>;BTNBAT=<>;TIME=<>;","HasTemplateGlobal":false,"ResponseTemplate":"ACK-MSG;<>;OK;[0a]","TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^DVV-[^;]*;[^;;]*;mid=[^;;]*;BTNBAT=[^;;]*;TIME=[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":8452,"Code":"completed","Name":"ACK command","MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"ACK-CMD;<>;<>;OK;","HasTemplateGlobal":false,"ResponseTemplate":"ok","TemplateGlobal":null,"LongConnection":true,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^ACK-CMD;[^;]*;[^;;]*;OK;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":8453,"Code":"PWRF","Name":"Power off","MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"DVV-<>;<>;mid=<>;PWRF;LOTH=<>,<>,<>,<>,<>,<>;NET=<>;BATP=<>;TIME=<>;","HasTemplateGlobal":false,"ResponseTemplate":"ACK-MSG;<>;OK;[0a]","TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^DVV-[^;]*;[^;;]*;mid=[^;;]*;PWRF;LOTH=[^,;]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^;,]*;NET=[^;;]*;BATP=[^;;]*;TIME=[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":8454,"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":8455,"Code":"PWRN","Name":"Power on","MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"DVV-<>;<>;mid=<>;PWRN;LOTH=<>,<>,<>,<>,<>,<>;NET=<>;BATP=<>;TIME=<>;","HasTemplateGlobal":false,"ResponseTemplate":"ACK-MSG;<>;OK;[0a]","TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^DVV-[^;]*;[^;;]*;mid=[^;;]*;PWRN;LOTH=[^,;]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^;,]*;NET=[^;;]*;BATP=[^;;]*;TIME=[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":8457,"Code":"BATCF","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"DVV-<>;<>;mid=<>;BATCF;LOTH=<>,<>,<>,<>,<>,<>;NET=<>;BATP=<>;TIME=<>;","HasTemplateGlobal":false,"ResponseTemplate":"ACK-MSG;<>;OK;[0a]","TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^DVV-[^;]*;[^;;]*;mid=[^;;]*;BATCF;LOTH=[^,;]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^;,]*;NET=[^;;]*;BATP=[^;;]*;TIME=[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":8458,"Code":"PROX","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":2,"Template":"DVV-<>;<>;mid=<>;PROX=<>;LOTH=<>,<>,<>,<>,<>,<>;NET=<>;BATP=<>;TIME=<>;","HasTemplateGlobal":false,"ResponseTemplate":"ACK-MSG;<>;OK;[0a]","TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^DVV-[^;]*;[^;;]*;mid=[^;;]*;PROX=[^;;]*;LOTH=[^,;]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^;,]*;NET=[^;;]*;BATP=[^;;]*;TIME=[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":8459,"Code":"CREATE","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"DVV-<>;<>;mid=<>;CREATE=<>,<>,<>;","HasTemplateGlobal":false,"ResponseTemplate":"ACK-MSG;<>;OK;[0a]","TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^DVV-[^;]*;[^;;]*;mid=[^;;]*;CREATE=[^,;]*,[^,,]*,[^;,]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":8460,"Code":"COMM","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"<<->>\"Imei\":\"<>\",<<->>","HasTemplateGlobal":false,"ResponseTemplate":"OK","TemplateGlobal":"<<->>VGV-001-Invent<<->>","LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^[^ ]*\"Imei\":\"[^\"]*\",[^ ]*","RegExGlobal":"^[^ ]*VGV-001-Invent[^ ]*","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":8461,"Code":"BATE","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":2,"Template":"DVV-<>;<>;mid=<>;BATE;LOTH=<>,<>,<>,<>,<>,<>;NET=<>;BATP=<>;TIME=<>;","HasTemplateGlobal":false,"ResponseTemplate":"ACK-MSG;<>;OK;[0a]","TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^DVV-[^;]*;[^;;]*;mid=[^;;]*;BATE;LOTH=[^,;]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^;,]*;NET=[^;;]*;BATP=[^;;]*;TIME=[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":8462,"Code":"ENC","Name":"Encrypted","MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"DVV-<>;<>;mid=<>;enc=<>;$$","HasTemplateGlobal":false,"ResponseTemplate":"<>","TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":"IEncryptionService:System.String BasicDecrypt(System.String, System.String, System.String)-BasicDecrypt","ProtocolsLibraryMethodArgs":"salt,Password,Password","Command":null,"CacheImei":false,"RegEx":"^DVV-[^;]*;[^;;]*;mid=[^;;]*;enc=[^;;]*;$","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":8463,"Code":"received","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"ACK-CMD;<>;<>;RCVD;","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":"^ACK-CMD;[^;]*;[^;;]*;RCVD;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":8464,"Code":"error","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":true,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"ACK-CMD;<>;<>;ERR;<>;","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":"^ACK-CMD;[^;]*;[^;;]*;ERR;[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":8465,"Code":"NOTEREAD","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"DVV-<>;<>;mid=<>;NOTEREAD=<>;LOTH=<>,<>,<>,<>,<>,<>;NET=<>;BATP=<>;TIME=<>;","HasTemplateGlobal":false,"ResponseTemplate":"ACK-MSG;<>;OK;[0a]","TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^DVV-[^;]*;[^;;]*;mid=[^;;]*;NOTEREAD=[^;;]*;LOTH=[^,;]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^;,]*;NET=[^;;]*;BATP=[^;;]*;TIME=[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":8466,"Code":"COMM","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"<<->>DVV-001-Invent<<->>\"Imei\":\"<>\",<<->>","HasTemplateGlobal":false,"ResponseTemplate":"OK","TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^[^ ]*DVV-001-Invent[^ ]*\"Imei\":\"[^\"]*\",[^ ]*","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":8467,"Code":"ALLDATA","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"DVV-<>;<>;mid=<>;ALLDATA=<>;LOTH=<>,<>,<>,<>,<>,<>;NET=<>;BATP=<>;TIME=<>;","HasTemplateGlobal":false,"ResponseTemplate":"ACK-MSG;<>;OK;[0a]","TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^DVV-[^;]*;[^;;]*;mid=[^;;]*;ALLDATA=[^;;]*;LOTH=[^,;]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^;,]*;NET=[^;;]*;BATP=[^;;]*;TIME=[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":8468,"Code":"BATL","Name":"Battery Low","MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"DVV-<>;<>;mid=<>;BATL;LOTH=<>,<>,<>,<>,<>,<>;NET=<>;BATP=<>;TIME=<>;","HasTemplateGlobal":false,"ResponseTemplate":"ACK-MSG;<>;OK;[0a]","TemplateGlobal":"","LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^DVV-[^;]*;[^;;]*;mid=[^;;]*;BATL;LOTH=[^,;]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^;,]*;NET=[^;;]*;BATP=[^;;]*;TIME=[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":8469,"Code":"NOPROX","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"DVV-<>;<>;mid=<>;NOPROX;LOTH=<>,<>,<>,<>,<>,<>;NET=<>;BATP=<>;TIME=<>;","HasTemplateGlobal":false,"ResponseTemplate":"ACK-MSG;<>;OK;[0a]","TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^DVV-[^;]*;[^;;]*;mid=[^;;]*;NOPROX;LOTH=[^,;]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^;,]*;NET=[^;;]*;BATP=[^;;]*;TIME=[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":8470,"Code":"CYC","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":true,"Type":0,"Template":"DVV-<>;<>;mid=<>;CYC;LOTH=<>,<>,<>,<>,<>,<>;NET=<>;BATP=<>;TIME=<>;","HasTemplateGlobal":false,"ResponseTemplate":"ACK-MSG;<>;OK;[0a]","TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^DVV-[^;]*;[^;;]*;mid=[^;;]*;CYC;LOTH=[^,;]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^;,]*;NET=[^;;]*;BATP=[^;;]*;TIME=[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":8471,"Code":"BATCN","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"DVV-<>;<>;mid=<>;BATCN;LOTH=<>,<>,<>,<>,<>,<>;NET=<>;BATP=<>;TIME=<>;","HasTemplateGlobal":false,"ResponseTemplate":"ACK-MSG;<>;OK;[0a]","TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^DVV-[^;]*;[^;;]*;mid=[^;;]*;BATCN;LOTH=[^,;]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^;,]*;NET=[^;;]*;BATP=[^;;]*;TIME=[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":8472,"Code":"ALSOS","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":1,"Template":"DVV-<>;<>;mid=<>;ALSOS;LOTH=<>,<>,<>,<>,<>,<>;NET=<>;BATP=<>;TIME=<>;","HasTemplateGlobal":false,"ResponseTemplate":"ACK-MSG;<>;OK;[0a]","TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":false,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^DVV-[^;]*;[^;;]*;mid=[^;;]*;ALSOS;LOTH=[^,;]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^;,]*;NET=[^;;]*;BATP=[^;;]*;TIME=[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":8456,"Code":"ALNM","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":1,"Template":"DVV-<>;<>;mid=<>;ALNM;LOTH=<>,<>,<>,<>,<>,<>;NET=<>;BATP=<>;TIME=<>;","HasTemplateGlobal":false,"ResponseTemplate":"ACK-MSG;<>;OK;[0a]","TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"ProtocolsLibraryMethod":null,"ProtocolsLibraryMethodArgs":null,"Command":null,"CacheImei":false,"RegEx":"^DVV-[^;]*;[^;;]*;mid=[^;;]*;ALNM;LOTH=[^,;]*,[^,,]*,[^,,]*,[^,,]*,[^,,]*,[^;,]*;NET=[^;;]*;BATP=[^;;]*;TIME=[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]}],"Commands":[{"Id":5864,"Name":"Set Server","TemplateSMS":"","Template":"VGCMD-001;<>;<>;","AckTemplate":null,"Operation":"var configs = [];\r\nsequenceNumber = (new Date().getTime()).toString(36);\r\nvar part1 = \"update=\" + sequenceNumber;\r\nvar command = \"IP=\" + params.SetServer.SetPrimaryServer + ',' + params.SetServer.SetSecondaryServer;\r\nconst _crypto = require('crypto');\r\nvar password = params.Password.Password;\r\nif (password === \"\") {\r\n var part2 = command;\r\n} else {\r\n var part2 = \"enc=\" + encrypt(command, part1, password);\r\n}\r\nAddValue(\"part1\", part1);\r\nAddValue(\"part2\", part2);\r\nAddValue(\"sequenceNumber\", sequenceNumber);\r\nvar commandConfigs = {\r\n template: \"main\",\r\n configs: configs\r\n};\r\nmsg.push(JSON.stringify(commandConfigs));\r\n\r\nfunction AddValue(p1, p2) {\r\n var cvpair = {\r\n code: p1,\r\n value: p2\r\n };\r\n configs.push(cvpair);\r\n}\r\n\r\nfunction encrypt(text, mid, password) {\r\n var salt = _crypto.pbkdf2Sync(mid, 'salt', 1000, 64, 'sha1');\r\n const iv = _crypto.randomBytes(16); // random initialization vector\r\n const key = _crypto.pbkdf2Sync(password, salt, 3145, 32, 'sha1');\r\n // set the cipher\r\n const cipher = _crypto.createCipheriv('aes-256-cbc', key, iv);\r\n // encrypt text\r\n const encrypted = Buffer.concat([cipher.update(text, 'utf8'), cipher.final()]);\r\n // generate output ( encrypted text )\r\n return Buffer.concat([iv, encrypted]).toString('base64');\r\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":2,"HasAck":true,"HexString":false,"Order":null,"SendAttempts":1,"ProtocolActionObjects":[],"Tags":[]},{"Id":5865,"Name":"Real Time Locate","TemplateSMS":"VGCMD-001;<>;<>;","Template":"VGCMD-001;<>;<>;[0a]","AckTemplate":null,"Operation":"var command = \"POSN\";\nvar configs = [];\nsequenceNumber = (new Date().getTime()).toString(36);\nvar part1 = \"request=\" + sequenceNumber;\nconst _crypto = require('crypto');\nvar password = params.Password.Password;\nif (password === \"\") {\n var part2 = command;\n} else {\n var part2 = \"enc=\" + encrypt(command, part1, password);\n}\nAddValue(\"part1\", part1);\nAddValue(\"part2\", part2);\nAddValue(\"sequenceNumber\", sequenceNumber);\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 encrypt(text, mid, password) {\n var salt = _crypto.pbkdf2Sync(mid, 'salt', 1000, 64, 'sha1');\n const iv = _crypto.randomBytes(16); // random initialization vector\n const key = _crypto.pbkdf2Sync(password, salt, 3145, 32, 'sha1');\n // set the cipher\n const cipher = _crypto.createCipheriv('aes-256-cbc', key, iv);\n // encrypt text\n const encrypted = Buffer.concat([cipher.update(text, 'utf8'), cipher.final()]);\n // generate output ( encrypted text )\n return Buffer.concat([iv, encrypted]).toString('base64');\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":false,"Order":null,"SendAttempts":1,"ProtocolActionObjects":[],"Tags":[]},{"Id":5866,"Name":"SendMACs","TemplateSMS":"OCA-CMD;<>;<>;","Template":"VGCMD-001;<>;<>;[0a]","AckTemplate":null,"Operation":"var command = \"AGGIDS=\" + params.Scanning.MacIDs;\nvar configs = [];\nvar configsSMS = []; // for sms template\nsequenceNumber = (new Date().getTime()).toString(36);\nvar part1 = \"update=\" + sequenceNumber;\nconst _crypto = require('crypto');\nvar password = params.Password.Password;\nif (password === \"\") {\n var part2 = command;\n} else {\n var part2 = \"enc=\" + encrypt(command, part1, password);\n}\nAddValue(\"part1\", part1);\nAddValue(\"part2\", part2);\nAddValue(\"sequenceNumber\", sequenceNumber);\nAddValueSMS(\"part1\", part1); //for sms template\nAddValueSMS(\"part2\", part2); // for sms template\nAddValueSMS(\"sequenceNumber\", sequenceNumber); // for sms template\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS //for sms template\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) { //function for sms template\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction encrypt(text, mid, password) {\n var salt = _crypto.pbkdf2Sync(mid, 'salt', 1000, 64, 'sha1');\n const iv = _crypto.randomBytes(16); // random initialization vector\n const key = _crypto.pbkdf2Sync(password, salt, 3145, 32, 'sha1');\n // set the cipher\n const cipher = _crypto.createCipheriv('aes-256-cbc', key, iv);\n // encrypt text\n const encrypted = Buffer.concat([cipher.update(text, 'utf8'), cipher.final()]);\n // generate output ( encrypted text )\n return Buffer.concat([iv, encrypted]).toString('base64');\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":false,"Order":null,"SendAttempts":2,"ProtocolActionObjects":[],"Tags":[]},{"Id":5867,"Name":"ClearBuffer","TemplateSMS":"VGCMD-001;<>;<>;","Template":"VGCMD-001;<>;<>;[0a]","AckTemplate":null,"Operation":"var configs = [];\nsequenceNumber = (new Date().getTime()).toString(36);\nvar part1 = \"update=\" + sequenceNumber;\nvar command = \"CLRBUF\";\nconst _crypto = require('crypto');\nvar password = params.Password.Password;\nif (password === \"\") {\n var part2 = command;\n} else {\n var part2 = \"enc=\" + encrypt(command, part1, password);\n}\nAddValue(\"part1\", part1);\nAddValue(\"part2\", part2);\nAddValue(\"sequenceNumber\", sequenceNumber);\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 encrypt(text, mid, password) {\n var salt = _crypto.pbkdf2Sync(mid, 'salt', 1000, 64, 'sha1');\n const iv = _crypto.randomBytes(16); // random initialization vector\n const key = _crypto.pbkdf2Sync(password, salt, 3145, 32, 'sha1');\n // set the cipher\n const cipher = _crypto.createCipheriv('aes-256-cbc', key, iv);\n // encrypt text\n const encrypted = Buffer.concat([cipher.update(text, 'utf8'), cipher.final()]);\n // generate output ( encrypted text )\n return Buffer.concat([iv, encrypted]).toString('base64');\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":false,"Order":null,"SendAttempts":1,"ProtocolActionObjects":[],"Tags":[]},{"Id":5868,"Name":"Set RTLog Enable","TemplateSMS":"VGCMD-001;<>;<>;","Template":"VGCMD-001;<>;<>;[0a]","AckTemplate":null,"Operation":"// write your code here...\nif (params.DeviceConfig.EnableLogging == \"true\") {\n enableLogging = \"1\";\n} else {\n enableLogging = \"0\";\n}\nvar command = \"RTLOG=\" + enableLogging;\nvar configs = [];\nvar configsSMS = []; // for sms template\nsequenceNumber = (new Date().getTime()).toString(36);\nvar part1 = \"update=\" + sequenceNumber;\nconst _crypto = require('crypto');\nvar password = params.Password.Password;\nif (password === \"\") {\n var part2 = command;\n} else {\n var part2 = \"enc=\" + encrypt(command, part1, password);\n}\nAddValue(\"part1\", part1);\nAddValue(\"part2\", part2);\nAddValue(\"sequenceNumber\", sequenceNumber);\nAddValueSMS(\"part1\", part1); //for sms template\nAddValueSMS(\"part2\", part2); // for sms template\nAddValueSMS(\"sequenceNumber\", sequenceNumber); // for sms template\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS //for sms template\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) { //function for sms template\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 encrypt(text, mid, password) {\n var salt = _crypto.pbkdf2Sync(mid, 'salt', 1000, 64, 'sha1');\n const iv = _crypto.randomBytes(16); // random initialization vector\n const key = _crypto.pbkdf2Sync(password, salt, 3145, 32, 'sha1');\n // set the cipher\n const cipher = _crypto.createCipheriv('aes-256-cbc', key, iv);\n // encrypt text\n const encrypted = Buffer.concat([cipher.update(text, 'utf8'), cipher.final()]);\n // generate output ( encrypted text )\n return Buffer.concat([iv, encrypted]).toString('base64');\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":false,"Order":null,"SendAttempts":1,"ProtocolActionObjects":[],"Tags":[]},{"Id":5869,"Name":"RequestLog","TemplateSMS":"VGCMD-001;<>;<>;","Template":"VGCMD-001;<>;<>;[0a]","AckTemplate":null,"Operation":"var configs = [];\nvar starttimestr = params.DeviceConfig.StartTimeLog;\nvar starttimedate = new Date(starttimestr);\nstarttimeInt = starttimedate.getTime() / 1000;\nif (isNaN(starttimeInt)) {\n starttimeInt = '';\n}\nvar endtimestr = params.DeviceConfig.EndTimeLog;\nvar endtimedate = new Date(endtimestr);\nendtimeInt = endtimedate.getTime() / 1000;\nif (isNaN(endtimeInt)) {\n endtimeInt = '';\n}\nsequenceNumber = (new Date().getTime()).toString(36);\nvar part1 = \"update=\" + sequenceNumber;\nvar command = \"REQLOG=\" + starttimeInt + \",\" + endtimeInt;\nconst _crypto = require('crypto');\nvar password = params.Password.Password;\nif (password === \"\") {\n var part2 = command;\n} else {\n var part2 = \"enc=\" + encrypt(command, part1, password);\n}\nAddValue(\"part1\", part1);\nAddValue(\"part2\", part2);\nAddValue(\"sequenceNumber\", sequenceNumber);\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 encrypt(text, mid, password) {\n var salt = _crypto.pbkdf2Sync(mid, 'salt', 1000, 64, 'sha1');\n const iv = _crypto.randomBytes(16); // random initialization vector\n const key = _crypto.pbkdf2Sync(password, salt, 3145, 32, 'sha1');\n // set the cipher\n const cipher = _crypto.createCipheriv('aes-256-cbc', key, iv);\n // encrypt text\n const encrypted = Buffer.concat([cipher.update(text, 'utf8'), cipher.final()]);\n // generate output ( encrypted text )\n return Buffer.concat([iv, encrypted]).toString('base64');\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":false,"Order":null,"SendAttempts":1,"ProtocolActionObjects":[],"Tags":[]},{"Id":5870,"Name":"Send Notification","TemplateSMS":"OCA-CMD;<>;<>;","Template":"VGCMD-001;<>;<>;[0a]","AckTemplate":null,"Operation":"var command = \"NOTE=\" + params.Note.Message;\nvar configs = [];\nvar configsSMS = []; // for sms template\nsequenceNumber = (new Date().getTime()).toString(36);\nvar part1 = \"update=\" + sequenceNumber;\nconst _crypto = require('crypto');\nvar password = params.Password.Password;\nif (password === \"\") {\n var part2 = command;\n} else {\n var part2 = \"enc=\" + encrypt(command, part1, password);\n}\nAddValue(\"part1\", part1);\nAddValue(\"part2\", part2);\nAddValue(\"sequenceNumber\", sequenceNumber);\nAddValueSMS(\"part1\", part1); //for sms template\nAddValueSMS(\"part2\", part2); // for sms template\nAddValueSMS(\"sequenceNumber\", sequenceNumber); // for sms template\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS //for sms template\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) { //function for sms template\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction encrypt(text, mid, password) {\n var salt = _crypto.pbkdf2Sync(mid, 'salt', 1000, 64, 'sha1');\n const iv = _crypto.randomBytes(16); // random initialization vector\n const key = _crypto.pbkdf2Sync(password, salt, 3145, 32, 'sha1');\n // set the cipher\n const cipher = _crypto.createCipheriv('aes-256-cbc', key, iv);\n // encrypt text\n const encrypted = Buffer.concat([cipher.update(text, 'utf8'), cipher.final()]);\n // generate output ( encrypted text )\n return Buffer.concat([iv, encrypted]).toString('base64');\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":false,"Order":null,"SendAttempts":2,"ProtocolActionObjects":[],"Tags":[]},{"Id":5871,"Name":"Device Activated","TemplateSMS":"OCA-CMD;<>;<>;","Template":"VGCMD-001;<>;<>;[0a]","AckTemplate":null,"Operation":"var command = \"ACTIVATED_FAIL=Unkown Failure.\";\nif (params.DeviceConfig.IVActivated == \"true\") {\n command = \"ACTIVATED_OK\";\n} else {\n command = \"ACTIVATED_FAIL=\" + params.DeviceConfig.IVActivatedFailMessage;\n}\nvar configs = [];\nsequenceNumber = (new Date().getTime()).toString(36);\nvar part1 = \"update=\" + sequenceNumber;\nconst _crypto = require('crypto');\nvar password = params.Password.Password;\nif (password === \"\") {\n var part2 = command;\n} else {\n var part2 = \"enc=\" + encrypt(command, part1, password);\n}\nAddValue(\"part1\", part1);\nAddValue(\"part2\", part2);\nAddValue(\"sequenceNumber\", sequenceNumber);\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 encrypt(text, mid, password) {\n var salt = _crypto.pbkdf2Sync(mid, 'salt', 1000, 64, 'sha1');\n const iv = _crypto.randomBytes(16); // random initialization vector\n const key = _crypto.pbkdf2Sync(password, salt, 3145, 32, 'sha1');\n // set the cipher\n const cipher = _crypto.createCipheriv('aes-256-cbc', key, iv);\n // encrypt text\n const encrypted = Buffer.concat([cipher.update(text, 'utf8'), cipher.final()]);\n // generate output ( encrypted text )\n return Buffer.concat([iv, encrypted]).toString('base64');\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":false,"Order":null,"SendAttempts":2,"ProtocolActionObjects":[],"Tags":[]},{"Id":5872,"Name":"Cycle Interval","TemplateSMS":"VGCMD-001;<>;<>;","Template":"VGCMD-001;<>;<>;[0a]","AckTemplate":null,"Operation":"var command = \"CYCCONFIG=\" + params.CycleInterval.CycleInterval;\nvar configs = [];\nvar configsSMS = []; // for sms template\nsequenceNumber = (new Date().getTime()).toString(36);\nvar part1 = \"update=\" + sequenceNumber;\nconst _crypto = require('crypto');\nvar password = params.Password.Password;\nif (password === \"\") {\n var part2 = command;\n} else {\n var part2 = \"enc=\" + encrypt(command, part1, password);\n}\nAddValue(\"part1\", part1);\nAddValue(\"part2\", part2);\nAddValue(\"sequenceNumber\", sequenceNumber);\nAddValueSMS(\"part1\", part1); //for sms template\nAddValueSMS(\"part2\", part2); // for sms template\nAddValueSMS(\"sequenceNumber\", sequenceNumber); // for sms template\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS //for sms template\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) { //function for sms template\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 encrypt(text, mid, password) {\n var salt = _crypto.pbkdf2Sync(mid, 'salt', 1000, 64, 'sha1');\n const iv = _crypto.randomBytes(16); // random initialization vector\n const key = _crypto.pbkdf2Sync(password, salt, 3145, 32, 'sha1');\n // set the cipher\n const cipher = _crypto.createCipheriv('aes-256-cbc', key, iv);\n // encrypt text\n const encrypted = Buffer.concat([cipher.update(text, 'utf8'), cipher.final()]);\n // generate output ( encrypted text )\n return Buffer.concat([iv, encrypted]).toString('base64');\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":false,"Order":null,"SendAttempts":2,"ProtocolActionObjects":[],"Tags":[]},{"Id":5873,"Name":"Battery Critical Alert Setting","TemplateSMS":"VGCMD-001;<>;<>;","Template":"VGCMD-001;<>;<>;[0a]","AckTemplate":null,"Operation":"// write your code here...\nif (params.Batteryalerts.EnableBatteryCriticalAlert == \"true\") {\n endis = 1;\n} else {\n endis = \"0\";\n}\nvar command = \"BATAC=\" + endis + \",\" + params.Batteryalerts.BatteryCriticalThreshold;\nvar configs = [];\nvar configsSMS = []; // for sms template\nsequenceNumber = (new Date().getTime()).toString(36);\nvar part1 = \"update=\" + sequenceNumber;\nconst _crypto = require('crypto');\nvar password = params.Password.Password;\nif (password === \"\") {\n var part2 = command;\n} else {\n var part2 = \"enc=\" + encrypt(command, part1, password);\n}\nAddValue(\"part1\", part1);\nAddValue(\"part2\", part2);\nAddValue(\"sequenceNumber\", sequenceNumber);\nAddValueSMS(\"part1\", part1); //for sms template\nAddValueSMS(\"part2\", part2); // for sms template\nAddValueSMS(\"sequenceNumber\", sequenceNumber); // for sms template\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS //for sms template\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) { //function for sms template\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 encrypt(text, mid, password) {\n var salt = _crypto.pbkdf2Sync(mid, 'salt', 1000, 64, 'sha1');\n const iv = _crypto.randomBytes(16); // random initialization vector\n const key = _crypto.pbkdf2Sync(password, salt, 3145, 32, 'sha1');\n // set the cipher\n const cipher = _crypto.createCipheriv('aes-256-cbc', key, iv);\n // encrypt text\n const encrypted = Buffer.concat([cipher.update(text, 'utf8'), cipher.final()]);\n // generate output ( encrypted text )\n return Buffer.concat([iv, encrypted]).toString('base64');\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":false,"Order":null,"SendAttempts":2,"ProtocolActionObjects":[],"Tags":[]},{"Id":5874,"Name":"NonMovement","TemplateSMS":"VGCMD-001;<>;<>;","Template":"VGCMD-001;<>;<>;[0a]","AckTemplate":null,"Operation":"if (params.NonMovement.EnableDisableNonMovement == \"true\") {\n var state = 1;\n} else {\n var state = \"0\";\n}\nvar command = \"ALNM=\" + state + \",\" + params.NonMovement.period;\nvar configs = [];\nvar configsSMS = []; // for sms template\nsequenceNumber = (new Date().getTime()).toString(36);\nvar part1 = \"update=\" + sequenceNumber;\nconst _crypto = require('crypto');\nvar password = params.Password.Password;\nif (password === \"\") {\n var part2 = command;\n} else {\n var part2 = \"enc=\" + encrypt(command, part1, password);\n}\nAddValue(\"part1\", part1);\nAddValue(\"part2\", part2);\nAddValue(\"sequenceNumber\", sequenceNumber);\nAddValueSMS(\"part1\", part1); //for sms template\nAddValueSMS(\"part2\", part2); // for sms template\nAddValueSMS(\"sequenceNumber\", sequenceNumber); // for sms template\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS //for sms template\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) { //function for sms template\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction encrypt(text, mid, password) {\n var salt = _crypto.pbkdf2Sync(mid, 'salt', 1000, 64, 'sha1');\n const iv = _crypto.randomBytes(16); // random initialization vector\n const key = _crypto.pbkdf2Sync(password, salt, 3145, 32, 'sha1');\n // set the cipher\n const cipher = _crypto.createCipheriv('aes-256-cbc', key, iv);\n // encrypt text\n const encrypted = Buffer.concat([cipher.update(text, 'utf8'), cipher.final()]);\n // generate output ( encrypted text )\n return Buffer.concat([iv, encrypted]).toString('base64');\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":false,"Order":null,"SendAttempts":2,"ProtocolActionObjects":[],"Tags":[]},{"Id":5875,"Name":"Set Password","TemplateSMS":"OCA-CMD;<>;<>;","Template":"VGCMD-001;<>;<>;[0a]","AckTemplate":null,"Operation":"var command = \"PW=\" + params.Password.Password;\nvar configs = [];\nvar configsSMS = []; // for sms template\nsequenceNumber = (new Date().getTime()).toString(36);\nvar part1 = \"update=\" + sequenceNumber;\nconst _crypto = require('crypto');\nvar password = serverParams.Imei;\n//if (params.Password.encryption === \"true\") {\nvar part2 = \"enc=\" + encrypt(command, part1, password);\n//} else {\n// var part2 = command;\n//}\nAddValue(\"part1\", part1);\nAddValue(\"part2\", part2);\nAddValue(\"sequenceNumber\", sequenceNumber);\nAddValueSMS(\"part1\", part1); //for sms template\nAddValueSMS(\"part2\", part2); // for sms template\nAddValueSMS(\"sequenceNumber\", sequenceNumber); // for sms template\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS //for sms template\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) { //function for sms template\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction encrypt(text, mid, password) {\n var salt = _crypto.pbkdf2Sync(mid, 'salt', 1000, 64, 'sha1');\n const iv = _crypto.randomBytes(16); // random initialization vector\n const key = _crypto.pbkdf2Sync(password, salt, 3145, 32, 'sha1');\n // set the cipher\n const cipher = _crypto.createCipheriv('aes-256-cbc', key, iv);\n // encrypt text\n const encrypted = Buffer.concat([cipher.update(text, 'utf8'), cipher.final()]);\n // generate output ( encrypted text )\n return Buffer.concat([iv, encrypted]).toString('base64');\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":false,"Order":null,"SendAttempts":2,"ProtocolActionObjects":[],"Tags":[]},{"Id":5876,"Name":"Battery Low Alert Setting","TemplateSMS":"VGCMD-001;<>;<>;","Template":"VGCMD-001;<>;<>;[0a]","AckTemplate":null,"Operation":"if (params.Batteryalerts.EnableBatteryLowAlert == \"true\") {\n endis = 1;\n} else {\n endis = \"0\";\n}\nvar command = \"BATAL=\" + endis + \",\" + params.Batteryalerts.BatteryLowThreshold;\nvar configs = [];\nvar configsSMS = []; // for sms template\nsequenceNumber = (new Date().getTime()).toString(36);\nvar part1 = \"update=\" + sequenceNumber;\nconst _crypto = require('crypto');\nvar password = params.Password.Password;\nif (password === \"\") {\n var part2 = command;\n} else {\n var part2 = \"enc=\" + encrypt(command, part1, password);\n}\nAddValue(\"part1\", part1);\nAddValue(\"part2\", part2);\nAddValue(\"sequenceNumber\", sequenceNumber);\nAddValueSMS(\"part1\", part1); //for sms template\nAddValueSMS(\"part2\", part2); // for sms template\nAddValueSMS(\"sequenceNumber\", sequenceNumber); // for sms template\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS //for sms template\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) { //function for sms template\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 encrypt(text, mid, password) {\n var salt = _crypto.pbkdf2Sync(mid, 'salt', 1000, 64, 'sha1');\n const iv = _crypto.randomBytes(16); // random initialization vector\n const key = _crypto.pbkdf2Sync(password, salt, 3145, 32, 'sha1');\n // set the cipher\n const cipher = _crypto.createCipheriv('aes-256-cbc', key, iv);\n // encrypt text\n const encrypted = Buffer.concat([cipher.update(text, 'utf8'), cipher.final()]);\n // generate output ( encrypted text )\n return Buffer.concat([iv, encrypted]).toString('base64');\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":false,"Order":null,"SendAttempts":2,"ProtocolActionObjects":[],"Tags":[]},{"Id":5877,"Name":"Battery Charging Alert","TemplateSMS":"VGCMD-001;<>;<>;","Template":"VGCMD-001;<>;<>;[0a]","AckTemplate":null,"Operation":"// write your code here...\nif (params.Batteryalerts.EnableBatteryChargingAlerts == \"true\") {\n batCharging = 1;\n} else {\n batCharging = \"0\";\n}\nvar command = \"BATC=\" + batCharging;\nvar configs = [];\nvar configsSMS = []; // for sms template\nsequenceNumber = (new Date().getTime()).toString(36);\nvar part1 = \"update=\" + sequenceNumber;\nconst _crypto = require('crypto');\nvar password = params.Password.Password;\nif (password === \"\") {\n var part2 = command;\n} else {\n var part2 = \"enc=\" + encrypt(command, part1, password);\n}\nAddValue(\"part1\", part1);\nAddValue(\"part2\", part2);\nAddValue(\"sequenceNumber\", sequenceNumber);\nAddValueSMS(\"part1\", part1); //for sms template\nAddValueSMS(\"part2\", part2); // for sms template\nAddValueSMS(\"sequenceNumber\", sequenceNumber); // for sms template\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS //for sms template\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) { //function for sms template\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 encrypt(text, mid, password) {\n var salt = _crypto.pbkdf2Sync(mid, 'salt', 1000, 64, 'sha1');\n const iv = _crypto.randomBytes(16); // random initialization vector\n const key = _crypto.pbkdf2Sync(password, salt, 3145, 32, 'sha1');\n // set the cipher\n const cipher = _crypto.createCipheriv('aes-256-cbc', key, iv);\n // encrypt text\n const encrypted = Buffer.concat([cipher.update(text, 'utf8'), cipher.final()]);\n // generate output ( encrypted text )\n return Buffer.concat([iv, encrypted]).toString('base64');\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":false,"Order":null,"SendAttempts":2,"ProtocolActionObjects":[],"Tags":[]},{"Id":5878,"Name":"SOS Number","TemplateSMS":"OCA-CMD;<>;<>;","Template":"VGCMD-001;<>;<>;[0a]","AckTemplate":null,"Operation":"var command = \"SOSN=\" + params.MakeCall.SOSNumber.replace(\"(\", \"\").replace(\")\", \"\");\nvar configs = [];\nvar configsSMS = []; // for sms template\nsequenceNumber = (new Date().getTime()).toString(36);\nvar part1 = \"update=\" + sequenceNumber;\nconst _crypto = require('crypto');\nvar password = params.Password.Password;\nif (password === \"\") {\n var part2 = command;\n} else {\n var part2 = \"enc=\" + encrypt(command, part1, password);\n}\nAddValue(\"part1\", part1);\nAddValue(\"part2\", part2);\nAddValue(\"sequenceNumber\", sequenceNumber);\nAddValueSMS(\"part1\", part1); //for sms template\nAddValueSMS(\"part2\", part2); // for sms template\nAddValueSMS(\"sequenceNumber\", sequenceNumber); // for sms template\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS //for sms template\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) { //function for sms template\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction encrypt(text, mid, password) {\n var salt = _crypto.pbkdf2Sync(mid, 'salt', 1000, 64, 'sha1');\n const iv = _crypto.randomBytes(16); // random initialization vector\n const key = _crypto.pbkdf2Sync(password, salt, 3145, 32, 'sha1');\n // set the cipher\n const cipher = _crypto.createCipheriv('aes-256-cbc', key, iv);\n // encrypt text\n const encrypted = Buffer.concat([cipher.update(text, 'utf8'), cipher.final()]);\n // generate output ( encrypted text )\n return Buffer.concat([iv, encrypted]).toString('base64');\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":false,"Order":null,"SendAttempts":8,"ProtocolActionObjects":[],"Tags":[]},{"Id":5879,"Name":"SOS Options","TemplateSMS":"VGCMD-001;<>;<>;","Template":"VGCMD-001;<>;<>;[0a]","AckTemplate":null,"Operation":"var configs = [];\r\nvar configsSMS = []; // for sms template\r\nvar SOSOptions;\r\nvar Handsfree, Makecall;\r\n//var command = \"SOSO=\" + JSON.stringify(params.SOSOptions.HandsFree);\r\nif (params.MakeCall.EnableDisableMakeCall == \"true\") {\r\n Makecall = 1;\r\n if (params.MakeCall.HandsFree === \"true\") {\r\n Handsfree = \"1\";\r\n } else {\r\n Handsfree = \"0\";\r\n }\r\n} else {\r\n Makecall = \"0\";\r\n Handsfree = \"0\";\r\n}\r\nvar command = \"SOSO=\" + params.MakeCall.Timeout + \",\" + Makecall + \",\" + Handsfree;\r\nvar sequenceNumber = (new Date().getTime()).toString(36);\r\nvar part1 = \"update=\" + sequenceNumber;\r\nconst _crypto = require('crypto');\r\nvar password = params.Password.Password;\r\nif (password === \"\") {\r\n var part2 = command;\r\n} else {\r\n var part2 = \"enc=\" + encrypt(command, part1, password);\r\n}\r\nAddValue(\"part1\", part1);\r\nAddValue(\"part2\", part2);\r\nAddValue(\"sequenceNumber\", sequenceNumber);\r\nAddValueSMS(\"part1\", part1); //for sms template\r\nAddValueSMS(\"part2\", part2); // for sms template\r\nAddValueSMS(\"sequenceNumber\", sequenceNumber); // for sms template\r\nvar commandConfigs = {\r\n template: \"main\",\r\n configs: configs,\r\n configsSMS: configsSMS //for sms template\r\n};\r\nmsg.push(JSON.stringify(commandConfigs));\r\n\r\nfunction AddValue(p1, p2) {\r\n var cvpair = {\r\n code: p1,\r\n value: p2\r\n };\r\n configs.push(cvpair);\r\n}\r\n\r\nfunction AddValueSMS(p1, p2) { //function for sms template\r\n var cvpair = {\r\n code: p1,\r\n value: p2\r\n };\r\n configsSMS.push(cvpair);\r\n}\r\n\r\nfunction encrypt(text, mid, password) {\r\n var salt = _crypto.pbkdf2Sync(mid, 'salt', 1000, 64, 'sha1');\r\n const iv = _crypto.randomBytes(16); // random initialization vector\r\n const key = _crypto.pbkdf2Sync(password, salt, 3145, 32, 'sha1');\r\n // set the cipher\r\n const cipher = _crypto.createCipheriv('aes-256-cbc', key, iv);\r\n // encrypt text\r\n const encrypted = Buffer.concat([cipher.update(text, 'utf8'), cipher.final()]);\r\n // generate output ( encrypted text )\r\n return Buffer.concat([iv, encrypted]).toString('base64');\r\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":false,"Order":null,"SendAttempts":2,"ProtocolActionObjects":[],"Tags":[]},{"Id":5880,"Name":"Set Scanning Enable","TemplateSMS":"OCA-CMD;<>;<>;","Template":"VGCMD-001;<>;<>;[0a]","AckTemplate":null,"Operation":"let doScan = params.Scanning.EnableScanning == \"true\" ? 1 : 0;\nlet aggs = \",\" + params.Scanning.MacIDs;\nvar aggids = params.Scanning.EnableScanning == \"true\" ? aggs : '';\nlet command = \"SCANAGG=\" + doScan + aggids;\nvar configs = [];\nvar configsSMS = []; // for sms template\nsequenceNumber = (new Date().getTime()).toString(36);\nvar part1 = \"update=\" + sequenceNumber;\nconst _crypto = require('crypto');\nvar password = params.Password.Password;\nif (password === \"\") {\n var part2 = command;\n} else {\n var part2 = \"enc=\" + encrypt(command, part1, password);\n}\nAddValue(\"part1\", part1);\nAddValue(\"part2\", part2);\nAddValue(\"sequenceNumber\", sequenceNumber);\nAddValueSMS(\"part1\", part1); //for sms template\nAddValueSMS(\"part2\", part2); // for sms template\nAddValueSMS(\"sequenceNumber\", sequenceNumber); // for sms template\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS //for sms template\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) { //function for sms template\n var cvpair = {\n code: p1,\n value: p2\n };\n configsSMS.push(cvpair);\n}\n\nfunction encrypt(text, mid, password) {\n var salt = _crypto.pbkdf2Sync(mid, 'salt', 1000, 64, 'sha1');\n const iv = _crypto.randomBytes(16); // random initialization vector\n const key = _crypto.pbkdf2Sync(password, salt, 3145, 32, 'sha1');\n // set the cipher\n const cipher = _crypto.createCipheriv('aes-256-cbc', key, iv);\n // encrypt text\n const encrypted = Buffer.concat([cipher.update(text, 'utf8'), cipher.final()]);\n // generate output ( encrypted text )\n return Buffer.concat([iv, encrypted]).toString('base64');\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":false,"Order":null,"SendAttempts":2,"ProtocolActionObjects":[],"Tags":[]},{"Id":5881,"Name":"Set Config Enable","TemplateSMS":"VGCMD-001;<>;<>;","Template":"VGCMD-001;<>;<>;[0a]","AckTemplate":null,"Operation":"const _crypto = require('crypto');\nif (params.DeviceConfig.ConfigMode == \"true\") {\n enableConfig = \"1\";\n} else {\n enableConfig = \"0\";\n}\nvar command = \"CONFIG=\" + enableConfig;\nvar configs = [];\nvar configsSMS = []; // for sms template\nsequenceNumber = (new Date().getTime()).toString(36);\nvar part1 = \"update=\" + sequenceNumber;\nvar password = params.Password.Password;\nif (password === \"\") {\n var part2 = command;\n} else {\n var part2 = \"enc=\" + encrypt(command, part1, password);\n}\nAddValue(\"part1\", part1);\nAddValue(\"part2\", part2);\nAddValue(\"sequenceNumber\", sequenceNumber);\nAddValueSMS(\"part1\", part1); //for sms template\nAddValueSMS(\"part2\", part2); // for sms template\nAddValueSMS(\"sequenceNumber\", sequenceNumber); // for sms template\nvar commandConfigs = {\n template: \"main\",\n configs: configs,\n configsSMS: configsSMS //for sms template\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValueSMS(p1, p2) { //function for sms template\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 encrypt(text, mid, password) {\n var salt = _crypto.pbkdf2Sync(mid, 'salt', 1000, 64, 'sha1');\n const iv = _crypto.randomBytes(16); // random initialization vector\n const key = _crypto.pbkdf2Sync(password, salt, 3145, 32, 'sha1');\n // set the cipher\n const cipher = _crypto.createCipheriv('aes-256-cbc', key, iv);\n // encrypt text\n const encrypted = Buffer.concat([cipher.update(text, 'utf8'), cipher.final()]);\n // generate output ( encrypted text )\n return Buffer.concat([iv, encrypted]).toString('base64');\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":false,"Order":null,"SendAttempts":2,"ProtocolActionObjects":[],"Tags":[]},{"Id":5862,"Name":"RequestData","TemplateSMS":"VGCMD-001;<>;<>;","Template":"VGCMD-001;<>;<>;[0a]","AckTemplate":null,"Operation":"var configs = [];\nsequenceNumber = (new Date().getTime()).toString(36);\nvar part1 = \"update=\" + sequenceNumber;\nvar command = \"REQDATA\";\nconst _crypto = require('crypto');\nvar password = params.Password.Password;\nif (password === \"\") {\n var part2 = command;\n} else {\n var part2 = \"enc=\" + encrypt(command, part1, password);\n}\nAddValue(\"part1\", part1);\nAddValue(\"part2\", part2);\nAddValue(\"sequenceNumber\", sequenceNumber);\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 encrypt(text, mid, password) {\n var salt = _crypto.pbkdf2Sync(mid, 'salt', 1000, 64, 'sha1');\n const iv = _crypto.randomBytes(16); // random initialization vector\n const key = _crypto.pbkdf2Sync(password, salt, 3145, 32, 'sha1');\n // set the cipher\n const cipher = _crypto.createCipheriv('aes-256-cbc', key, iv);\n // encrypt text\n const encrypted = Buffer.concat([cipher.update(text, 'utf8'), cipher.final()]);\n // generate output ( encrypted text )\n return Buffer.concat([iv, encrypted]).toString('base64');\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":false,"Order":null,"SendAttempts":1,"ProtocolActionObjects":[],"Tags":[]},{"Id":5863,"Name":"Reset Device","TemplateSMS":"","Template":"VGCMD-001;<>;<>;","AckTemplate":null,"Operation":"var configs = [];\nsequenceNumber = (new Date().getTime()).toString(36);\nvar part1 = \"update=\" + sequenceNumber;\nvar command = \"RESET\";\nconst _crypto = require('crypto');\nvar password = params.Password.Password;\nif (password === \"\") {\n var part2 = command;\n} else {\n var part2 = \"enc=\" + encrypt(command, part1, password);\n}\nAddValue(\"part1\", part1);\nAddValue(\"part2\", part2);\nAddValue(\"sequenceNumber\", sequenceNumber);\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 encrypt(text, mid, password) {\n var salt = _crypto.pbkdf2Sync(mid, 'salt', 1000, 64, 'sha1');\n const iv = _crypto.randomBytes(16); // random initialization vector\n const key = _crypto.pbkdf2Sync(password, salt, 3145, 32, 'sha1');\n // set the cipher\n const cipher = _crypto.createCipheriv('aes-256-cbc', key, iv);\n // encrypt text\n const encrypted = Buffer.concat([cipher.update(text, 'utf8'), cipher.final()]);\n // generate output ( encrypted text )\n return Buffer.concat([iv, encrypted]).toString('base64');\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":2,"HasAck":true,"HexString":false,"Order":null,"SendAttempts":1,"ProtocolActionObjects":[],"Tags":[]}],"Operations":[{"Id":456,"Name":"DVV","Operation":"function execute_ops(moment, msg, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, localTesting) {\n // Define array to push device data into. This will be put into the msg array at the end.\n var deviceParams = [];\n var configsToSend = [];\n var configsToUpdate = [];\n var tasks = [];\n const _crypto = require('crypto');\n // handle ACK\n if (messageTypeCode == \"ACK\") {\n return \"\";\n }\n if (params.encrypted_data) { // encrypted data so needs decrypting\n var password;\n if (params.imei == \"null\") {\n return msg;\n }\n password = params.imei;\n if (configs.Password.Password === \"\") {\n // use imei as default password when not specified\n } else {\n // use the password\n password = configs.Password.Password\n }\n // handle encrypted messages arriving via SMS\n // if (raw.startsWith('esendex')) {\n // raw = raw.split('esendex')[2];\n // encimei = raw.split(';')[1];\n // imei = parseInt(raw.split(';')[1], 36).toString();\n // AddValue('imei', imei);\n // raw = raw.replace(encimei, imei);\n // password = imei;\n // }\n let message = decrypt(raw, password);\n //ToDo: handle errors messages arriving\n // if (message.startsWith(\"error\")) {\n // ack = \"ERR;\" + params.count_number + \";\";\n // msg.push({\n // 'code': 'ack',\n // 'value': ack\n // });\n // console.log(msg);\n // } \n if (message) {\n // send message internally\n sendMessageToLocalhost(message);\n let ack = \"ACK-MSG;\" + params.count_number + \";OK;\\n\"\n AddValue(\"ack\", ack);\n } else {\n ack = \"unknown message\" + \" - \" + serverParams.imei + \" --- \" + raw;\n AddValue(\"ack\", ack);\n }\n } else { // General Oysta Template\n if (messageTypeLocalCode == \"COMM\") { // a message from Invent!\n const details = JSON.parse(raw);\n // AddValue('imei', details.AppId);\n AddValue('json_in', JSON.stringify(details));\n switch (details.Command) {\n case \"ACTIVATE_OK\":\n AddConfig(configIds.DeviceConfig.IVActivated, 'true')\n break;\n case \"ACTIVATE_FAILS\":\n AddConfig(configIds.DeviceConfig.IVActivated, 'false');\n AddConfig(configIds.DeviceConfig.IVActivatedFailMessage, details.Data.Text);\n break;\n case \"CONFIG\":\n AddConfig(configIds.DeviceConfig.ConfigMode, details.Data.EnableConfig ? 'true' : 'false');\n break;\n case \"SETSOS\":\n AddConfig(configIds.MakeCall.SOSNumber, details.Data.SosNumber);\n AddConfig(configIds.MakeCall.HandsFree, details.Data.SosHandsfree ? 'true' : 'false');\n AddConfig(configIds.MakeCall.EnableDisableMakeCall, details.Data.SosCallEnabled ? 'true' : 'false');\n AddConfig(configIds.MakeCall.Timeout, details.Data.SosTimeout);\n break;\n case \"APPSET\":\n AddConfig(configIds.CycleInterval.CycleInterval, details.Data.CycConfig);\n AddConfig(configIds.Batteryalerts.EnableBatteryLowAlert, details.Data.BatteryLowAlarmEnabled ? 'true' : 'false');\n AddConfig(configIds.Batteryalerts.BatteryLowThreshold, details.Data.BatteryLowThreshold);\n AddConfig(configIds.Batteryalerts.EnableBatteryCriticalAlert, details.Data.BatteryCriticalAlarmEnabled ? 'true' : 'false');\n AddConfig(configIds.Batteryalerts.BatteryCriticalThreshold, details.Data.BatteryCriticalThreshold);\n AddConfig(configIds.Batteryalerts.EnableBatteryChargingAlerts, details.Data.BatteryChargingAlarmEnabled ? 'true' : 'false');\n AddConfig(configIds.NonMovement.EnableDisableNonMovement, details.Data.NoMotionAlertEnabled ? 'true' : 'false');\n AddConfig(configIds.NonMovement.period, details.Data.NoMotionPeriod);\n AddConfig(configIds.Password.Password, details.Data.Password);\n break;\n case \"AGGMACS\":\n if (\"Macs\" in details.Data) {\n let mac_string = '';\n for (mac of details.Data.Macs) {\n mac_string = mac_string + mac + \",\";\n }\n UpdateConfig(configIds.Scanning.MacIDs, mac_string.slice(0, mac_string.length - 1) // remove trailing \",\"\n );\n };\n break;\n case \"BLESCANON\":\n AddConfig(configIds.Scanning.EnableScanning, 'true')\n if (\"Macs\" in details.Data) {\n let mac_string = '';\n for (mac of details.Data.Macs) {\n mac_string = mac_string + mac + \",\";\n }\n UpdateConfig(configIds.Scanning.MacIDs, mac_string.slice(0, mac_string.length - 1) // remove trailing \",\"\n );\n };\n break;\n case \"BLESCANOFF\":\n AddConfig(configIds.Scanning.EnableScanning, 'false')\n break;\n case \"NOTE\":\n let type = details.Data.Type !== undefined ? details.Data.Type : \"TYPE MISSING\";\n let text = details.Data.Text !== undefined ? details.Data.Text : \"Text Missing\";\n text = text.split(\",\").join(\" \"); // remove commas\n let id = details.Data.Id !== undefined ? details.Data.Id : \"Id Missing\";\n let time = details.Data.Time !== undefined ? details.Data.Time.toString() : '0';\n let value = time + \",\" + type + \",\" + id + \",\" + text;\n AddConfig(configIds.Note.Message, value)\n break;\n case \"POSN\":\n AddConfig(configIds.DeviceConfig.RealTimeLocate, 'true');\n break;\n }\n } else if (messageTypeLocalCode == \"REGISTER\") { // Register message\n let ble_mac = params.ble_mac;\n let iccid = params.iccid;\n // write values to readonly settings\n AddConfig(configIds.DeviceConfig.BLEMAC, ble_mac);\n AddConfig(configIds.DeviceConfig.ICCID, iccid);\n // will automtaically Activate on Acceptance\n if (serverParams.EnvName) {\n if (serverParams.EnvName === \"acceptance\") {\n AddConfig(configIds.DeviceConfig.IVActivated, 'true')\n }\n }\n } else if (messageTypeLocalCode == \"CREATE\") { // Create message\n // temp fix to filter old messages\n const cutoff = 1707523200000; //10.2.2024\n let message_id_time = parseInt(params.count_number, 36);\n if (message_id_time > cutoff) {\n let ble_mac = params.ble_mac;\n let iccid = params.iccid;\n let new_imei = params.new_imei;\n let message = \"DVV-001;\" + new_imei + \";mid=\" + params.count_number + \";REGISTER=\" + ble_mac + \",\" + iccid + \";\";\n // sendMessageToLocalhost(message); \n tasks = [{\n \"name\": \"DVV\" + new_imei,\n \"option\": \"sync\",\n \"type\": \"createDevice\",\n \"payload\": JSON.stringify({\n \"name\": \"DVV\" + new_imei,\n \"imei\": new_imei,\n \"abortOnError\": false,\n \"init\": true\n }),\n \"order\": 1\n }, {\n \"name\": \"Create DVV\" + new_imei,\n \"option\": \"async\",\n \"type\": \"sendMessage\",\n \"payload\": JSON.stringify({\n \"message\": message\n }),\n \"order\": 2\n }]\n }\n } else if (messageTypeLocalCode == \"ALLDATA\") { // Create message\n // InterlliCare converts \" to ' when parsing, so convert back\n let json_str = changeSingleQuoteToDouble(params.all_data);\n let all_data = JSON.parse(json_str);\n if (\"version\" in all_data) {\n AddConfig(configIds.DeviceConfig.Version, all_data.version);\n }\n if (\"backgroundLocation\" in all_data) {\n AddConfig(configIds.DeviceConfig.BackgroundLocation, all_data.backgroundLocation);\n };\n if (\"coarseLocation\" in all_data) {\n AddConfig(configIds.DeviceConfig.CoarseLocation, all_data.coarseLocation);\n };\n if (\"fineLocation\" in all_data) {\n AddConfig(configIds.DeviceConfig.FineLocation, all_data.fineLocation);\n };\n if (\"restarts\" in all_data) {\n AddConfig(configIds.DeviceConfig.Restarts, all_data.restarts);\n };\n if (\"mtbr\" in all_data) {\n AddConfig(configIds.DeviceConfig.MTBR, moment.unix(all_data.mtbr).utc().format(\"HH:mm:ss\"));\n };\n } else if (messageTypeLocalCode == \"BTNBAT\") {\n // Button accessory battery report\n var btn_battery = params.btn_battery_percentage !== undefined ? parseInt(params.btn_battery_percentage) : undefined;\n var btn_event_time = params.event_time !== undefined ? parseInt(params.event_time) : undefined;\n var btn_time_string = btn_event_time !== undefined ? moment.unix(btn_event_time).format(\"YYYY-MM-DD HH:mm:ss\") : undefined;\n if (btn_battery !== undefined) {\n AddValue('btn_battery_percentage', btn_battery);\n }\n if (btn_event_time !== undefined) {\n AddValue('event_time', btn_event_time);\n }\n UpdateConfig(configIds.Button.BatteryPercentage, btn_battery);\n UpdateConfig(configIds.Button.LastUpdate, btn_time_string);\n } else {\n // Generate location_accuracy based on raw_accuracy - currently no conversion\n if (!params.raw_accuracy) {\n AddValue('location_accuracy', 9000);\n } else {\n AddValue('location_accuracy', params.raw_accuracy);\n }\n // generate timestamps if they don't exist\n if (!params.event_time) {\n AddValue('event_time', moment.utc().unix());\n }\n if (!params.location_time) {\n AddValue('event_time', moment.utc().unix());\n }\n //if no lat and long are given, set them to 0, 0\n if (!params.latitude_raw) {\n AddValue('latitude', 0);\n } else {\n AddValue('latitude', params.latitude_raw);\n }\n if (!params.longitude_raw) {\n AddValue('longitude', 0);\n } else {\n AddValue('longitude', params.longitude_raw);\n }\n }\n // add messagetTypeLocal to output for templates\n AddValue('local_message_type', messageTypeLocalCode);\n }\n var msg = {\n 'values': deviceParams,\n };\n if (configsToSend.length > 0) {\n msg.configsToSend = configsToSend\n };\n if (tasks.length > 0) {\n msg.tasks = tasks\n };\n if (configsToUpdate.length > 0) {\n msg.configsToUpdate = configsToUpdate\n };\n // commit values to receiver processor\n console.log(msg);\n\n function sendMessageToLocalhost(str) {\n if (localTesting) {\n console.log(\"Sending message to local host: \" + str);\n } else {\n var server = '127.0.0.1'; // replace with 'receiver-tcp' tp load balance\n var c = createConnection(5678, server);\n c.write(`${str}`);\n c.end();\n }\n AddValue(\"ToLocalhost\", str);\n }\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 decrypt(encdata, password) {\n var decrypted;\n var dataarray = encdata.split(\";\");\n if (dataarray.length > 5) {\n return \"\";\n }\n var i;\n var part1 = \"\"; // part1 will hold the type, IMEI and message ID\n if (encdata.startsWith(\"ACK\")) {\n return encdata;\n }\n for (i = 0; i < 3; i++) {\n part1 = part1 + dataarray[i] + \";\";\n }\n var mid = dataarray[2]; // use the message ID to create the salt\n var enctext = dataarray[3].split(\"=\")[1]; // the encypted data\n var salt = _crypto.pbkdf2Sync(mid, 'salt', 1000, 64, 'sha1');\n // base64 decoding and extract the iv and encrypted data\n const bData = Buffer.from(enctext, 'base64');\n const iv = bData.slice(0, 16); // initial 16 chars\n const text = bData.slice(16); // all the encrypted data\n // derive key using; 32 byte key length (from salted password and mid)\n // decrypt the data in part2 and add to part1\n const key = _crypto.pbkdf2Sync(password, salt, 3145, 32, 'sha1');\n const decipher = _crypto.createDecipheriv('aes-256-cbc', key, iv);\n try {\n decrypted = part1 + decipher.update(text, 'binary', 'utf8') + decipher.final('utf8');\n } catch (err) {\n decrypted = undefined;\n }\n return decrypted;\n }\n\n function encrypt(text, mid, password) {\n var salt = _crypto.pbkdf2Sync(mid, 'salt', 1000, 64, 'sha1');\n const iv = _crypto.randomBytes(16); // random initialization vector\n const key = _crypto.pbkdf2Sync(password, salt, 3145, 32, 'sha1');\n // set the cipher\n const cipher = _crypto.createCipheriv('aes-256-cbc', key, iv);\n // encrypt text\n const encrypted = Buffer.concat([cipher.update(text, 'utf8'), cipher.final()]);\n // generate output ( encrypted text )\n return Buffer.concat([iv, encrypted]).toString('base64');\n }\n\n function AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n deviceParams.push(cvpair);\n }\n\n function AddConfig(configName, newvalue, force = true) {\n if (newvalue !== undefined) { // don't add if newvalue is undefined\n var cvpair = {\n 'code': configName,\n 'value': newvalue, // ? newvalue : \"Not Defined\" \n 'forced': force\n };\n configsToSend.push(cvpair);\n };\n }\n\n function UpdateConfig(configName, newvalue) {\n if (newvalue !== undefined) { // don't add if newvalue is undefined\n var cvpair = {\n 'code': configName,\n 'value': newvalue // ? newvalue : \"Not Defined\" \n };\n configsToUpdate.push(cvpair);\n };\n }\n\n function changeSingleQuoteToDouble(jsonStr) {\n if (jsonStr === undefined) {\n return undefined;\n }\n let outStr = \"\";\n for (let c of jsonStr) {\n if (c.charCodeAt(0) == 39) { // replace single quote with double quote\n outStr = outStr + String.fromCharCode(34);\n } else {\n outStr += c;\n }\n };\n return outStr;\n }\n\n function isASCII(str) {\n return /^[\\x00-\\xFF]*$/.test(str);\n }\n // modify to return the object that contains your data\n return msg;\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, 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":[]}],"Groups":[{"Id":7520,"Parent":null,"Name":"Settings","Json":"{\"description\":null,\"columns\":2,\"order\":2,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"LanguageId":null,"ProtocolActionObjects":[]},{"Id":7521,"Parent":null,"Name":"Emergency Options","Json":"{\"description\":null,\"columns\":2,\"order\":3,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"LanguageId":null,"ProtocolActionObjects":[]},{"Id":7522,"Parent":null,"Name":"Notification","Json":"{\"description\":null,\"columns\":1,\"order\":4,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"LanguageId":null,"ProtocolActionObjects":[]},{"Id":7523,"Parent":null,"Name":"Not Implemented","Json":"{\"description\":null,\"columns\":1,\"order\":6,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"LanguageId":null,"ProtocolActionObjects":[]},{"Id":7524,"Parent":null,"Name":"Admin config","Json":"{ \"description\": \"Admin config\", \"columns\": 2, \"order\": 1, \"listSize\": 1, \"toTranslate\": [ \"name\", \"description\" ]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"LanguageId":null,"ProtocolActionObjects":[]},{"Id":7525,"Parent":null,"Name":"Actions","Json":"{\"description\":\"Power off, real time locate etc.\",\"columns\":1,\"order\":5,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"LanguageId":null,"ProtocolActionObjects":[]},{"Id":7526,"Parent":null,"Name":"Accessories","Json":"{\"description\":\"Status parameters for accessories\",\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"LanguageId":null,"ProtocolActionObjects":[]},{"Id":7527,"Parent":{"Id":7521,"Name":"Emergency Options","Json":{"description":null,"columns":2,"order":3,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":7527,"Name":"Make Call","Json":{"description":"Emergency phone number for the device","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Make Call","Json":"{\"description\":\"Emergency phone number for the device\",\"columns\":1,\"order\":2,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"LanguageId":null,"ProtocolActionObjects":[]},{"Id":7528,"Parent":{"Id":7520,"Name":"Settings","Json":{"description":null,"columns":2,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":7528,"Name":"Cycle Interval","Json":{"description":"Define the period for which the device should send regular location updates, and how frequent those updates are.","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":7529,"Name":"Battery alerts","Json":{"description":"Battery alerts","columns":1,"order":5,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":7530,"Name":"Scanning","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Cycle Interval","Json":"{ \"description\": \"Define the period for which the device should send regular location updates, and how frequent those updates are.\", \"columns\": 1, \"order\": 2, \"listSize\": 1, \"toTranslate\": [ \"name\", \"description\" ]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"LanguageId":null,"ProtocolActionObjects":[]},{"Id":7529,"Parent":{"Id":7520,"Name":"Settings","Json":{"description":null,"columns":2,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":7528,"Name":"Cycle Interval","Json":{"description":"Define the period for which the device should send regular location updates, and how frequent those updates are.","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":7529,"Name":"Battery alerts","Json":{"description":"Battery alerts","columns":1,"order":5,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":7530,"Name":"Scanning","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Battery alerts","Json":"{ \"description\": \"Battery alerts\", \"columns\": 1, \"order\": 5, \"toTranslate\": [ \"name\", \"description\" ]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"LanguageId":null,"ProtocolActionObjects":[]},{"Id":7530,"Parent":{"Id":7520,"Name":"Settings","Json":{"description":null,"columns":2,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":7528,"Name":"Cycle Interval","Json":{"description":"Define the period for which the device should send regular location updates, and how frequent those updates are.","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":7529,"Name":"Battery alerts","Json":{"description":"Battery alerts","columns":1,"order":5,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":7530,"Name":"Scanning","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Scanning","Json":"{\"description\":null,\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"LanguageId":null,"ProtocolActionObjects":[]},{"Id":7531,"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"DeviceConfig","Json":"{\"description\":\"Device configuration values.\",\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"LanguageId":null,"ProtocolActionObjects":[]},{"Id":7532,"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Password","Json":"{\"description\":null,\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"LanguageId":null,"ProtocolActionObjects":[]},{"Id":7533,"Parent":{"Id":7523,"Name":"Not Implemented","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":7533,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":7534,"Name":"Set Server","Json":{"description":"Set Server","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":7535,"Name":"Non Movement","Json":{"description":"","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"No Activity","Json":"{\"description\":\"No Activity\",\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"LanguageId":null,"ProtocolActionObjects":[]},{"Id":7534,"Parent":{"Id":7523,"Name":"Not Implemented","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":7533,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":7534,"Name":"Set Server","Json":{"description":"Set Server","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":7535,"Name":"Non Movement","Json":{"description":"","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Set Server","Json":"{\"description\":\"Set Server\",\"columns\":1,\"order\":4,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"LanguageId":null,"ProtocolActionObjects":[]},{"Id":7535,"Parent":{"Id":7523,"Name":"Not Implemented","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":7533,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":7534,"Name":"Set Server","Json":{"description":"Set Server","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":7535,"Name":"Non Movement","Json":{"description":"","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Non Movement","Json":"{\"description\":\"\",\"columns\":1,\"order\":2,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"LanguageId":null,"ProtocolActionObjects":[]},{"Id":7536,"Parent":{"Id":7522,"Name":"Notification","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":7536,"Name":"Note","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Note","Json":"{\"description\":null,\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"LanguageId":null,"ProtocolActionObjects":[]},{"Id":7537,"Parent":{"Id":7526,"Name":"Accessories","Json":{"description":"Status parameters for accessories","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":7537,"Name":"Button","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"Button","Json":"{\"description\":null,\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"LanguageId":null,"ProtocolActionObjects":[]}],"GroupParams":[{"Id":12471,"Group":{"Id":7527,"Name":"Make Call","Json":{"description":"Emergency phone number for the device","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7521,"Name":"Emergency Options","Json":{"description":null,"columns":2,"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":"HandsFree","Json":"{\"name\":\"HandsFree\",\"default\":\"\",\"description\":\"HandsFree\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":null,\"integerOnly\":null,\"minLength\":null,\"maxLength\":null,\"helpText\":\"SOS number is called with handsfree\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"false","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12468,"Group":{"Id":7527,"Name":"Make Call","Json":{"description":"Emergency phone number for the device","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7521,"Name":"Emergency Options","Json":{"description":null,"columns":2,"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 Make Call","Json":"{\"name\":\"Enable Disable Make Call\",\"default\":\"\",\"description\":\"Make Call\",\"type\":\"enable\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":null,\"integerOnly\":null,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"false","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12469,"Group":{"Id":7527,"Name":"Make Call","Json":{"description":"Emergency phone number for the device","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7521,"Name":"Emergency Options","Json":{"description":null,"columns":2,"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 before sending the Alert.\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Seconds\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12470,"Group":{"Id":7527,"Name":"Make Call","Json":{"description":"Emergency phone number for the device","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7521,"Name":"Emergency Options","Json":{"description":null,"columns":2,"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\": \"Number which will be called in the event the SOS button is pressed\", \"type\": \"phone\", \"order\": 1, \"suffix\": null, \"prefix\": null, \"min\": null, \"max\": null, \"minLength\": null, \"maxLength\": null, \"helpText\": \"Number which will be called if the SOS button is pressed ..\", \"options\": [], \"toTranslate\": [ \"name\", \"description\", \"helpText\" ]}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12472,"Group":{"Id":7528,"Name":"Cycle Interval","Json":{"description":"Define the period for which the device should send regular location updates, and how frequent those updates are.","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7520,"Name":"Settings","Json":{"description":null,"columns":2,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":7529,"Name":"Battery alerts","Json":{"description":"Battery alerts","columns":1,"order":5,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":7530,"Name":"Scanning","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"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\":\"seconds\",\"prefix\":null,\"min\":1,\"max\":1440,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Frequency of location events, in seconds\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12473,"Group":{"Id":7529,"Name":"Battery alerts","Json":{"description":"Battery alerts","columns":1,"order":5,"toTranslate":["name","description"]},"Parent":{"Id":7520,"Name":"Settings","Json":{"description":null,"columns":2,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":7528,"Name":"Cycle Interval","Json":{"description":"Define the period for which the device should send regular location updates, and how frequent those updates are.","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":7530,"Name":"Scanning","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},"Name":"Battery Critical Threshold","Json":"{\"name\":\"Battery Critical Threshold\",\"default\":\"\",\"description\":\"Battery Critical Threshold\",\"type\":\"number\",\"suffix\":\"%\",\"prefix\":null,\"min\":1,\"max\":99,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Percentage at which the device sends a critical battery alert\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":1}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12474,"Group":{"Id":7529,"Name":"Battery alerts","Json":{"description":"Battery alerts","columns":1,"order":5,"toTranslate":["name","description"]},"Parent":{"Id":7520,"Name":"Settings","Json":{"description":null,"columns":2,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":7528,"Name":"Cycle Interval","Json":{"description":"Define the period for which the device should send regular location updates, and how frequent those updates are.","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":7530,"Name":"Scanning","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},"Name":"Enable Battery Critical Alert","Json":"{\"name\":\"Enable Battery Critical Alert\",\"default\":\"true\",\"description\":\"Enable Battery Critical Alert\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Sends an Alert when the battery is critically low.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":0}","Default":"true","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12475,"Group":{"Id":7529,"Name":"Battery alerts","Json":{"description":"Battery alerts","columns":1,"order":5,"toTranslate":["name","description"]},"Parent":{"Id":7520,"Name":"Settings","Json":{"description":null,"columns":2,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":7528,"Name":"Cycle Interval","Json":{"description":"Define the period for which the device should send regular location updates, and how frequent those updates are.","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":7530,"Name":"Scanning","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},"Name":"Enable Battery Charging Alerts","Json":"{\"name\":\"Enable Battery Charging Alerts\",\"default\":\"true\",\"description\":\"Enable Alerts when charging.\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Alerts will be sent when the users connects or disconnects the device to the charging station.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":4}","Default":"true","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12476,"Group":{"Id":7529,"Name":"Battery alerts","Json":{"description":"Battery alerts","columns":1,"order":5,"toTranslate":["name","description"]},"Parent":{"Id":7520,"Name":"Settings","Json":{"description":null,"columns":2,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":7528,"Name":"Cycle Interval","Json":{"description":"Define the period for which the device should send regular location updates, and how frequent those updates are.","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":7530,"Name":"Scanning","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},"Name":"Enable Battery Low Alert","Json":"{\"name\":\"Enable Battery Low Alert\",\"default\":\"true\",\"description\":\"Enable Battery Low Alert\",\"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":"true","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12477,"Group":{"Id":7529,"Name":"Battery alerts","Json":{"description":"Battery alerts","columns":1,"order":5,"toTranslate":["name","description"]},"Parent":{"Id":7520,"Name":"Settings","Json":{"description":null,"columns":2,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":7528,"Name":"Cycle Interval","Json":{"description":"Define the period for which the device should send regular location updates, and how frequent those updates are.","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":7530,"Name":"Scanning","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},"Name":"Battery Low Threshold","Json":"{\"name\":\"Battery Low Threshold\",\"default\":\"100\",\"description\":\"Battery Low Threshold\",\"type\":\"number\",\"suffix\":\"%\",\"prefix\":null,\"min\":1,\"max\":99,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Percentage at which the device sends a low battery alert\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":3}","Default":"100","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12478,"Group":{"Id":7530,"Name":"Scanning","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7520,"Name":"Settings","Json":{"description":null,"columns":2,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":7528,"Name":"Cycle Interval","Json":{"description":"Define the period for which the device should send regular location updates, and how frequent those updates are.","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":7529,"Name":"Battery alerts","Json":{"description":"Battery alerts","columns":1,"order":5,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},"Name":"EnableScanning","Json":"{\"name\":\"EnableScanning\",\"default\":\"false\",\"description\":\"Enable Scanning\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"When enabled will scan for MAC IDs and send a PROX alert if found.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"true","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12479,"Group":{"Id":7530,"Name":"Scanning","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7520,"Name":"Settings","Json":{"description":null,"columns":2,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":7528,"Name":"Cycle Interval","Json":{"description":"Define the period for which the device should send regular location updates, and how frequent those updates are.","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":7529,"Name":"Battery alerts","Json":{"description":"Battery alerts","columns":1,"order":5,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},"Name":"MacIDs","Json":"{\"name\":\"MacIDs\",\"default\":\"\",\"description\":\"List of MAC addresses\",\"type\":\"text\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Comma separated list of MAC addresses used in the scanning process.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12480,"Group":{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},"Name":"IV ActivatedFailMessage","Json":"{\"name\":\"IV ActivatedFailMessage\",\"default\":\"\",\"description\":\"Reason for Activation Failure\",\"type\":\"text\",\"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":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12481,"Group":{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},"Name":"Config Mode","Json":"{\"name\":\"Config Mode\",\"default\":\"false\",\"description\":\"Config Mode\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Enables Config mode on in the app to show additional actions and buttons.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":3}","Default":"true","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12482,"Group":{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},"Name":"Test Bounce Back","Json":"{\"name\":\"Test Bounce Back\",\"default\":\"true\",\"description\":\"Test Bounce Back\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":true,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Bounce incoming messages back as notifications.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":13}","Default":"true","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12483,"Group":{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},"Name":"IV Activated","Json":"{\"name\":\"IV Activated\",\"default\":\"false\",\"description\":\"Invent Activated Ok\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Flag to store if Invent has successfully activated this device.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":6}","Default":"true","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12484,"Group":{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},"Name":"BTN MAC","Json":"{\"name\":\"BTN MAC\",\"default\":\"\",\"description\":\"Button MAC\",\"type\":\"text\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":true,\"isHidden\":true,\"minLength\":null,\"maxLength\":null,\"helpText\":\"The MAC address of the Flic button paired with the app.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":1}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12485,"Group":{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},"Name":"ICCID","Json":"{\"name\":\"ICCID\",\"default\":\"\",\"description\":\"SIM ICCID\",\"type\":\"text\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":true,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"The ICCID of the SIM card.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":5}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12486,"Group":{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},"Name":"BLE MAC","Json":"{\"name\":\"BLE MAC\",\"default\":\"\",\"description\":\"Bluetooth MAC address\",\"type\":\"text\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":true,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Bluetooth MAC address of the phone. No sepearator characters.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":0}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12487,"Group":{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},"Name":"Reset","Json":"{\"name\":\"Reset\",\"default\":\"\",\"description\":\"Reset Device\",\"type\":\"button\",\"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\"],\"order\":8}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12488,"Group":{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},"Name":"Clear Message Buffer","Json":"{\"name\":\"Clear Message Buffer\",\"default\":\"\",\"description\":\"Clear Message Buffer\",\"type\":\"button\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Clears the message buffer of unsent messages.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":2}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12489,"Group":{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},"Name":"Enable Logging","Json":"{\"name\":\"Enable Logging\",\"default\":\"false\",\"description\":\"Enable Realtime logging to Kibana.\",\"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\"],\"order\":4}","Default":"true","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12490,"Group":{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},"Name":"Get Logs","Json":"{\"name\":\"Get Logs\",\"default\":\"\",\"description\":\"Get Logs from Starttime to Endtime\",\"type\":\"button\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Will send logs directly to Kibana. Use log time (GMT = -1h)\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":9}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12491,"Group":{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},"Name":"Request Data","Json":"{\"name\":\"Request Data\",\"default\":\"\",\"description\":\"Request All Data command.\",\"type\":\"button\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Will return version and other settings from the app.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":14}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12492,"Group":{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},"Name":"Version","Json":"{\"name\":\"Version\",\"default\":\"\",\"description\":\"Current Version of the App.\",\"type\":\"text\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Use Button Request Data to update the field.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":16}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12493,"Group":{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},"Name":"StartTimeLog","Json":"{\"name\":\"StartTimeLog\",\"default\":\"\",\"description\":\"StartTime for Logs request\",\"type\":\"datetime\",\"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\":10}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12494,"Group":{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},"Name":"EndTimeLog","Json":"{\"name\":\"EndTimeLog\",\"default\":\"\",\"description\":\"Endtime for log request\",\"type\":\"datetime\",\"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\":11}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12495,"Group":{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},"Name":"Restarts","Json":"{\"name\":\"Restarts\",\"default\":\"\",\"description\":\"Number of Restarts\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":true,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"When a BLE lockup is detected the app will restart itself to re-enable BLE.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":15}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12496,"Group":{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},"Name":"MTBR","Json":"{\"name\":\"MTBR\",\"default\":\"\",\"description\":\"Mean Time Between Restarts (hh:mm:ss)\",\"type\":\"time\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":true,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Average time between restarts to fix the BLE issue. Bugger numbers are better.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":12}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12497,"Group":{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},"Name":"BackgroundLocation","Json":"{\"name\":\"BackgroundLocation\",\"default\":\"\",\"description\":\"BackgroundLocation\",\"type\":\"text\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"BackgroundLocation\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":19}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12498,"Group":{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},"Name":"FineLocation","Json":"{\"name\":\"FineLocation\",\"default\":\"\",\"description\":\"FineLocation\",\"type\":\"text\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"FineLocation\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":17}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12499,"Group":{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},"Name":"CoarseLocation","Json":"{\"name\":\"CoarseLocation\",\"default\":\"\",\"description\":\"CoarseLocation\",\"type\":\"text\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"CoarseLocation\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":18}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12500,"Group":{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},"Name":"Real Time Locate","Json":"{\"name\":\"Real Time Locate\",\"default\":\"\",\"description\":\"Position Request\",\"type\":\"button\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Real Time Locate\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12501,"Group":{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"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\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Password used to encrypt communication between Device and platform. Uses Imei if empty.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12502,"Group":{"Id":7532,"Name":"Password","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7524,"Name":"Admin config","Json":{"description":"Admin config","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[{"Id":7531,"Name":"DeviceConfig","Json":{"description":"Device configuration values.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},"Name":"encryption","Json":"{\"name\":\"encryption\",\"default\":\"true\",\"description\":\"enable encryption for commands\",\"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":[],"LanguageId":null,"Tags":[]},{"Id":12503,"Group":{"Id":7533,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7523,"Name":"Not Implemented","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":7534,"Name":"Set Server","Json":{"description":"Set Server","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":7535,"Name":"Non Movement","Json":{"description":"","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"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\":5,\"max\":10080,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":true,\"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":[],"LanguageId":null,"Tags":[]},{"Id":12504,"Group":{"Id":7533,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7523,"Name":"Not Implemented","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":7534,"Name":"Set Server","Json":{"description":"Set Server","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},{"Id":7535,"Name":"Non Movement","Json":{"description":"","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"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\":\"true\",\"description\":\"Enable Disable No Activity\",\"type\":\"enable\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":true,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Enable or disable no activity alerts\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"true","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12505,"Group":{"Id":7534,"Name":"Set Server","Json":{"description":"Set Server","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7523,"Name":"Not Implemented","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":7533,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":7535,"Name":"Non Movement","Json":{"description":"","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},"Name":"Set Secondary Server","Json":"{\"name\":\"Set Secondary Server\",\"default\":\"\",\"description\":\"Select Server\",\"type\":\"select\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":true,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[{\"value\":\"52.232.85.255:5678\",\"label\":\"Production Secondary\"},{\"value\":\"52.174.17.77:5678\",\"label\":\"Acceptance Secondary\"}],\"toTranslate\":[\"name\",\"description\",\"helpText\",\"label\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12506,"Group":{"Id":7534,"Name":"Set Server","Json":{"description":"Set Server","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7523,"Name":"Not Implemented","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":7533,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":7535,"Name":"Non Movement","Json":{"description":"","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]},"Name":"Set Primary Server","Json":"{\"name\":\"Set Primary Server\",\"default\":\"\",\"description\":\"Set Primary Server\",\"type\":\"select\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":true,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Select which server you wish the device to communicate to\",\"options\":[{\"value\":\"52.232.85.255:5678\",\"label\":\"Production Primary\"},{\"value\":\"52.174.17.77:5678\",\"label\":\"Acceptance Primary\"}],\"toTranslate\":[\"name\",\"description\",\"helpText\",\"label\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12507,"Group":{"Id":7535,"Name":"Non Movement","Json":{"description":"","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7523,"Name":"Not Implemented","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":7533,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":7534,"Name":"Set Server","Json":{"description":"Set Server","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},"Name":"Enable Disable NonMovement","Json":"{\"name\":\"Enable Disable NonMovement\",\"default\":\"true\",\"description\":null,\"type\":\"enable\",\"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":[],"LanguageId":null,"Tags":[]},{"Id":12508,"Group":{"Id":7535,"Name":"Non Movement","Json":{"description":"","columns":1,"order":2,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7523,"Name":"Not Implemented","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":7533,"Name":"No Activity","Json":{"description":"No Activity","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":7534,"Name":"Set Server","Json":{"description":"Set Server","columns":1,"order":4,"listSize":1,"toTranslate":["name","description"]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":true,"Deleted":false,"Children":[]}]},"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},"Name":"period ","Json":"{\"name\":\"period \",\"default\":\"600\",\"description\":\"Period in seconds which defines \\\"non-movement\\\"\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":5,\"max\":7200,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":true,\"minLength\":null,\"maxLength\":null,\"helpText\":\"\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"600","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12509,"Group":{"Id":7536,"Name":"Note","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7522,"Name":"Notification","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":"Message","Json":"{\"name\":\"Message\",\"default\":\"\",\"description\":\"Message\",\"type\":\"text\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Note as Comma sepearted values with Time(s from epoch), Type (BATTERY|REDALERT|...), ID, Text.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12510,"Group":{"Id":7537,"Name":"Button","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7526,"Name":"Accessories","Json":{"description":"Status parameters for accessories","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":"Battery Percentage","Json":"{\"name\":\"Battery Percentage\",\"default\":\"\",\"description\":\"Battery Percentage\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":true,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Button Battery Percentage\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]},{"Id":12511,"Group":{"Id":7537,"Name":"Button","Json":{"description":null,"columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":7526,"Name":"Accessories","Json":{"description":"Status parameters for accessories","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":"Last Update","Json":"{\"name\":\"Last Update\",\"default\":\"\",\"description\":\"Last Update\",\"type\":\"datetime\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Time of last Battery Percentage update\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"LanguageId":null,"Tags":[]}],"ProtocolChanges":[],"ProtocolActionObjects":[],"Tags":[],"MessageCodes":[]} \ No newline at end of file