From ea0b1e8e5f43c5fd0a7d479e25ede3b8cbea464a Mon Sep 17 00:00:00 2001
From: wxr <wxr@hdlchina.com.cn>
Date: 星期一, 02 十二月 2024 17:17:19 +0800
Subject: [PATCH] tcp;可视对讲;

---
 HDL_ON/Entity/Function/Function.cs |  722 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 677 insertions(+), 45 deletions(-)

diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
index a93532b..edcda72 100644
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/HDL_ON/Entity/Function/Function.cs
@@ -76,7 +76,8 @@
                 DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); // 褰撳湴鏃跺尯
                 return startTime.AddMilliseconds(Convert.ToDouble(time_stamp)).ToString("s");
             }
-            catch {
+            catch
+            {
                 return DateTime.MinValue.ToString("s");
             }
         }
@@ -100,7 +101,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;
         }
 
@@ -108,8 +109,9 @@
         /// 鑾峰彇灞炴�у綋鍓嶇姸鎬�
         /// </summary>
         /// <param name="key"></param>
+        /// <param name="defaultValue">榛樿鍊�</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());
@@ -120,7 +122,7 @@
             if (string.IsNullOrEmpty(attrState.state))
             {
                 //浜岀骇鏌ヨkeyValue鍊�
-                return GetOriginalState(key);
+                return GetOriginalState(key, defaultValue);
             }
             return attrState.state;
         }
@@ -130,33 +132,48 @@
         /// 榛樿鍊硷細0
         /// </summary>
         /// <param name="key">璇泙瀹氫箟鐨勫睘鎬у��</param>
+        /// <param name="defaultValue">榛樿鍊�</param>
         /// <returns></returns>
-        public string GetOriginalState(string key)
+        public string GetOriginalState(string key, string defaultValue)
         {
             var originalState = status.Find((s) => s.key == key.ToString());
             if (originalState == null || string.IsNullOrEmpty(originalState.value))
             {
-                return "0";
+                return defaultValue;
             }
             return originalState.value;
         }
         /// <summary>
         /// 璁剧疆灞炴�х姸鎬�
         /// </summary>
-        /// <param name="key"></param>
-        /// <param name="value"></param>
+        /// <param name="setKey"></param>
+        /// <param name="setValues"></param>
         /// <returns>淇敼缁撴灉</returns>
-        public bool SetAttrState(string key, object value)
+        public bool SetAttrState(string setKey, object setValues)
         {
-            var attr = attributes.Find((s) => s.key == key);
+            var attr = attributes.Find((s) => s.key == setKey);
             if (attr == null)
             {
+                switch (setKey)
+                {
+                    case FunctionAttributeKey.CoolTemperatrue:
+                    case FunctionAttributeKey.HeatTemperatrue:
+                    case FunctionAttributeKey.AutoTemperatrue:
+                    case FunctionAttributeKey.DehumiTemperatrue:
+                        attributes.Add(new FunctionAttributes()
+                        {
+                            key = setKey,
+                            state = setValues.ToString(),
+                            curValue = setValues.ToString(),
+                        });
+                        return true;
+                }
                 return false;
             }
             else
             {
-                attr.state = value.ToString();
-                attr.curValue = value.ToString();
+                attr.state = setValues.ToString();
+                attr.curValue = setValues.ToString();
             }
             return true;
         }
