| | |
| | | |
| | | namespace HDL_ON.Entity |
| | | { |
| | | public class Sensor :Function |
| | | public class Sensor |
| | | { |
| | | 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 FunctionAttributes trait_values; |
| | | /// <summary> |
| | | /// 值 |
| | | /// 获取名称文本ID |
| | | /// </summary> |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public double values |
| | | /// <param name="spk"></param> |
| | | /// <returns></returns> |
| | | public int GetFunctionTypeNameId(string spk) |
| | | { |
| | | get |
| | | int nameId = 0; |
| | | switch (spk) |
| | | { |
| | | if (trait_values == null) |
| | | { |
| | | trait_values = attributes.Find((obj) => obj.key == FunctionAttributeKey.Value); |
| | | //找不到属性需要声明一个,防止报错闪退 |
| | | if (trait_values == null) |
| | | { |
| | | trait_values = new FunctionAttributes() |
| | | { |
| | | key = FunctionAttributeKey.Value, |
| | | value = new List<string> { "29" }, |
| | | max = 10000, |
| | | min = 0, |
| | | }; |
| | | trait_values.curValue = 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.curValue = level; |
| | | } |
| | | #endif |
| | | |
| | | } |
| | | return Convert.ToDouble(trait_values.curValue); |
| | | case SPK.SensorPm25: |
| | | nameId = StringId.PM25; |
| | | break; |
| | | case SPK.SensorCO2: |
| | | nameId = StringId.CO2; |
| | | break; |
| | | case SPK.SensorTemperature: |
| | | nameId = StringId.Temp; |
| | | break; |
| | | case SPK.SensorTVOC: |
| | | nameId = StringId.TVOC; |
| | | break; |
| | | case SPK.SensorHumidity: |
| | | nameId = StringId.Humidity; |
| | | break; |
| | | } |
| | | set |
| | | { |
| | | try |
| | | |
| | | { |
| | | if (trait_values == null) |
| | | { |
| | | trait_values = attributes.Find((obj) => obj.key == FunctionAttributeKey.Value); |
| | | //找不到属性需要声明一个,防止报错闪退 |
| | | if (trait_values == null) |
| | | { |
| | | trait_values = new FunctionAttributes() |
| | | { |
| | | key = FunctionAttributeKey.Value, |
| | | value = new List<string> { "up" }, |
| | | max = 100, |
| | | min = 0, |
| | | }; |
| | | } |
| | | trait_values.curValue = trait_values.min; |
| | | } |
| | | trait_values.curValue = value; |
| | | MainPage.Log($"values 数据刷新{value}."); |
| | | } |
| | | catch |
| | | { |
| | | MainPage.Log("values 数据刷新失败."); |
| | | } |
| | | } |
| | | return nameId; |
| | | } |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public double GetValues(Function function) |
| | | { |
| | | var value = function.GetAttrState(FunctionAttributeKey.Value); |
| | | return Convert.ToDouble(value); |
| | | } |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | /// <param name="value"></param> |
| | | /// <param name="function"></param> |
| | | public void SetValues(int value, Function function) |
| | | { |
| | | function.SetAttrState(FunctionAttributeKey.Value, value); |
| | | } |
| | | |
| | | List<string> _intervalValue; |
| | | /// <summary> |
| | | /// 每个等级对区间值 |
| | | /// </summary> |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public List<string> intervalValue |
| | | public List<string> GetIntervalValue(string spk) |
| | | { |
| | | get |
| | | var _intervalValue = new List<string>(); |
| | | switch (spk) |
| | | { |
| | | if (_intervalValue == null) |
| | | { |
| | | _intervalValue = new List<string>(); |
| | | 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; |
| | | case SPK.SensorPm25: |
| | | _intervalValue.Add("0 ~ 35"); |
| | | _intervalValue.Add("36 ~ 75"); |
| | | _intervalValue.Add("76 ~ 115"); |
| | | _intervalValue.Add("115 ~"); |
| | | break; |
| | | case SPK.SensorCO2: |
| | | _intervalValue.Add("0 ~ 1000"); |
| | | _intervalValue.Add("1001 ~ 2000"); |
| | | _intervalValue.Add("2001 ~ 5000"); |
| | | _intervalValue.Add("5001 ~"); |
| | | break; |
| | | case SPK.SensorTemperature: |
| | | _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 SPK.SensorTVOC: |
| | | _intervalValue.Add("0 ~ 0.6"); |
| | | _intervalValue.Add("0.61 ~ 2"); |
| | | _intervalValue.Add("2.01 ~ 5"); |
| | | _intervalValue.Add("5 ~"); |
| | | break; |
| | | case SPK.SensorHumidity: |
| | | _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 |
| | | public List<uint> GetLevelColorList(string spk) |
| | | { |
| | | get |
| | | var _levelColorList = new List<uint>(); |
| | | switch (spk) |
| | | { |
| | | try |
| | | { |
| | | if (_levelColorList == null) |
| | | { |
| | | _levelColorList = new List<uint>(); |
| | | 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); |
| | | case SPK.SensorPm25: |
| | | _levelColorList.Add(0xFFADE764); |
| | | _levelColorList.Add(0xFFFFD154); |
| | | _levelColorList.Add(0xFFFF9D54); |
| | | _levelColorList.Add(0xFFFF3D3D); |
| | | break; |
| | | case SPK.SensorCO2: |
| | | _levelColorList.Add(0xFFADE764); |
| | | _levelColorList.Add(0xFFFFD154); |
| | | _levelColorList.Add(0xFFFF9D54); |
| | | _levelColorList.Add(0xFFFF3D3D); |
| | | break; |
| | | case SPK.SensorTemperature: |
| | | _levelColorList.Add(0xFF2172FF); |
| | | _levelColorList.Add(0xCC4484F4); |
| | | _levelColorList.Add(0x7F4484F4); |
| | | _levelColorList.Add(0xFFADE764); |
| | | _levelColorList.Add(0xFFFFD154); |
| | | _levelColorList.Add(0xFFFF9D54); |
| | | _levelColorList.Add(0xFFFF3D3D); |
| | | break; |
| | | case SPK.SensorTVOC: |
| | | _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; |
| | | break; |
| | | case SPK.SensorHumidity: |
| | | _levelColorList.Add(0xFF2172FF); |
| | | _levelColorList.Add(0xFFADE764); |
| | | _levelColorList.Add(0xFFFF3D3D); |
| | | break; |
| | | } |
| | | return _levelColorList; |
| | | |
| | | } |
| | | List<int> _levelTextList; |
| | | |
| | | /// <summary> |
| | | /// 每个等级的名称 |
| | | /// </summary> |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public List<int> levelTextList |
| | | public List<int> GetLevelTextList(string spk) |
| | | { |
| | | get |
| | | var _levelTextList = new List<int>(); |
| | | switch (spk) |
| | | { |
| | | if (_levelTextList == null) |
| | | { |
| | | _levelTextList = new List<int>(); |
| | | 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; |
| | | case SPK.SensorPm25: |
| | | _levelTextList.Add(StringId.Great); |
| | | _levelTextList.Add(StringId.Good); |
| | | _levelTextList.Add(StringId.MildPollution); |
| | | _levelTextList.Add(StringId.HeavyPollution); |
| | | break; |
| | | case SPK.SensorCO2: |
| | | _levelTextList.Add(StringId.SensorReferenceTipCO2Level1); |
| | | _levelTextList.Add(StringId.SensorReferenceTipCO2Level2); |
| | | _levelTextList.Add(StringId.SensorReferenceTipCO2Level3); |
| | | _levelTextList.Add(StringId.SensorReferenceTipCO2Level4); |
| | | break; |
| | | case SPK.SensorTemperature: |
| | | _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 SPK.SensorTVOC: |
| | | _levelTextList.Add(StringId.SensorReferenceTVOCTipLevel1); |
| | | _levelTextList.Add(StringId.SensorReferenceTVOCTipLevel2); |
| | | _levelTextList.Add(StringId.SensorReferenceTVOCTipLevel3); |
| | | _levelTextList.Add(StringId.SensorReferenceTVOCTipLevel4); |
| | | break; |
| | | case SPK.SensorHumidity: |
| | | _levelTextList.Add(StringId.SensorReferenceHumidityTipLevel1); |
| | | _levelTextList.Add(StringId.SensorReferenceHumidityTipLevel2); |
| | | _levelTextList.Add(StringId.SensorReferenceHumidityTipLevel3); |
| | | break; |
| | | } |
| | | return _levelTextList; |
| | | } |
| | | /// <summary> |
| | | /// 当前等级 |
| | | /// </summary> |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public int curLevel |
| | | public int GetCurLevel(Function function) |
| | | { |
| | | get |
| | | var spk = function.spk; |
| | | var values = GetValues(function); |
| | | int level = 1; |
| | | switch (spk) |
| | | { |
| | | 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; |
| | | case SPK.SensorPm25: |
| | | 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 SPK.SensorCO2: |
| | | 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 SPK.SensorTemperature: |
| | | 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 SPK.SensorTVOC: |
| | | 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 SPK.SensorHumidity: |
| | | if (values > 70) |
| | | level = 1; |
| | | else if (values > 40) |
| | | level = 2; |
| | | else if (values < 40) |
| | | level = 3; |
| | | break; |
| | | } |
| | | return level; |
| | | } |
| | | |
| | | } |
| | | } |