Data Lake¶
Overview¶
The ExoSense Data Lake is a data-store of raw semi-structured files that hold historical signal values, event status changes, asset configuration changes, and group hierarchy information. The Data Lake provides ExoSense administrators with a secure, redundant and economical historical archive (cold storage) of signal values and metadata for assets and group hierarchies. Data in cold storage is available for periodic retrieval at a reduced storage cost.
Data Format¶
The archive files are ‘raw’ for the ExoSense solution, they are streamed efficiently to cold storage and it is expected that other standard software tools load, join, parse, and transform the data into formats required.
Signal History¶
When archiving is enabled, all signal values for all assets in a solution are archived in files on generally an hourly basis. Each solution can generate several signal archives per hour and signals can have values in each of these archive files.
Solution Signal Archives File Structure
tsdb/v=1/written_at=<date-time>Z/<random_id>.csv
Solution Signal Archives Example Listing
tsdb/v=1/written_at=2024-04-03T17:13:41.402Z/opq6zd.csv
tsdb/v=1/written_at=2024-04-03T17:13:59.953Z/057ob2.csv
tsdb/v=1/written_at=2024-04-03T17:20:41.374Z/25i30r.csv
tsdb/v=1/written_at=2024-04-03T18:29:59.965Z/nwfnae.csv
These files contain the raw signal data and timestamp, including rule state changes.
<signal_id1>,<value>,<timestamp>
<signal_id2>,<value>,<timestamp>
<signal_id1>,<value>,<timestamp>
<signal_id2>,<value>,<timestamp>
<signal_id3>,<value>,<timestamp>
<signal_id2>,<value>,<timestamp>
faa65f0a4e164b0691c44437b9cfb318,1717197065329705,16.4,
f91e57814b5849d8917351b082ff50a8,1717197065329705,0.0439,
d7854ad850cc45db86f36abd9b5e1271,1717197065329705,"[[7,1],[31.5,0.6],[44,0.8],[200,1.2],[250,0.8],[794,1],[1831,0.5],[4264,0.9]]",
b7406186e27e46cab8135f96a8c40e76,1717197065329705,16.4,
0049765f6f8b46dd8313d9ee351d7d80,1717197065329705,16.4,
77b268e7863c4b0f8934b8080a7cf7b9,1717197065329705,16.4,
d091713677104e95aa65aba7508af065,1717197065329705,1900.95,
2ecebfe303104ba3a1367c77ff2255ac,1717197065329705,24.11,
65f28b11d3af434ca1316310703c2848,1717197065329705,0.0439,
4c7e6446ff5c4c46bba6fbe3f26cec6b,1717197065329705,26.51,
bde2bc6d055f46128053b14c64f1c857,1717197065329705,106.28,
7bc6fe5a56184c7294fd5cd54ad7ea8b,1717197065329705,24.11,
010217dc85b34c52ba2180c17db5a88d,1717197079081976,63.64,
2e4d9815da5e4f6e8e6cb00d9c5b8a0b,1717197079081976,63.64,
4e13683cd09244ad95a858a7f0e0843f,1717197079081976,67.61,
7b8008016d9342649c276956c99d3b6f,1717197079081976,92.2,
863e9aa73a8b46a8a1aa2e76c6e031f7,1717197079081976,92.2,
921a4d7004be4b748cc7bd5191b3299f,1717197079081976,67.61,
ad88011aa66545398de594fd1906fee3,1717197079081976,"{""lat"":43.641324,""lng"":-96.213576}",
e549a40e7e8c4e9dbf71e2b7d5e8dad3,1717197079081976,"{""lat"":43.641324,""lng"":-96.213576}",
Asset History¶
When an asset is modified, a file is stored with all of it's configuration information, signal identifiers, etc.
Asset Archives File Structure
assets/v=1/written_at=<date-time>Z/<asset_uuid>.json
Asset Archives Example Listing
assets/v=1/written_at=2024-02-26T00:00:39.000Z/02fd5829-4d28-42dc-ad16-80d9ab2edcdc.json
assets/v=1/written_at=2024-02-26T05:14:23.000Z/82fdcd23-4568-acdc-4ef4-3188ab44daaf.json
These files contain all the signal and pipeline information identifiers, properties, metadata, subsystems, and dashboard information for the asset at that point in time.
Archive Format
{
"template": {
"asset": {
"id": "<ASSET_UUID>",
"name": "<ASSET NAME>>",
"description": "<Asset Description .....>",
"meta": {
"icon": "icon-asset-pump",
"location": { .. }, // information based on location pinned or signal
"deviceOrder": ["<identity1>","<identity2>",...], //preferred ordering of signal source groups
"assetImageId": "ac5d054a-b679-4a2d-b46b-dcc7e393c2f7",
"timezone": "America/Chicago", //optional asset timezone
"unitSystem": "usCustomary" //optional asset preferred unit system
}
},
"signals": { ... },
"channels": { ... },
"linkages": { ... }, //rule and transform details
"pipes": { ... }, //signal to linkages
"joins": { ... }, // pipes for transforms with multi inlets
"dashboards": { ... }, //dashboards and panel configuration
"subsystems": { ... }, //asset's subsystems
"metadata": { ... } //asset's metadata
}
"template_specification_version": "v1.0.0", // Asset Archive File Version
"written_at": "2024-06-11T18:54:11.110Z"
}
Example Asset Archive File
{
"template": {
"asset": {
"id": "d2c64cb0-8352-4d15-87a6-d00aac861b6a",
"name": "Pump 4052",
"description": "Asset Description .....",
"meta": {
"icon": "icon-asset-pump",
"location": {
"mode": "pin",
"latlng": [44.0110021868678, -95.5868996986763],
"updated": 1709852471088
},
"deviceOrder": ["AA-1050"]
}
},
"signals": {
"pump temperature plus 10_s": {
"name": "pump temperature plus 10",
"type": "TEMPERATURE",
"units": "DEG_FAHRENHEIT",
"visualize": true,
"root": false,
"record": true,
"id": "c5b9ae47-5ec6-43d4-bdbe-4c634719132a"
},
"Vibration RMS Peak_s": {
"name": "Vibration RMS Peak",
"type": "VELOCITY",
"units": "INCH_PER_SEC",
"control": null,
"visualize": true,
"root": true,
"record": true,
"precision": 4,
"id": "92ff7e5c-b41b-41fe-88ba-5d8c79bd8578"
},
"Pump Temperature_s": {
"name": "Pump Temperature",
"type": "TEMPERATURE",
"units": "DEG_FAHRENHEIT",
"control": null,
"visualize": true,
"root": true,
"record": true,
"precision": 2,
"id": "a580e17a-b9ed-45be-b106-ba4a1edfa644"
},
"Speed_s": {
"name": "Speed",
"type": "ANGULAR_VEL",
"units": "ROTATIONS_PER_MIN",
"control": null,
"visualize": true,
"root": true,
"record": true,
"precision": 2,
"id": "f055505d-0205-44dc-85a5-85d8999bf603"
},
"Current Draw_s": {
"name": "Current Draw",
"type": "ELEC_CURRENT",
"units": "AMPERE",
"control": null,
"visualize": true,
"root": true,
"record": true,
"precision": 2,
"id": "d11f81e2-3c59-4354-8359-47bcd9b6d577"
},
"Suction Pressure_s": {
"name": "Suction Pressure",
"type": "PRESSURE",
"units": "PSI",
"control": null,
"visualize": true,
"root": true,
"record": true,
"precision": 2,
"id": "5b4afef6-c55b-48fb-af4c-4bc726512b64"
},
"Discharge Pressure_s": {
"name": "Discharge Pressure",
"type": "PRESSURE",
"units": "PSI",
"control": null,
"visualize": true,
"root": true,
"record": true,
"precision": 2,
"id": "1c35bd39-5b7e-41bd-9452-8f8555154d55"
},
"Motor Bearing Temperature_s": {
"name": "Motor Bearing Temperature",
"min": null,
"max": null,
"type": "TEMPERATURE",
"units": "DEG_FAHRENHEIT",
"control": null,
"visualize": true,
"favorite": null,
"record": true,
"target": null,
"baseline": null,
"precision": 2,
"displayFormat": null,
"signalTimeout": 20000,
"signalReportRate": null,
"id": "89b37d8d-4121-40ed-9f23-cf92305ffd6a"
},
"Flow Rate_s": {
"name": "Flow Rate",
"type": "FLOW",
"units": "GALLONS_PER_MIN",
"control": null,
"visualize": true,
"root": true,
"record": true,
"precision": 2,
"id": "daaf4058-6c5a-4811-a8b5-dc53fa08655b"
}
},
"channels": {
"Vibration RMS Peak_s": {
"id": "w9uew7vvgr7k0000.AA-1050.data_in.vib_rms"
},
"Pump Temperature_s": {"id": "w9uew7vvgr7k0000.AA-1050.data_in.temp_p"},
"Speed_s": {"id": "w9uew7vvgr7k0000.AA-1050.data_in.rpm"},
"Current Draw_s": {"id": "w9uew7vvgr7k0000.AA-1050.data_in.current"},
"Suction Pressure_s": {
"id": "w9uew7vvgr7k0000.AA-1050.data_in.pressure_s"
},
"Discharge Pressure_s": {
"id": "w9uew7vvgr7k0000.AA-1050.data_in.pressure_d"
},
"Motor Bearing Temperature_s": {
"id": "w9uew7vvgr7k0000.AA-1050.data_in.temp_bearing"
},
"Flow Rate_s": {"id": "w9uew7vvgr7k0000.AA-1050.data_in.flow"}
},
"linkages": {
"Create or Update Condition-1_l": {
"name": "Create or Update Condition",
"insight_id": "Exosensecpoli",
"function_id": "condition",
"constants": {
"level": 2,
"policy_id": "efc6ea16-e3e4-4827-a501-0df0ea4e168c"
},
"group_id": "",
"action_definition_id": "5ebd4964-362b-41be-819a-c2c4c1fcc821",
"enabled": true,
"checks": {},
"id": "d6723efb-584b-44e7-bd5e-7bc35c9d9b4c"
},
"Create or Update Condition_l": {
"name": "Create or Update Condition",
"insight_id": "Exosensecpoli",
"function_id": "condition",
"constants": {
"level": 2,
"policy_id": "e1f012f8-4b13-40aa-bb6f-659b4577132c"
},
"group_id": "",
"action_definition_id": "5ebd4964-362b-41be-819a-c2c4c1fcc821",
"enabled": true,
"checks": {},
"id": "04e4800b-7df1-4554-8dc9-ee5f2e060380"
},
"Discharge Pressure - Timeout_l": {
"name": "Discharge Pressure - Timeout",
"insight_id": "Transformer",
"function_id": "rTimeout",
"constants": {
"level": 3,
"modifier": {
"type": "count_in_duration",
"count": 1,
"duration": "2.4",
"inverted": true,
"duration_unit": "m"
},
"messageElse": null,
"messageMatch": null
},
"category": "timeout",
"group_id": "",
"checks": {},
"id": "d8af800e-c1db-43b5-9017-7bdda1b5e37d"
},
"Motor Bearing Temperature - Dynamic Threshold_l": {
"name": "Motor Bearing Temperature - Dynamic Threshold",
"insight_id": "Transformer",
"function_id": "rDThreshold",
"constants": {
"op": [">", ">"],
"level": [3, 2],
"value": [120, 110],
"modifier": [
{"type": "duration", "duration": "1", "duration_unit": "m"},
{"type": "duration", "duration": "1", "duration_unit": "m"}
],
"messageElse": "Value does not equal",
"messageMatch": [null, null]
},
"group_id": "",
"checks": {},
"id": "af24ad9b-b124-4783-b264-ef97b1adf3aa"
},
"Motor Bearing Temperature - Threshold_l": {
"name": "Motor Bearing Temperature - Threshold",
"insight_id": "Transformer",
"function_id": "rDThreshold",
"constants": {
"op": [">", ">"],
"level": [3, 2],
"value": [110, 93],
"modifier": [
{"type": "duration", "duration": "30", "duration_unit": "s"},
{"type": "duration", "duration": "30", "duration_unit": "s"}
],
"messageElse": null,
"messageMatch": [null, null]
},
"category": "default",
"group_id": "",
"checks": {},
"id": "1776c284-b38c-4da6-ae65-1f63a3e69fd9"
},
"Pump Temperature - adder_l": {
"name": "Pump Temperature - adder",
"insight_id": "Simpleinsightmodule",
"function_id": "adder",
"constants": {"value": 10},
"checks": {},
"id": "db197f77-9222-431e-9323-32c999923299"
},
"Speed - Threshold_l": {
"name": "Speed - Threshold",
"insight_id": "Transformer",
"function_id": "rDThreshold",
"constants": {
"op": ["<"],
"level": [2],
"value": [2100],
"modifier": [
{"type": "duration", "duration": "30", "duration_unit": "s"}
],
"messageElse": null,
"messageMatch": [null]
},
"category": "default",
"group_id": "",
"checks": {
"pre": {
"f055505d-0205-44dc-85a5-85d8999bf603": [
{"kind": "number", "lower": 1900, "upper": 2300, "inside": true}
]
}
},
"id": "2a7b4deb-bd02-45f9-b64e-11d973401f51"
},
"pipes": [
["Vibration RMS Peak_s"],
["Pump Temperature_s"],
["Speed_s", "Speed - Threshold_l", "Create or Update Condition-1_l"],
["Speed_s", "Speed - Threshold_l"],
["Current Draw_s"],
["Suction Pressure_s"],
["Discharge Pressure_s", "Discharge Pressure - Timeout_l"],
["Discharge Pressure_s"],
["Motor Bearing Temperature_s","Motor Bearing Temperature - Dynamic Threshold_l"],
["Motor Bearing Temperature_s","Motor Bearing Temperature - Threshold_l","Create or Update Condition_l"],
["Motor Bearing Temperature_s","Motor Bearing Temperature - Threshold_l"],
["Flow Rate_s"]
],
"joins": null,
"dashboards": {
"dashboards": [
{
"name": "Water",
"order": 1,
"panels": [
{
"type": "complexlinechart",
"position": {"h": 16, "i": "0", "w": 12, "x": 0, "y": 0},
"configuration": {
"axes": [
{
"axis": {"max": 100, "min": 0, "auto": true},
"type": "PRESSURE",
"unit": ""
},
{
"axis": {"max": 100, "min": 0, "auto": true},
"type": "FLOW",
"unit": ""
}
],
"title": "Trends Chart",
"liveMode": {"unit": "m", "value": 30, "maxDatapoints": 500},
"baselines": [],
"showUnits": true,
"showLegend": false,
"showMinMax": false,
"defaultTime": {
"unit" : null,
"value" : null,
"enabled" : null,
"liveMode": true
},
"timeOptions": [
{"unit": "h", "value": 1, "enabled": true},
{"unit": "h", "value": 12, "enabled": true},
{"unit": "d", "value": 1, "enabled": true},
{"unit": "d", "value": 5, "enabled": true},
{"unit": "d", "value": 30, "enabled": true}
],
"showDataGaps": true,
"showGridLines": false,
"dataGapMultiplier": null,
"displayedThresholds": [],
"displayAllThresholds": false,
"showTimelineNavigator": true,
"displayAdditionalErrorInfo": false
},
"metrics": [
"1c35bd39-5b7e-41bd-9452-8f8555154d55",
"daaf4058-6c5a-4811-a8b5-dc53fa08655b",
"5b4afef6-c55b-48fb-af4c-4bc726512b64"
],
"rules": []
}
]
},
{
"name": "Real-time",
"order": 0,
"panels": [
{
"type": "metadata",
"position": {"h": 10, "i": "0", "w": 6, "x": 0, "y": 27},
"configuration": {
"title": "My Meta Panel",
"showAll": true,
"assetIds": ["d2c64cb0-8352-4d15-87a6-d00aac861b6a"],
"showSearch": true,
"allowEditing": true,
"metadataKeys": ["Equipment Number", "Manager"]
},
"metrics": [],
"rules": []
},
{
"type": "currentvalue",
"position": {"h": 4, "i": "1", "w": 6, "x": 0, "y": 11},
"configuration": {
"title": "Motor Bearing Temperature",
"units": "DEG_FAHRENHEIT",
"textSize": 50,
"showUnits": true,
"thresholds": {
"warningMax" : 0,
"warningMin" : 0,
"criticalMax": 0,
"criticalMin": 0
},
"showThresholds": true,
"hideValueDuringTimeout": true
},
"metrics": ["89b37d8d-4121-40ed-9f23-cf92305ffd6a"],
"rules": []
},
{
"type": "horizontalgauge",
"position": {"h": 9, "i": "5", "w": 6, "x": 6, "y": 6},
"configuration": {
"ticks": {
"majorInterval" : 1,
"minorInterval" : 1,
"majorIntervalCustom": null,
"minorIntervalCustom": null
},
"title": "Panel Title",
"showIcons": null,
"showTicks": true,
"gaugeSignals": [
{
"units": "PSI",
"limits": {"max": 40, "min": 0, "auto": false},
"signalId": "5b4afef6-c55b-48fb-af4c-4bc726512b64",
"fillFromBottom": true,
"showThresholds": true,
"hideValueDuringTimeout": null
},
{
"units": "PSI",
"limits": {"max": 40, "min": 0, "auto": false},
"signalId": "1c35bd39-5b7e-41bd-9452-8f8555154d55",
"fillFromBottom": true,
"showThresholds": true,
"hideValueDuringTimeout": null
},
{
"units": "DEG_FAHRENHEIT",
"limits": {"max": 200, "min": 0, "auto": false},
"signalId": "89b37d8d-4121-40ed-9f23-cf92305ffd6a",
"fillFromBottom": true,
"showThresholds": true,
"hideValueDuringTimeout": null
}
],
"hideTimestamps": null,
"showAssetNames": true,
"displayedThresholds": [
{
"ruleId": "049dd6de-08b2-47d4-be0b-5f0f6ce4f613",
"display": true,
"lineLabelText": ">110.00°F for 30 seconds",
"thresholdItemKey": "049dd6de-08b2-47d4-be0b-5f0f6ce4f613_index_0",
"useDefaultLineLabelText": false
},
{
"ruleId": "049dd6de-08b2-47d4-be0b-5f0f6ce4f613",
"display": true,
"lineLabelText": ">93.00°F for 30 seconds",
"thresholdItemKey": "049dd6de-08b2-47d4-be0b-5f0f6ce4f613_index_1",
"useDefaultLineLabelText": false
}
],
"displayAllThresholds": false,
"showThresholdsAsLines": false
},
"metrics": [
"1c35bd39-5b7e-41bd-9452-8f8555154d55",
"5b4afef6-c55b-48fb-af4c-4bc726512b64",
"89b37d8d-4121-40ed-9f23-cf92305ffd6a"
],
"rules": [
{
"signal_id": "89b37d8d-4121-40ed-9f23-cf92305ffd6a",
"rule_id" : "049dd6de-08b2-47d4-be0b-5f0f6ce4f613"
}
]
},
{
"type": "moongauge",
"position": {"h": 6, "i": "1", "w": 3, "x": 9, "y": 0},
"configuration": {
"ticks": {
"majorInterval" : 1,
"minorInterval" : 1,
"majorIntervalCustom": null,
"minorIntervalCustom": null
},
"title": "Pump Temperature",
"showTicks": true,
"analogNeedle": null,
"gaugeSignals": [
{
"units": "DEG_FAHRENHEIT",
"limits": {"max": 140, "min": 0, "auto": false},
"signalId": "a580e17a-b9ed-45be-b106-ba4a1edfa644",
"fillFromBottom": true,
"showThresholds": true,
"hideValueDuringTimeout": null
}
],
"displayedThresholds": [
{
"ruleId": "4d5c4f8b-9464-44c8-bee9-83c58129cfa8",
"display": true,
"lineLabelText": ">120.00°F for 1 minutes",
"thresholdItemKey": "4d5c4f8b-9464-44c8-bee9-83c58129cfa8_index_0",
"useDefaultLineLabelText": false
},
{
"ruleId": "4d5c4f8b-9464-44c8-bee9-83c58129cfa8",
"display": true,
"lineLabelText": ">110.00°F for 1 minutes",
"thresholdItemKey": "4d5c4f8b-9464-44c8-bee9-83c58129cfa8_index_1",
"useDefaultLineLabelText": false
}
],
"displayAllThresholds": false,
"showThresholdsAsLines": true
},
"metrics": ["a580e17a-b9ed-45be-b106-ba4a1edfa644"],
"rules": [
{
"signal_id": "a580e17a-b9ed-45be-b106-ba4a1edfa644",
"rule_id" : "4d5c4f8b-9464-44c8-bee9-83c58129cfa8"
}
]
},
{
"type": "complexlinechart",
"position": {"h": 12, "i": "4", "w": 12, "x": 0, "y": 15},
"configuration": {
"axes": [
{
"id": "FLOW",
"axis": {"max": 100, "min": 0, "auto": false},
"name": "Flow Rate",
"type": "FLOW",
"unit": "GALLONS_PER_MIN",
"added": 0,
"label": "",
"isCustom": null,
"placement": "left",
"signal_ids": null
},
{
"id": "ANGULAR_VEL",
"axis": {"max": null, "min": 0, "auto": true},
"name": "Speed",
"type": "ANGULAR_VEL",
"unit": "ROTATIONS_PER_MIN",
"added": 1,
"label": "",
"isCustom": null,
"placement": "right",
"signal_ids": ["f055505d-0205-44dc-85a5-85d8999bf603"]
}
],
"title": "Trends Chart",
"liveMode": {"unit": "m", "value": 30, "maxDatapoints": 500},
"baselines": [],
"showUnits": true,
"showLegend": false,
"showMinMax": false,
"defaultTime": {
"unit" : null,
"value" : null,
"enabled" : null,
"liveMode": true
},
"timeOptions": [
{"unit": "h", "value": 1, "enabled": true},
{"unit": "h", "value": 12, "enabled": true},
{"unit": "d", "value": 1, "enabled": true},
{"unit": "d", "value": 5, "enabled": true},
{"unit": "d", "value": 30, "enabled": true}
],
"showDataGaps": true,
"showGridLines": false,
"dataGapMultiplier": null,
"displayedThresholds": [],
"highlightedSignalId": null,
"displayAllThresholds": false,
"showTimelineNavigator": true,
"hideValueDuringTimeout": null,
"displayAdditionalErrorInfo": false
},
"metrics": [
"daaf4058-6c5a-4811-a8b5-dc53fa08655b",
"f055505d-0205-44dc-85a5-85d8999bf603"
],
"rules": []
},
{
"type": "moongauge",
"position": {"h": 6, "i": "3", "w": 3, "x": 6, "y": 0},
"configuration": {
"ticks": {
"majorInterval" : 1,
"minorInterval" : 1,
"majorIntervalCustom": null,
"minorIntervalCustom": null
},
"title": "Motor Bearing Temperature",
"showTicks": false,
"analogNeedle": null,
"gaugeSignals": [
{
"units": "DEG_FAHRENHEIT",
"limits": {"max": 140, "min": 0, "auto": false},
"signalId": "89b37d8d-4121-40ed-9f23-cf92305ffd6a",
"fillFromBottom": true,
"showThresholds": true,
"hideValueDuringTimeout": true
}
],
"displayedThresholds": [
{
"ruleId": "049dd6de-08b2-47d4-be0b-5f0f6ce4f613",
"display": true,
"lineLabelText": ">110.00°F for 30 seconds",
"thresholdItemKey": "049dd6de-08b2-47d4-be0b-5f0f6ce4f613_index_0",
"useDefaultLineLabelText": false
},
{
"ruleId": "049dd6de-08b2-47d4-be0b-5f0f6ce4f613",
"display": true,
"lineLabelText": ">93.00°F for 30 seconds",
"thresholdItemKey": "049dd6de-08b2-47d4-be0b-5f0f6ce4f613_index_1",
"useDefaultLineLabelText": false
}
],
"displayAllThresholds": false,
"showThresholdsAsLines": true
},
"metrics": ["89b37d8d-4121-40ed-9f23-cf92305ffd6a"],
"rules": [
{
"signal_id": "89b37d8d-4121-40ed-9f23-cf92305ffd6a",
"rule_id" : "049dd6de-08b2-47d4-be0b-5f0f6ce4f613"
}
]
},
{
"type": "imageoverlay",
"position": {"h": 11, "i": "0", "w": 6, "x": 0, "y": 0},
"configuration": {
"image": "https://s3.us-west-1.amazonaws.com/murano-content-service-staging/s1x1nkmsi0mio0000/e7e245b0-cf13-4cf7-838d-ce76cfe8e3a3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAXP6RGEJ4GQPBSBZO%2F20210120%2Fus-west-1%2Fs3%2Faws4_request&X-Amz-Date=20210120T223224Z&X-Amz-Expires=99999&X-Amz-SignedHeaders=host&X-Amz-Signature=8b6818cd71547d516740a47f69729051c4a4452f05ffbf1cc0ba4f06fa6c145e",
"title": "Real-time Condition",
"imageId": "e7e245b0-cf13-4cf7-838d-ce76cfe8e3a3",
"iconSize": "compact",
"assetPositions": [],
"metricPositions": [
{
"h": 0,
"w": 0,
"x": 80.4056075565243,
"y": 54.2889602737223,
"name": "Suction Pressure",
"units": "PSI",
"status": null,
"metric_id": "5b4afef6-c55b-48fb-af4c-4bc726512b64"
},
{
"h": 0,
"w": 0,
"x": 82.7369087722979,
"y": 30.1899583961187,
"name": "Discharge Pressure",
"units": "PSI",
"status": null,
"metric_id": "1c35bd39-5b7e-41bd-9452-8f8555154d55"
},
{
"h": 0,
"w": 0,
"x": 32.0311073292225,
"y": 25.9527712528038,
"name": "Speed",
"units": "ROTATIONS_PER_MIN",
"status": null,
"metric_id": "f055505d-0205-44dc-85a5-85d8999bf603"
},
{
"h": 0,
"w": 0,
"x": 70.1090271868577,
"y": 41.3125746473204,
"name": "Flow Rate",
"units": "GALLONS_PER_MIN",
"status": null,
"metric_id": "daaf4058-6c5a-4811-a8b5-dc53fa08655b"
},
{
"h": 0,
"w": 0,
"x": 50.6815170554111,
"y": 29.9251341996616,
"name": "Vibration RMS Peak",
"units": "INCH_PER_SEC",
"status": null,
"metric_id": "92ff7e5c-b41b-41fe-88ba-5d8c79bd8578"
},
{
"h": 0,
"w": 0,
"x": 76.1315553276061,
"y": 22.2452325024033,
"name": "Pump Temperature",
"units": "DEG_FAHRENHEIT",
"status": null,
"metric_id": "a580e17a-b9ed-45be-b106-ba4a1edfa644"
},
{
"h": 0,
"w": 0,
"x": 37.0822599633986,
"y": 17.2135727697168,
"name": "Motor Bearing Temperature",
"units": "DEG_FAHRENHEIT",
"status": null,
"metric_id": "89b37d8d-4121-40ed-9f23-cf92305ffd6a"
},
{
"h": 0,
"w": 0,
"x": 2.50129192942374,
"y": 15.6246275909737,
"name": "Current Draw",
"units": "AMPERE",
"status": null,
"metric_id": "d11f81e2-3c59-4354-8359-47bcd9b6d577"
}
]
},
"metrics": [
"5b4afef6-c55b-48fb-af4c-4bc726512b64",
"89b37d8d-4121-40ed-9f23-cf92305ffd6a",
"d11f81e2-3c59-4354-8359-47bcd9b6d577",
"f055505d-0205-44dc-85a5-85d8999bf603",
"daaf4058-6c5a-4811-a8b5-dc53fa08655b",
"a580e17a-b9ed-45be-b106-ba4a1edfa644",
"92ff7e5c-b41b-41fe-88ba-5d8c79bd8578",
"1c35bd39-5b7e-41bd-9452-8f8555154d55"
],
"rules": [
{
"signal_id": "a580e17a-b9ed-45be-b106-ba4a1edfa644",
"rule_id" : "4d5c4f8b-9464-44c8-bee9-83c58129cfa8"
},
{
"signal_id": "89b37d8d-4121-40ed-9f23-cf92305ffd6a",
"rule_id" : "22b483c8-f4d4-4d15-8d00-cd213fbd343c"
}
]
}
]
},
{
"name": "Mechanicals",
"order": 2,
"panels": [
{
"type": "linechart",
"position": {"h": 6, "i": "0", "w": 12, "x": 0, "y": 12},
"configuration": {
"axes": [
{
"id": "VELOCITY",
"axis": {"max": 100, "min": 0, "auto": false},
"name": "Vibration RMS Peak",
"type": "VELOCITY",
"unit": "INCH_PER_SEC",
"added": 0,
"label": "",
"isCustom": null,
"placement": "left",
"signal_ids": null
},
{
"id": "ANGULAR_VEL",
"axis": {"max": 100, "min": 0, "auto": false},
"name": "Speed",
"type": "ANGULAR_VEL",
"unit": "ROTATIONS_PER_MIN",
"added": 1,
"label": "",
"isCustom": null,
"placement": "right",
"signal_ids": null
}
],
"title": "Vibration RMS Peak",
"liveMode": {"unit": "m", "value": 30, "maxDatapoints": 500},
"baselines": [],
"showUnits": true,
"showLegend": false,
"showMinMax": false,
"defaultTime": {
"unit" : null,
"value" : null,
"enabled" : null,
"liveMode": true
},
"timeOptions": [
{"unit": "h", "value": 1, "enabled": true},
{"unit": "h", "value": 12, "enabled": true},
{"unit": "d", "value": 1, "enabled": true},
{"unit": "d", "value": 5, "enabled": true},
{"unit": "d", "value": 30, "enabled": true}
],
"showDataGaps": true,
"showGridLines": false,
"dataGapMultiplier": null,
"displayedThresholds": [],
"highlightedSignalId": "92ff7e5c-b41b-41fe-88ba-5d8c79bd8578",
"displayAllThresholds": false,
"showTimelineNavigator": false,
"hideValueDuringTimeout": null,
"displayAdditionalErrorInfo": false
},
"metrics": [
"92ff7e5c-b41b-41fe-88ba-5d8c79bd8578",
"f055505d-0205-44dc-85a5-85d8999bf603"
],
"rules": []
},
{
"type": "complexlinechart",
"position": {"h": 12, "i": "0", "w": 12, "x": 0, "y": 0},
"configuration": {
"axes": [
{
"id": "TEMPERATURE",
"axis": {"max": null, "min": 0, "auto": true},
"name": "Motor Bearing Temperature",
"type": "TEMPERATURE",
"unit": "DEG_FAHRENHEIT",
"added": 0,
"label": "",
"isCustom": null,
"placement": "left",
"signal_ids": null
},
{
"id": "ANGULAR_VEL",
"axis": {"max": null, "min": null, "auto": true},
"name": "Speed",
"type": "ANGULAR_VEL",
"unit": "ROTATIONS_PER_MIN",
"added": 1,
"label": "",
"isCustom": null,
"placement": "right",
"signal_ids": ["f055505d-0205-44dc-85a5-85d8999bf603"]
}
],
"title": "Trends Chart",
"liveMode": {"unit": "m", "value": 30, "maxDatapoints": 500},
"baselines": [],
"showUnits": true,
"showLegend": false,
"showMinMax": false,
"defaultTime": {
"unit" : null,
"value" : null,
"enabled" : null,
"liveMode": true
},
"timeOptions": [
{"unit": "h", "value": 1, "enabled": true},
{"unit": "h", "value": 12, "enabled": true},
{"unit": "d", "value": 1, "enabled": true},
{"unit": "d", "value": 5, "enabled": true},
{"unit": "d", "value": 30, "enabled": true}
],
"showDataGaps": true,
"showGridLines": false,
"dataGapMultiplier": null,
"displayedThresholds": [
{
"ruleId": "049dd6de-08b2-47d4-be0b-5f0f6ce4f613",
"lineLabelText": "",
"thresholdItemKey": "049dd6de-08b2-47d4-be0b-5f0f6ce4f613_index_0",
"showVerticalBands": true,
"showHorizontalLines": true,
"useDefaultLineLabelText": false
},
{
"ruleId": "049dd6de-08b2-47d4-be0b-5f0f6ce4f613",
"lineLabelText": "",
"thresholdItemKey": "049dd6de-08b2-47d4-be0b-5f0f6ce4f613_index_1",
"showVerticalBands": true,
"showHorizontalLines": true,
"useDefaultLineLabelText": false
}
],
"highlightedSignalId": null,
"displayAllThresholds": false,
"showTimelineNavigator": true,
"hideValueDuringTimeout": null,
"displayAdditionalErrorInfo": false
},
"metrics": [
"89b37d8d-4121-40ed-9f23-cf92305ffd6a",
"a580e17a-b9ed-45be-b106-ba4a1edfa644",
"f055505d-0205-44dc-85a5-85d8999bf603"
],
"rules": [
{
"signal_id": "89b37d8d-4121-40ed-9f23-cf92305ffd6a",
"rule_id" : "049dd6de-08b2-47d4-be0b-5f0f6ce4f613"
}
]
}
]
},
{
"name": "Files",
"order": 3,
"panels": [
{
"type": "currentvalue",
"position": {"h": 4, "i": "3", "w": 2, "x": 0, "y": 8},
"configuration": null,
"metrics": [],
"rules": []
},
{
"type": "log",
"position": {"h": 10, "i": "0", "w": 6, "x": 0, "y": 8},
"configuration": {"title": "Event Log"},
"metrics": [],
"rules": []
},
{
"type": "contentviewer",
"position": {"h": 8, "i": "0", "w": 4, "x": 0, "y": 0},
"configuration": {
"title": "Content Viewer",
"assets": ["d2c64cb0-8352-4d15-87a6-d00aac861b6a"],
"viewer": {
"type": "line_chart",
"line_chart": {
"type": "line_chart",
"schema": "auto",
"series": [
{"key": "", "name": "", "xKey": ""}
],
"xAxisKey": "",
"yAxisAuto": true,
"seriesAuto": true,
"xAxisTitle": "Test",
"yAxisFloor": 0,
"yAxisTitle": "test",
"yAxisCeiling": 100
}
},
"autoSwitch": true,
"fileFilter": {
"all": {"type": "all"},
"type": "all"
},
"includeUrl": false,
"includeMime": ["text/csv", "application/json"],
"openSidebar": false,
"showSidebar": false,
"includeVideo": false,
"showFilename": true,
"allowDownload": true,
"showCreatedInfo": true,
"showFileDropdown": true,
"onlyShowAssetImage": false
},
"metrics": [],
"rules": []
}
]
},
{
"name": "Barcharts",
"order": 4,
"panels": [
{
"type": "barchart",
"position": {"h": 12, "i": "0", "w": 12, "x": 0, "y": 0},
"configuration": {
"title": "Bar Chart",
"yAxis": {"max": 100, "min": 0, "auto": true},
"signals": [
{
"unit" : "GALLONS_PER_MIN" ,
"signalId" : "daaf4058-6c5a-4811-a8b5-dc53fa08655b",
"aggregate" : "diff_min_max" ,
"columnColor": "#1751C6"
}
],
"timezone": "America/Chicago",
"timeWindow": "1d",
"barDataType": "values",
"barDirection": "vertical",
"displayLabels": true,
"signalsDuration": "4h"
},
"metrics": ["daaf4058-6c5a-4811-a8b5-dc53fa08655b"],
"rules": []
}
]
}
],
"mapping": {
"428198ac-5b5a-4b68-9005-fa8a43bdada4": "rule_Speed - Threshold_s",
"049dd6de-08b2-47d4-be0b-5f0f6ce4f613": "rule_Motor Bearing Temperature - Threshold_s",
"22b483c8-f4d4-4d15-8d00-cd213fbd343c": "rule_Motor Bearing Temperature - Dynamic Threshold_s",
"92ff7e5c-b41b-41fe-88ba-5d8c79bd8578": "Vibration RMS Peak_s",
"a580e17a-b9ed-45be-b106-ba4a1edfa644": "Pump Temperature_s",
"f055505d-0205-44dc-85a5-85d8999bf603": "Speed_s",
"d11f81e2-3c59-4354-8359-47bcd9b6d577": "Current Draw_s",
"1c050682-be48-4d66-9227-13d180b00121": "rule_Discharge Pressure - Timeout_s",
"4d5c4f8b-9464-44c8-bee9-83c58129cfa8": "rule_Pump Temperature - Dynamic Threshold_s",
"5b4afef6-c55b-48fb-af4c-4bc726512b64": "Suction Pressure_s",
"1c35bd39-5b7e-41bd-9452-8f8555154d55": "Discharge Pressure_s",
"89b37d8d-4121-40ed-9f23-cf92305ffd6a": "Motor Bearing Temperature_s",
"daaf4058-6c5a-4811-a8b5-dc53fa08655b": "Flow Rate_s"
}
},
"subsystems": {
"Mechanical": {
"dashboardId": "c04e4eb8-b09a-4baa-83f7-6ab17dc64267",
"name": "Mechanical",
"meta": {
"icon": "icon-indicator-repair",
"color": "#25427A",
"order": 2,
"shortName": "Mech"
},
"locked": false,
"signals": [
"Motor Bearing Temperature_s",
"Pump Temperature_s" ,
"Speed_s" ,
"Vibration RMS Peak_s"
]
},
"Water": {
"dashboardId": "7d1f285a-9cd3-40b1-a5f0-e33b57efffe8",
"name": "Water",
"meta": {
"icon": "icon-dt-flow",
"color": "#6495ed",
"order": 1,
"shortName": "Water"
},
"locked": false,
"signals": ["Discharge Pressure_s", "Suction Pressure_s", "Flow Rate_s"]
},
"Electrical": {
"dashboardId": null,
"name": "Electrical",
"meta": {
"icon": "icon-asset-energy",
"color": "#D0BF1A",
"order": 0,
"shortName": "Elec"
},
"locked": false,
"signals": ["Current Draw_s"]
}
},
"metadata": {
"Equipment Number": {
"value": "898BC90",
"type": "string",
"panelEditing": false
},
"Manager": {
"value": "Rocco Baldelli",
"type": "string",
"panelEditing": false
}
}
},
"template_specification_version": "v1.0.0",
"written_at": "2024-06-11T18:54:11.110Z"
}
Group Hierarchy History¶
ExoSense will store group hierarchy, user roles, permissions, and device group ownership information as archive files when any are modified.
Asset Archives File Structure
groups/v=1/written_at=<date-time>Z/nodes.json
groups/v=1/written_at=<date-time>Z/roles.json
groups/v=1/written_at=<date-time>Z/permissions.json
groups/v=1/written_at=<date-time>Z/devices.json
groups/v=1/written_at=<date-time>Z/users.json
Example Files in Directory
groups/v=1/written_at=2024-02-26T00:00:39.000Z/nodes.json
groups/v=1/written_at=2024-02-26T00:34:19.000Z/roles.json
groups/v=1/written_at=2024-02-26T00:52:31.000Z/devices.json
groups/v=1/written_at=2024-02-26T02:33:05.000Z/permissions.json
These files contain all group hierarchy information for the solution at that point in time.
Leveraging Data Lake¶
The ExoSense Data Lake archive files can be used with Data Science tools, Analytics, Data Platforms / Warehouses, and AI / ML. The files may be synced with other cloud storage, such as AWS S3, Microsoft Azure Storage, or Google Cloud or leveraged and/or used with your own data lakes and warehouses. Exosite has a team of experts ready to help you with data integration, data science tools, AI/ML, and/or integration into other services. Please contact Exosite support or your account manager for information about these services.