@@ -171,6 +188,16 @@
                 string iconPath = spk.Replace(".", "");
                 switch (spk)
                 {
+                    case SPK.SensorDryContact2:
+                    case SPK.OtherCommon:
+                        iconPath = "sensordryContact";
+                        break;
+                    //case SPK.SensorLight:
+                    //    iconPath = "lightswitch";
+                    //    break;
+                    case SPK.AirSwitchP3:
+                        iconPath = "electricalbreaker";
+                        break;
                     case SPK.PanelSocket:
                         iconPath = "electricalsocket";
                         break;
@@ -183,13 +210,18 @@
                     case SPK.HvacAirFresh:
                         iconPath = "airFreshstandard";
                         break;
+                    case SPK.HvacAirFreshJinmao:
+                        iconPath = "airFreshjinmao";
+                        break;
                     case SPK.HvacAC:
+                    case SPK.HvacAcPanel:
                         iconPath = "acstandard";
                         break;
                     case SPK.HvacFan:
                         iconPath = "electricalfan";
                         break;
                     case SPK.HvacFloorHeat:
+                    case SPK.HvacFloorHeatPanel:
                         iconPath = "floorHeatstandard";
                         break;
                     case SPK.ElectricTuyaFan2:
@@ -234,7 +266,6 @@
         public Dictionary<string, byte> Fh_Mode_Temp = new Dictionary<string, byte>();
         #endregion
 
-
         #region base info    
         public string sid = "0301011234567801012301230123";
         /// <summary>
@@ -274,9 +305,18 @@
         /// </summary>
         public string extDevId = string.Empty;
         /// <summary>
+        /// 鐗╃悊璁惧(妯″潡)鍨嬪彿
+        /// </summary>
+        public string omodel = string.Empty;
+        /// <summary>
         /// 璁惧spk
         /// </summary>
         public string spk = "";
+        /// <summary>
+        /// 鎵╁睍淇℃伅
+        /// 瀛楃涓�
+        /// </summary>
+        public string extend = "";
 
         private string _SpkCategory = string.Empty;
         /// <summary>
@@ -366,6 +406,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鍒楄〃
         /// 璇ュ姛鑳芥坊鍔犲埌鍒版埧闂村垪琛�
@@ -402,20 +475,53 @@
         /// </summary>
         public bool collect = false;
 
-        private bool _online = false;
-        /// <summary>
-        /// 鏄惁鍦ㄧ嚎
-        /// </summary>
+        private bool _online;
         public bool online
         {
             get
             {
+                if (spk == SPK.AirSwitchP3 || spk == SPK.ElectricalTvHisense)
+                {
+                    return _online;
+                }
                 return true;
             }
             set
             {
                 _online = value;
             }
+        }
+        ///// <summary>
+        ///// 鏄惁鍦ㄧ嚎
+        ///// </summary>
+        //public bool online
+        //{
+        //    get
+        //    {
+        //        if(spk == SPK.AirSwitchP3)
+        //        {
+        //            return _online;
+        //        }
+        //        return true;
+        //    }
+        //    set
+        //    {
+        //        _online = value;
+        //    }
+        //}
+
+        public bool isOnline()
+        {
+            if (spk == SPK.AirSwitchP3)
+            {
+                return online;
+            }
+            return true;
+        }
+
+        public void setOnine(bool isOnline)
+        {
+            online = isOnline;
         }
 
         /// <summary>
@@ -438,10 +544,6 @@
 
         #endregion
 
-
-        //public void 
-
-
         /// <summary>
         /// 寤舵椂
         /// </summary>
@@ -451,6 +553,31 @@
         /// </summary>
         [Newtonsoft.Json.JsonIgnore]
         public string lastState = "";
+        /// <summary>
+        /// 鑾峰彇鐘舵�佹樉绀烘枃鏈�
+        /// </summary>
+        /// <returns></returns>
+        public string GetLastStateText()
+        {
+            var text = "";
+            switch (spk)
+            {
+                case SPK.HvacCac:
+                    switch (GetAttrState(FunctionAttributeKey.Mode))
+                    {
+                        case "cool":
+                            text = Language.StringByID(StringId.Cool);
+                            break;
+                        case "heat":
+                            text = Language.StringByID(StringId.Heat);
+                            break;
+                    }
+
+                    break;
+
+            }
+            return text;
+        }
 
         FunctionAttributes _trait_on_off;
         [Newtonsoft.Json.JsonIgnore]
@@ -495,6 +622,14 @@
                 SetAttrState(sta.key, sta.value);
             }
         }
+        /// <summary>
+        /// 鍔熻兘鍒楄〃鎺掑簭
+        /// </summary>
+        public int FunctionOrderNumber = 9999;
+        /// <summary>
+        /// 鎴块棿鍒楄〃鎺掑簭
+        /// </summary>
+        public int RoomOrderNumber = 9999;
 
 
         /// <summary>
