2025-06-25 17:27:32 +02:00
{
"general" : {
"name" : {
"default" : "Rotating Machine" ,
"rules" : {
"type" : "string" ,
"description" : "A human-readable name or label for this machine configuration."
}
} ,
"id" : {
"default" : null ,
"rules" : {
"type" : "string" ,
"nullable" : true ,
"description" : "A unique identifier for this configuration. If not provided, defaults to null."
}
} ,
"unit" : {
2025-11-30 09:24:29 +01:00
"default" : "l/s" ,
2025-06-25 17:27:32 +02:00
"rules" : {
"type" : "string" ,
"description" : "The default measurement 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" : {
2026-03-11 15:06:17 +01:00
"default" : "rotatingmachine" ,
2025-06-25 17:27:32 +02:00
"rules" : {
"type" : "string" ,
"description" : "Specified software type for this configuration."
}
} ,
"role" : {
"default" : "RotationalDeviceController" ,
"rules" : {
"type" : "string" ,
"description" : "Indicates the role this configuration plays within the system."
}
} ,
"positionVsParent" : {
"default" : "atEquipment" ,
"rules" : {
"type" : "enum" ,
"values" : [
{
"value" : "atEquipment" ,
"description" : "The node is connected at the equipment level and is responsible for controlling or monitoring the equipment as a whole."
} ,
{
"value" : "upstream" ,
"description" : "The node is connected in a downstream position, indicating it is responsible for monitoring or controlling processes that occur after the equipment's operation, such as product flow or output."
} ,
{
"value" : "downstream" ,
"description" : "The node is connected in an upstream position, indicating it is responsible for monitoring or controlling processes that occur before the equipment's operation, such as input flow or supply."
}
] ,
"description" : "Defines the position of the measurement relative to its parent equipment or system."
}
}
} ,
"asset" : {
"uuid" : {
"default" : null ,
"rules" : {
"type" : "string" ,
"nullable" : true ,
"description" : "A universally unique identifier for this asset. May be null if not assigned."
}
} ,
2025-07-01 17:05:09 +02:00
"tagCode" : {
"default" : null ,
"rules" : {
"type" : "string" ,
"nullable" : true ,
"description" : "Asset tag code which is a unique identifier for this asset. May be null if not assigned."
}
} ,
2026-03-11 11:13:05 +01:00
"tagNumber" : {
"default" : null ,
"rules" : {
"type" : "string" ,
"nullable" : true ,
"description" : "Optional asset tag number for legacy integrations."
}
} ,
2025-06-25 17:27:32 +02:00
"geoLocation" : {
"default" : { } ,
"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."
}
} ,
2025-07-01 17:05:09 +02:00
"category" : {
2025-06-25 17:27:32 +02:00
"default" : "pump" ,
"rules" : {
"type" : "string" ,
"description" : "A general classification of the asset tied to the specific software. This is not chosen from the asset dropdown menu."
}
} ,
2025-07-01 17:05:09 +02:00
"type" : {
2025-06-25 17:27:32 +02:00
"default" : "Centrifugal" ,
"rules" : {
"type" : "string" ,
"description" : "A more specific classification within 'type'. For example, 'centrifugal' for a centrifugal pump."
}
} ,
"model" : {
"default" : "Unknown" ,
"rules" : {
"type" : "string" ,
"description" : "A user-defined or manufacturer-defined model identifier for the asset."
}
} ,
2025-07-01 17:05:09 +02:00
"unit" : {
"default" : "unitless" ,
"rules" : {
"type" : "string" ,
"description" : "The unit of measurement for this asset (e.g., 'meters', 'seconds', 'unitless')."
}
} ,
2026-03-11 11:13:05 +01:00
"curveUnits" : {
"default" : {
"pressure" : "mbar" ,
"flow" : "m3/h" ,
"power" : "kW" ,
"control" : "%"
} ,
"rules" : {
"type" : "object" ,
"schema" : {
"pressure" : {
"default" : "mbar" ,
"rules" : {
"type" : "string" ,
"description" : "Pressure unit used on the machine curve dimension axis."
}
} ,
"flow" : {
"default" : "m3/h" ,
"rules" : {
"type" : "string" ,
"description" : "Flow unit used in the machine curve output (nq.y)."
}
} ,
"power" : {
"default" : "kW" ,
"rules" : {
"type" : "string" ,
"description" : "Power unit used in the machine curve output (np.y)."
}
} ,
"control" : {
"default" : "%" ,
"rules" : {
"type" : "string" ,
"description" : "Control axis unit used in the curve x-dimension."
}
}
}
}
} ,
2025-06-25 17:27:32 +02:00
"accuracy" : {
"default" : null ,
"rules" : {
"type" : "number" ,
"nullable" : true ,
"description" : "The accuracy of the machine or sensor, typically as a percentage or absolute value."
}
} ,
"machineCurve" : {
"default" : {
"nq" : {
"1" : {
"x" : [
1 ,
2 ,
3 ,
4 ,
5
] ,
"y" : [
10 ,
20 ,
30 ,
40 ,
50
]
}
} ,
"np" : {
"1" : {
"x" : [
1 ,
2 ,
3 ,
4 ,
5
] ,
"y" : [
10 ,
20 ,
30 ,
40 ,
50
]
}
}
} ,
"rules" : {
"type" : "machineCurve" ,
"description" : "All machine curves must have a 'nq' and 'np' curve. nq stands for the flow curve, np stands for the power curve. Together they form the efficiency curve."
}
}
} ,
"mode" : {
"current" : {
"default" : "auto" ,
"rules" : {
"type" : "enum" ,
"values" : [
{
"value" : "auto" ,
"description" : "Machine accepts setpoints from a parent controller and runs autonomously."
} ,
{
"value" : "virtualControl" ,
"description" : "Controlled via GUI setpoints; ignores parent commands."
} ,
{
"value" : "fysicalControl" ,
"description" : "Controlled via physical buttons or switches; ignores external automated commands."
}
] ,
"description" : "The operational mode of the machine."
}
} ,
"allowedActions" : {
"default" : { } ,
"rules" : {
"type" : "object" ,
"schema" : {
"auto" : {
2025-11-05 17:15:32 +01:00
"default" : [
"statuscheck" ,
"execmovement" ,
"execsequence" ,
2025-11-13 19:39:48 +01:00
"flowmovement" ,
2025-11-05 17:15:32 +01:00
"emergencystop" ,
"entermaintenance"
] ,
2025-06-25 17:27:32 +02:00
"rules" : {
"type" : "set" ,
"itemType" : "string" ,
"description" : "Actions allowed in auto mode."
}
} ,
"virtualControl" : {
2025-11-05 17:15:32 +01:00
"default" : [
"statuscheck" ,
"execmovement" ,
2025-11-13 19:39:48 +01:00
"flowmovement" ,
2025-11-05 17:15:32 +01:00
"execsequence" ,
"emergencystop" ,
"exitmaintenance"
] ,
2025-06-25 17:27:32 +02:00
"rules" : {
"type" : "set" ,
"itemType" : "string" ,
"description" : "Actions allowed in virtualControl mode."
}
} ,
"fysicalControl" : {
2025-11-05 17:15:32 +01:00
"default" : [
"statuscheck" ,
"emergencystop" ,
"entermaintenance" ,
"exitmaintenance"
] ,
2025-06-25 17:27:32 +02:00
"rules" : {
"type" : "set" ,
"itemType" : "string" ,
"description" : "Actions allowed in fysicalControl mode."
}
2025-11-05 15:47:05 +01:00
}
2025-06-25 17:27:32 +02:00
}
} ,
"description" : "Information about valid command sources recognized by the machine."
2025-11-05 17:15:32 +01:00
} ,
2025-06-25 17:27:32 +02:00
"allowedSources" : {
"default" : { } ,
"rules" : {
"type" : "object" ,
"schema" : {
"auto" : {
"default" : [ "parent" , "GUI" , "fysical" ] ,
"rules" : {
"type" : "set" ,
"itemType" : "string" ,
"description" : "Sources allowed in auto mode."
}
} ,
"virtualControl" : {
"default" : [ "GUI" , "fysical" ] ,
"rules" : {
"type" : "set" ,
"itemType" : "string" ,
"description" : "Sources allowed in virtualControl mode."
}
} ,
"fysicalControl" : {
"default" : [ "fysical" ] ,
"rules" : {
"type" : "set" ,
"itemType" : "string" ,
"description" : "Sources allowed in fysicalControl mode."
}
}
} ,
"description" : "Information about valid command sources recognized by the machine."
}
2025-11-05 17:15:32 +01:00
}
2025-06-25 17:27:32 +02:00
} ,
"source" : {
"default" : "parent" ,
"rules" : {
"type" : "enum" ,
"values" : [
{
"value" : "parent" ,
"description" : "Commands are received from a parent controller."
} ,
{
"value" : "GUI" ,
"description" : "Commands are received from a graphical user interface."
} ,
{
"value" : "fysical" ,
"description" : "Commands are received from physical buttons or switches."
}
] ,
"description" : "Information about valid command sources recognized by the machine."
}
} ,
"sequences" : {
"default" : { } ,
"rules" : {
"type" : "object" ,
"schema" : {
"startup" : {
"default" : [ "starting" , "warmingup" , "operational" ] ,
"rules" : {
"type" : "set" ,
"itemType" : "string" ,
"description" : "Sequence of states for starting up the machine."
}
} ,
"shutdown" : {
"default" : [ "stopping" , "coolingdown" , "idle" ] ,
"rules" : {
"type" : "set" ,
"itemType" : "string" ,
"description" : "Sequence of states for shutting down the machine."
}
} ,
"emergencystop" : {
"default" : [ "emergencystop" , "off" ] ,
"rules" : {
"type" : "set" ,
"itemType" : "string" ,
"description" : "Sequence of states for an emergency stop."
}
} ,
"boot" : {
"default" : [ "idle" , "starting" , "warmingup" , "operational" ] ,
"rules" : {
"type" : "set" ,
"itemType" : "string" ,
"description" : "Sequence of states for booting up the machine."
}
2025-11-05 15:47:05 +01:00
} ,
"entermaintenance" : {
"default" : [ "stopping" , "coolingdown" , "idle" , "maintenance" ] ,
"rules" : {
"type" : "set" ,
"itemType" : "string" ,
"description" : "Sequence of states if the machine is running to put it in maintenance state"
}
} ,
"exitmaintenance" : {
"default" : [ "off" , "idle" ] ,
"rules" : {
"type" : "set" ,
"itemType" : "string" ,
"description" : "Sequence of states if the machine is running to put it in maintenance state"
}
2025-06-25 17:27:32 +02:00
}
}
} ,
"description" : "Predefined sequences of states for the machine."
} ,
"calculationMode" : {
"default" : "medium" ,
"rules" : {
"type" : "enum" ,
"values" : [
{
"value" : "low" ,
"description" : "Calculations run at fixed intervals (time-based)."
} ,
{
"value" : "medium" ,
"description" : "Calculations run when new setpoints arrive or measured changes occur (event-driven)."
} ,
{
"value" : "high" ,
"description" : "Calculations run on all event-driven info, including every movement."
}
] ,
"description" : "The frequency at which calculations are performed."
}
2025-10-31 14:03:54 +01:00
} ,
"flowNumber" : {
"default" : 1 ,
"rules" : {
"type" : "number" ,
"nullable" : false ,
"description" : "Defines which effluent flow of the parent node to handle."
}
2025-06-25 17:27:32 +02:00
}
}
2026-03-11 11:13:05 +01:00