diff --git a/src/configs/monster.json b/src/configs/monster.json new file mode 100644 index 0000000..58875ca --- /dev/null +++ b/src/configs/monster.json @@ -0,0 +1,256 @@ +{ + "general": { + "name": { + "default": "Monster Configuration", + "rules": { + "type": "string", + "description": "A human-readable name or label for this configuration." + } + }, + "id": { + "default": null, + "rules": { + "type": "string", + "nullable": true, + "description": "A unique identifier for this configuration. If not provided, defaults to null." + } + }, + "unit": { + "default": "unitless", + "rules": { + "type": "string", + "description": "The unit for this configuration (e.g., 'meters', 'seconds', 'unitless')." + } + }, + "logging": { + "logLevel": { + "default": "info", + "rules": { + "type": "enum", + "values": [ + { + "value": "debug", + "description": "Log messages are printed for debugging purposes." + }, + { + "value": "info", + "description": "Informational messages are printed." + }, + { + "value": "warn", + "description": "Warning messages are printed." + }, + { + "value": "error", + "description": "Error messages are printed." + } + ] + } + }, + "enabled": { + "default": true, + "rules": { + "type": "boolean", + "description": "Indicates whether logging is active. If true, log messages will be generated." + } + } + } + }, + "functionality": { + "softwareType": { + "default": "monster", + "rules": { + "type": "string", + "description": "Specified software type for this configuration." + } + }, + "role": { + "default": "samplingCabinet", + "rules": { + "type": "string", + "description": "Indicates the role this configuration plays (e.g., sensor, controller, etc.)." + } + } + }, + "asset": { + "uuid": { + "default": null, + "rules": { + "type": "string", + "nullable": true, + "description": "Asset tag number which is a universally unique identifier for this asset. May be null if not assigned." + } + }, + "geoLocation": { + "default": { + "x": 0, + "y": 0, + "z": 0 + }, + "rules": { + "type": "object", + "description": "An object representing the asset's physical coordinates or location.", + "schema": { + "x": { + "default": 0, + "rules": { + "type": "number", + "description": "X coordinate of the asset's location." + } + }, + "y": { + "default": 0, + "rules": { + "type": "number", + "description": "Y coordinate of the asset's location." + } + }, + "z": { + "default": 0, + "rules": { + "type": "number", + "description": "Z coordinate of the asset's location." + } + } + } + } + }, + "supplier": { + "default": "Unknown", + "rules": { + "type": "string", + "description": "The supplier or manufacturer of the asset." + } + }, + "type": { + "default": "sensor", + "rules": { + "type": "enum", + "values": [ + { + "value": "sensor", + "description": "A device that detects or measures a physical property and responds to it (e.g. temperature sensor)." + } + ] + } + }, + "subType": { + "default": "pressure", + "rules": { + "type": "string", + "description": "A more specific classification within 'type'. For example, 'pressure' for a pressure sensor." + } + }, + "model": { + "default": "Unknown", + "rules": { + "type": "string", + "description": "A user-defined or manufacturer-defined model identifier for the asset." + } + }, + "emptyWeightBucket": { + "default": 3, + "rules": { + "type": "number", + "description": "The weight of the empty bucket in kilograms." + } + } + }, + "constraints": { + "samplingtime": { + "default": 0, + "rules": { + "type": "number", + "description": "The time interval between sampling events (in seconds) if not using a flow meter." + } + }, + "samplingperiod": { + "default": 24, + "rules": { + "type": "number", + "description": "The fixed period in hours in which a composite sample is collected." + } + }, + "minVolume": { + "default": 5, + "rules": { + "type": "number", + "min": 5, + "description": "The minimum volume in liters." + } + }, + "maxWeight": { + "default": 23, + "rules": { + "type": "number", + "max": 23, + "description": "The maximum weight in kilograms." + } + }, + "subSampleVolume": { + "default": 50, + "rules": { + "type": "number", + "min": 50, + "max": 50, + "description": "The volume of each sub-sample in milliliters." + } + }, + "storageTemperature": { + "default": { + "min": 1, + "max": 5 + }, + "rules": { + "type": "object", + "description": "Acceptable storage temperature range for samples in degrees Celsius.", + "schema": { + "min": { + "default": 1, + "rules": { + "type": "number", + "min": 1, + "description": "Minimum acceptable storage temperature in degrees Celsius." + } + }, + "max": { + "default": 5, + "rules": { + "type": "number", + "max": 5, + "description": "Maximum acceptable storage temperature in degrees Celsius." + } + } + } + } + }, + "flowmeter": { + "default": true, + "rules": { + "type": "boolean", + "description": "Indicates whether a flow meter is used for proportional sampling." + } + }, + "closedSystem": { + "default": false, + "rules": { + "type": "boolean", + "description": "Indicates if the sampling system is closed (true) or open (false)." + } + }, + "intakeSpeed": { + "default": 0.3, + "rules": { + "type": "number", + "description": "Minimum intake speed in meters per second." + } + }, + "intakeDiameter": { + "default": 12, + "rules": { + "type": "number", + "description": "Minimum inner diameter of the intake tubing in millimeters." + } + } + } +}