@@ -525,29 +660,41 @@
 
             new System.Threading.Thread(() =>
             {
-                if (collect)
+                if (spk == SPK.GroupControl)
                 {
-                    result = ApiUtlis.Ins.HttpRequest.CollectDevice(deviceId).Code;
+                    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)
                 {
                     Application.RunOnMainThread(() =>
                     {
-                        collect = !collect;
                         IMessageCommon.Current.ShowErrorInfoAlter(result);
                     });
-                } else
-                {
-                    Application.RunOnMainThread(() =>
-                    {
-                        UI.HomePage.RefreshFunctionView();
-                    });
                 }
+                Application.RunOnMainThread(() =>
+                {
+                    this.SaveFunctionFile();
+                    UI.HomePage.RefreshFunctionView();
+                });
             })
             { IsBackground = true }.Start();
         }
@@ -640,7 +787,7 @@
         /// <summary>
         /// 淇濆瓨鎴块棿缁戝畾淇℃伅
         /// </summary>
-        public void UpdataRoomIds()
+        public async void UpdataRoomIds()
         {
             new System.Threading.Thread(() =>
             {
@@ -712,10 +859,154 @@
         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 tempDevice = FunctionList.List.GetLightList().Find((obj) => obj.sid == temp.sid);
+                            if (tempDevice != null)
+                            {
+                                foreach (var attr in tempDevice.attributes)
+                                {
+                                    if (list.Find((obj) => obj.key == attr.key) == null)
+                                    {
+                                        list.Add(attr);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            else if (spk == SPK.MusicStandard || spk == SPK.AvMusic)
+            {
+                list.Add(new FunctionAttributes
+                {
+                    key = FunctionAttributeKey.OnOff,
+                    curValue = string.Empty,
+                });
+                list.Add(new FunctionAttributes
+                {
+                    key = FunctionAttributeKey.Volume,
+                    curValue = string.Empty,
+                });
+                list.Add(new FunctionAttributes
+                {
+                    key = FunctionAttributeKey.SongName,
+                    curValue = string.Empty,
+                });
+
+            }
+            else if (spk == SPK.ElectricalTvHisense)
+            {
+                list.Add(new FunctionAttributes
+                {
+                    key = FunctionAttributeKey.OnOff,
+                    curValue = string.Empty,
+                });
+                list.Add(new FunctionAttributes
+                {
+                    key = FunctionAttributeKey.SetVolume,
+                    curValue = string.Empty,
+                });
+                list.Add(new FunctionAttributes
+                {
+                    key = FunctionAttributeKey.Signal,
+                    curValue = string.Empty,
+                });
+            }
+            else
+            {
+                list.AddRange(attributes);
+            }
+
+            foreach (var attr in list)
+            {
+                if (attr.key == FunctionAttributeKey.ColorfulBegin || attr.key == FunctionAttributeKey.ColorfulEnd || attr.key == FunctionAttributeKey.ColorfulTime)
+                {
+                    continue;
+                }
+                //绐楀笜鍚屾椂鍙戦�佸紑鍏宠窡鐧惧垎姣斾細鏈夐棶棰橈紝
+                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";
+                }
+
                 switch (attr.key)
                 {
+                    case FunctionAttributeKey.SetTemp:
+                        var tt = GetAttribute(FunctionAttributeKey.TempType);
+                        if (tt == null)
+                        {
+                            attr.unit = "掳C";
+                        }
+                        else
+                        {
+                            if (tt.unit == string.Empty)
+                            {
+                                attr.unit = "掳C";
+                            }
+                            else
+                            {
+                                if (tt.unit == "C")
+                                {
+                                    attr.unit = "掳C";
+                                }
+                                else if (tt.unit == "F")
+                                {
+                                    attr.unit = "掳F";
+                                }
+                                else
+                                {
+                                    attr.unit = tt.unit;
+                                }
+                            }
+                        }
+                        break;
+                    case FunctionAttributeKey.RoomTemp:
+                        attr.unit = "掳C";
+                        var tempType = attributes.Find((obj) => obj.key == FunctionAttributeKey.TempType);
+                        if (tempType != null)
+                        {
+                            attr.unit = tempType.curValue.ToString();
+                        }
+                        break;
+                    case FunctionAttributeKey.Percent:
+                    case FunctionAttributeKey.Brightness:
+                        attr.unit = "%";
+                        break;
+                    case FunctionAttributeKey.CCT:
+                        attr.unit = "K";
+                        break;
+                    case FunctionAttributeKey.Angle:
+                        attr.unit = "掳";
+                        break;
+                }
+
+
+                switch (attr.key)
+                {
+                    case FunctionAttributeKey.SongName:
+                    case FunctionAttributeKey.Volume:
+                    case FunctionAttributeKey.SetVolume:
+                    case FunctionAttributeKey.Signal:
                     case FunctionAttributeKey.OnOff:
                     case FunctionAttributeKey.Brightness:
                     case FunctionAttributeKey.Mode:
@@ -725,11 +1016,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";
                             }
@@ -751,7 +1046,7 @@
                                     }
                                 }
                             }
-                            else if(attr.key == "security")
+                            else if (attr.key == "security")
                             {
                                 attr.curValue = "false";
                             }
@@ -768,13 +1063,26 @@
                             {
                                 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 = attr.unit,
+                                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 = attr.unit,
+                                key = attr.key,
+                                value = attr.curValue.ToString(),
+                                max = attr.max,
+                                min = attr.min
+                            });
                         }
-
                         break;
                 }
             }
