From 6d73bf6e816570291865674bef8bce8972e4de3f Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期三, 01 十二月 2021 16:32:57 +0800
Subject: [PATCH] 2021-12-01-01

---
 HDL_ON/Entity/Function/Sensor.cs |  105 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 104 insertions(+), 1 deletions(-)

diff --git a/HDL_ON/Entity/Function/Sensor.cs b/HDL_ON/Entity/Function/Sensor.cs
index 341392a..82ed611 100644
--- a/HDL_ON/Entity/Function/Sensor.cs
+++ b/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>
@@ -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;
+        }
+
     }
 }

--
Gitblit v1.8.0