public SensorsProcessOutput GetCurrentSensorsProcessReadings() { var output = new SensorsProcessOutput() { Cpus_Temp = new HashSet <CpuTemperatureInformation>(), Fans_Speed = new HashSet <FanSpeedInformation>() }; using (var sensors_process = Process.Start(_sensorsProcessStartInfo)) { var stream = sensors_process.StandardOutput; string line = null; Regex reg = new Regex(@"\s+", RegexOptions.Compiled); int line_ctr = 0; while (!stream.EndOfStream) { line = stream.ReadLine(); if (line_ctr >= 12 && line_ctr <= 17) { line = line.Trim(); var array_line = reg.Replace(line, ";").Split(";"); var cpuTemp = new CpuTemperatureInformation() { Cpu_Id = int.Parse(array_line[1].Substring(0, 1)), Cpu_Temp = double.Parse((array_line[2].Substring(1)).Replace("°C", "")) }; output.Cpus_Temp.Add(cpuTemp); } line_ctr++; } } return(output); }
static void ManageNewData(TopProcessOutput usage_info, SensorsProcessOutput temperature_info, DateTime samplingTime) { InsertSamplingTime(samplingTime); InsertTemperature(temperature_info); InsertTotalUsages(usage_info); InsertProcessSpecificUsage(usage_info); }
static void InsertTemperature(SensorsProcessOutput temperature_info) { double total_temps = 0; temperature_info.Cpus_Temp.ToList().ForEach(c => total_temps += c.Cpu_Temp); var cpu_temp = (total_temps / temperature_info.Cpus_Temp.Count()); using (var context = new ServerResourcesContext()) { context.Server_Resource_Info.Add(new Server_Resource_Info() { Value = cpu_temp, Sample_Time_FK = context.Sample_Time.Last().Id, Server_Resource_Unit_FK = context.Server_Resource_Unit.Where(SRU => SRU.ShortName == "TEMP").SingleOrDefault().Id, Process_FK = null, Resource_Type_FK = context.Resource_Type.Where(RT => RT.Short_Name == "CPU_TEMP").SingleOrDefault().Id });; context.SaveChanges(); } }