@@ -786,6 +1094,11 @@
         /// 鏇存柊鏃堕棿
         /// </summary>
         public DateTime refreshTime = DateTime.MinValue;
+        /// <summary>
+        /// 鏈�鍚庢洿鏂扮姸鎬佺殑鏃堕棿
+        /// </summary>
+        [Newtonsoft.Json.JsonIgnore]
+        public DateTime updateTime = DateTime.MinValue;
 
         /// <summary>
         /// 鑾峰彇鏈湴鎺у埗鏁版嵁
@@ -920,6 +1233,10 @@
         /// 浜戠璐熻矗鐢熸垚
         /// </summary>
         public string deviceId = "0";
+        /// <summary>
+        /// 鍦ㄧ嚎鐘舵��
+        /// </summary>
+        public bool online = true;
         public List<AttributesStatus> status = new List<AttributesStatus>();
     }
     /// <summary>
@@ -979,6 +1296,10 @@
         /// 褰撳墠鍊�
         /// </summary>
         public object curValue = new object();
+        /// <summary>
+        /// 灞炴�у崟浣�
+        /// </summary>
+        public string unit = string.Empty;
     }
 
     /// <summary>
@@ -986,6 +1307,118 @@
     /// </summary>
     public static class FunctionAttributeKey
     {
+        #region 绌鸿皟bus灞炴��
+        /// <summary>
+        /// 鍒跺喎妯″紡娓╁害
+        /// </summary>
+        public const string CoolTemperatrue = "CoolTemperatrue";
+        /// <summary>
+        /// 鍒剁儹妯″紡娓╁害
+        /// </summary>
+        public const string HeatTemperatrue = "HeatTemperatrue";
+        /// <summary>
+        /// 鑷姩妯″紡娓╁害
+        /// </summary>
+        public const string AutoTemperatrue = "AutoTemperatrue";
+        /// <summary>
+        /// 闄ゆ箍妯″紡娓╁害
+        /// </summary>
+        public const string DehumiTemperatrue = "DehumiTemperatrue";
+        #endregion
+
+        #region 绌鸿皟bus灞炴��
+        /// <summary>
+        /// [4]鏅�氾細璁剧疆娓╁害(鎽勬皬0-100锛屽崕姘�32-212)/鍔熺巼鍊�(0-10) (1byte)  
+        /// </summary>
+        public const string NormalTemperatrue = "NormalTemperatrue";
+        /// <summary>
+        /// [5]鐧藉ぉ锛氳缃俯搴�(鎽勬皬0-100锛屽崕姘�32-212)/鍔熺巼鍊�(0-10) (1byte) 
+        /// </summary>
+        public const string DayTemperatrue = "DayTemperatrue";
+        /// <summary>
+        /// [6]澶滄櫄锛氳缃俯搴�(鎽勬皬0-100锛屽崕姘�32-212)/鍔熺巼鍊�(0-10) (1byte)
+        /// </summary>
+        public const string NightTemperatrue = "NightTemperatrue";
+        /// <summary>
+        /// [7]绂诲紑锛氳缃俯搴�(鎽勬皬0-100锛屽崕姘�32-212)/鍔熺巼鍊�(0-10) (1byte)
+        /// </summary>
+        public const string AwayTemperatrue = "AwayTemperatrue";
+        #region 涓夌浉绌哄紑灞炴��
+
+
+        /// <summary>
+        /// A鐩稿姛鐜�
+        /// </summary>
+        public const string PowerA = "power_a";
+        /// <summary>
+        /// B鐩稿姛鐜�
+        /// </summary>
+        public const string PowerB = "power_b";
+        /// <summary>
+        /// C鐩稿姛鐜�
+        /// </summary>
+        public const string PowerC = "power_c";
+        /// <summary>
+        /// A鐩哥數鍘�
+        /// </summary>
+        public const string VoltageA = "voltage_a";
+        /// <summary>
+        /// B鐩哥數鍘�
+        /// </summary>
+        public const string VoltageB = "voltage_b";
+        /// <summary>
+        /// C鐩哥數鍘�
+        /// </summary>
+        public const string VoltageC = "voltage_c";
+        /// <summary>
+        /// A鐩哥數娴�
+        /// </summary>
+        public const string CurrentA = "current_a";
+        /// <summary>
+        /// B鐩哥數娴�
+        /// </summary>
+        public const string CurrentB = "current_b";
+        /// <summary>
+        /// C鐩哥數娴�
+        /// </summary>
+        public const string CurrentC = "current_c";
+        /// <summary>
+        /// A鐩告俯搴�
+        /// </summary>
+        public const string TempA = "temp_a";
+        /// <summary>
+        /// B鐩告俯搴�
+        /// </summary>
+        public const string TempB = "temp_b";
+        /// <summary>
+        /// C鐩告俯搴�
+        /// </summary>
+        public const string TempC = "temp_c";
+        /// <summary>
+        /// 杩囨祦鍊�
+        /// </summary>
+        public const string MaxCurrent = "max_current";
+        /// <summary>
+        /// 杩囨俯鍊�
+        /// </summary>
+        public const string MaxTemp = "max_temp";
+        /// <summary>
+        /// A鐩哥數閲�
+        /// </summary>
+        public const string ElectricityA = "electricity_a";
+        /// <summary>
+        /// B鐩哥數閲�
+        /// </summary>
+        public const string ElectricityB = "electricity_b";
+        /// <summary>
+        /// C鐩哥數閲�
+        /// </summary>
+        public const string ElectricityC = "electricity_c";
+
+        #endregion
+        #endregion
+
+
         public const string _null = "";
         /// <summary>
         /// 瀹夐槻甯冮槻鐘舵��
@@ -999,6 +1432,22 @@
         /// 浜害
         /// </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>
@@ -1111,7 +1560,12 @@
         public const string Temperature = "temperature";
         public const string Hcho = "hcho";
         public const string Humidity = "humidity";
+        /// <summary>
+        /// 鐓у害
+        /// </summary>
+        public const string Illuminance = "illuminance";
         public const string Pm25 = "pm25";
+        public const string Pm10 = "pm10";
         public const string Tvoc = "tvoc";
         /// <summary>
         /// 鐘舵��,浼犳劅鍣�
@@ -1249,6 +1703,32 @@
         /// </summary>
         public const string TotalElectricity = "total_electricity";
 
+        /// <summary>
+        /// 娴蜂俊tv闊抽噺
+        /// </summary>
+        public const string SetVolume = "set_volume";
+        /// <summary>
+        /// 娴蜂俊tv淇″彿婧�(0:LiveTV;2:PS;3:HDMI_1;4:HDMI_2;5:HDMI_3;6:HDMI_4;11:AV;)
+        /// </summary>
+        public const string Signal = "signal";
+
+        /// <summary>
+        /// 闊充箰闊抽噺
+        /// </summary>
+        public const string Volume = "volume";
+        /// <summary>
+        /// 姝屾洸鍚�
+        /// </summary>
+        public const string SongName = "song_name";
+        /// <summary>
+        /// 鍒楄〃鍚�
+        /// </summary>
+        public const string PlaylistName = "playlist_name";
+        /// <summary>
+        /// 鎾斁璺緞
+        /// </summary>
+        public const string Url = "url";
+
 
     }
     /// <summary>
