- Add JoeAppEngine folder to OPC UA nodes.json (BTCS, AlarmCntsBySeverity, Scheduler/ScanTime) - Fix DataConnectionActor: capture Self in PreStart for use from non-actor threads, preventing Self.Tell failure in Disconnected event handler - Implement InstanceActor.HandleConnectionQualityChanged to mark attributes Bad on disconnect - Fix LmxFakeProxy TagMapper to serialize arrays as JSON instead of "System.Int32[]" - Allow DataType and DataSourceReference updates in TemplateService.UpdateAttributeAsync - Update test_infra_opcua.md with JoeAppEngine documentation
176 lines
4.8 KiB
JSON
176 lines
4.8 KiB
JSON
{
|
|
"Folder": "ScadaLink",
|
|
"NodeList": [],
|
|
"FolderList": [
|
|
{
|
|
"Folder": "Motor",
|
|
"NodeList": [
|
|
{
|
|
"NodeId": "Motor.Speed",
|
|
"Name": "Speed",
|
|
"DataType": "Double",
|
|
"ValueRank": -1,
|
|
"AccessLevel": "CurrentReadOrWrite",
|
|
"Description": "Motor speed in RPM"
|
|
},
|
|
{
|
|
"NodeId": "Motor.Temperature",
|
|
"Name": "Temperature",
|
|
"DataType": "Double",
|
|
"ValueRank": -1,
|
|
"AccessLevel": "CurrentReadOrWrite",
|
|
"Description": "Motor bearing temperature in Celsius"
|
|
},
|
|
{
|
|
"NodeId": "Motor.Current",
|
|
"Name": "Current",
|
|
"DataType": "Double",
|
|
"ValueRank": -1,
|
|
"AccessLevel": "CurrentReadOrWrite",
|
|
"Description": "Motor current draw in Amps"
|
|
},
|
|
{
|
|
"NodeId": "Motor.Running",
|
|
"Name": "Running",
|
|
"DataType": "Boolean",
|
|
"ValueRank": -1,
|
|
"AccessLevel": "CurrentReadOrWrite",
|
|
"Description": "Motor running status"
|
|
},
|
|
{
|
|
"NodeId": "Motor.FaultCode",
|
|
"Name": "FaultCode",
|
|
"DataType": "UInt32",
|
|
"ValueRank": -1,
|
|
"AccessLevel": "CurrentReadOrWrite",
|
|
"Description": "Active fault code (0 = no fault)"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"Folder": "Pump",
|
|
"NodeList": [
|
|
{
|
|
"NodeId": "Pump.FlowRate",
|
|
"Name": "FlowRate",
|
|
"DataType": "Double",
|
|
"ValueRank": -1,
|
|
"AccessLevel": "CurrentReadOrWrite",
|
|
"Description": "Flow rate in liters per minute"
|
|
},
|
|
{
|
|
"NodeId": "Pump.Pressure",
|
|
"Name": "Pressure",
|
|
"DataType": "Double",
|
|
"ValueRank": -1,
|
|
"AccessLevel": "CurrentReadOrWrite",
|
|
"Description": "Discharge pressure in bar"
|
|
},
|
|
{
|
|
"NodeId": "Pump.Running",
|
|
"Name": "Running",
|
|
"DataType": "Boolean",
|
|
"ValueRank": -1,
|
|
"AccessLevel": "CurrentReadOrWrite",
|
|
"Description": "Pump running status"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"Folder": "Tank",
|
|
"NodeList": [
|
|
{
|
|
"NodeId": "Tank.Level",
|
|
"Name": "Level",
|
|
"DataType": "Double",
|
|
"ValueRank": -1,
|
|
"AccessLevel": "CurrentReadOrWrite",
|
|
"Description": "Tank level in percent"
|
|
},
|
|
{
|
|
"NodeId": "Tank.Temperature",
|
|
"Name": "Temperature",
|
|
"DataType": "Double",
|
|
"ValueRank": -1,
|
|
"AccessLevel": "CurrentReadOrWrite",
|
|
"Description": "Tank contents temperature in Celsius"
|
|
},
|
|
{
|
|
"NodeId": "Tank.HighLevel",
|
|
"Name": "HighLevel",
|
|
"DataType": "Boolean",
|
|
"ValueRank": -1,
|
|
"AccessLevel": "CurrentRead",
|
|
"Description": "High level alarm switch"
|
|
},
|
|
{
|
|
"NodeId": "Tank.LowLevel",
|
|
"Name": "LowLevel",
|
|
"DataType": "Boolean",
|
|
"ValueRank": -1,
|
|
"AccessLevel": "CurrentRead",
|
|
"Description": "Low level alarm switch"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"Folder": "Valve",
|
|
"NodeList": [
|
|
{
|
|
"NodeId": "Valve.Position",
|
|
"Name": "Position",
|
|
"DataType": "Double",
|
|
"ValueRank": -1,
|
|
"AccessLevel": "CurrentReadOrWrite",
|
|
"Description": "Valve position in percent open"
|
|
},
|
|
{
|
|
"NodeId": "Valve.Command",
|
|
"Name": "Command",
|
|
"DataType": "UInt32",
|
|
"ValueRank": -1,
|
|
"AccessLevel": "CurrentReadOrWrite",
|
|
"Description": "Valve command (0=Close, 1=Open, 2=Stop)"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"Folder": "JoeAppEngine",
|
|
"NodeList": [
|
|
{
|
|
"NodeId": "JoeAppEngine.BTCS",
|
|
"Name": "BTCS",
|
|
"DataType": "String",
|
|
"ValueRank": -1,
|
|
"AccessLevel": "CurrentReadOrWrite",
|
|
"Description": "BTCS string value"
|
|
},
|
|
{
|
|
"NodeId": "JoeAppEngine.AlarmCntsBySeverity",
|
|
"Name": "AlarmCntsBySeverity",
|
|
"DataType": "Int32",
|
|
"ValueRank": 1,
|
|
"ArrayDimensions": [13],
|
|
"AccessLevel": "CurrentReadOrWrite",
|
|
"Description": "13-element alarm counts by severity level"
|
|
}
|
|
],
|
|
"FolderList": [
|
|
{
|
|
"Folder": "Scheduler",
|
|
"NodeList": [
|
|
{
|
|
"NodeId": "JoeAppEngine.Scheduler.ScanTime",
|
|
"Name": "ScanTime",
|
|
"DataType": "DateTime",
|
|
"ValueRank": -1,
|
|
"AccessLevel": "CurrentReadOrWrite",
|
|
"Description": "Current scan time (updates every second)"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|