using System;
|
using System.Collections.Generic;
|
|
namespace HDL_ON.Entity
|
{
|
public class Sensor :Function
|
{
|
public Sensor()
|
{
|
|
}
|
[Newtonsoft.Json.JsonIgnore]
|
public int functionTypeNameId
|
{
|
get
|
{
|
int nameId = 0;
|
switch (functionType)
|
{
|
case FunctionType.PM10:
|
nameId = StringId.PM10;
|
break;
|
case FunctionType.PM25:
|
nameId = StringId.PM25;
|
break;
|
case FunctionType.Noise:
|
nameId = StringId.Noise;
|
|
break;
|
case FunctionType.WindPower:
|
nameId = StringId.WindPower;
|
|
break;
|
case FunctionType.CO2:
|
nameId = StringId.CO2;
|
break;
|
case FunctionType.Temp:
|
nameId = StringId.Temp;
|
break;
|
case FunctionType.TVOC:
|
nameId = StringId.TVOC;
|
break;
|
case FunctionType.Humidity:
|
nameId = StringId.Humidity;
|
break;
|
}
|
return nameId;
|
}
|
}
|
|
[Newtonsoft.Json.JsonIgnore]
|
public Trait trait_values;
|
/// <summary>
|
/// 值
|
/// </summary>
|
[Newtonsoft.Json.JsonIgnore]
|
public double values
|
{
|
get
|
{
|
if (trait_values == null)
|
{
|
trait_values = function.Find((obj) => obj.attri == "values");
|
//找不到属性需要声明一个,防止报错闪退
|
if (trait_values == null)
|
{
|
trait_values = new Trait()
|
{
|
attri = "values",
|
value = new List<string> { "29" },
|
max = 10000,
|
min = 0,
|
};
|
trait_values.curValues = trait_values.min;
|
}
|
#if DEBUG
|
if (Convert.ToInt32(trait_values.curValues) == 0)
|
{
|
double level = 1;
|
Random random = new Random();
|
switch (functionType)
|
{
|
case FunctionType.PM10:
|
level = Math.Round(random.NextDouble() * 130, 0);
|
break;
|
case FunctionType.PM25:
|
level = Math.Round(random.NextDouble() * 130, 0);
|
break;
|
case FunctionType.Noise:
|
break;
|
case FunctionType.WindPower:
|
break;
|
case FunctionType.CO2:
|
level = Math.Round(random.NextDouble() * 6000, 0);
|
break;
|
case FunctionType.Temp:
|
level = Math.Round(random.NextDouble() * 40, 0);
|
break;
|
case FunctionType.TVOC:
|
level = Math.Round(random.NextDouble() * 10, 1);
|
break;
|
case FunctionType.Humidity:
|
level = Math.Round(random.NextDouble() * 100, 0);
|
break;
|
}
|
trait_values.curValues = level;
|
}
|
#endif
|
|
}
|
return Convert.ToDouble(trait_values.curValues);
|
}
|
set
|
{
|
try
|
{
|
if (trait_values == null)
|
{
|
trait_values = function.Find((obj) => obj.attri == "values");
|
//找不到属性需要声明一个,防止报错闪退
|
if (trait_values == null)
|
{
|
trait_values = new Trait()
|
{
|
attri = "values",
|
value = new List<string> { "up" },
|
max = 100,
|
min = 0,
|
};
|
}
|
trait_values.curValues = trait_values.min;
|
}
|
trait_values.curValues = value;
|
MainPage.Log($"values 数据刷新{value}.");
|
}
|
catch
|
{
|
MainPage.Log("values 数据刷新失败.");
|
}
|
}
|
}
|
|
List<string> _intervalValue;
|
/// <summary>
|
/// 每个等级对区间值
|
/// </summary>
|
[Newtonsoft.Json.JsonIgnore]
|
public List<string> intervalValue
|
{
|
get
|
{
|
if (_intervalValue == null)
|
{
|
_intervalValue = new List<string>();
|
switch (functionType)
|
{
|
case FunctionType.PM10:
|
_intervalValue.Add("0 ~ 35");
|
_intervalValue.Add("36 ~ 75");
|
_intervalValue.Add("76 ~ 115");
|
_intervalValue.Add("115 ~");
|
break;
|
case FunctionType.PM25:
|
_intervalValue.Add("0 ~ 35");
|
_intervalValue.Add("36 ~ 75");
|
_intervalValue.Add("76 ~ 115");
|
_intervalValue.Add("115 ~");
|
break;
|
case FunctionType.Noise:
|
break;
|
case FunctionType.WindPower:
|
break;
|
case FunctionType.CO2:
|
_intervalValue.Add("0 ~ 1000");
|
_intervalValue.Add("1001 ~ 2000");
|
_intervalValue.Add("2001 ~ 5000");
|
_intervalValue.Add("5001 ~");
|
break;
|
case FunctionType.Temp:
|
_intervalValue.Add("~ 18°C");
|
_intervalValue.Add("18 ~ 20°C");
|
_intervalValue.Add("20 ~ 25°C");
|
_intervalValue.Add("25 ~ 27°C");
|
_intervalValue.Add("27 ~ 30°C");
|
_intervalValue.Add("30 ~ 33°C");
|
_intervalValue.Add("33°C ~");
|
break;
|
case FunctionType.TVOC:
|
_intervalValue.Add("0 ~ 0.6");
|
_intervalValue.Add("0.61 ~ 2");
|
_intervalValue.Add("2.01 ~ 5");
|
_intervalValue.Add("5 ~");
|
break;
|
case FunctionType.Humidity:
|
_intervalValue.Add("70 ~");
|
_intervalValue.Add("71 ~ 40");
|
_intervalValue.Add("0 ~ 39");
|
break;
|
}
|
}
|
return _intervalValue;
|
}
|
}
|
List<uint> _levelColorList;
|
/// <summary>
|
/// 每个等级的颜色值
|
/// </summary>
|
[Newtonsoft.Json.JsonIgnore]
|
public List<uint> levelColorList
|
{
|
get
|
{
|
try
|
{
|
if (_levelColorList == null)
|
{
|
_levelColorList = new List<uint>();
|
switch (functionType)
|
{
|
case FunctionType.PM10:
|
_levelColorList.Add(0xFFADE764);
|
_levelColorList.Add(0xFFFFD154);
|
_levelColorList.Add(0xFFFF9D54);
|
_levelColorList.Add(0xFFFF3D3D);
|
break;
|
case FunctionType.PM25:
|
_levelColorList.Add(0xFFADE764);
|
_levelColorList.Add(0xFFFFD154);
|
_levelColorList.Add(0xFFFF9D54);
|
_levelColorList.Add(0xFFFF3D3D);
|
break;
|
case FunctionType.Noise:
|
|
break;
|
case FunctionType.WindPower:
|
|
break;
|
case FunctionType.CO2:
|
_levelColorList.Add(0xFFADE764);
|
_levelColorList.Add(0xFFFFD154);
|
_levelColorList.Add(0xFFFF9D54);
|
_levelColorList.Add(0xFFFF3D3D);
|
break;
|
case FunctionType.Temp:
|
_levelColorList.Add(0xFF2172FF);
|
_levelColorList.Add(0xCC4484F4);
|
_levelColorList.Add(0x7F4484F4);
|
_levelColorList.Add(0xFFADE764);
|
_levelColorList.Add(0xFFFFD154);
|
_levelColorList.Add(0xFFFF9D54);
|
_levelColorList.Add(0xFFFF3D3D);
|
break;
|
case FunctionType.TVOC:
|
_levelColorList.Add(0xFFADE764);
|
_levelColorList.Add(0xFFFFD154);
|
_levelColorList.Add(0xFFFF9D54);
|
_levelColorList.Add(0xFFFF3D3D);
|
|
break;
|
case FunctionType.Humidity:
|
_levelColorList.Add(0xFF2172FF);
|
_levelColorList.Add(0xFFADE764);
|
_levelColorList.Add(0xFFFF3D3D);
|
break;
|
}
|
}
|
}catch(Exception ex)
|
{
|
MainPage.Log($"sensor error 1 : {ex.Message}");
|
}
|
return _levelColorList;
|
}
|
}
|
List<int> _levelTextList;
|
/// <summary>
|
/// 每个等级的名称
|
/// </summary>
|
[Newtonsoft.Json.JsonIgnore]
|
public List<int> levelTextList
|
{
|
get
|
{
|
if (_levelTextList == null)
|
{
|
_levelTextList = new List<int>();
|
switch (functionType)
|
{
|
case FunctionType.PM10:
|
_levelTextList.Add(StringId.Great);
|
_levelTextList.Add(StringId.Good);
|
_levelTextList.Add(StringId.MildPollution);
|
_levelTextList.Add(StringId.HeavyPollution);
|
break;
|
case FunctionType.PM25:
|
_levelTextList.Add(StringId.Great);
|
_levelTextList.Add(StringId.Good);
|
_levelTextList.Add(StringId.MildPollution);
|
_levelTextList.Add(StringId.HeavyPollution);
|
break;
|
case FunctionType.Noise:
|
|
break;
|
case FunctionType.WindPower:
|
|
break;
|
case FunctionType.CO2:
|
_levelTextList.Add(StringId.SensorReferenceTipCO2Level1);
|
_levelTextList.Add(StringId.SensorReferenceTipCO2Level2);
|
_levelTextList.Add(StringId.SensorReferenceTipCO2Level3);
|
_levelTextList.Add(StringId.SensorReferenceTipCO2Level4);
|
break;
|
case FunctionType.Temp:
|
_levelTextList.Add(StringId.ExtremelyCold);
|
_levelTextList.Add(StringId.Cold);
|
_levelTextList.Add(StringId.SlightlyCold);
|
_levelTextList.Add(StringId.Comfortable);
|
_levelTextList.Add(StringId.TepidFever);
|
_levelTextList.Add(StringId.Heat_SensorTip);
|
_levelTextList.Add(StringId.ExtremeHeat);
|
|
|
break;
|
case FunctionType.TVOC:
|
_levelTextList.Add(StringId.SensorReferenceTVOCTipLevel1);
|
_levelTextList.Add(StringId.SensorReferenceTVOCTipLevel2);
|
_levelTextList.Add(StringId.SensorReferenceTVOCTipLevel3);
|
_levelTextList.Add(StringId.SensorReferenceTVOCTipLevel4);
|
|
break;
|
case FunctionType.Humidity:
|
_levelTextList.Add(StringId.SensorReferenceHumidityTipLevel1);
|
_levelTextList.Add(StringId.SensorReferenceHumidityTipLevel2);
|
_levelTextList.Add(StringId.SensorReferenceHumidityTipLevel3);
|
break;
|
}
|
}
|
return _levelTextList;
|
}
|
}
|
/// <summary>
|
/// 当前等级
|
/// </summary>
|
[Newtonsoft.Json.JsonIgnore]
|
public int curLevel
|
{
|
get
|
{
|
int level = 1;
|
switch (functionType)
|
{
|
case FunctionType.PM10:
|
if (values < 35)
|
level = 1;
|
else if (values < 75)
|
level = 2;
|
else if (values < 115)
|
level = 3;
|
else if (values > 115)
|
level = 4;
|
break;
|
case FunctionType.PM25:
|
if (values < 35)
|
level = 1;
|
else if (values < 75)
|
level = 2;
|
else if (values < 115)
|
level = 3;
|
else if (values > 115)
|
level = 4;
|
break;
|
case FunctionType.Noise:
|
|
break;
|
case FunctionType.WindPower:
|
|
break;
|
case FunctionType.CO2:
|
if (values < 1000)
|
level = 1;
|
else if (values < 2000)
|
level = 2;
|
else if (values < 5000)
|
level = 3;
|
else if (values > 5000)
|
level = 4;
|
break;
|
case FunctionType.Temp:
|
if (values < 18)
|
level = 1;
|
else if (values < 20)
|
level = 2;
|
else if (values < 25)
|
level = 3;
|
else if (values < 27)
|
level = 4;
|
else if (values < 30)
|
level = 5;
|
else if (values < 33)
|
level = 6;
|
else if (values > 33)
|
level = 7;
|
break;
|
case FunctionType.TVOC:
|
if (values < 0.6)
|
level = 1;
|
else if (values < 2)
|
level = 2;
|
else if (values < 5)
|
level = 3;
|
else if (values > 5)
|
level = 4;
|
break;
|
case FunctionType.Humidity:
|
if (values > 70)
|
level = 1;
|
else if (values > 40)
|
level = 2;
|
else if (values < 40)
|
level = 3;
|
break;
|
}
|
return level;
|
}
|
}
|
|
}
|
}
|