The rack control unit (RCU) communicates with components and sensors using internal electrical buses and communicates with hosts using a network connection. The RCU has various onboard sensors including current sensors, voltage sensors, and temperature sensors.

Reading the Properties and Sensors from the Rack Control Unit

IAteCoreSession ateCoreSession; 
try 
{ 
	// To create an object of IAteCoreSession. 
	ateCoreSession = await AteCoreSession.CreateAteCoreSessionAsync(hostname, password); 
	// Get the object of RCU component 
	IRackControlUnit rackControlUnit = ateCoreSession.RackControlUnit; 
	Console.WriteLine("Rack control unit name: {0}", rackControlUnit.Name); 
	Console.WriteLine("Rack control unit location: {0}", rackControlUnit.Location); 
	Console.WriteLine("Rack control unit vendor name: {0}", rackControlUnit.VendorName); 
	Console.WriteLine("Rack control unit model name: {0}", rackControlUnit.ModelName); 
	Console.WriteLine("Rack control unit serial number: {0}", rackControlUnit.SerialNumber); 
	Console.WriteLine("Rack control unit firmware version: {0}", rackControlUnit.FirmwareVersion); 
 
	foreach (var currentSensor in rackControlUnit.CurrentSensors) 
	{ 
		Console.WriteLine("Current sensor name: {0}", currentSensor.Name); 
		Console.WriteLine("Current sensor reading: {0} A", await currentSensor.ReadSensorAsync()); 
	} 
 
	foreach (var voltageSensor in rackControlUnit.VoltageSensors) 
	{ 
		Console.WriteLine("Voltage sensor name: {0}", voltageSensor.Name); 
		Console.WriteLine("Voltage sensor reading: {0} V", await voltageSensor.ReadSensorAsync()); 
	} 
 
	foreach (var temperatureSensor in rackControlUnit.TemperatureSensors) 
	{ 
		Console.WriteLine("Temperature sensor name: {0}", temperatureSensor.Name); 
		Console.WriteLine("Temperature sensor reading: {0} degree C", await temperatureSensor.ReadSensorAsync()); 
	} 
} 
catch(Exception ex) 
{ 
	Console.WriteLine(ex.Message); //Print the exception message. 
} 
finally 
{ 
	if (ateCoreSession != null) 
	{ 
		// To close the session. 
		ateCoreSession.Dispose(); 
	} 
}