diff --git a/aerosense b/aerosense index 59e2c00..8f33da3 100644 --- a/aerosense +++ b/aerosense @@ -1 +1 @@ -{"Id":160,"Name":null,"Description":null,"FirmwareVersion":"","InProgress":true,"MessageTypes":[{"Id":4674,"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":false,"Command":null,"CacheImei":false,"RegEx":"\\+RESP:NACT,[^,]*,[^\\$,]*\\$","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4417,"Code":"ACK-VERSION","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE;ACK-VERSION;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":{"Id":2704,"Protocol":{"Id":160,"Code":"AeroSense","Version":"0.1","FirmwareVersion":"","Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":true},"Name":"GetFirmware","TemplateSMS":null,"Template":"1201000200000000000000000006001300000000","AckTemplate":null,"Operation":"// write your code here...","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":1,"Order":null},"CacheImei":false,"RegEx":"^AEROSENSE;ACK-VERSION;[^;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4359,"Code":"CHK","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE;CHK;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":null,"CacheImei":false,"RegEx":"^AEROSENSE;CHK;[^;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":3787,"Code":"COMM","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":true,"NoOperation":false,"Type":0,"Template":"AEROSENSE-ASSOCIATE;<>;<>;","HasTemplateGlobal":true,"ResponseTemplate":"<>","TemplateGlobal":"1201<>","LongConnection":true,"HexString":true,"AckFirst":true,"ScaipH":false,"DoNotSendCommands":false,"Command":null,"CacheImei":false,"RegEx":"^AEROSENSE-ASSOCIATE;[^;]*;[^;;]*;","RegExGlobal":"^1201[^ ]*","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4204,"Code":"INFO","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE;HEATMAP;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":null,"CacheImei":false,"RegEx":"^AEROSENSE;HEATMAP;[^;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4197,"Code":"ACK-WORKRANGE","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE;ACK-WORKRANGE;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":{"Id":2359,"Protocol":{"Id":160,"Code":"AeroSense","Version":"0.1","FirmwareVersion":"","Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":true},"Name":"SetWorkRange","TemplateSMS":null,"Template":"12010002000000000000000000060006<>","AckTemplate":null,"Operation":"// write your code here...\n//var header = \"12010002000000000000000000060006\"\nvar configs = [];\n// Convert Float32 to Hex string\nconst Float32ToHex = (float32) => {\n const getHex = i => ('00' + i.toString(16)).slice(-2);\n var view = new DataView(new ArrayBuffer(4))\n view.setFloat32(0, float32);\n return Array.apply(null, {\n length: 4\n }).map((_, i) => getHex(view.getUint8(i))).join('');\n};\nvar data = Float32ToHex(Number(params.RadarSettings.WorkRange));\nAddValue(\"value\", data);\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":4,"Order":1},"CacheImei":false,"RegEx":"^AEROSENSE;ACK-WORKRANGE;[^;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4210,"Code":"STATUS-USERRESET","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE;USERRESET;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":null,"CacheImei":false,"RegEx":"^AEROSENSE;USERRESET;[^;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4208,"Code":"ALF-NEG","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE;NEGFALL;<>;<>;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":null,"CacheImei":false,"RegEx":"^AEROSENSE;NEGFALL;[^;]*;[^;;]*;[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4207,"Code":"DIST-POS","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE;DIST-POS;<>;<>;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":null,"CacheImei":false,"RegEx":"^AEROSENSE;DIST-POS;[^;]*;[^;;]*;[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4205,"Code":"ACK-HEATMAP","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE;ACK-HEATMAP;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":{"Id":2699,"Protocol":{"Id":160,"Code":"AeroSense","Version":"0.1","FirmwareVersion":"","Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":true},"Name":"SetEnableHeatMap","TemplateSMS":null,"Template":"1201000200000000000000000006000c<>","AckTemplate":null,"Operation":"var configs = [];\nlet data = '00000000';\nif (params.RadarSettings.EnableHeatmap == 'true') {\n data = '00000001'\n}\nAddValue(\"value\", data);\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":4,"Order":1},"CacheImei":false,"RegEx":"^AEROSENSE;ACK-HEATMAP;[^;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4203,"Code":"ALINVADE","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":1,"Template":"AEROSENSE;INVADE;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":null,"CacheImei":false,"RegEx":"^AEROSENSE;INVADE;[^;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4202,"Code":"ACK-MACHINELEARN","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE;ACK-MACHINELEARN;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":{"Id":2581,"Protocol":{"Id":160,"Code":"AeroSense","Version":"0.1","FirmwareVersion":"","Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":true},"Name":"SetEnableMachineLearning","TemplateSMS":null,"Template":"12010002000000000000000000060015<>","AckTemplate":null,"Operation":"var configs = [];\nlet data = '00000000';\nif (params.RadarSettings.EnableMachineLearning == 'true') {\n data = '00000001'\n}\nAddValue(\"value\", data);\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":4,"Order":1},"CacheImei":false,"RegEx":"^AEROSENSE;ACK-MACHINELEARN;[^;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4201,"Code":"ACK-INVADE","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE;ACK-INVADE;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":{"Id":2580,"Protocol":{"Id":160,"Code":"AeroSense","Version":"0.1","FirmwareVersion":"","Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":true},"Name":"SetInvadeDetection","TemplateSMS":null,"Template":"1201000200000000000000000006000e<>","AckTemplate":null,"Operation":"var configs = [];\nlet data = '00000000';\nif (params.RadarSettings.InvadeDetection == 'true') {\n data = '00000001'\n}\nAddValue(\"value\", data);\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":4,"Order":1},"CacheImei":false,"RegEx":"^AEROSENSE;ACK-INVADE;[^;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4200,"Code":"ACK-TIMEINT","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE;ACK-TIMEINT;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":{"Id":2579,"Protocol":{"Id":160,"Code":"AeroSense","Version":"0.1","FirmwareVersion":"","Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":true},"Name":"SetTimeInterval","TemplateSMS":null,"Template":"12010002000000000000000000060004<>","AckTemplate":null,"Operation":"var configs = [];\n/**\n * Converts integer number to hex string\n * @param {Integer} number \n * @returns hex string\n */\nfunction IntToHex(number, padding = 8) {\n return number.toString(16).padStart(8, '0');\n}\nvar data = IntToHex(Number(params.RadarSettings.TimeInterval));\nAddValue(\"value\", data);\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":4,"Order":1},"CacheImei":false,"RegEx":"^AEROSENSE;ACK-TIMEINT;[^;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4199,"Code":"ACK-WORKHEIGHT","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE;ACK-WORKHEIGHT;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":{"Id":2578,"Protocol":{"Id":160,"Code":"AeroSense","Version":"0.1","FirmwareVersion":"","Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":true},"Name":"SetWorkHeight","TemplateSMS":null,"Template":"12010002000000000000000000060002<>","AckTemplate":null,"Operation":"// write your code here...\n//var header = \"12010002000000000000000000060006\"\nvar configs = [];\n// Convert Float32 to Hex string\nconst Float32ToHex = (float32) => {\n const getHex = i => ('00' + i.toString(16)).slice(-2);\n var view = new DataView(new ArrayBuffer(4))\n view.setFloat32(0, float32);\n return Array.apply(null, {\n length: 4\n }).map((_, i) => getHex(view.getUint8(i))).join('');\n};\nvar data = Float32ToHex(Number(params.RadarSettings.WorkHeight));\nAddValue(\"value\", data);\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":4,"Order":1},"CacheImei":false,"RegEx":"^AEROSENSE;ACK-WORKHEIGHT;[^;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4196,"Code":"COMM-LOG","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE-LOG;<>;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":null,"CacheImei":false,"RegEx":"^AEROSENSE-LOG;[^;]*;[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4098,"Code":"ALF","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":1,"Template":"AEROSENSE;FALL;<>;<>;<>;","HasTemplateGlobal":false,"ResponseTemplate":"OK","TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":null,"CacheImei":false,"RegEx":"^AEROSENSE;FALL;[^;]*;[^;;]*;[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]}],"Commands":[{"Id":2821,"Name":"GetEnableHeatMap","TemplateSMS":null,"Template":"1201000200000000000000000006000d00000000","AckTemplate":null,"Operation":"// write your code here...","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":null,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2822,"Name":"GetEnableMachineLearning","TemplateSMS":null,"Template":"1201000200000000000000000006001600000000","AckTemplate":null,"Operation":"// write your code here...","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":null,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2823,"Name":"GetInvadeDetection","TemplateSMS":null,"Template":"1201000200000000000000000006000f00000000","AckTemplate":null,"Operation":"// write your code here...","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":null,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2579,"Name":"SetTimeInterval","TemplateSMS":null,"Template":"12010002000000000000000000060004<>","AckTemplate":null,"Operation":"var configs = [];\n/**\n * Converts integer number to hex string\n * @param {Integer} number \n * @returns hex string\n */\nfunction IntToHex(number, padding = 8) {\n return number.toString(16).padStart(8, '0');\n}\nvar data = IntToHex(Number(params.RadarSettings.TimeInterval));\nAddValue(\"value\", data);\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":1,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2581,"Name":"SetEnableMachineLearning","TemplateSMS":null,"Template":"12010002000000000000000000060015<>","AckTemplate":null,"Operation":"var configs = [];\nlet data = '00000000';\nif (params.RadarSettings.EnableMachineLearning == 'true') {\n data = '00000001'\n}\nAddValue(\"value\", data);\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":1,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2580,"Name":"SetInvadeDetection","TemplateSMS":null,"Template":"1201000200000000000000000006000e<>","AckTemplate":null,"Operation":"var configs = [];\nlet data = '00000000';\nif (params.RadarSettings.InvadeDetection == 'true') {\n data = '00000001'\n}\nAddValue(\"value\", data);\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":1,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2578,"Name":"SetWorkHeight","TemplateSMS":null,"Template":"12010002000000000000000000060002<>","AckTemplate":null,"Operation":"// write your code here...\n//var header = \"12010002000000000000000000060006\"\nvar configs = [];\n// Convert Float32 to Hex string\nconst Float32ToHex = (float32) => {\n const getHex = i => ('00' + i.toString(16)).slice(-2);\n var view = new DataView(new ArrayBuffer(4))\n view.setFloat32(0, float32);\n return Array.apply(null, {\n length: 4\n }).map((_, i) => getHex(view.getUint8(i))).join('');\n};\nvar data = Float32ToHex(Number(params.RadarSettings.WorkHeight));\nAddValue(\"value\", data);\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":1,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2582,"Name":"GetWorkRange","TemplateSMS":null,"Template":"1201000200000000000000000006000700000000","AckTemplate":null,"Operation":"// write your code here...","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":null,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2359,"Name":"SetWorkRange","TemplateSMS":null,"Template":"12010002000000000000000000060006<>","AckTemplate":null,"Operation":"// write your code here...\n//var header = \"12010002000000000000000000060006\"\nvar configs = [];\n// Convert Float32 to Hex string\nconst Float32ToHex = (float32) => {\n const getHex = i => ('00' + i.toString(16)).slice(-2);\n var view = new DataView(new ArrayBuffer(4))\n view.setFloat32(0, float32);\n return Array.apply(null, {\n length: 4\n }).map((_, i) => getHex(view.getUint8(i))).join('');\n};\nvar data = Float32ToHex(Number(params.RadarSettings.WorkRange));\nAddValue(\"value\", data);\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":1,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2699,"Name":"SetEnableHeatMap","TemplateSMS":null,"Template":"1201000200000000000000000006000c<>","AckTemplate":null,"Operation":"var configs = [];\nlet data = '00000000';\nif (params.RadarSettings.EnableHeatmap == 'true') {\n data = '00000001'\n}\nAddValue(\"value\", data);\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":1,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2700,"Name":"StartSendRealtimePos","TemplateSMS":null,"Template":"1201000200000000000000000006001000000001","AckTemplate":null,"Operation":"// write your code here...","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":false,"HexString":true,"Order":null,"SendAttempts":1,"ProtocolActionObjects":[],"Tags":[]},{"Id":2701,"Name":"StopSendRealtimePos","TemplateSMS":null,"Template":"1201000200000000000000000006001000000003","AckTemplate":null,"Operation":"// write your code here...","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":false,"HexString":true,"Order":null,"SendAttempts":1,"ProtocolActionObjects":[],"Tags":[]},{"Id":2702,"Name":"GetWorkHeight","TemplateSMS":null,"Template":"1201000200000000000000000006000300000000","AckTemplate":null,"Operation":"// write your code here...","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":null,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2703,"Name":"GetTimeLimit","TemplateSMS":null,"Template":"1201000200000000000000000006000500000000","AckTemplate":null,"Operation":"// write your code here...","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":null,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2704,"Name":"GetFirmware","TemplateSMS":null,"Template":"1201000200000000000000000006001300000000","AckTemplate":null,"Operation":"// write your code here...","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":null,"SendAttempts":1,"ProtocolActionObjects":[],"Tags":[]},{"Id":3058,"Name":"GetAll","TemplateSMS":null,"Template":null,"AckTemplate":null,"Operation":"// configs to send on all read only items\n// they will turn amber\n// on return ack individual items\n// auto ack read all button","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":false,"HexString":false,"Order":null,"SendAttempts":1,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":3058,\"Name\":\"GetAll\",\"TemplateSMS\":null,\"Template\":null,\"AckTemplate\":null,\"Operation\":\"// configs to send on all read only items\\n// they will turn amber\\n// on return ack individual items\\n// auto ack read all button\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":false,\"Order\":null,\"SendAttempts\":1,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1688729273},{"Type":1,"NewValue":"{\"Id\":3058,\"Name\":\"GetAll\",\"TemplateSMS\":null,\"Template\":null,\"AckTemplate\":null,\"Operation\":\"// configs to send on all read only items\\n// they will turn amber\\n// on return ack individual items\\n// auto ack read all button\\nvar configsToSend = [];\\nvar configsToAck = [];\\nconfigsToAck.push(configIds.ReadFromDevice.ReadAll);\\nvar dataToReceiver = {\\n //'configsToSend': configsToSend,\\n 'configsToAck': configsToAck\\n};\\nconsole.log(dataToReceiver);\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":false,\"Order\":null,\"SendAttempts\":1,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1688729504},{"Type":1,"NewValue":"{\"Id\":3058,\"Name\":\"GetAll\",\"TemplateSMS\":null,\"Template\":null,\"AckTemplate\":null,\"Operation\":\"var msg = []\\nvar configs = [];\\nvar configsToSend = [];\\nvar configsToAck = [];\\nconfigsToAck.push(configIds.ReadFromDevice.ReadAll);\\n// let data = '00000000';\\n// if (params.RadarSettings.InvadeDetection == 'true') {\\n// data = '00000001'\\n// }\\n// AddValue(\\\"value\\\", data);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n //configs: configs,\\n configsToAck: configsToAck\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":false,\"Order\":null,\"SendAttempts\":1,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1688732397}],"Tags":[]}],"Operations":[{"Id":172,"Name":"AeroSense","Operation":"function execute_ops(msg, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, localTesting) {\n var net = require('net');\n var moment = require('moment');\n var codeValues = [];\n var dataToReceiver = [];\n var configsToAck = [];\n var configsToUpdate = [];\n var configsToSend = [];\n\n function parse_message(hex) {\n let message = {};\n hex = hex.toLowerCase();\n message.magic = hex.slice(0, 4);\n message.type = hex.slice(4, 6);\n message.cmd = hex.slice(6, 8);\n message.sequence = parseInt(hex.slice(8, 16), 16);\n message.timeout = parseInt(hex.slice(16, 20), 16);\n message.length = parseInt(hex.slice(20, 28), 16);\n message.function = hex.slice(28, 32);\n message.hw_version = hex.slice(32, 42);\n message.radar_id = hex.slice(42);\n message.header = hex.slice(0, 20);\n message.data = hex.slice(32);\n return message;\n }\n if (oystaTemplate == 'True') {\n AddValue(codeValues, \"event_time\", Math.round(Date.now() / 1000));\n }\n if (globalTemplate == \"True\") {\n let message = parse_message(rawFromBytes.slice(0));\n let ack = '';\n let imei = '';\n switch (message.function) {\n case '0001':\n imei = message.radar_id;\n ack = message.header + \"00000006000100000001\";\n AddValue(codeValues, \"ack\", ack);\n AddValue(codeValues, \"imei\", imei);\n if (imei != serverParams.Imei) { //no need to associate if already done.\n let new_message = \"AEROSENSE-ASSOCIATE;\" + imei + \";\" + serverParams.Guid + \";\"\n sendMessageToLocalhost(new_message);\n AddValue(codeValues, \"toSend\", new_message);\n }\n let cyc_message = \"AEROSENSE;CHK;\" + imei + \";\";\n sendMessageToLocalhost(cyc_message);\n AddValue(codeValues, \"toSendCyc\", cyc_message);\n break;\n case '0002': // working height set acknowledge AEROSENSE;ACK-WORKHEIGHT;<>;\n if (HexToInt(message.data) == 1) {\n ack_config(\"ACK-WORKHEIGHT\");\n }\n break;\n case '0003': // get working height response, push to Read only configs\n let workheight = (HexToFloat32(message.data)).toFixed(2);\n AddValue(codeValues, \"imei\", serverParams.Imei);\n AddValue(codeValues, \"workheight\", workheight);\n configsToUpdate.push({\n 'code': configIds.ReadFromDevice.WorkHeightRead,\n 'value': workheight\n });\n configsToAck.push(configIds.ReadFromDevice.WorkHeightRead);\n break;\n case '0004': // Time interval set acknowledge -> AEROSENSE;ACK-TIMEINT;<>;\n if (HexToInt(message.data) == 1) {\n ack_config(\"ACK-TIMEINT\");\n }\n break;\n case '0005': // get timeout response, push to Read only configs\n let timeout = HexToInt(message.data);\n AddValue(codeValues, \"imei\", serverParams.Imei);\n AddValue(codeValues, \"timeout\", timeout);\n configsToUpdate.push({\n 'code': configIds.ReadFromDevice.TimeLimitRead,\n 'value': timeout\n });\n configsToAck.push(configIds.ReadFromDevice.TimeLimitRead);\n break;\n case '0006': // working distance set acknowledge -> AEROSENSE;ACK-WORKRANGE;<>;\n if (HexToInt(message.data) == 1) {\n ack_config(\"ACK-WORKRANGE\");\n }\n break;\n case '0007': // response to workrange request, push to Read only configs\n let workrange = HexToFloat32(message.data).toFixed(2);\n AddValue(codeValues, \"imei\", serverParams.Imei);\n AddValue(codeValues, \"workrange\", workrange);\n configsToUpdate.push({\n 'code': configIds.ReadFromDevice.WorkRangeRead,\n 'value': workrange\n });\n configsToAck.push(configIds.ReadFromDevice.WorkRangeRead);\n break;\n //case '0008': // does not exist.\n case '0009': // Fall detected ->AEROSENSE;FALL;<>;<>;<>;\n // parse positions\n let posx = HexToFloat32(message.data.slice(0, 8)).toFixed(2);\n let posy = HexToFloat32(message.data.slice(8, 16)).toFixed(2);\n // create message\n let fall_message = \"AEROSENSE;FALL;\" + serverParams.Imei + \";\" + posx + \";\" + posy + \";\"\n sendMessageToLocalhost(fall_message);\n AddValue(codeValues, \"toSend\", fall_message);\n AddValue(codeValues, \"imei\", serverParams.Imei);\n // send ack\n let fall_response_hex = message.header + \"00000006000900000001\";\n AddValue(codeValues, \"ack\", fall_response_hex);\n break;\n case '000a': //invade detection alert -> AEROSENSE;INVADE;<>;\n let invade_message = \"AEROSENSE;INVADE;\" + serverParams.Imei + \";\"\n sendMessageToLocalhost(invade_message);\n AddValue(codeValues, \"imei\", serverParams.Imei);\n AddValue(codeValues, \"toSend\", invade_message);\n //send ack\n let invade_response_hex = message.header + \"00000006000a00000001\";\n AddValue(codeValues, \"ack\", invade_response_hex);\n break;\n case '000b': //heatmap received -> NOT IN USE AEROSENSE;HEATMAP;<>;\n let heatmap_message = \"AEROSENSE;HEATMAP;\" + serverParams.Imei + \";\"\n sendMessageToLocalhost(heatmap_message);\n AddValue(codeValues, \"imei\", serverParams.Imei);\n AddValue(codeValues, \"toSend\", heatmap_message);\n // send switch off heatmap command\n let heatmap_response_hex = message.header + \"00000006000c00000000\"\n AddValue(codeValues, \"ack\", heatmap_response_hex);\n break;\n case '000c': //set enable heatmap ack -> AEROSENSE;ACK-HEATMAP;<>;\n if (HexToInt(message.data) == 1) {\n ack_config(\"ACK-HEATMAP\");\n }\n break;\n case '000d': // receive heatmap collect state, push to readonly configs\n let heatmap_enabled = parseInt(message.data) == 1;\n AddValue(codeValues, \"imei\", serverParams.Imei);\n AddValue(codeValues, \"heatmap_enabled\", heatmap_enabled);\n configsToUpdate.push({\n 'code': configIds.ReadFromDevice.EnableHeatMapRead,\n 'value': heatmap_enabled ? 'true' : 'false'\n });\n configsToAck.push(configIds.ReadFromDevice.EnableHeatMapRead);\n break;\n case '000e': // Invade Detection set acknowledge AEROSENSE;ACK-INVADE;<>;\n if (HexToInt(message.data) == 1) {\n ack_config(\"ACK-INVADE\");\n }\n break;\n case '000f': // receive invade detection state, push to readonly configs\n let invade_state = parseInt(message.data) == 1;\n AddValue(codeValues, \"imei\", serverParams.Imei);\n AddValue(codeValues, \"invade_enabled\", invade_state);\n configsToUpdate.push({\n 'code': configIds.ReadFromDevice.InvadeDetectionRead,\n 'value': invade_state ? 'true' : 'false'\n });\n configsToAck.push(configIds.ReadFromDevice.InvadeDetectionRead);\n break;\n case '0010': // position update received -> AEROSENSE;DIST-POS;<>;>;<>;\n let x = HexToFloat32(message.data.slice(8, 16)).toFixed(2);\n let y = HexToFloat32(message.data.slice(16, 24)).toFixed(2);\n AddValue(codeValues, \"imei\", serverParams.Imei);\n AddValue(codeValues, \"pos_x\", x);\n AddValue(codeValues, \"pos_y\", y);\n let position_message = \"AEROSENSE;DIST-POS;\" + serverParams.Imei + \";\" + x + \";\" + y + \";\";\n sendMessageToLocalhost(position_message);\n //no ack as positions resent regularly\n break;\n case '0011': // ack negative fall detection\n // parse positions\n let posx_neg = HexToFloat32(message.data.slice(0, 8)).toFixed(2);\n let posy_neg = HexToFloat32(message.data.slice(8, 16)).toFixed(2);\n // create message\n let negfall_message = \"AEROSENSE;NEGFALL;\" + serverParams.Imei + \";\" + posx_neg + \";\" + posy_neg + \";\"\n sendMessageToLocalhost(negfall_message);\n AddValue(codeValues, \"toSend\", negfall_message);\n AddValue(codeValues, \"imei\", serverParams.Imei);\n // send ack\n let negfall_response_hex = message.header + \"00000006001100000001\";\n AddValue(codeValues, \"ack\", negfall_response_hex);\n break;\n case '0012': // reconnect message\n message.radar_id = message.data.slice(2);\n imei = message.radar_id;\n const response_reconnect_OK = \"00000006001200000001\";\n ack = message.header + response_reconnect_OK;\n AddValue(codeValues, \"ack\", ack);\n AddValue(codeValues, \"imei\", imei);\n let reply = \"AEROSENSE-ASSOCIATE;\" + imei + \";\" + serverParams.Guid + \";\"\n sendMessageToLocalhost(reply);\n AddValue(codeValues, \"toSend\", reply);\n break;\n case '0013': // firmware version response, push to Read only configs\n let firmware_version = `${HexToInt(message.data.slice(0,2))}.${HexToInt(message.data.slice(2,4))}.${HexToInt(message.data.slice(4,6))}.${HexToInt(message.data.slice(6,8))}`; // just raw hex for now\n AddValue(codeValues, \"imei\", serverParams.Imei);\n AddValue(codeValues, \"firmware_ver\", firmware_version);\n configsToUpdate.push({\n 'code': configIds.ReadFromDevice.FirmwareRead,\n 'value': firmware_version\n });\n configsToAck.push(configIds.ReadFromDevice.ReadAll);\n configsToAck.push(configIds.ReadFromDevice.FirmwareRead);\n // internal ack config\n // ack_config(\"ACK-VERSION\");\n // update LastDateTimeRead\n configsToUpdate.push({\n 'code': configIds.ReadFromDevice.LastDateTimeRead,\n 'value': moment().format('YYYY/MM/DD, HH:mm:ss')\n });\n break;\n case '0014': // Radar reset received\n if (message.data == '0d0d0d0d') { // message must contein this value according to docs\n let reset_message = \"AEROSENSE;USERRESET;\" + serverParams.Imei + \";\";\n sendMessageToLocalhost(reset_message);\n AddValue(codeValues, \"toSend\", reset_message);\n AddValue(codeValues, \"imei\", serverParams.Imei);\n }\n // no ack\n break;\n case '0015': // Enable Machine learning set acknowledge AEROSENSE;ACK-MACHINELEARN;<>;\n ack_config(\"ACK-MACHINELEARN\");\n break;\n case '0016': // receive machine learning state, not in use\n let machinelearning_state = parseInt(message.data) == 1;\n AddValue(codeValues, \"imei\", serverParams.Imei);\n AddValue(codeValues, \"machinelearning_enabled\", machinelearning_state);\n configsToUpdate.push({\n 'code': configIds.ReadFromDevice.EnableMachineLearningRead,\n 'value': machinelearning_state ? 'true' : 'false'\n });\n configsToAck.push(configIds.ReadFromDevice.EnableMachineLearningRead);\n break;\n default:\n imei = serverParams.Imei;\n AddValue(codeValues, \"imei\", imei);\n AddValue(codeValues, \"Error\", \"Unhandled message received of type: \" + message.function);\n }\n var dataToReceiver = {\n 'values': codeValues\n };\n if (configsToAck.length > 0) {\n dataToReceiver.configsToAck = configsToAck\n };\n if (configsToUpdate.length > 0) {\n dataToReceiver.configsToUpdate = configsToUpdate\n };\n if (configsToSend.length > 0) {\n dataToReceiver.configsToSend = configsToSend\n };\n console.log(dataToReceiver);\n }\n return {\n 'output': dataToReceiver\n }\n //---------------------HELPERS START----------------------------\n function ack_config(ack_command) {\n if (serverParams.Imei != null) {\n AddValue(codeValues, \"imei\", serverParams.Imei);\n let ack_message = \"AEROSENSE;\" + ack_command + \";\" + serverParams.Imei + \";\";\n AddValue(codeValues, \"toSend\", ack_message);\n sendMessageToLocalhost(ack_message);\n } else { //only used for debugging\n AddValue(codeValues, \"imei\", \"6796c41dc6e44e3db8d1cadce00abe6b\");\n AddValue(codeValues, \"error\", \"serverParams do not contain Imei!\")\n }\n }\n\n function AddValue(msgArray, p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n msgArray.push(cvpair);\n }\n\n function sendMessageToLocalhost(str) {\n if (localTesting) {\n console.log(\"Sending message to server: \" + str);\n } else {\n var server = '127.0.0.1';\n var c = createConnection(5678, server);\n c.write(`${str}`);\n c.end();\n }\n }\n\n 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 //---------------------HELPERS END----------------------------\n //---------------------CONVERTERS START----------------------------\n /**\n * Convert hex string to integer\n * @param {String} hex_string hex string\n * @returns Integer number\n */\n function HexToInt(hex_string) {\n return parseInt(hex_string, 16);\n }\n\n function HexToFloat32(hex_string) {\n let int = parseInt(hex_string, 16);\n if (int > 0 || int < 0) {\n var sign = (int >>> 31) ? -1 : 1;\n var exp = (int >>> 23 & 0xff) - 127;\n var mantissa = ((int & 0x7fffff) + 0x800000).toString(2);\n var float32 = 0\n for (i = 0; i < mantissa.length; i += 1) {\n float32 += parseInt(mantissa[i]) ? Math.pow(2, exp) : 0;\n exp--\n }\n return float32 * sign;\n } else {\n return 0;\n }\n }\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(msg, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, false)\n // map output to global var\n dataToReceiver = return_values.output;\n}","Type":0,"ProtocolActionObjects":[]}],"Groups":[{"Id":4207,"Parent":null,"Name":"Feature","Json":"{\"description\":\"All AeroSense Features\",\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":4208,"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"RadarSettings","Json":"{\"description\":\"Configuration for Radar Unit.\",\"columns\":2,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":4524,"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"ReadFromDevice","Json":"{\"description\":\"Contains values downloaded from the device.\",\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":4800,"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"No activity monitor","Json":"{\"description\":\"Send alarms when no activity is detected.\",\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]}],"GroupParams":[{"Id":7396,"Group":{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"Show RadarSettings","Json":"{\"name\":\"Show RadarSettings\",\"default\":\"\",\"description\":null,\"type\":\"enable\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6619,"Group":{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"StopSendingRealtimePos","Json":"{\"name\":\"StopSendingRealtimePos\",\"default\":\"\",\"description\":\"Stop sending realtime positions.\",\"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\":7}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6618,"Group":{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"StartSendingRealtimePos","Json":"{\"name\":\"StartSendingRealtimePos\",\"default\":\"\",\"description\":\"Start sending realtime positions\",\"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\":6}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6617,"Group":{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"EnableHeatmap","Json":"{\"name\":\"EnableHeatmap\",\"default\":\"true\",\"description\":\"Enable heatmap images.\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":true,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Currently not supported. Please switch off.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6292,"Group":{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"EnableMachineLearning","Json":"{\"name\":\"EnableMachineLearning\",\"default\":\"false\",\"description\":\"Turn on machine learning algorythm.\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"The machine learning algorithm is to further reduce the false alerts of fall detection for better user experiences. However, it may result in lower accuracy in certain scenarios.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":4}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6291,"Group":{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"InvadeDetection","Json":"{\"name\":\"InvadeDetection\",\"default\":\"true\",\"description\":\"Enable activity monitoring feature.\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":5}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6290,"Group":{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"TimeInterval","Json":"{\"name\":\"TimeInterval\",\"default\":\"\",\"description\":\"Time interval to trigger the fall detection (in seconds).\",\"type\":\"number\",\"suffix\":\"s\",\"prefix\":null,\"min\":30,\"max\":300,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":2}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6289,"Group":{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"WorkHeight","Json":"{\"name\":\"WorkHeight\",\"default\":\"\",\"description\":\"Set the mounted height of radar unit.\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":1.4,\"max\":2.2,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":0}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":5802,"Group":{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"WorkRange","Json":"{\"name\":\"WorkRange\",\"default\":\"\",\"description\":\"Set the work range of the sensor\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":0.5,\"max\":7,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":1}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6621,"Group":{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"WorkRangeRead","Json":"{\"name\":\"WorkRangeRead\",\"default\":\"\",\"description\":\"Workrange as read from the device.\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":true,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":4}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6624,"Group":{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"ReadAll","Json":"{\"name\":\"ReadAll\",\"default\":\"\",\"description\":\"Read values from Device.\",\"type\":\"button\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":6624,\"Group\":{\"Id\":4524,\"Name\":\"ReadFromDevice\",\"Json\":{\"description\":\"Contains values downloaded from the device.\",\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]},\"Parent\":null,\"Device\":null,\"DeviceRelated\":false,\"IsList\":false,\"IsAdminOnly\":false,\"Deleted\":false,\"Children\":[]},\"Name\":\"ReadAll\",\"Json\":\"{\\\"name\\\":\\\"ReadAll\\\",\\\"default\\\":\\\"\\\",\\\"description\\\":\\\"Read values from Device.\\\",\\\"type\\\":\\\"button\\\",\\\"suffix\\\":null,\\\"prefix\\\":null,\\\"min\\\":null,\\\"max\\\":null,\\\"futureOnly\\\":false,\\\"integerOnly\\\":false,\\\"isReadOnly\\\":false,\\\"isHidden\\\":false,\\\"minLength\\\":null,\\\"maxLength\\\":null,\\\"helpText\\\":null,\\\"options\\\":[],\\\"toTranslate\\\":[\\\"name\\\",\\\"description\\\",\\\"helpText\\\"]}\",\"Default\":\"\",\"Command\":null,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1688729222},{"Type":0,"NewValue":"{\"Id\":6624,\"Group\":{\"Id\":4524,\"Name\":\"ReadFromDevice\",\"Json\":{\"description\":\"Contains values downloaded from the device.\",\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]},\"Parent\":null,\"Device\":null,\"DeviceRelated\":false,\"IsList\":false,\"IsAdminOnly\":false,\"Deleted\":false,\"Children\":[]},\"Name\":\"ReadAll\",\"Json\":\"{\\\"name\\\":\\\"ReadAll\\\",\\\"default\\\":\\\"\\\",\\\"description\\\":\\\"Read values from Device.\\\",\\\"type\\\":\\\"button\\\",\\\"suffix\\\":null,\\\"prefix\\\":null,\\\"min\\\":null,\\\"max\\\":null,\\\"futureOnly\\\":false,\\\"integerOnly\\\":false,\\\"isReadOnly\\\":false,\\\"isHidden\\\":false,\\\"minLength\\\":null,\\\"maxLength\\\":null,\\\"helpText\\\":null,\\\"options\\\":[],\\\"toTranslate\\\":[\\\"name\\\",\\\"description\\\",\\\"helpText\\\"]}\",\"Default\":\"\",\"Command\":{\"Id\":3058,\"Protocol\":{\"Id\":160,\"Code\":\"AeroSense\",\"Version\":\"0.2\",\"FirmwareVersion\":\"\",\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"GetAll\",\"TemplateSMS\":null,\"Template\":null,\"AckTemplate\":null,\"Operation\":\"// configs to send on all read only items\\n// they will turn amber\\n// on return ack individual items\\n// auto ack read all button\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":false,\"HexString\":false,\"SendAttempts\":1,\"Order\":null},\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1688729227}],"Tags":[]},{"Id":6623,"Group":{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"TimeLimitRead","Json":"{\"name\":\"TimeLimitRead\",\"default\":\"\",\"description\":\"Timelimit read from the device (s).\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":5}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6622,"Group":{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"WorkHeightRead","Json":"{\"name\":\"WorkHeightRead\",\"default\":\"\",\"description\":\"Workheight read from the device.\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":true,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":7397,"Group":{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"LastDateTimeRead","Json":"{\"name\":\"LastDateTimeRead\",\"default\":\"\",\"description\":\"Date time of last parameter read.\",\"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\":1}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6625,"Group":{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"FirmwareRead","Json":"{\"name\":\"FirmwareRead\",\"default\":\"\",\"description\":\"Firmware read from the device.\",\"type\":\"text\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":true,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6798,"Group":{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"EnableHeatMapRead","Json":"{\"name\":\"EnableHeatMapRead\",\"default\":\"\",\"description\":\"Enable Heatmap state read from device.\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":true,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":6}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6797,"Group":{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"InvadeDetectionRead","Json":"{\"name\":\"InvadeDetectionRead\",\"default\":\"false\",\"description\":\"Activity monitoring state read from device.\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":true,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":8}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6796,"Group":{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"EnableMachineLearningRead","Json":"{\"name\":\"EnableMachineLearningRead\",\"default\":\"false\",\"description\":\"Enable Machine Learning state read from device.\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":true,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":7}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":7394,"Group":{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","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":"Enable Disable No activity monitor","Json":"{\"name\":\"Enable Disable No activity monitor\",\"default\":\"true\",\"description\":\"Enable no Activity Monitor\",\"type\":\"enable\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"If enabled server will send alerts when no activity is detected for the timespan set.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":7395,"Group":{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","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":"No Activity","Json":"{\"name\":\"No Activity\",\"default\":\"\",\"description\":\"No Activity Interval (minutes)\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":1,\"max\":60,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Set the no activity monitor to send an alert if no message has been received for the time frame set in minutes.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6624,"Group":{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},"Name":"ReadAll","Json":"{\"name\":\"ReadAll\",\"default\":\"\",\"description\":\"Read values from Device.\",\"type\":\"button\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":{"Id":3058,"Protocol":{"Id":160,"Code":"AeroSense","Version":"0.2","FirmwareVersion":"","Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":true},"Name":"GetAll","TemplateSMS":null,"Template":null,"AckTemplate":null,"Operation":"// configs to send on all read only items\n// they will turn amber\n// on return ack individual items\n// auto ack read all button","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":false,"HexString":false,"SendAttempts":1,"Order":null},"ProtocolActionObjects":[],"Tags":[]}],"ProtocolChanges":[{"Version":"0.2","UserName":"Sean-Admin","Resource":"GroupParam","Name":"ReadAll","Message":"(Update) (ReadAll) setting getAll command\n","Timestamp":1688729222},{"Version":"0.2","UserName":"Sean-Admin","Resource":"GroupParam","Name":"ReadAll","Message":"Associate groupParam ReadAll to command GetAll","Timestamp":1688729227},{"Version":"0.2","UserName":"Sean-Admin","Resource":"Command","Name":"GetAll","Message":"(Update) (GetAll) set GetAllto Ack","Timestamp":1688729273},{"Version":"0.2","UserName":"Sean-Admin","Resource":"Command","Name":"GetAll","Message":"(Update) (GetAll) Direct ack for GetAll button","Timestamp":1688729504},{"Version":"0.2","UserName":"Sean-Admin","Resource":"Command","Name":"GetAll","Message":"(Update) (GetAll) trying different ack","Timestamp":1688732397}],"ProtocolActionObjects":[],"Tags":[]} \ No newline at end of file +{"Id":160,"Name":null,"Description":null,"FirmwareVersion":"","InProgress":true,"MessageTypes":[{"Id":4674,"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":false,"Command":null,"CacheImei":false,"RegEx":"\\+RESP:NACT,[^,]*,[^\\$,]*\\$","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4417,"Code":"ACK-VERSION","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE;ACK-VERSION;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":{"Id":2704,"Protocol":{"Id":160,"Code":"AeroSense","Version":"0.1","FirmwareVersion":"","Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":true},"Name":"GetFirmware","TemplateSMS":null,"Template":"1201000200000000000000000006001300000000","AckTemplate":null,"Operation":"// write your code here...","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":1,"Order":null},"CacheImei":false,"RegEx":"^AEROSENSE;ACK-VERSION;[^;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4359,"Code":"CHK","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE;CHK;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":null,"CacheImei":false,"RegEx":"^AEROSENSE;CHK;[^;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":3787,"Code":"COMM","Name":null,"MessageCode":null,"NeedAck":true,"IsAck":false,"IsFailAck":false,"IsAckHexString":true,"NoOperation":false,"Type":0,"Template":"AEROSENSE-ASSOCIATE;<>;<>;","HasTemplateGlobal":true,"ResponseTemplate":"<>","TemplateGlobal":"1201<>","LongConnection":true,"HexString":true,"AckFirst":true,"ScaipH":false,"DoNotSendCommands":false,"Command":null,"CacheImei":false,"RegEx":"^AEROSENSE-ASSOCIATE;[^;]*;[^;;]*;","RegExGlobal":"^1201[^ ]*","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4204,"Code":"INFO","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE;HEATMAP;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":null,"CacheImei":false,"RegEx":"^AEROSENSE;HEATMAP;[^;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4197,"Code":"ACK-WORKRANGE","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE;ACK-WORKRANGE;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":{"Id":2359,"Protocol":{"Id":160,"Code":"AeroSense","Version":"0.1","FirmwareVersion":"","Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":true},"Name":"SetWorkRange","TemplateSMS":null,"Template":"12010002000000000000000000060006<>","AckTemplate":null,"Operation":"// write your code here...\n//var header = \"12010002000000000000000000060006\"\nvar configs = [];\n// Convert Float32 to Hex string\nconst Float32ToHex = (float32) => {\n const getHex = i => ('00' + i.toString(16)).slice(-2);\n var view = new DataView(new ArrayBuffer(4))\n view.setFloat32(0, float32);\n return Array.apply(null, {\n length: 4\n }).map((_, i) => getHex(view.getUint8(i))).join('');\n};\nvar data = Float32ToHex(Number(params.RadarSettings.WorkRange));\nAddValue(\"value\", data);\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":4,"Order":1},"CacheImei":false,"RegEx":"^AEROSENSE;ACK-WORKRANGE;[^;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4210,"Code":"STATUS-USERRESET","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE;USERRESET;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":null,"CacheImei":false,"RegEx":"^AEROSENSE;USERRESET;[^;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4208,"Code":"ALF-NEG","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE;NEGFALL;<>;<>;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":null,"CacheImei":false,"RegEx":"^AEROSENSE;NEGFALL;[^;]*;[^;;]*;[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4207,"Code":"DIST-POS","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE;DIST-POS;<>;<>;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":null,"CacheImei":false,"RegEx":"^AEROSENSE;DIST-POS;[^;]*;[^;;]*;[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4205,"Code":"ACK-HEATMAP","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE;ACK-HEATMAP;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":{"Id":2699,"Protocol":{"Id":160,"Code":"AeroSense","Version":"0.1","FirmwareVersion":"","Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":true},"Name":"SetEnableHeatMap","TemplateSMS":null,"Template":"1201000200000000000000000006000c<>","AckTemplate":null,"Operation":"var configs = [];\nlet data = '00000000';\nif (params.RadarSettings.EnableHeatmap == 'true') {\n data = '00000001'\n}\nAddValue(\"value\", data);\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":4,"Order":1},"CacheImei":false,"RegEx":"^AEROSENSE;ACK-HEATMAP;[^;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4203,"Code":"ALINVADE","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":1,"Template":"AEROSENSE;INVADE;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":null,"CacheImei":false,"RegEx":"^AEROSENSE;INVADE;[^;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4202,"Code":"ACK-MACHINELEARN","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE;ACK-MACHINELEARN;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":{"Id":2581,"Protocol":{"Id":160,"Code":"AeroSense","Version":"0.1","FirmwareVersion":"","Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":true},"Name":"SetEnableMachineLearning","TemplateSMS":null,"Template":"12010002000000000000000000060015<>","AckTemplate":null,"Operation":"var configs = [];\nlet data = '00000000';\nif (params.RadarSettings.EnableMachineLearning == 'true') {\n data = '00000001'\n}\nAddValue(\"value\", data);\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":4,"Order":1},"CacheImei":false,"RegEx":"^AEROSENSE;ACK-MACHINELEARN;[^;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4201,"Code":"ACK-INVADE","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE;ACK-INVADE;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":{"Id":2580,"Protocol":{"Id":160,"Code":"AeroSense","Version":"0.1","FirmwareVersion":"","Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":true},"Name":"SetInvadeDetection","TemplateSMS":null,"Template":"1201000200000000000000000006000e<>","AckTemplate":null,"Operation":"var configs = [];\nlet data = '00000000';\nif (params.RadarSettings.InvadeDetection == 'true') {\n data = '00000001'\n}\nAddValue(\"value\", data);\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":4,"Order":1},"CacheImei":false,"RegEx":"^AEROSENSE;ACK-INVADE;[^;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4200,"Code":"ACK-TIMEINT","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE;ACK-TIMEINT;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":{"Id":2579,"Protocol":{"Id":160,"Code":"AeroSense","Version":"0.1","FirmwareVersion":"","Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":true},"Name":"SetTimeInterval","TemplateSMS":null,"Template":"12010002000000000000000000060004<>","AckTemplate":null,"Operation":"var configs = [];\n/**\n * Converts integer number to hex string\n * @param {Integer} number \n * @returns hex string\n */\nfunction IntToHex(number, padding = 8) {\n return number.toString(16).padStart(8, '0');\n}\nvar data = IntToHex(Number(params.RadarSettings.TimeInterval));\nAddValue(\"value\", data);\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":4,"Order":1},"CacheImei":false,"RegEx":"^AEROSENSE;ACK-TIMEINT;[^;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4199,"Code":"ACK-WORKHEIGHT","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":true,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE;ACK-WORKHEIGHT;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":{"Id":2578,"Protocol":{"Id":160,"Code":"AeroSense","Version":"0.1","FirmwareVersion":"","Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":true},"Name":"SetWorkHeight","TemplateSMS":null,"Template":"12010002000000000000000000060002<>","AckTemplate":null,"Operation":"// write your code here...\n//var header = \"12010002000000000000000000060006\"\nvar configs = [];\n// Convert Float32 to Hex string\nconst Float32ToHex = (float32) => {\n const getHex = i => ('00' + i.toString(16)).slice(-2);\n var view = new DataView(new ArrayBuffer(4))\n view.setFloat32(0, float32);\n return Array.apply(null, {\n length: 4\n }).map((_, i) => getHex(view.getUint8(i))).join('');\n};\nvar data = Float32ToHex(Number(params.RadarSettings.WorkHeight));\nAddValue(\"value\", data);\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":true,"HexString":true,"SendAttempts":4,"Order":1},"CacheImei":false,"RegEx":"^AEROSENSE;ACK-WORKHEIGHT;[^;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4196,"Code":"COMM-LOG","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":0,"Template":"AEROSENSE-LOG;<>;<>;","HasTemplateGlobal":false,"ResponseTemplate":null,"TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":null,"CacheImei":false,"RegEx":"^AEROSENSE-LOG;[^;]*;[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]},{"Id":4098,"Code":"ALF","Name":null,"MessageCode":null,"NeedAck":false,"IsAck":false,"IsFailAck":false,"IsAckHexString":false,"NoOperation":false,"Type":1,"Template":"AEROSENSE;FALL;<>;<>;<>;","HasTemplateGlobal":false,"ResponseTemplate":"OK","TemplateGlobal":null,"LongConnection":false,"HexString":false,"AckFirst":false,"ScaipH":false,"DoNotSendCommands":true,"Command":null,"CacheImei":false,"RegEx":"^AEROSENSE;FALL;[^;]*;[^;;]*;[^;;]*;","RegExGlobal":"","IsDeviceUpdate":false,"ProtocolActionObjects":[],"Tags":[]}],"Commands":[{"Id":2821,"Name":"GetEnableHeatMap","TemplateSMS":null,"Template":"1201000200000000000000000006000d00000000","AckTemplate":null,"Operation":"// write your code here...","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":null,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2822,"Name":"GetEnableMachineLearning","TemplateSMS":null,"Template":"1201000200000000000000000006001600000000","AckTemplate":null,"Operation":"// write your code here...","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":null,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2823,"Name":"GetInvadeDetection","TemplateSMS":null,"Template":"1201000200000000000000000006000f00000000","AckTemplate":null,"Operation":"// write your code here...","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":null,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2579,"Name":"SetTimeInterval","TemplateSMS":null,"Template":"12010002000000000000000000060004<>","AckTemplate":null,"Operation":"var configs = [];\n/**\n * Converts integer number to hex string\n * @param {Integer} number \n * @returns hex string\n */\nfunction IntToHex(number, padding = 8) {\n return number.toString(16).padStart(8, '0');\n}\nvar data = IntToHex(Number(params.RadarSettings.TimeInterval));\nAddValue(\"value\", data);\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":1,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2581,"Name":"SetEnableMachineLearning","TemplateSMS":null,"Template":"12010002000000000000000000060015<>","AckTemplate":null,"Operation":"var configs = [];\nlet data = '00000000';\nif (params.RadarSettings.EnableMachineLearning == 'true') {\n data = '00000001'\n}\nAddValue(\"value\", data);\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":1,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2580,"Name":"SetInvadeDetection","TemplateSMS":null,"Template":"1201000200000000000000000006000e<>","AckTemplate":null,"Operation":"var configs = [];\nlet data = '00000000';\nif (params.RadarSettings.InvadeDetection == 'true') {\n data = '00000001'\n}\nAddValue(\"value\", data);\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":1,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2578,"Name":"SetWorkHeight","TemplateSMS":null,"Template":"12010002000000000000000000060002<>","AckTemplate":null,"Operation":"// write your code here...\n//var header = \"12010002000000000000000000060006\"\nvar configs = [];\n// Convert Float32 to Hex string\nconst Float32ToHex = (float32) => {\n const getHex = i => ('00' + i.toString(16)).slice(-2);\n var view = new DataView(new ArrayBuffer(4))\n view.setFloat32(0, float32);\n return Array.apply(null, {\n length: 4\n }).map((_, i) => getHex(view.getUint8(i))).join('');\n};\nvar data = Float32ToHex(Number(params.RadarSettings.WorkHeight));\nAddValue(\"value\", data);\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":1,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2582,"Name":"GetWorkRange","TemplateSMS":null,"Template":"1201000200000000000000000006000700000000","AckTemplate":null,"Operation":"// write your code here...","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":null,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2359,"Name":"SetWorkRange","TemplateSMS":null,"Template":"12010002000000000000000000060006<>","AckTemplate":null,"Operation":"// write your code here...\n//var header = \"12010002000000000000000000060006\"\nvar configs = [];\n// Convert Float32 to Hex string\nconst Float32ToHex = (float32) => {\n const getHex = i => ('00' + i.toString(16)).slice(-2);\n var view = new DataView(new ArrayBuffer(4))\n view.setFloat32(0, float32);\n return Array.apply(null, {\n length: 4\n }).map((_, i) => getHex(view.getUint8(i))).join('');\n};\nvar data = Float32ToHex(Number(params.RadarSettings.WorkRange));\nAddValue(\"value\", data);\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":1,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2699,"Name":"SetEnableHeatMap","TemplateSMS":null,"Template":"1201000200000000000000000006000c<>","AckTemplate":null,"Operation":"var configs = [];\nlet data = '00000000';\nif (params.RadarSettings.EnableHeatmap == 'true') {\n data = '00000001'\n}\nAddValue(\"value\", data);\nvar commandConfigs = {\n template: \"main\",\n configs: configs\n};\nmsg.push(JSON.stringify(commandConfigs));\n\nfunction AddValue(p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n configs.push(cvpair);\n}","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":1,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2700,"Name":"StartSendRealtimePos","TemplateSMS":null,"Template":"1201000200000000000000000006001000000001","AckTemplate":null,"Operation":"// write your code here...","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":false,"HexString":true,"Order":null,"SendAttempts":1,"ProtocolActionObjects":[],"Tags":[]},{"Id":2701,"Name":"StopSendRealtimePos","TemplateSMS":null,"Template":"1201000200000000000000000006001000000003","AckTemplate":null,"Operation":"// write your code here...","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":false,"HexString":true,"Order":null,"SendAttempts":1,"ProtocolActionObjects":[],"Tags":[]},{"Id":2702,"Name":"GetWorkHeight","TemplateSMS":null,"Template":"1201000200000000000000000006000300000000","AckTemplate":null,"Operation":"// write your code here...","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":null,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2703,"Name":"GetTimeLimit","TemplateSMS":null,"Template":"1201000200000000000000000006000500000000","AckTemplate":null,"Operation":"// write your code here...","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":null,"SendAttempts":4,"ProtocolActionObjects":[],"Tags":[]},{"Id":2704,"Name":"GetFirmware","TemplateSMS":null,"Template":"1201000200000000000000000006001300000000","AckTemplate":null,"Operation":"// write your code here...","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":true,"HexString":true,"Order":null,"SendAttempts":1,"ProtocolActionObjects":[],"Tags":[]},{"Id":3058,"Name":"GetAll","TemplateSMS":null,"Template":null,"AckTemplate":null,"Operation":"// configs to send on all read only items\n// they will turn amber\n// on return ack individual items\n// auto ack read all button","CommandToUpdate":null,"Parent":null,"AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"HasAck":false,"HexString":false,"Order":null,"SendAttempts":1,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":3058,\"Name\":\"GetAll\",\"TemplateSMS\":null,\"Template\":null,\"AckTemplate\":null,\"Operation\":\"// configs to send on all read only items\\n// they will turn amber\\n// on return ack individual items\\n// auto ack read all button\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":false,\"Order\":null,\"SendAttempts\":1,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1688729273},{"Type":1,"NewValue":"{\"Id\":3058,\"Name\":\"GetAll\",\"TemplateSMS\":null,\"Template\":null,\"AckTemplate\":null,\"Operation\":\"// configs to send on all read only items\\n// they will turn amber\\n// on return ack individual items\\n// auto ack read all button\\nvar configsToSend = [];\\nvar configsToAck = [];\\nconfigsToAck.push(configIds.ReadFromDevice.ReadAll);\\nvar dataToReceiver = {\\n //'configsToSend': configsToSend,\\n 'configsToAck': configsToAck\\n};\\nconsole.log(dataToReceiver);\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":false,\"Order\":null,\"SendAttempts\":1,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1688729504},{"Type":1,"NewValue":"{\"Id\":3058,\"Name\":\"GetAll\",\"TemplateSMS\":null,\"Template\":null,\"AckTemplate\":null,\"Operation\":\"var msg = []\\nvar configs = [];\\nvar configsToSend = [];\\nvar configsToAck = [];\\nconfigsToAck.push(configIds.ReadFromDevice.ReadAll);\\n// let data = '00000000';\\n// if (params.RadarSettings.InvadeDetection == 'true') {\\n// data = '00000001'\\n// }\\n// AddValue(\\\"value\\\", data);\\nvar commandConfigs = {\\n template: \\\"main\\\",\\n //configs: configs,\\n configsToAck: configsToAck\\n};\\nmsg.push(JSON.stringify(commandConfigs));\\n\\nfunction AddValue(p1, p2) {\\n var cvpair = {\\n code: p1,\\n value: p2\\n };\\n configs.push(cvpair);\\n}\",\"CommandToUpdate\":null,\"Parent\":null,\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"HasAck\":true,\"HexString\":false,\"Order\":null,\"SendAttempts\":1,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1688732397}],"Tags":[]}],"Operations":[{"Id":172,"Name":"AeroSense","Operation":"function execute_ops(msg, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, localTesting) {\n var net = require('net');\n var moment = require('moment');\n var codeValues = [];\n var dataToReceiver = [];\n var configsToAck = [];\n var configsToUpdate = [];\n var configsToSend = [];\n\n function parse_message(hex) {\n let message = {};\n hex = hex.toLowerCase();\n message.magic = hex.slice(0, 4);\n message.type = hex.slice(4, 6);\n message.cmd = hex.slice(6, 8);\n message.sequence = parseInt(hex.slice(8, 16), 16);\n message.timeout = parseInt(hex.slice(16, 20), 16);\n message.length = parseInt(hex.slice(20, 28), 16);\n message.function = hex.slice(28, 32);\n message.hw_version = hex.slice(32, 42);\n message.radar_id = hex.slice(42);\n message.header = hex.slice(0, 20);\n message.data = hex.slice(32);\n return message;\n }\n if (oystaTemplate == 'True') {\n AddValue(codeValues, \"event_time\", Math.round(Date.now() / 1000));\n }\n if (globalTemplate == \"True\") {\n let message = parse_message(rawFromBytes.slice(0));\n let ack = '';\n let imei = '';\n switch (message.function) {\n case '0001':\n imei = message.radar_id;\n ack = message.header + \"00000006000100000001\";\n AddValue(codeValues, \"ack\", ack);\n AddValue(codeValues, \"imei\", imei);\n if (imei != serverParams.Imei) { //no need to associate if already done.\n let new_message = \"AEROSENSE-ASSOCIATE;\" + imei + \";\" + serverParams.Guid + \";\"\n sendMessageToLocalhost(new_message);\n AddValue(codeValues, \"toSend\", new_message);\n }\n let cyc_message = \"AEROSENSE;CHK;\" + imei + \";\";\n sendMessageToLocalhost(cyc_message);\n AddValue(codeValues, \"toSendCyc\", cyc_message);\n break;\n case '0002': // working height set acknowledge AEROSENSE;ACK-WORKHEIGHT;<>;\n if (HexToInt(message.data) == 1) {\n ack_config(\"ACK-WORKHEIGHT\");\n }\n break;\n case '0003': // get working height response, push to Read only configs\n let workheight = (HexToFloat32(message.data)).toFixed(2);\n AddValue(codeValues, \"imei\", serverParams.Imei);\n AddValue(codeValues, \"workheight\", workheight);\n configsToUpdate.push({\n 'code': configIds.ReadFromDevice.WorkHeightRead,\n 'value': workheight\n });\n configsToAck.push(configIds.ReadFromDevice.WorkHeightRead);\n break;\n case '0004': // Time interval set acknowledge -> AEROSENSE;ACK-TIMEINT;<>;\n if (HexToInt(message.data) == 1) {\n ack_config(\"ACK-TIMEINT\");\n }\n break;\n case '0005': // get timeout response, push to Read only configs\n let timeout = HexToInt(message.data);\n AddValue(codeValues, \"imei\", serverParams.Imei);\n AddValue(codeValues, \"timeout\", timeout);\n configsToUpdate.push({\n 'code': configIds.ReadFromDevice.TimeLimitRead,\n 'value': timeout\n });\n configsToAck.push(configIds.ReadFromDevice.TimeLimitRead);\n break;\n case '0006': // working distance set acknowledge -> AEROSENSE;ACK-WORKRANGE;<>;\n if (HexToInt(message.data) == 1) {\n ack_config(\"ACK-WORKRANGE\");\n }\n break;\n case '0007': // response to workrange request, push to Read only configs\n let workrange = HexToFloat32(message.data).toFixed(2);\n AddValue(codeValues, \"imei\", serverParams.Imei);\n AddValue(codeValues, \"workrange\", workrange);\n configsToUpdate.push({\n 'code': configIds.ReadFromDevice.WorkRangeRead,\n 'value': workrange\n });\n configsToAck.push(configIds.ReadFromDevice.WorkRangeRead);\n break;\n //case '0008': // does not exist.\n case '0009': // Fall detected ->AEROSENSE;FALL;<>;<>;<>;\n // parse positions\n let posx = HexToFloat32(message.data.slice(0, 8)).toFixed(2);\n let posy = HexToFloat32(message.data.slice(8, 16)).toFixed(2);\n // create message\n let fall_message = \"AEROSENSE;FALL;\" + serverParams.Imei + \";\" + posx + \";\" + posy + \";\"\n sendMessageToLocalhost(fall_message);\n AddValue(codeValues, \"toSend\", fall_message);\n AddValue(codeValues, \"imei\", serverParams.Imei);\n // send ack\n let fall_response_hex = message.header + \"00000006000900000001\";\n AddValue(codeValues, \"ack\", fall_response_hex);\n break;\n case '000a': //invade detection alert -> AEROSENSE;INVADE;<>;\n let invade_message = \"AEROSENSE;INVADE;\" + serverParams.Imei + \";\"\n sendMessageToLocalhost(invade_message);\n AddValue(codeValues, \"imei\", serverParams.Imei);\n AddValue(codeValues, \"toSend\", invade_message);\n //send ack\n let invade_response_hex = message.header + \"00000006000a00000001\";\n AddValue(codeValues, \"ack\", invade_response_hex);\n break;\n case '000b': //heatmap received -> NOT IN USE AEROSENSE;HEATMAP;<>;\n let heatmap_message = \"AEROSENSE;HEATMAP;\" + serverParams.Imei + \";\"\n sendMessageToLocalhost(heatmap_message);\n AddValue(codeValues, \"imei\", serverParams.Imei);\n AddValue(codeValues, \"toSend\", heatmap_message);\n // send switch off heatmap command\n let heatmap_response_hex = message.header + \"00000006000c00000000\"\n AddValue(codeValues, \"ack\", heatmap_response_hex);\n break;\n case '000c': //set enable heatmap ack -> AEROSENSE;ACK-HEATMAP;<>;\n if (HexToInt(message.data) == 1) {\n ack_config(\"ACK-HEATMAP\");\n }\n break;\n case '000d': // receive heatmap collect state, push to readonly configs\n let heatmap_enabled = parseInt(message.data) == 1;\n AddValue(codeValues, \"imei\", serverParams.Imei);\n AddValue(codeValues, \"heatmap_enabled\", heatmap_enabled);\n configsToUpdate.push({\n 'code': configIds.ReadFromDevice.EnableHeatMapRead,\n 'value': heatmap_enabled ? 'true' : 'false'\n });\n configsToAck.push(configIds.ReadFromDevice.EnableHeatMapRead);\n break;\n case '000e': // Invade Detection set acknowledge AEROSENSE;ACK-INVADE;<>;\n if (HexToInt(message.data) == 1) {\n ack_config(\"ACK-INVADE\");\n }\n break;\n case '000f': // receive invade detection state, push to readonly configs\n let invade_state = parseInt(message.data) == 1;\n AddValue(codeValues, \"imei\", serverParams.Imei);\n AddValue(codeValues, \"invade_enabled\", invade_state);\n configsToUpdate.push({\n 'code': configIds.ReadFromDevice.InvadeDetectionRead,\n 'value': invade_state ? 'true' : 'false'\n });\n configsToAck.push(configIds.ReadFromDevice.InvadeDetectionRead);\n break;\n case '0010': // position update received -> AEROSENSE;DIST-POS;<>;>;<>;\n let x = HexToFloat32(message.data.slice(8, 16)).toFixed(2);\n let y = HexToFloat32(message.data.slice(16, 24)).toFixed(2);\n AddValue(codeValues, \"imei\", serverParams.Imei);\n AddValue(codeValues, \"pos_x\", x);\n AddValue(codeValues, \"pos_y\", y);\n let position_message = \"AEROSENSE;DIST-POS;\" + serverParams.Imei + \";\" + x + \";\" + y + \";\";\n sendMessageToLocalhost(position_message);\n //no ack as positions resent regularly\n break;\n case '0011': // ack negative fall detection\n // parse positions\n let posx_neg = HexToFloat32(message.data.slice(0, 8)).toFixed(2);\n let posy_neg = HexToFloat32(message.data.slice(8, 16)).toFixed(2);\n // create message\n let negfall_message = \"AEROSENSE;NEGFALL;\" + serverParams.Imei + \";\" + posx_neg + \";\" + posy_neg + \";\"\n sendMessageToLocalhost(negfall_message);\n AddValue(codeValues, \"toSend\", negfall_message);\n AddValue(codeValues, \"imei\", serverParams.Imei);\n // send ack\n let negfall_response_hex = message.header + \"00000006001100000001\";\n AddValue(codeValues, \"ack\", negfall_response_hex);\n break;\n case '0012': // reconnect message\n message.radar_id = message.data.slice(2);\n imei = message.radar_id;\n const response_reconnect_OK = \"00000006001200000001\";\n ack = message.header + response_reconnect_OK;\n AddValue(codeValues, \"ack\", ack);\n AddValue(codeValues, \"imei\", imei);\n let reply = \"AEROSENSE-ASSOCIATE;\" + imei + \";\" + serverParams.Guid + \";\"\n sendMessageToLocalhost(reply);\n AddValue(codeValues, \"toSend\", reply);\n break;\n case '0013': // firmware version response, push to Read only configs\n let firmware_version = `${HexToInt(message.data.slice(0,2))}.${HexToInt(message.data.slice(2,4))}.${HexToInt(message.data.slice(4,6))}.${HexToInt(message.data.slice(6,8))}`; // just raw hex for now\n AddValue(codeValues, \"imei\", serverParams.Imei);\n AddValue(codeValues, \"firmware_ver\", firmware_version);\n configsToUpdate.push({\n 'code': configIds.ReadFromDevice.FirmwareRead,\n 'value': firmware_version\n });\n configsToAck.push(configIds.ReadFromDevice.ReadAll);\n configsToAck.push(configIds.ReadFromDevice.FirmwareRead);\n // internal ack config\n // ack_config(\"ACK-VERSION\");\n // update LastDateTimeRead\n configsToUpdate.push({\n 'code': configIds.ReadFromDevice.LastDateTimeRead,\n 'value': moment().format('YYYY/MM/DD, HH:mm:ss')\n });\n break;\n case '0014': // Radar reset received\n if (message.data == '0d0d0d0d') { // message must contein this value according to docs\n let reset_message = \"AEROSENSE;USERRESET;\" + serverParams.Imei + \";\";\n sendMessageToLocalhost(reset_message);\n AddValue(codeValues, \"toSend\", reset_message);\n AddValue(codeValues, \"imei\", serverParams.Imei);\n }\n // no ack\n break;\n case '0015': // Enable Machine learning set acknowledge AEROSENSE;ACK-MACHINELEARN;<>;\n ack_config(\"ACK-MACHINELEARN\");\n break;\n case '0016': // receive machine learning state, not in use\n let machinelearning_state = parseInt(message.data) == 1;\n AddValue(codeValues, \"imei\", serverParams.Imei);\n AddValue(codeValues, \"machinelearning_enabled\", machinelearning_state);\n configsToUpdate.push({\n 'code': configIds.ReadFromDevice.EnableMachineLearningRead,\n 'value': machinelearning_state ? 'true' : 'false'\n });\n configsToAck.push(configIds.ReadFromDevice.EnableMachineLearningRead);\n break;\n default:\n imei = serverParams.Imei;\n AddValue(codeValues, \"imei\", imei);\n AddValue(codeValues, \"Error\", \"Unhandled message received of type: \" + message.function);\n }\n var dataToReceiver = {\n 'values': codeValues\n };\n if (configsToAck.length > 0) {\n dataToReceiver.configsToAck = configsToAck\n };\n if (configsToUpdate.length > 0) {\n dataToReceiver.configsToUpdate = configsToUpdate\n };\n if (configsToSend.length > 0) {\n dataToReceiver.configsToSend = configsToSend\n };\n console.log(dataToReceiver);\n }\n return {\n 'output': dataToReceiver\n }\n //---------------------HELPERS START----------------------------\n function ack_config(ack_command) {\n if (serverParams.Imei != null) {\n AddValue(codeValues, \"imei\", serverParams.Imei);\n let ack_message = \"AEROSENSE;\" + ack_command + \";\" + serverParams.Imei + \";\";\n AddValue(codeValues, \"toSend\", ack_message);\n sendMessageToLocalhost(ack_message);\n } else { //only used for debugging\n AddValue(codeValues, \"imei\", \"6796c41dc6e44e3db8d1cadce00abe6b\");\n AddValue(codeValues, \"error\", \"serverParams do not contain Imei!\")\n }\n }\n\n function AddValue(msgArray, p1, p2) {\n var cvpair = {\n code: p1,\n value: p2\n };\n msgArray.push(cvpair);\n }\n\n function sendMessageToLocalhost(str) {\n if (localTesting) {\n console.log(\"Sending message to server: \" + str);\n } else {\n var server = '127.0.0.1';\n var c = createConnection(5678, server);\n c.write(`${str}`);\n c.end();\n }\n }\n\n 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 //---------------------HELPERS END----------------------------\n //---------------------CONVERTERS START----------------------------\n /**\n * Convert hex string to integer\n * @param {String} hex_string hex string\n * @returns Integer number\n */\n function HexToInt(hex_string) {\n return parseInt(hex_string, 16);\n }\n\n function HexToFloat32(hex_string) {\n let int = parseInt(hex_string, 16);\n if (int > 0 || int < 0) {\n var sign = (int >>> 31) ? -1 : 1;\n var exp = (int >>> 23 & 0xff) - 127;\n var mantissa = ((int & 0x7fffff) + 0x800000).toString(2);\n var float32 = 0\n for (i = 0; i < mantissa.length; i += 1) {\n float32 += parseInt(mantissa[i]) ? Math.pow(2, exp) : 0;\n exp--\n }\n return float32 * sign;\n } else {\n return 0;\n }\n }\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(msg, params, rawFromBytes, raw, oystaTemplate, globalTemplate, arrays, commandsToExecute, serverParams, messageTypeCode, messageTypeLocalCode, messageTypeName, configs, configIds, commandsWaiting, false)\n // map output to global var\n dataToReceiver = return_values.output;\n}","Type":0,"ProtocolActionObjects":[]}],"Groups":[{"Id":4207,"Parent":null,"Name":"Feature","Json":"{\"description\":\"All AeroSense Features\",\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":4208,"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"RadarSettings","Json":"{\"description\":\"Configuration for Radar Unit.\",\"columns\":2,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":4524,"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"ReadFromDevice","Json":"{\"description\":\"Contains values downloaded from the device.\",\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]},{"Id":4800,"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]}]},"Name":"No activity monitor","Json":"{\"description\":\"Send alarms when no activity is detected.\",\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]}","DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"ProtocolActionObjects":[]}],"GroupParams":[{"Id":7396,"Group":{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"Show RadarSettings","Json":"{\"name\":\"Show RadarSettings\",\"default\":\"\",\"description\":null,\"type\":\"enable\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6619,"Group":{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"StopSendingRealtimePos","Json":"{\"name\":\"StopSendingRealtimePos\",\"default\":\"\",\"description\":\"Stop sending realtime positions.\",\"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\":7}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6618,"Group":{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"StartSendingRealtimePos","Json":"{\"name\":\"StartSendingRealtimePos\",\"default\":\"\",\"description\":\"Start sending realtime positions\",\"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\":6}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6617,"Group":{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"EnableHeatmap","Json":"{\"name\":\"EnableHeatmap\",\"default\":\"true\",\"description\":\"Enable heatmap images.\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":true,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Currently not supported. Please switch off.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6292,"Group":{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"EnableMachineLearning","Json":"{\"name\":\"EnableMachineLearning\",\"default\":\"false\",\"description\":\"Turn on machine learning algorythm.\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"The machine learning algorithm is to further reduce the false alerts of fall detection for better user experiences. However, it may result in lower accuracy in certain scenarios.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":4}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6291,"Group":{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"InvadeDetection","Json":"{\"name\":\"InvadeDetection\",\"default\":\"true\",\"description\":\"Enable activity monitoring feature.\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":5}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6290,"Group":{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"TimeInterval","Json":"{\"name\":\"TimeInterval\",\"default\":\"\",\"description\":\"Time interval to trigger the fall detection (in seconds).\",\"type\":\"number\",\"suffix\":\"s\",\"prefix\":null,\"min\":30,\"max\":300,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":2}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6289,"Group":{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"WorkHeight","Json":"{\"name\":\"WorkHeight\",\"default\":\"\",\"description\":\"Set the mounted height of radar unit.\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":1.4,\"max\":2.2,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":0}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":5802,"Group":{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"WorkRange","Json":"{\"name\":\"WorkRange\",\"default\":\"\",\"description\":\"Set the work range of the sensor\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":0.5,\"max\":7,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":1}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6621,"Group":{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"WorkRangeRead","Json":"{\"name\":\"WorkRangeRead\",\"default\":\"\",\"description\":\"Workrange as read from the device.\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":true,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":4}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6624,"Group":{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"ReadAll","Json":"{\"name\":\"ReadAll\",\"default\":\"\",\"description\":\"Read values from Device.\",\"type\":\"button\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[{"Type":1,"NewValue":"{\"Id\":6624,\"Group\":{\"Id\":4524,\"Name\":\"ReadFromDevice\",\"Json\":{\"description\":\"Contains values downloaded from the device.\",\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]},\"Parent\":null,\"Device\":null,\"DeviceRelated\":false,\"IsList\":false,\"IsAdminOnly\":false,\"Deleted\":false,\"Children\":[]},\"Name\":\"ReadAll\",\"Json\":\"{\\\"name\\\":\\\"ReadAll\\\",\\\"default\\\":\\\"\\\",\\\"description\\\":\\\"Read values from Device.\\\",\\\"type\\\":\\\"button\\\",\\\"suffix\\\":null,\\\"prefix\\\":null,\\\"min\\\":null,\\\"max\\\":null,\\\"futureOnly\\\":false,\\\"integerOnly\\\":false,\\\"isReadOnly\\\":false,\\\"isHidden\\\":false,\\\"minLength\\\":null,\\\"maxLength\\\":null,\\\"helpText\\\":null,\\\"options\\\":[],\\\"toTranslate\\\":[\\\"name\\\",\\\"description\\\",\\\"helpText\\\"]}\",\"Default\":\"\",\"Command\":null,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1688729222},{"Type":0,"NewValue":"{\"Id\":6624,\"Group\":{\"Id\":4524,\"Name\":\"ReadFromDevice\",\"Json\":{\"description\":\"Contains values downloaded from the device.\",\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]},\"Parent\":null,\"Device\":null,\"DeviceRelated\":false,\"IsList\":false,\"IsAdminOnly\":false,\"Deleted\":false,\"Children\":[]},\"Name\":\"ReadAll\",\"Json\":\"{\\\"name\\\":\\\"ReadAll\\\",\\\"default\\\":\\\"\\\",\\\"description\\\":\\\"Read values from Device.\\\",\\\"type\\\":\\\"button\\\",\\\"suffix\\\":null,\\\"prefix\\\":null,\\\"min\\\":null,\\\"max\\\":null,\\\"futureOnly\\\":false,\\\"integerOnly\\\":false,\\\"isReadOnly\\\":false,\\\"isHidden\\\":false,\\\"minLength\\\":null,\\\"maxLength\\\":null,\\\"helpText\\\":null,\\\"options\\\":[],\\\"toTranslate\\\":[\\\"name\\\",\\\"description\\\",\\\"helpText\\\"]}\",\"Default\":\"\",\"Command\":{\"Id\":3058,\"Protocol\":{\"Id\":160,\"Code\":\"AeroSense\",\"Version\":\"0.2\",\"FirmwareVersion\":\"\",\"Product\":null,\"AvailableVersions\":[],\"HistoryVersions\":[],\"IsChanged\":true},\"Name\":\"GetAll\",\"TemplateSMS\":null,\"Template\":null,\"AckTemplate\":null,\"Operation\":\"// configs to send on all read only items\\n// they will turn amber\\n// on return ack individual items\\n// auto ack read all button\",\"AvoidResending\":false,\"FollowParentSentType\":false,\"SendingType\":0,\"CommandToUpdateId\":null,\"ParentId\":null,\"Parent\":null,\"HasAck\":false,\"HexString\":false,\"SendAttempts\":1,\"Order\":null},\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1688729227},{"Type":1,"NewValue":"{\"Id\":6624,\"Group\":{\"Id\":4524,\"Name\":\"ReadFromDevice\",\"Json\":{\"description\":\"Contains values downloaded from the device.\",\"columns\":1,\"order\":1,\"listSize\":1,\"toTranslate\":[\"name\",\"description\"]},\"Parent\":null,\"Device\":null,\"DeviceRelated\":false,\"IsList\":false,\"IsAdminOnly\":false,\"Deleted\":false,\"Children\":[]},\"Name\":\"ReadAll\",\"Json\":\"{\\\"name\\\":\\\"ReadAll\\\",\\\"default\\\":\\\"\\\",\\\"description\\\":\\\"Read values from Device.\\\",\\\"type\\\":\\\"button\\\",\\\"suffix\\\":null,\\\"prefix\\\":null,\\\"min\\\":null,\\\"max\\\":null,\\\"futureOnly\\\":false,\\\"integerOnly\\\":false,\\\"isReadOnly\\\":false,\\\"isHidden\\\":false,\\\"minLength\\\":null,\\\"maxLength\\\":null,\\\"helpText\\\":null,\\\"options\\\":[],\\\"toTranslate\\\":[\\\"name\\\",\\\"description\\\",\\\"helpText\\\"]}\",\"Default\":\"\",\"Command\":null,\"ProtocolActionObjects\":[],\"Tags\":[]}","Timestamp":1688998381}],"Tags":[]},{"Id":6623,"Group":{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"TimeLimitRead","Json":"{\"name\":\"TimeLimitRead\",\"default\":\"\",\"description\":\"Timelimit read from the device (s).\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":5}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6622,"Group":{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"WorkHeightRead","Json":"{\"name\":\"WorkHeightRead\",\"default\":\"\",\"description\":\"Workheight read from the device.\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":true,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":7397,"Group":{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"LastDateTimeRead","Json":"{\"name\":\"LastDateTimeRead\",\"default\":\"\",\"description\":\"Date time of last parameter read.\",\"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\":1}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6625,"Group":{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"FirmwareRead","Json":"{\"name\":\"FirmwareRead\",\"default\":\"\",\"description\":\"Firmware read from the device.\",\"type\":\"text\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":true,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6798,"Group":{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"EnableHeatMapRead","Json":"{\"name\":\"EnableHeatMapRead\",\"default\":\"\",\"description\":\"Enable Heatmap state read from device.\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":true,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":6}","Default":"false","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6797,"Group":{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"InvadeDetectionRead","Json":"{\"name\":\"InvadeDetectionRead\",\"default\":\"false\",\"description\":\"Activity monitoring state read from device.\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":true,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":8}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6796,"Group":{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","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":"EnableMachineLearningRead","Json":"{\"name\":\"EnableMachineLearningRead\",\"default\":\"false\",\"description\":\"Enable Machine Learning state read from device.\",\"type\":\"checkbox\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":true,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"],\"order\":7}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":7394,"Group":{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","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":"Enable Disable No activity monitor","Json":"{\"name\":\"Enable Disable No activity monitor\",\"default\":\"true\",\"description\":\"Enable no Activity Monitor\",\"type\":\"enable\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"If enabled server will send alerts when no activity is detected for the timespan set.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"true","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":7395,"Group":{"Id":4800,"Name":"No activity monitor","Json":{"description":"Send alarms when no activity is detected.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":{"Id":4207,"Name":"Feature","Json":{"description":"All AeroSense Features","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[{"Id":4208,"Name":"RadarSettings","Json":{"description":"Configuration for Radar Unit.","columns":2,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","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":"No Activity","Json":"{\"name\":\"No Activity\",\"default\":\"\",\"description\":\"No Activity Interval (minutes)\",\"type\":\"number\",\"suffix\":null,\"prefix\":null,\"min\":1,\"max\":60,\"futureOnly\":false,\"integerOnly\":true,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":\"Set the no activity monitor to send an alert if no message has been received for the time frame set in minutes.\",\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":null,"ProtocolActionObjects":[],"Tags":[]},{"Id":6624,"Group":{"Id":4524,"Name":"ReadFromDevice","Json":{"description":"Contains values downloaded from the device.","columns":1,"order":1,"listSize":1,"toTranslate":["name","description"]},"Parent":null,"Device":null,"DeviceRelated":false,"IsList":false,"IsAdminOnly":false,"Deleted":false,"Children":[]},"Name":"ReadAll","Json":"{\"name\":\"ReadAll\",\"default\":\"\",\"description\":\"Read values from Device.\",\"type\":\"button\",\"suffix\":null,\"prefix\":null,\"min\":null,\"max\":null,\"futureOnly\":false,\"integerOnly\":false,\"isReadOnly\":false,\"isHidden\":false,\"minLength\":null,\"maxLength\":null,\"helpText\":null,\"options\":[],\"toTranslate\":[\"name\",\"description\",\"helpText\"]}","Default":"","Command":{"Id":3058,"Protocol":{"Id":160,"Code":"AeroSense","Version":"0.2","FirmwareVersion":"","Product":null,"AvailableVersions":[],"HistoryVersions":[],"IsChanged":true},"Name":"GetAll","TemplateSMS":null,"Template":null,"AckTemplate":null,"Operation":"// configs to send on all read only items\n// they will turn amber\n// on return ack individual items\n// auto ack read all button","AvoidResending":false,"FollowParentSentType":false,"SendingType":0,"CommandToUpdateId":null,"ParentId":null,"Parent":null,"HasAck":false,"HexString":false,"SendAttempts":1,"Order":null},"ProtocolActionObjects":[],"Tags":[]}],"ProtocolChanges":[{"Version":"0.2","UserName":"Sean-Admin","Resource":"GroupParam","Name":"ReadAll","Message":"(Update) (ReadAll) setting getAll command\n","Timestamp":1688729222},{"Version":"0.2","UserName":"Sean-Admin","Resource":"GroupParam","Name":"ReadAll","Message":"Associate groupParam ReadAll to command GetAll","Timestamp":1688729227},{"Version":"0.2","UserName":"Sean-Admin","Resource":"Command","Name":"GetAll","Message":"(Update) (GetAll) set GetAllto Ack","Timestamp":1688729273},{"Version":"0.2","UserName":"Sean-Admin","Resource":"Command","Name":"GetAll","Message":"(Update) (GetAll) Direct ack for GetAll button","Timestamp":1688729504},{"Version":"0.2","UserName":"Sean-Admin","Resource":"Command","Name":"GetAll","Message":"(Update) (GetAll) trying different ack","Timestamp":1688732397},{"Version":"0.2","UserName":"Sean-Admin","Resource":"GroupParam","Name":"ReadAll","Message":"(Update) (ReadAll) ReadAll to GetFirmware","Timestamp":1688998381}],"ProtocolActionObjects":[],"Tags":[]} \ No newline at end of file