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.PM25: nameId = StringId.PM25; 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; /// /// 值 /// [Newtonsoft.Json.JsonIgnore] public double values { get { if (trait_values == null) { trait_values = function.Find((obj) => obj.name == "values"); //找不到属性需要声明一个,防止报错闪退 if (trait_values == null) { trait_values = new Trait() { name = "values", value_key = new List { "29" }, max = 10000, min = 0, }; trait_values.value = trait_values.min; } #if DEBUG if (Convert.ToInt32(trait_values.value) == 0) { double level = 1; Random random = new Random(); switch (functionType) { case FunctionType.PM25: level = Math.Round(random.NextDouble() * 130, 0); 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.value = level; } #endif } return Convert.ToDouble(trait_values.value); } set { try { if (trait_values == null) { trait_values = function.Find((obj) => obj.name == "values"); //找不到属性需要声明一个,防止报错闪退 if (trait_values == null) { trait_values = new Trait() { name = "values", value_key = new List { "up" }, max = 100, min = 0, }; } trait_values.value = trait_values.min; } trait_values.value = value; MainPage.Log($"values 数据刷新{value}."); } catch { MainPage.Log("values 数据刷新失败."); } } } List _intervalValue; /// /// 每个等级对区间值 /// [Newtonsoft.Json.JsonIgnore] public List intervalValue { get { if (_intervalValue == null) { _intervalValue = new List(); switch (functionType) { case FunctionType.PM25: _intervalValue.Add("0 ~ 35"); _intervalValue.Add("36 ~ 75"); _intervalValue.Add("76 ~ 115"); _intervalValue.Add("115 ~"); 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 _levelColorList; /// /// 每个等级的颜色值 /// [Newtonsoft.Json.JsonIgnore] public List levelColorList { get { try { if (_levelColorList == null) { _levelColorList = new List(); switch (functionType) { case FunctionType.PM25: _levelColorList.Add(0xFFADE764); _levelColorList.Add(0xFFFFD154); _levelColorList.Add(0xFFFF9D54); _levelColorList.Add(0xFFFF3D3D); 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 _levelTextList; /// /// 每个等级的名称 /// [Newtonsoft.Json.JsonIgnore] public List levelTextList { get { if (_levelTextList == null) { _levelTextList = new List(); switch (functionType) { case FunctionType.PM25: _levelTextList.Add(StringId.Great); _levelTextList.Add(StringId.Good); _levelTextList.Add(StringId.MildPollution); _levelTextList.Add(StringId.HeavyPollution); 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; } } /// /// 当前等级 /// [Newtonsoft.Json.JsonIgnore] public int curLevel { get { int level = 1; switch (functionType) { 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.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; } } } }