@@ -1293,7 +1773,8 @@
                 try
                 {
                     return Convert.ToByte(loopId, 16);
-                } catch
+                }
+                catch
                 {
                     return 0;
                 }
@@ -1308,9 +1789,31 @@
     public static class SPK
     {
         /// <summary>
+        /// 鏈煡SPK
+        /// (鑷畾涔�)
+        /// </summary>
+        public const string NULL = "NULL";
+        /// <summary>
+        /// 鐢垫
+        /// </summary>
+        public const string Elevator = "Elevator";
+        /// <summary>
+        /// 瑗垮ⅷ鍙瀵硅闂ㄥ彛鏈�
+        /// (鑷畾涔�)
+        /// </summary>
+        public const string LinphoneXiMo = "door.gate";
+        /// <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>
@@ -1319,11 +1822,32 @@
         /// 鏈烘鎵�
         /// </summary>
         public const string MechanicalArm = "electrical.mechanical_arm";
+        /// <summary>
+        /// 绌鸿皟绉戞妧绯荤粺锛堢豢寤猴級
+        /// 鎬绘帶
+        /// </summary>
+        public const string AcstParent = "acst.parent";
+        /// <summary>
+        /// 绌鸿皟绉戞妧绯荤粺锛堢豢寤猴級
+        /// 瀛愭帶
+        /// </summary>
+        public const string AcstSub = "acst.sub";
+        /// <summary>
+        /// 鐑按鍣�
+        /// 閲戣寕
+        /// </summary>
+        public const string WaterHeaterJinmao = "electrical.water_heater.jinmao";
+        /// <summary>
+        /// 閫嗗彉鍣�/鏂拌兘婧�
+        /// 閲戣寕
+        /// </summary>
+        public const string InverterJinmao = "energy.inverter.jinmao";
 
         /// <summary>
         /// 闂ㄩ攣
         /// </summary>
         public const string DoorLock = "security.door";
+
         /// <summary>
         /// 闂ㄩ攣spk鍒楄〃
         /// </summary>
@@ -1336,6 +1860,63 @@
         }
 
 
