{
  "Folder": "ScadaBridge",
  "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)"
            }
          ]
        }
      ]
    },
    {
      "Folder": "DevAppEngine",
      "NodeList": [],
      "FolderList": [
        {
          "Folder": "Scheduler",
          "NodeList": [
            {
              "NodeId": "DevAppEngine.Scheduler.ScanTime",
              "Name": "ScanTime",
              "DataType": "DateTime",
              "ValueRank": -1,
              "AccessLevel": "CurrentReadOrWrite",
              "Description": "Current scan time for DevAppEngine"
            }
          ]
        }
      ]
    },
    {
      "Folder": "Sensor",
      "NodeList": [
        {
          "NodeId": "Sensor.Reading",
          "Name": "Reading",
          "DataType": "Double",
          "ValueRank": -1,
          "AccessLevel": "CurrentReadOrWrite",
          "Description": "Generic sensor reading"
        }
      ]
    },
    {
      "Folder": "Misc",
      "NodeList": [
        {
          "NodeId": "Temperature",
          "Name": "Temperature",
          "DataType": "Double",
          "ValueRank": -1,
          "AccessLevel": "CurrentReadOrWrite",
          "Description": "Standalone Temperature tag (Base Device default)"
        }
      ]
    },
    {
      "Folder": "TestChildObject",
      "NodeList": [
        {
          "NodeId": "TestChildObject.TestBool",
          "Name": "TestBool",
          "DataType": "Boolean",
          "ValueRank": -1,
          "AccessLevel": "CurrentReadOrWrite",
          "Description": "Test scalar Boolean"
        },
        {
          "NodeId": "TestChildObject.TestBoolArray",
          "Name": "TestBoolArray",
          "DataType": "Boolean",
          "ValueRank": 1,
          "ArrayDimensions": [4],
          "AccessLevel": "CurrentReadOrWrite",
          "Description": "Test Boolean array"
        },
        {
          "NodeId": "TestChildObject.TestDateTime",
          "Name": "TestDateTime",
          "DataType": "DateTime",
          "ValueRank": -1,
          "AccessLevel": "CurrentReadOrWrite",
          "Description": "Test scalar DateTime"
        },
        {
          "NodeId": "TestChildObject.TestDateTimeArray",
          "Name": "TestDateTimeArray",
          "DataType": "DateTime",
          "ValueRank": 1,
          "ArrayDimensions": [4],
          "AccessLevel": "CurrentReadOrWrite",
          "Description": "Test DateTime array"
        },
        {
          "NodeId": "TestChildObject.TestDouble",
          "Name": "TestDouble",
          "DataType": "Double",
          "ValueRank": -1,
          "AccessLevel": "CurrentReadOrWrite",
          "Description": "Test scalar Double"
        },
        {
          "NodeId": "TestChildObject.TestDoubleArray",
          "Name": "TestDoubleArray",
          "DataType": "Double",
          "ValueRank": 1,
          "ArrayDimensions": [4],
          "AccessLevel": "CurrentReadOrWrite",
          "Description": "Test Double array"
        },
        {
          "NodeId": "TestChildObject.TestFloat",
          "Name": "TestFloat",
          "DataType": "Float",
          "ValueRank": -1,
          "AccessLevel": "CurrentReadOrWrite",
          "Description": "Test scalar Float"
        },
        {
          "NodeId": "TestChildObject.TestFloatArray",
          "Name": "TestFloatArray",
          "DataType": "Float",
          "ValueRank": 1,
          "ArrayDimensions": [4],
          "AccessLevel": "CurrentReadOrWrite",
          "Description": "Test Float array"
        },
        {
          "NodeId": "TestChildObject.TestInt",
          "Name": "TestInt",
          "DataType": "Int32",
          "ValueRank": -1,
          "AccessLevel": "CurrentReadOrWrite",
          "Description": "Test scalar Int32"
        },
        {
          "NodeId": "TestChildObject.TestIntArray",
          "Name": "TestIntArray",
          "DataType": "Int32",
          "ValueRank": 1,
          "ArrayDimensions": [4],
          "AccessLevel": "CurrentReadOrWrite",
          "Description": "Test Int32 array"
        },
        {
          "NodeId": "TestChildObject.TestString",
          "Name": "TestString",
          "DataType": "String",
          "ValueRank": -1,
          "AccessLevel": "CurrentReadOrWrite",
          "Description": "Test scalar String"
        },
        {
          "NodeId": "TestChildObject.TestStringArray",
          "Name": "TestStringArray",
          "DataType": "String",
          "ValueRank": 1,
          "ArrayDimensions": [4],
          "AccessLevel": "CurrentReadOrWrite",
          "Description": "Test String array"
        }
      ]
    }
  ]
}
