From c1cb2d8c6034a2ee7aa8a5710bba15b14f76cebc Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期五, 18 八月 2023 18:54:31 +0800
Subject: [PATCH] 2023年08月18日18:54:22

---
 HDL_ON/Entity/Function/Function.cs |  317 +++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 298 insertions(+), 19 deletions(-)

diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
index 0096799..6e0f81f 100644
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/HDL_ON/Entity/Function/Function.cs
@@ -100,7 +100,7 @@
         /// <returns></returns>
         public FunctionAttributes GetAttribute(string key)
         {
-            var attr = attributes.Find((a) => a.key == key);
+            var attr = GetFunctionAttributes().Find((a) => a.key == key);
             return attr;
         }
 
@@ -109,7 +109,7 @@
         /// </summary>
         /// <param name="key"></param>
         /// <returns></returns>
-        public string GetAttrState(string key , string defaultValue = "0")
+        public string GetAttrState(string key, string defaultValue = "0")
         {
             //涓�绾ф煡璇eyValue鍊�
             var attrState = attributes.Find((s) => s.key == key.ToString());
@@ -273,6 +273,14 @@
         /// </summary>
         public string deviceId = "0";
         /// <summary>
+        /// 绗笁鏂硅澶囨墿灞昳d
+        /// </summary>
+        public string extDevId = string.Empty;
+        /// <summary>
+        /// 鐗╃悊璁惧(妯″潡)鍨嬪彿
+        /// </summary>
+        public string omodel = string.Empty;
+        /// <summary>
         /// 璁惧spk
         /// </summary>
         public string spk = "";
@@ -365,6 +373,39 @@
         /// </summary>
         public List<FunctionAttributes> attributes = new List<FunctionAttributes>();
 
+        public List<FunctionAttributes> GetFunctionAttributes()
+        {
+            if (spk == SPK.GroupControl)
+            {
+                var list = new List<FunctionAttributes>();
+                var gc = FunctionList.List.groupControls.Find((obj) => obj.sid == sid);
+                if (gc != null)
+                {
+                    foreach (var temp in gc.sids)
+                    {
+                        var light = FunctionList.List.GetLightList().Find((obj) => obj.sid == temp.sid);
+                        if (light != null)
+                        {
+                            foreach (var attr in light.attributes)
+                            {
+                                if (list.Find((obj) => obj.key == attr.key) == null)
+                                {
+                                    list.Add(attr);
+                                }
+                            }
+                        }
+                    }
+                }
+
+                return list;
+            }
+            else
+            {
+                return attributes;
+            }
+        }
+
+
         /// <summary>
         /// 鎴块棿ID鍒楄〃
         /// 璇ュ姛鑳芥坊鍔犲埌鍒版埧闂村垪琛�
@@ -400,16 +441,20 @@
         /// 鏄惁鏀惰棌
         /// </summary>
         public bool collect = false;
+
+        private bool _online = false;
         /// <summary>
         /// 鏄惁鍦ㄧ嚎
         /// </summary>
-        public bool online {
+        public bool online
+        {
             get
             {
                 return true;
             }
-            set {
-
+            set
+            {
+                _online = value;
             }
         }
 
@@ -515,6 +560,14 @@
                 SetAttrState(sta.key, sta.value);
             }
         }
+        /// <summary>
+        /// 鍔熻兘鍒楄〃鎺掑簭
+        /// </summary>
+        public int FunctionOrderNumber = 9999;
+        /// <summary>
+        /// 鎴块棿鍒楄〃鎺掑簭
+        /// </summary>
+        public int RoomOrderNumber = 9999;
 
 
         /// <summary>
@@ -545,13 +598,27 @@
 
             new System.Threading.Thread(() =>
             {
-                if (collect)
-                {
-                    result = ApiUtlis.Ins.HttpRequest.CollectDevice(deviceId).Code;
+                if (spk == SPK.GroupControl) {
+                    var groupControl = FunctionList.List.groupControls.Find((obj) => obj.sid == sid);
+                    if (collect)
+                    {
+                        result = ApiUtlis.Ins.HttpRequest.CollectGroupControl(groupControl.userDeviceGroupControlId).Code;
+                    }
+                    else
+                    {
+                        result = ApiUtlis.Ins.HttpRequest.CancelCollectGroupControl(groupControl.userDeviceGroupControlId).Code;
+                    }
                 }
                 else
                 {
-                    result = ApiUtlis.Ins.HttpRequest.CancelCollectDevice(deviceId).Code;
+                    if (collect)
+                    {
+                        result = ApiUtlis.Ins.HttpRequest.CollectDevice(deviceId).Code;
+                    }
+                    else
+                    {
+                        result = ApiUtlis.Ins.HttpRequest.CancelCollectDevice(deviceId).Code;
+                    }
                 }
                 //鎻愮ず閿欒
                 if (result != StateCode.SUCCESS)
@@ -732,8 +799,79 @@
         public SceneFunction ConvertSceneFunction()
         {
             var sFunc = new SceneFunction();
-            foreach (var attr in attributes)
+
+            var list = new List<FunctionAttributes>();
+            if (spk == SPK.GroupControl)
             {
+                lock (list)
+                {
+                    var gc = FunctionList.List.groupControls.Find((obj) => obj.sid == sid);
+                    if (gc != null)
+                    {
+                        foreach (var temp in gc.sids)
+                        {
+                            var light = FunctionList.List.GetLightList().Find((obj) => obj.sid == temp.sid);
+                            if (light != null)
+                            {
+                                foreach (var attr in light.attributes)
+                                {
+                                    if (list.Find((obj) => obj.key == attr.key) == null)
+                                    {
+                                        list.Add(attr);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            else
+            {
+                list.AddRange(attributes);
+            }
+
+            foreach (var attr in list)
+            {
+                //绐楀笜鍚屾椂鍙戦�佸紑鍏宠窡鐧惧垎姣斾細鏈夐棶棰橈紝
+                if(spk == SPK.CurtainRoller || spk == SPK.CurtainTrietex || spk == SPK.CurtainDream)
+                {
+                    if (attr.key == FunctionAttributeKey.OnOff)
+                    {
+                        if (attributes.Find((obj) => obj.key == FunctionAttributeKey.Percent) != null)
+                        {
+                            continue;
+                        }
+                    }
+                }else if (spk == SPK.GroupControl)
+                {
+                    sFunc.type = "5";
+                }
+
+                string us = "";
+                switch (attr.key)
+                {
+                    case FunctionAttributeKey.SetTemp:
+                    case FunctionAttributeKey.RoomTemp:
+                        us = "掳C";
+                        var tempType = attributes.Find((obj) => obj.key == FunctionAttributeKey.TempType);
+                        if (tempType != null)
+                        {
+                            us = tempType.curValue.ToString();
+                        }
+                        break;
+                    case FunctionAttributeKey.Percent:
+                    case FunctionAttributeKey.Brightness:
+                        us = "%";
+                        break;
+                    case FunctionAttributeKey.CCT:
+                        us = "K";
+                        break;
+                    case FunctionAttributeKey.Angle:
+                        us = "掳";
+                        break;
+                }
+
+
                 switch (attr.key)
                 {
                     case FunctionAttributeKey.OnOff:
@@ -745,10 +883,15 @@
                     case FunctionAttributeKey.CCT:
                     case FunctionAttributeKey.RGB:
                     case FunctionAttributeKey.Angle:
+                    case FunctionAttributeKey.Colorful:
+                    case FunctionAttributeKey.ColorfulBegin:
+                    case FunctionAttributeKey.ColorfulEnd:
+                    case FunctionAttributeKey.ColorfulTime:
+                    case "security":
                         //case FunctionAttributeKey.FadeTime:
                         if (attr.curValue.ToString() == "{}")
                         {
-                            if (attr.key == FunctionAttributeKey.OnOff)
+                            if (attr.key == FunctionAttributeKey.OnOff || attr.key == FunctionAttributeKey.Colorful)
                             {
                                 attr.curValue = "off";
                             }
@@ -770,6 +913,10 @@
                                     }
                                 }
                             }
+                            else if(attr.key == "security")
+                            {
+                                attr.curValue = "false";
+                            }
                             else
                             {
                                 attr.curValue = "0";
@@ -783,13 +930,16 @@
                             {
                                 vv = 26;
                             }
-                            sFunc.status.Add(new SceneFunctionStatus() { key = attr.key, value = Convert.ToInt32(vv).ToString(), max = attr.max, min = attr.min });
+                            sFunc.status.Add(new SceneFunctionStatus() {
+                                UintString = us,
+                                key = attr.key, value = Convert.ToInt32(vv).ToString(), max = attr.max, min = attr.min }) ;
                         }
                         else
                         {
-                            sFunc.status.Add(new SceneFunctionStatus() { key = attr.key, value = attr.curValue.ToString(), max = attr.max, min = attr.min });
+                            sFunc.status.Add(new SceneFunctionStatus() {
+                                UintString = us,
+                                key = attr.key, value = attr.curValue.ToString(), max = attr.max, min = attr.min });
                         }
-
                         break;
                 }
             }
@@ -970,6 +1120,11 @@
         /// </summary>
         public List<string> value = new List<string>();
         /// <summary>
+        /// 姝ヨ繘
+        /// 绌鸿皟娓╁害鎺у埗 0.5 1
+        /// </summary>
+        public string step = "1";
+        /// <summary>
         /// 鏈�澶у��
         /// </summary>
         public int max = 100;
@@ -989,6 +1144,10 @@
         /// 褰撳墠鍊�
         /// </summary>
         public object curValue = new object();
+        /// <summary>
+        /// 灞炴�у崟浣�
+        /// </summary>
+        public string unit=string.Empty;
     }
 
     /// <summary>
@@ -998,6 +1157,10 @@
     {
         public const string _null = "";
         /// <summary>
+        /// 瀹夐槻甯冮槻鐘舵��
+        /// </summary>
+        public const string Security = "security";
+        /// <summary>
         /// 寮�鍏�
         /// </summary>
         public const string OnOff = "on_off";
@@ -1006,9 +1169,26 @@
         /// </summary>
         public const string Brightness = "brightness";
         /// <summary>
+        /// 鐐僵寮�鍏�
+        /// </summary>
+        public const string Colorful = "colorful";
+        /// <summary>
+        /// 鐐僵寮�鍚鑹�
+        /// </summary>
+        public const string ColorfulBegin = "colorful_begin";
+        /// <summary>
+        /// 鐐僵缁撴潫棰滆壊
+        /// </summary>
+        public const string ColorfulEnd = "colorful_end";
+        /// <summary>
+        /// 鐐僵杩愯鏃堕棿
+        /// </summary>
+        public const string ColorfulTime = "colorful_time";
+        /// <summary>
         /// 棰滆壊
         /// </summary>
         public const string RGB = "rgb";
+        public const string RGBW = "rgbw";
         /// <summary>
         /// 娓愬彉鏃堕棿
         /// </summary>
@@ -1313,10 +1493,25 @@
     public static class SPK
     {
         /// <summary>
+        /// 缇ゆ帶锛堣嚜瀹氫箟锛�
+        /// </summary>
+        public const string GroupControl = "groupControl";
+        /// <summary>
         /// 閫氱敤寮�鍏�
         /// </summary>
         public const string OtherCommon = "other.common";
-
+        /// <summary>
+        /// 搴忓垪
+        /// </summary>
+        public const string CommonSeries = "other.series";
+        /// <summary>
+        /// 澶у崕鎽勫儚澶�
+        /// </summary>
+        public const string IpCam_Imou = "security.ipcam.imou";
+        /// <summary>
+        /// 鏈烘鎵�
+        /// </summary>
+        public const string MechanicalArm = "electrical.mechanical_arm";
         /// <summary>
         /// 绌鸿皟绉戞妧绯荤粺锛堢豢寤猴級
         /// 鎬绘帶
@@ -1332,6 +1527,7 @@
         /// 闂ㄩ攣
         /// </summary>
         public const string DoorLock = "security.door";
+        
         /// <summary>
         /// 闂ㄩ攣spk鍒楄〃
         /// </summary>
@@ -1342,8 +1538,65 @@
             list.Add(DoorLock);
             return list;
         }
+        
 
+        /// <summary>
+        /// 鐚溂(鏃pk)
+        /// </summary>
+        public const string Peephole = "peephole";
 
+        /// <summary>
+        /// 鐚溂(鏂皊pk 鏆傛椂娌$敤)
+        /// </summary>
+        //public const string PeepholeEz = "security.peephole.ez";
+        /// <summary>
+        /// 钀ょ煶瑙嗛闂ㄩ攣
+        /// </summary>
+        public const string VideoDoorLock="security.door.ezviz";
+        /// <summary>
+        /// 钀ょ煶鎽勫儚澶�
+        /// </summary>
+        public const string Ev_Ipcam = "security.ipcam.ez";
+        /// <summary>
+        /// 褰遍煶涓帶
+        /// </summary>
+        public const string AvZkAiks = "av.zk.aiks";
+       
+        /// <summary>
+        /// 钀ょ煶瑙嗛闂ㄩ攣spk鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public static List<string> GetVideoDoorLockSPKList()
+        {
+            var list = new List<string>();
+            list.Add(VideoDoorLock);
+            return list;
+        }
+
+      
+        /// <summary>
+        /// 褰遍煶涓帶spk鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public static List<string> GetVideoControlsSPKList()
+        {
+            var list = new List<string>
+            {
+                AvZkAiks
+            };
+            return list;
+        }
+
+        /// <summary>
+        /// 钀ょ煶鎽勫儚澶磗pk鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public static List<string> GetEvIpcamSPKList()
+        {
+            var list = new List<string>();
+            list.Add(Ev_Ipcam);
+            return list;
+        }
 
         #region 鐏厜
         /// <summary>
@@ -1436,7 +1689,7 @@
         public const string HvacAC = "hvac.ac";
         /// <summary>
         /// 姣涚粏绠$┖璋�
-        /// </summary>
+        /// </summaryc
         public const string HvacCac = "hvac.cac";
 
         /// <summary>
@@ -1516,6 +1769,10 @@
         /// </summary>
         public const string Inverter = "energy.inverter";
         /// <summary>
+        /// 涓夌浉閫嗗彉鍣�
+        /// </summary>
+        public const string InverterRst = "energy.inverter_rst";
+        /// <summary>
         /// 鑳芥簮妯″潡
         /// </summary>
         public const string EnergyStandard = "energy.standard";
@@ -1571,6 +1828,10 @@
         /// </summary>
         public const string SensorPir = "sensor.pir";
         /// <summary>
+        /// 浜轰綋瀛樺湪浼犳劅鍣�
+        /// </summary>
+        public const string SensorPirHold = "sensor.pir_hold";
+        /// <summary>
         /// 锛堥棬绐椾紶鎰熷櫒锛�
         /// </summary>
         public const string SensorDoorWindow = "sensor.doorwindow";
@@ -1609,6 +1870,10 @@
         public const string SenesorMegahealth = "sensor.megahealth";
         public const string SenesorMegahealth2 = "sensor.megahealth.zg";
         /// <summary>
+        /// 姣背娉紶鎰熷櫒锛堝Э鎬佺増锛�
+        /// </summary>
+        public const string SensorMmvPose = "sensor.mmv_pose";
+        /// <summary>
         /// 绱ф�ュ懠鍙�
         /// </summary>
         public const string SensorHelp = "sensor.help";
@@ -1621,6 +1886,7 @@
             var spkList = new List<string>();
             //spkList.Add(SensorLight);
             spkList.Add(SensorPir);
+            spkList.Add(SensorPirHold);
             spkList.Add(SensorHelp);
             spkList.Add(SensorDoorWindow);
             spkList.Add(SensorSmoke);
@@ -1633,6 +1899,7 @@
             spkList.Add(SensorDryContact2);
             spkList.Add(SenesorMegahealth);
             spkList.Add(SenesorMegahealth2);
+            spkList.Add(SensorMmvPose);
             return spkList;
         }
         #endregion
@@ -1651,6 +1918,10 @@
         }
 
         #region 鐜浼犳劅鍣�
+        /// <summary>
+        /// 锛圥M10浼犳劅鍣級
+        /// </summary>
+        public const string SensorPm10 = "sensor.pm10";
         /// <summary>
         /// 锛堟俯搴︿紶鎰熷櫒锛�
         /// </summary>
@@ -1700,11 +1971,12 @@
         {
             var spkList = new List<string>();
             spkList.Add(SensorTemperature);
+            spkList.Add(SensorPm10);
             spkList.Add(SensorPm25);
             spkList.Add(SensorCO2);
             spkList.Add(SensorTVOC);
             spkList.Add(SensorHumidity);
-            spkList.Add(SensorEnvironment);
+            spkList.Add(SensorEnvironment); spkList.Add(SensorEnvironmentHailin);
             spkList.Add(SensorEnvironment2);
             spkList.Add(SensorEnvironment3);
             spkList.Add(SensorHcho);
@@ -1718,6 +1990,7 @@
         {
             var spkList = new List<string>();
             spkList.Add(SensorTemperature);
+            spkList.Add(SensorPm10);
             spkList.Add(SensorPm25);
             spkList.Add(SensorCO2);
             spkList.Add(SensorTVOC);
@@ -1733,7 +2006,7 @@
         public static List<string> EvironmentSensorList()
         {
             var spkList = new List<string>();
-            spkList.Add(SensorEnvironment);
+            spkList.Add(SensorEnvironment); spkList.Add(SensorEnvironmentHailin);
             spkList.Add(SensorEnvironment2);
             spkList.Add(SensorEnvironment3);
             return spkList;
@@ -1743,6 +2016,10 @@
         #endregion
 
         #region 瀹剁數
+        /// <summary>
+        /// 娴蜂俊鐢佃
+        /// </summary>
+        public const string ElectricalTvHisense = "electrical.tv.hisense";
         /// <summary>
         /// 瀹剁數銆佹彃搴�
         /// </summary>
@@ -1857,6 +2134,7 @@
             spkList.Add(ElectricTuyaWaterValve);
             spkList.Add(ElectricTuyaWaterValve2);
             spkList.Add(AirSwitch);
+            spkList.Add(ElectricalTvHisense);
             return spkList;
         }
 
@@ -1904,6 +2182,7 @@
             spkList.Add(ElectricTuyaWaterValve2);
             spkList.Add(ElectricTuyaWeepRobot);
             spkList.Add(ElectricTuyaWeepRobot2);
+            spkList.Add(SensorMmvPose);
             spkList.Add(SenesorMegahealth);
             spkList.Add(SenesorMegahealth2);
             return spkList;
@@ -1929,7 +2208,7 @@
                     list.Add(ElectricTuyaWeepRobot2);
                     break;
                 case BrandType.All3tyBrand:
-                    list.Add(SenesorMegahealth);//鍏嗚
+                    list.Add(SenesorMegahealth2);//鍏嗚
                     break;
             }
             return list;

--
Gitblit v1.8.0