+        /// <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>
@@ -1426,6 +2007,14 @@
         /// 绌鸿皟
         /// </summary>
         public const string HvacAC = "hvac.ac";
+        /// <summary>
+        /// 闈㈡澘绌鸿皟
+        /// </summary>
+        public const string HvacAcPanel = "hvac.ac_panel";
+        /// <summary>
+        /// 姣涚粏绠$┖璋�
+        /// </summaryc
+        public const string HvacCac = "hvac.cac";
 
         /// <summary>
         /// 绌鸿皟spk鍒楄〃
@@ -1436,7 +2025,9 @@
             var spkList = new List<string>();
             spkList.Add(AcStandard);
             spkList.Add(HvacAC);
+            spkList.Add(HvacAcPanel);
             spkList.Add(AcIr);
+            spkList.Add(HvacCac);
             return spkList;
         }
         #endregion
@@ -1450,6 +2041,10 @@
         /// 鍦版殩
         /// </summary>
         public const string HvacFloorHeat = "hvac.floorHeat";
+        /// <summary>
+        /// 闈㈡澘鍦版殩
+        /// </summary>
+        public const string HvacFloorHeatPanel = "hvac.floorHeat_panel";
 
         /// <summary>
         /// 鍦扮儹spk鍒楄〃
@@ -1459,7 +2054,7 @@
         {
             var spkList = new List<string>();
             spkList.Add(FloorHeatStandard);
-            spkList.Add(HvacFloorHeat);
+            spkList.Add(HvacFloorHeat); spkList.Add(HvacFloorHeatPanel);
             return spkList;
         }
         #endregion
@@ -1473,6 +2068,14 @@
         /// 鏂伴
         /// </summary>
         public const string HvacAirFresh = "hvac.airFresh";
