|
|
|
|
@ -37,6 +37,11 @@ namespace SmartAquaViewer.DataAnalysis
|
|
|
|
|
/// </summary>
|
|
|
|
|
public double TotalEnergy { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 총 온실가스 배출량 (톤, tCO₂)
|
|
|
|
|
/// </summary>
|
|
|
|
|
public double TotalGreenhouseGas { get; set; }
|
|
|
|
|
|
|
|
|
|
public WaterQualityVO() { }
|
|
|
|
|
|
|
|
|
|
public WaterQualityVO(DateTime RecordedTime, WaterTank tank, FilteringSystem filtering, SterilizingSystem sterilizing)
|
|
|
|
|
@ -67,6 +72,25 @@ namespace SmartAquaViewer.DataAnalysis
|
|
|
|
|
vo.Sterilizing.ExcessOzoneDestroyerEnergy;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
double ConvertEnergyToGHG(double energy)
|
|
|
|
|
{
|
|
|
|
|
// 2024년 배출계수 (kgCO₂/kWh)
|
|
|
|
|
const double EmissionFactor = 0.4747;
|
|
|
|
|
return (energy * EmissionFactor); // / 1000.0; // tCO₂
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
double CalculateTotalGreenhouseGas(WaterQualityVO vo)
|
|
|
|
|
{
|
|
|
|
|
return vo.Filtering.AirBlowerGreenhouseGas +
|
|
|
|
|
vo.Filtering.CirculationPumpGreenhouseGas +
|
|
|
|
|
vo.Filtering.HeatPumpGreenhouseGas +
|
|
|
|
|
vo.Filtering.SandFilterGreenhouseGas +
|
|
|
|
|
vo.Sterilizing.ExcessOzoneDestroyerGreenhouseGas +
|
|
|
|
|
vo.Sterilizing.OzoneDissolverGreenhouseGas +
|
|
|
|
|
vo.Sterilizing.OzoneGeneratorGreenhouseGas +
|
|
|
|
|
vo.Sterilizing.UVSterilizerGreenhouseGas;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (totalRowsCount <= 0) return list;
|
|
|
|
|
|
|
|
|
|
double totalSeconds;
|
|
|
|
|
@ -102,6 +126,7 @@ namespace SmartAquaViewer.DataAnalysis
|
|
|
|
|
Filtering = new FilteringSystem(
|
|
|
|
|
sandFilterPower: rand.Next(0, 2) == 1,
|
|
|
|
|
sandFilterEnergy: Math.Round(rand.NextDouble() * 2 + 0.5, 2),
|
|
|
|
|
sandFilterGreenhouseGas: 0, // 추후 계산
|
|
|
|
|
sumpPH: Math.Round(rand.NextDouble() * 2 + 6, 2),
|
|
|
|
|
sumpORP: Math.Round(rand.NextDouble() * 200 + 100, 2),
|
|
|
|
|
sumpWaterLevel: Math.Round(rand.NextDouble() * 2 + 1, 2),
|
|
|
|
|
@ -109,28 +134,44 @@ namespace SmartAquaViewer.DataAnalysis
|
|
|
|
|
sumpTemperature: Math.Round(rand.NextDouble() * 10 + 15, 2),
|
|
|
|
|
circulationPumpPower: rand.Next(0, 2) == 1,
|
|
|
|
|
circulationPumpEnergy: Math.Round(rand.NextDouble() * 2 + 0.5, 2),
|
|
|
|
|
circulationPumpGreenhouseGas: 0, // 추후 계산
|
|
|
|
|
inverterControllerStatus: rand.Next(0, 2) == 1 ? "Normal" : "Error",
|
|
|
|
|
flowRate: Math.Round(rand.NextDouble() * 5 + 1, 2),
|
|
|
|
|
heatPumpPower: rand.Next(0, 2) == 1,
|
|
|
|
|
heatPumpTemperature: Math.Round(rand.NextDouble() * 10 + 15, 2),
|
|
|
|
|
heatPumpEnergy: Math.Round(rand.NextDouble() * 2 + 0.5, 2),
|
|
|
|
|
heatPumpGreenhouseGas: 0, // 추후 계산
|
|
|
|
|
airBlowerPower: rand.Next(0, 2) == 1,
|
|
|
|
|
airBlowerEnergy: Math.Round(rand.NextDouble() * 2 + 0.5, 2)
|
|
|
|
|
airBlowerEnergy: Math.Round(rand.NextDouble() * 2 + 0.5, 2),
|
|
|
|
|
airBlowerGreenhouseGas: 0 // 추후 계산
|
|
|
|
|
),
|
|
|
|
|
Sterilizing = new SterilizingSystem(
|
|
|
|
|
ozoneGeneratorPower: rand.Next(0, 2) == 1,
|
|
|
|
|
ozoneGeneratorEnergy: Math.Round(rand.NextDouble() * 2 + 0.5, 2),
|
|
|
|
|
ozoneGeneratorGreenhouseGas: 0, // 추후 계산
|
|
|
|
|
uvSterilizerId: "UV" + rand.Next(1, 100),
|
|
|
|
|
uvSterilizerPower: rand.Next(0, 2) == 1,
|
|
|
|
|
uvSterilizerEnergy: Math.Round(rand.NextDouble() * 2 + 0.5, 2),
|
|
|
|
|
uvSterilizerGreenhouseGas: 0, // 추후 계산
|
|
|
|
|
ozoneDissolverPower: rand.Next(0, 2) == 1,
|
|
|
|
|
ozoneDissolverPressure: Math.Round(rand.NextDouble() * 100 + 50, 2),
|
|
|
|
|
ozoneDissolverEnergy: Math.Round(rand.NextDouble() * 2 + 0.5, 2),
|
|
|
|
|
ozoneDissolverGreenhouseGas: 0, // 추후 계산
|
|
|
|
|
excessOzoneDestroyerPower: rand.Next(0, 2) == 1,
|
|
|
|
|
excessOzoneDestroyerEnergy: Math.Round(rand.NextDouble() * 2 + 0.5, 2)
|
|
|
|
|
excessOzoneDestroyerEnergy: Math.Round(rand.NextDouble() * 2 + 0.5, 2),
|
|
|
|
|
excessOzoneDestroyerGreenhouseGas: 0 // 추후 계산
|
|
|
|
|
),
|
|
|
|
|
};
|
|
|
|
|
vo.TotalEnergy = CalculateTotalEnergy(vo);
|
|
|
|
|
vo.Filtering.SandFilterGreenhouseGas = ConvertEnergyToGHG(vo.Filtering.SandFilterEnergy);
|
|
|
|
|
vo.Filtering.CirculationPumpGreenhouseGas = ConvertEnergyToGHG(vo.Filtering.CirculationPumpEnergy);
|
|
|
|
|
vo.Filtering.HeatPumpGreenhouseGas = ConvertEnergyToGHG(vo.Filtering.HeatPumpEnergy);
|
|
|
|
|
vo.Filtering.AirBlowerGreenhouseGas = ConvertEnergyToGHG(vo.Filtering.AirBlowerEnergy);
|
|
|
|
|
vo.Sterilizing.OzoneGeneratorGreenhouseGas = ConvertEnergyToGHG(vo.Sterilizing.OzoneGeneratorEnergy);
|
|
|
|
|
vo.Sterilizing.UVSterilizerGreenhouseGas = ConvertEnergyToGHG(vo.Sterilizing.UVSterilizerEnergy);
|
|
|
|
|
vo.Sterilizing.OzoneDissolverGreenhouseGas = ConvertEnergyToGHG(vo.Sterilizing.OzoneDissolverEnergy);
|
|
|
|
|
vo.Sterilizing.ExcessOzoneDestroyerGreenhouseGas = ConvertEnergyToGHG(vo.Sterilizing.ExcessOzoneDestroyerEnergy);
|
|
|
|
|
vo.TotalGreenhouseGas = CalculateTotalGreenhouseGas(vo);
|
|
|
|
|
|
|
|
|
|
list.Add(vo);
|
|
|
|
|
}
|
|
|
|
|
@ -202,6 +243,12 @@ namespace SmartAquaViewer.DataAnalysis
|
|
|
|
|
[Column("filter_sand_filter_energy")]
|
|
|
|
|
public double SandFilterEnergy { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 모래여과기 온실가스 (tCO₂)
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Column("filter_sand_filter_greenhouse_gas")]
|
|
|
|
|
public double SandFilterGreenhouseGas { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 섬프탱크 pH (산도)
|
|
|
|
|
/// </summary>
|
|
|
|
|
@ -244,6 +291,12 @@ namespace SmartAquaViewer.DataAnalysis
|
|
|
|
|
[Column("filter_circulation_pump_energy")]
|
|
|
|
|
public double CirculationPumpEnergy { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 순환펌프 온실가스 (tCO₂)
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Column("filter_circulation_pump_greenhouse_gas")]
|
|
|
|
|
public double CirculationPumpGreenhouseGas { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 인버터 제어기 상태
|
|
|
|
|
/// </summary>
|
|
|
|
|
@ -274,6 +327,12 @@ namespace SmartAquaViewer.DataAnalysis
|
|
|
|
|
[Column("filter_heat_pump_energy")]
|
|
|
|
|
public double HeatPumpEnergy { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 히트펌프 온실가스 (tCO₂)
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Column("filter_heat_pump_greenhouse_gas")]
|
|
|
|
|
public double HeatPumpGreenhouseGas { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 에어브로와 전원 (true: ON, false: OFF)
|
|
|
|
|
/// </summary>
|
|
|
|
|
@ -286,16 +345,24 @@ namespace SmartAquaViewer.DataAnalysis
|
|
|
|
|
[Column("filter_air_blower_energy")]
|
|
|
|
|
public double AirBlowerEnergy { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 에어브로와 온실가스 (tCO₂)
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Column("filter_air_blower_greenhouse_gas")]
|
|
|
|
|
public double AirBlowerGreenhouseGas { get; set; }
|
|
|
|
|
|
|
|
|
|
public FilteringSystem() { }
|
|
|
|
|
|
|
|
|
|
public FilteringSystem(
|
|
|
|
|
bool sandFilterPower, double sandFilterEnergy,
|
|
|
|
|
bool sandFilterPower, double sandFilterEnergy, double sandFilterGreenhouseGas,
|
|
|
|
|
double sumpPH, double sumpORP, double sumpWaterLevel, double sumpFlowRate, double sumpTemperature,
|
|
|
|
|
bool circulationPumpPower, double circulationPumpEnergy, string? inverterControllerStatus, double flowRate,
|
|
|
|
|
bool heatPumpPower, double heatPumpTemperature, double heatPumpEnergy, bool airBlowerPower, double airBlowerEnergy)
|
|
|
|
|
bool circulationPumpPower, double circulationPumpEnergy, double circulationPumpGreenhouseGas, string? inverterControllerStatus, double flowRate,
|
|
|
|
|
bool heatPumpPower, double heatPumpTemperature, double heatPumpEnergy, double heatPumpGreenhouseGas,
|
|
|
|
|
bool airBlowerPower, double airBlowerEnergy, double airBlowerGreenhouseGas)
|
|
|
|
|
{
|
|
|
|
|
SandFilterPower = sandFilterPower;
|
|
|
|
|
SandFilterEnergy = sandFilterEnergy;
|
|
|
|
|
SandFilterGreenhouseGas = sandFilterGreenhouseGas;
|
|
|
|
|
SumpPH = sumpPH;
|
|
|
|
|
SumpORP = sumpORP;
|
|
|
|
|
SumpWaterLevel = sumpWaterLevel;
|
|
|
|
|
@ -303,13 +370,16 @@ namespace SmartAquaViewer.DataAnalysis
|
|
|
|
|
SumpTemperature = sumpTemperature;
|
|
|
|
|
CirculationPumpPower = circulationPumpPower;
|
|
|
|
|
CirculationPumpEnergy = circulationPumpEnergy;
|
|
|
|
|
CirculationPumpGreenhouseGas = circulationPumpGreenhouseGas;
|
|
|
|
|
InverterControllerStatus = inverterControllerStatus;
|
|
|
|
|
FlowRate = flowRate;
|
|
|
|
|
HeatPumpPower = heatPumpPower;
|
|
|
|
|
HeatPumpTemperature = heatPumpTemperature;
|
|
|
|
|
HeatPumpEnergy = heatPumpEnergy;
|
|
|
|
|
HeatPumpGreenhouseGas = heatPumpGreenhouseGas;
|
|
|
|
|
AirBlowerPower = airBlowerPower;
|
|
|
|
|
AirBlowerEnergy = airBlowerEnergy;
|
|
|
|
|
AirBlowerGreenhouseGas = airBlowerGreenhouseGas;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -328,6 +398,12 @@ namespace SmartAquaViewer.DataAnalysis
|
|
|
|
|
[Column("ster_ozone_generator_energy")]
|
|
|
|
|
public double OzoneGeneratorEnergy { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 오존 발생기 온실가스 (tCO₂)
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Column("ster_ozone_generator_greenhouse_gas")]
|
|
|
|
|
public double OzoneGeneratorGreenhouseGas { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 자외선 살균기 ID
|
|
|
|
|
/// </summary>
|
|
|
|
|
@ -346,6 +422,12 @@ namespace SmartAquaViewer.DataAnalysis
|
|
|
|
|
[Column("ster_uv_sterilizer_energy")]
|
|
|
|
|
public double UVSterilizerEnergy { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 자외선 살균기 온실가스 (tCO₂)
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Column("ster_uv_sterilizer_greenhouse_gas")]
|
|
|
|
|
public double UVSterilizerGreenhouseGas { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 오존용해장치 전원 (true: ON, false: OFF)
|
|
|
|
|
/// </summary>
|
|
|
|
|
@ -364,6 +446,12 @@ namespace SmartAquaViewer.DataAnalysis
|
|
|
|
|
[Column("ster_ozone_dissolver_energy")]
|
|
|
|
|
public double OzoneDissolverEnergy { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 오존용해장치 온실가스 (tCO₂)
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Column("ster_ozone_dissolver_greenhouse_gas")]
|
|
|
|
|
public double OzoneDissolverGreenhouseGas { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 배오존장치 전원 (true: ON, false: OFF)
|
|
|
|
|
/// </summary>
|
|
|
|
|
@ -376,24 +464,34 @@ namespace SmartAquaViewer.DataAnalysis
|
|
|
|
|
[Column("ster_excess_ozone_destroyer_energy")]
|
|
|
|
|
public double ExcessOzoneDestroyerEnergy { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 배오존장치 온실가스 (tCO₂)
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Column("ster_excess_ozone_destroyer_greenhouse_gas")]
|
|
|
|
|
public double ExcessOzoneDestroyerGreenhouseGas { get; set; }
|
|
|
|
|
|
|
|
|
|
public SterilizingSystem() { }
|
|
|
|
|
|
|
|
|
|
public SterilizingSystem(
|
|
|
|
|
bool ozoneGeneratorPower, double ozoneGeneratorEnergy,
|
|
|
|
|
string uvSterilizerId, bool uvSterilizerPower, double uvSterilizerEnergy,
|
|
|
|
|
bool ozoneDissolverPower, double ozoneDissolverPressure, double ozoneDissolverEnergy,
|
|
|
|
|
bool excessOzoneDestroyerPower, double excessOzoneDestroyerEnergy)
|
|
|
|
|
bool ozoneGeneratorPower, double ozoneGeneratorEnergy, double ozoneGeneratorGreenhouseGas,
|
|
|
|
|
string uvSterilizerId, bool uvSterilizerPower, double uvSterilizerEnergy, double uvSterilizerGreenhouseGas,
|
|
|
|
|
bool ozoneDissolverPower, double ozoneDissolverPressure, double ozoneDissolverEnergy, double ozoneDissolverGreenhouseGas,
|
|
|
|
|
bool excessOzoneDestroyerPower, double excessOzoneDestroyerEnergy, double excessOzoneDestroyerGreenhouseGas)
|
|
|
|
|
{
|
|
|
|
|
OzoneGeneratorPower = ozoneGeneratorPower;
|
|
|
|
|
OzoneGeneratorEnergy = ozoneGeneratorEnergy;
|
|
|
|
|
OzoneGeneratorGreenhouseGas = ozoneGeneratorGreenhouseGas;
|
|
|
|
|
UVSterilizerId = uvSterilizerId;
|
|
|
|
|
UVSterilizerPower = uvSterilizerPower;
|
|
|
|
|
UVSterilizerEnergy = uvSterilizerEnergy;
|
|
|
|
|
UVSterilizerGreenhouseGas = uvSterilizerGreenhouseGas;
|
|
|
|
|
OzoneDissolverPower = ozoneDissolverPower;
|
|
|
|
|
OzoneDissolverPressure = ozoneDissolverPressure;
|
|
|
|
|
OzoneDissolverEnergy = ozoneDissolverEnergy;
|
|
|
|
|
OzoneDissolverGreenhouseGas = ozoneDissolverGreenhouseGas;
|
|
|
|
|
ExcessOzoneDestroyerPower = excessOzoneDestroyerPower;
|
|
|
|
|
ExcessOzoneDestroyerEnergy = excessOzoneDestroyerEnergy;
|
|
|
|
|
ExcessOzoneDestroyerGreenhouseGas = excessOzoneDestroyerGreenhouseGas;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|