xm
2021-12-01 6d73bf6e816570291865674bef8bce8972e4de3f
HDL_ON/Entity/Function/Sensor.cs
@@ -38,7 +38,34 @@
        /// </summary>
        public double GetValues(Function function)
        {
            var value = function.GetAttrState(FunctionAttributeKey.Value);
            FunctionAttributes attr = function.GetAttribute(FunctionAttributeKey.Value);
            if (attr == null)
            {
                switch (function.spk)
                {
                    case SPK.SensorCO2:
                        attr = function.GetAttribute(FunctionAttributeKey.Co2);
                        break;
                    case SPK.SensorTemperature:
                        attr = function.GetAttribute(FunctionAttributeKey.Temperature);
                        break;
                    case SPK.SensorTVOC:
                        attr = function.GetAttribute(FunctionAttributeKey.Tvoc);
                        break;
                    case SPK.SensorPm25:
                        attr = function.GetAttribute(FunctionAttributeKey.Pm25);
                        break;
                    case SPK.SensorHcho:
                        attr = function.GetAttribute(FunctionAttributeKey.Hcho);
                        break;
                    case SPK.SensorHumidity:
                        attr = function.GetAttribute(FunctionAttributeKey.Humidity);
                        break;
                }
            }
            double value = 0.0;
            double.TryParse( attr.state,out value);
            return Convert.ToDouble(value);
        }
        /// <summary>
@@ -81,10 +108,10 @@
                    _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 ~");
                    _intervalValue.Add("0 ~ 600");
                    _intervalValue.Add("601 ~ 2000");
                    _intervalValue.Add("2001 ~ 5000");
                    _intervalValue.Add("5001 ~");
                    break;
                case SPK.SensorHumidity:
                    _intervalValue.Add("70 ~");
@@ -237,7 +264,7 @@
                        level = 2;
                    else if (values < 5000)
                        level = 3;
                    else if (values > 5000)
                    else if (values >= 5000)
                        level = 4;
                    break;
                case SPK.SensorTemperature:
@@ -257,13 +284,13 @@
                        level = 7;
                    break;
                case SPK.SensorTVOC:
                    if (values < 0.6)
                    if (values < 600)
                        level = 1;
                    else if (values < 2)
                    else if (values < 2000)
                        level = 2;
                    else if (values < 5)
                    else if (values < 5000)
                        level = 3;
                    else if (values > 5)
                    else if (values >= 5000)
                        level = 4;
                    break;
                case SPK.SensorHumidity:
@@ -285,5 +312,81 @@
            }
            return level;
        }
        /// <summary>
        /// 当前等级
        /// </summary>
        public int GetCurLevel(string spk,double values)
        {
            int level = 1;
            switch (spk)
            {
                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 < 600)
                        level = 1;
                    else if (values < 2000)
                        level = 2;
                    else if (values < 5000)
                        level = 3;
                    else if (values >= 5000)
                        level = 4;
                    break;
                case SPK.SensorHumidity:
                    if (values > 70)
                        level = 1;
                    else if (values > 40)
                        level = 2;
                    else if (values < 40)
                        level = 3;
                    break;
                case SPK.SensorHcho:
                    if (values <= 0.08)
                        level = 1;
                    else if (values <= 0.1)
                        level = 2;
                    else
                        level = 3;
                    break;
            }
            return level;
        }
    }
}