+        /// <summary>
+        /// 鏂伴 鈥斺�旈噾鑼傚畾鍒�
+        /// </summary>
+        public const string AirFreshJinmao = "airFresh.jinmao";
+        /// <summary>
+        /// 鏂伴 鈥斺�旈噾鑼傚畾鍒�
+        /// </summary>
+        public const string HvacAirFreshJinmao = "hvac.airFresh.jinmao";
 
         /// <summary>
         /// 鏂伴spk鍒楄〃
@@ -1482,12 +2085,22 @@
         {
             var spkList = new List<string>();
             spkList.Add(AirFreshStandard);
+            spkList.Add(AirFreshJinmao);
             spkList.Add(HvacAirFresh);
+            spkList.Add(HvacAirFreshJinmao);
             return spkList;
         }
         #endregion
 
         #region 鑳芥簮
+        /// <summary>
+        /// 閫嗗彉鍣�
+        /// </summary>
+        public const string Inverter = "energy.inverter";
+        /// <summary>
+        /// 涓夌浉閫嗗彉鍣�
+        /// </summary>
+        public const string InverterRst = "energy.inverter_rst";
         /// <summary>
         /// 鑳芥簮妯″潡
         /// </summary>
@@ -1505,6 +2118,8 @@
         {
             var spkList = new List<string>();
             spkList.Add(ElectricEnergy);
+            spkList.Add(AirSwitch);
+            spkList.Add(AirSwitchP3);
             return spkList;
         }
         #endregion
@@ -1543,6 +2158,10 @@
         /// (绾㈠绉诲姩浼犳劅鍣�)
         /// </summary>
         public const string SensorPir = "sensor.pir";
+        /// <summary>
+        /// 浜轰綋瀛樺湪浼犳劅鍣�
+        /// </summary>
+        public const string SensorPirHold = "sensor.pir_hold";
         /// <summary>
         /// 锛堥棬绐椾紶鎰熷櫒锛�
         /// </summary>
@@ -1598,6 +2217,7 @@
             var spkList = new List<string>();
             //spkList.Add(SensorLight);
             spkList.Add(SensorPir);
+            spkList.Add(SensorPirHold);
             spkList.Add(SensorHelp);
             spkList.Add(SensorDoorWindow);
             spkList.Add(SensorSmoke);
@@ -1687,10 +2307,11 @@
             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);
+            spkList.Add(SensorLight);
             return spkList;
         }
         /// <summary>
@@ -1707,6 +2328,7 @@
             spkList.Add(SensorTVOC);
             spkList.Add(SensorHumidity);
             spkList.Add(SensorHcho);
+            spkList.Add(SensorLight);
             return spkList;
         }
 
@@ -1717,9 +2339,10 @@
         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;
         }
 
@@ -1727,6 +2350,10 @@
         #endregion
 
         #region 瀹剁數
+        /// <summary>
+        /// 娴蜂俊鐢佃
+        /// </summary>
+        public const string ElectricalTvHisense = "electrical.tv.hisense";
         /// <summary>
         /// 瀹剁數銆佹彃搴�
         /// </summary>
@@ -1779,7 +2406,7 @@
         /// <summary>
         /// 绾㈠鐑按鍣�
         /// </summary>
-        public const string HeaterIr = " ir.water_heater";
+        public const string HeaterIr = "ir.water_heater";
         /// <summary>
         /// 绾㈠椋庢墖
         /// </summary>
@@ -1788,6 +2415,10 @@
         /// 鏅鸿兘绌哄紑
         /// </summary>
         public const string AirSwitch = "electrical.breaker";
+        /// <summary>
+        /// 涓夌浉鏅鸿兘绌哄紑
+        /// </summary>
+        public const string AirSwitchP3 = "electrical.breakerP3";
 
         #region 娑傞甫
         /// <summary>
@@ -1841,6 +2472,7 @@
             spkList.Add(ElectricTuyaWaterValve);
             spkList.Add(ElectricTuyaWaterValve2);
             spkList.Add(AirSwitch);
+            spkList.Add(ElectricalTvHisense);
             return spkList;
         }
 
@@ -1869,7 +2501,7 @@
         /// <summary>
         /// HDL鍙瀵硅
         /// </summary>
-        public const string doorgate="door.gate";
+        public const string doorgate = "door.gate";
         #endregion
 
         #region 绗笁鏂箂pk鍒楄〃

--
Gitblit v1.8.0