From 43b0d5870d528f23ecd6aeceb6cfd4325188b46f Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期四, 01 七月 2021 15:50:43 +0800
Subject: [PATCH] Revert "1"

---
 HDL_ON/Entity/Function/Function.cs |  879 ++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 700 insertions(+), 179 deletions(-)

diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
old mode 100755
new mode 100644
index 81bfa9d..91adfe7
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/HDL_ON/Entity/Function/Function.cs
@@ -1,4 +1,4 @@
-锘縰sing System;
+using System;
 using System.Collections.Generic;
 using HDL_ON.Common;
 using HDL_ON.DAL.Server;
@@ -23,6 +23,36 @@
         public string pageSize = "0";
 
     }
+    /// <summary>
+    /// 灞炴�х姸鎬�
+    /// </summary>
+    public class AttrState
+    {
+        /// <summary>
+        /// 灞炴�ч敭鍚�
+        /// </summary>
+        public string key;
+        /// <summary>
+        /// 灞炴�х殑鍊煎垪琛�
+        /// </summary>
+        public List<string> value = new List<string>();
+        /// <summary>
+        /// 鏈�澶у��
+        /// </summary>
+        public int max = 100;
+        /// <summary>
+        /// 鏈�灏忓��
+        /// </summary>
+        public int min = 0;
+        /// <summary>
+        /// 鏁版嵁绫诲瀷
+        /// </summary>
+        public string data_type = "";
+        /// <summary>
+        /// 褰撳墠鍊�
+        /// </summary>
+        public string curValue = "";
+    }
 
     /// <summary>
     /// 鍔熻兘绫昏兘婊¤冻鏁版嵁浣跨敤瑕佹眰锛屽瓙绫诲彧鏄负浜嗘柟渚夸娇鐢ㄥ睘鎬�
@@ -33,29 +63,116 @@
         {
         }
 
-        #region base info
+        #region 浼樺寲鍖哄煙 2021-02-25
         /// <summary>
-        /// HDL缁熶竴鍗忚鏍煎紡锛�14bytes
-        /// 涓句緥锛� 鏉ユ簮   鍘傚晢浠g爜 閫氳鏂瑰紡  浜у搧鏃堕棿鎴�   浜у搧绫诲埆 鐗╂ā鍨嬬被  閫氶亾鍙�   澶у皬绫诲埆
-        ///       1byte	1byte	1byte	  4byte	    1byte	2byte   2byte   2byte
-        /// 鏉ユ簮锛�00	榛樿鍘熺敓鎬佺郴缁熸暟鎹� 銆�01	缃戝叧鎴栬�呭叾浠朅璁惧銆�02	璋冭瘯杞欢銆�03	APP搴旂敤绋嬪簭銆�04	绗笁鏂圭綉鍏虫垨鑰呭钩鍙�
-        /// 鍘傚晢浠g爜锛�01	HDL
-        /// 閫氳鏂瑰紡锛�01	HDL Bus銆�02	Zigbee銆�03 KNX銆�04 Z-Wave
-        /// 浜у搧鏃堕棿鎴筹細4bytes	浠�2020骞�1鏈�1鏃ョ畻鍑虹殑鏃堕棿鎴�0.1s涓哄崟浣� 
-        /// 浜у搧绫诲埆锛�01	璋冨厜鍣ㄣ��02 缁х數鍣ㄣ��03	骞叉帴鐐规ā鍧椼��04	浼犳劅鍣ㄣ��05 闈㈡澘
-        /// 鐗╂ā鍨嬬被鍨嬶細
-        ///     01	寮�鍏崇被锛�01 寮�鍏炽��02 鎻掑骇銆�03	
-        ///     02	鐓ф槑锛� 01 寮�鍏炽��02	璋冨厜銆�03	鑹叉俯銆�04	LED
-        ///     03	閬槼锛� 01	绐楀笜鐢垫満銆�02 鐧惧彾绐椼��03 寮�鍚堝笜銆�04 鍗峰笜
-        ///     04	鎭掓俯鍣細01 绌鸿皟銆�02 鍦版殩銆�03 姣涚粏绌鸿皟
-        ///     05	鏂伴		
-        ///     06	褰遍煶		
-        ///     07	闊充箰		
-        ///     08	鑳芥簮		
-        ///     09	瀹夐槻
-        /// 澶х被鍒�	1bytes	锛堥鐣欙級
-        /// 灏忕被鍒�	1byte	锛堥鐣欙級
+        /// 鏇存柊鐨勬渶鍚庢椂闂�
         /// </summary>
+        public string time_stamp = "1615261019796";
+
+        public string GeteTime()
+        {
+            try
+            {
+                DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); // 褰撳湴鏃跺尯
+                return startTime.AddMilliseconds(Convert.ToDouble(time_stamp)).ToString("s");
+            }
+            catch {
+                return DateTime.MinValue.ToString("s");
+            }
+        }
+        /// <summary>
+        /// 鑾峰彇灞炴�у垪琛�
+        /// </summary>
+        /// <returns></returns>
+        public List<string> GetAttributes()
+        {
+            var attrs = new List<string>();
+
+            foreach(var attr in  attributes)
+            {
+                attrs.Add(attr.key);
+            }
+            return attrs;
+        }
+        /// <summary>
+        /// 鑾峰彇鎸囧畾灞炴��
+        /// </summary>
+        /// <returns></returns>
+        public FunctionAttributes GetAttribute(string key)
+        {
+            var attr = attributes.Find((a) => a.key == key);
+            return attr;
+        }
+
+        /// <summary>
+        /// 鑾峰彇灞炴�у綋鍓嶇姸鎬�
+        /// </summary>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        public string GetAttrState(string key)
+        {
+            var attrState = attributes.Find((s) => s.key == key.ToString());
+            if (attrState == null || string.IsNullOrEmpty(attrState.state))
+            {
+                return "0";
+            }
+            return attrState.state;
+        }
+        /// <summary>
+        /// 璁剧疆灞炴�х姸鎬�
+        /// </summary>
+        /// <param name="key"></param>
+        /// <param name="value"></param>
+        /// <returns>淇敼缁撴灉</returns>
+        public bool SetAttrState(string key, object value)
+        {
+            var attr = attributes.Find((s) => s.key == key);
+            if (attr == null)
+            {
+                return false;
+            }
+            else
+            {
+                attr.state = value.ToString();
+                attr.curValue = value.ToString();
+            }
+            return true;
+        }
+
+        /// <summary>
+        /// icon鏂囦欢鍚嶇О
+        /// </summary>
+        public string IconName
+        {
+            get
+            {
+                return spk.Replace(".","");
+            }
+        }
+
+
+        /// <summary>
+        /// 鐗堟湰鏁版嵁鍒楄〃
+        /// </summary>
+        public List<VersionInfo> versions = new List<VersionInfo>();
+
+        /// <summary>
+        /// 涓婁竴娆℃墦寮�鐨勪寒搴�
+        /// 鐏厜绉佹湁灞炴��
+        /// </summary>
+        [Newtonsoft.Json.JsonIgnore]
+        public int lastBrightness = 100;
+
+        /// <summary>
+        /// 宸ヤ綔妯″紡瀵瑰簲鐨勫伐浣滄俯搴�
+        /// 鍦扮儹绉佹湁灞炴��
+        /// </summary>
+        [Newtonsoft.Json.JsonIgnore]
+        public Dictionary<string, byte> Fh_Mode_Temp = new Dictionary<string, byte>();
+        #endregion
+
+
+        #region base info    
         public string sid = "0301011234567801012301230123";
         /// <summary>
         /// 澶囨敞
@@ -70,39 +187,6 @@
         /// 璁惧spk
         /// </summary>
         public string spk = "";
-        ///// <summary>
-        ///// 鍔熻兘绫诲埆
-        ///// 濡傦細绌鸿皟绫汇�佺伅鍏夌被銆佺獥甯樼被
-        ///// </summary>
-        //public FunctionCategory Spk_Prefix
-        //{
-        //    get
-        //    {
-        //        try
-        //        {
-        //            var _functionCategoryString = sid.Substring(16, 2);
-        //            var _functionCategory = Convert.ToInt32(_functionCategoryString, 16);
-        //            return (FunctionCategory)Enum.ToObject(typeof(FunctionCategory), _functionCategory);
-        //        }
-        //        catch (Exception ex)
-        //        {
-        //            MainPage.Log($"get FunctionCategory error : {ex.Message}");
-        //            return FunctionCategory.UnKown;
-        //        }
-        //    }
-        //}
-
-        ///// <summary>
-        ///// 鍔熻兘绫诲瀷
-        ///// </summary>
-        //public FunctionType spk
-        //{
-        //    get
-        //    {
-        //        var _functionTypeString = sid.Substring(16, 4);
-        //        return (FunctionType)Enum.ToObject(typeof(FunctionType), Convert.ToInt32(_functionTypeString, 16));
-        //    }
-        //}
 
         string spk_Prefix;
         /// <summary>
@@ -122,31 +206,6 @@
                 return spk_Prefix;
             }
         }
-        string spk_Suffix;
-        ///// <summary>
-        ///// spk鍚庣紑
-        ///// 灏忕被
-        ///// 鍔熻兘绫诲瀷
-        ///// </summary>
-        //public string spk
-        //{
-        //    get
-        //    {
-        //        if (string.IsNullOrEmpty(spk_Suffix))
-        //        {
-        //            try
-        //            {
-        //                spk_Suffix = spk.Split(".")[1];
-        //            }
-        //            catch
-        //            {
-        //                spk_Suffix = "";
-        //            }
-        //        }
-        //        return spk_Suffix;
-        //    }
-        //}
-
         /// <summary>
         /// A鍗忚鍔熻兘鐨勭壒鎬�
         /// 濡傦細鏄疉C鍔熻兘锛氱壒鎬э細on_off,mode,fan,temperature
@@ -181,12 +240,6 @@
         /// 浜戠鏁版嵁淇敼鐨勬渶鍚庢椂闂�
         /// </summary>
         public string modifyTime = "";
-        /// <summary>
-        /// 鍒犻櫎鏍囪
-        /// 闇�瑕佸垹闄ゆ暟鎹椂锛屾爣璁颁负锛歵rue
-        /// 鐢变簯绔垹闄ゆ垚鍔熶箣鍚庯紝杩斿洖鏁版嵁鍐嶆竻闄ゆ湰鍦版暟鎹�
-        /// </summary>
-        public bool DeleteSign = false;
 
         #endregion
         /// <summary>
@@ -254,7 +307,6 @@
         public void CollectFunction()
         {
             var result = "";
-            //var waitPage = new Loading();
 
             new System.Threading.Thread(() =>
             {
@@ -273,6 +325,12 @@
                     {
                         collect = !collect;
                         IMessageCommon.Current.ShowErrorInfoAlter(result);
+                    });
+                }else
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        UI.HomePage.RefreshFunctionView();
                     });
                 }
             })
@@ -424,36 +482,6 @@
             })
             { IsBackground = true }.Start();
         }
-        /// <summary>
-        /// 淇濆瓨鍔熻兘鏁版嵁
-        /// </summary>
-        //public void SaveFunctionData(bool upSevser)
-        //{
-        //    if (upSevser)
-        //    {
-        //        new System.Threading.Thread(() =>
-        //        {
-        //            var pm = new HttpServerRequest();
-        //            var pack = pm.UpdataDevcieInfo(this);
-        //            if (pack.Code == StateCode.SUCCESS)
-        //            {
-        //                var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this));
-        //                FileUtlis.Files.WriteFileByBytes(savePath, ssd);
-        //            }
-        //            else
-        //            {
-        //                IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
-        //            }
-        //        })
-        //        { IsBackground = true }.Start();
-        //    }
-        //    else
-        //    {
-        //        var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this));
-        //        FileUtlis.Files.WriteFileByBytes(savePath, ssd);
-        //    }
-        //}
-
 
         /// <summary>
         /// 杞崲鎴愬満鏅姛鑳藉璞�
@@ -513,21 +541,17 @@
         {
             var sendDataObj = new AlinkFunctionStatusObj();
             sendDataObj.id = Control.Ins.msg_id.ToString();
-            sendDataObj.time_stamp = Control.Ins.Get_TimeStamp();
-
-
-            var acd = new AlinkControlData();
+            sendDataObj.time_stamp = Utlis.GetTimestamp();
+            var acd = new AlinkStatusData();
             acd.sid = sid;
             foreach (var dic in commandDictionary)
             {
-                var aca = new AlinkControlAttributes();
+                var aca = new AttributesStatus();
                 aca.key = dic.Key;
                 aca.value = dic.Value;
                 acd.status.Add(aca);
             }
-
             sendDataObj.objects.Add(acd);
-
             return sendDataObj;
         }
         /// <summary>
@@ -542,7 +566,7 @@
             aaao.bus = this.bus;
             foreach (var kv in keyValues)
             {
-                aaao.attributes.Add(new AlinkControlAttributes()
+                aaao.attributes.Add(new AttributesStatus()
                 {
                     key = kv.Key,
                     value = kv.Value,
@@ -568,7 +592,7 @@
         /// </summary>
         public string spk = "";
 
-        public List<AlinkControlAttributes> attributes = new List<AlinkControlAttributes>();
+        public List<AttributesStatus> attributes = new List<AttributesStatus>();
         //[Newtonsoft.Json.JsonIgnore]
         public BusData bus = new BusData();
     }
@@ -578,7 +602,7 @@
     /// </summary>
     public class AlinkFunctionStatusObj
     {
-        public List<AlinkControlData> objects = new List<AlinkControlData>();
+        public List<AlinkStatusData> objects = new List<AlinkStatusData>();
 
         public string time_stamp = "";
         public string id = "";
@@ -594,17 +618,29 @@
         public string time_stamp = "";
     }
     /// <summary>
-    /// A鍗忚鎺у埗鏁版嵁
+    /// A鍗忚鐘舵�佹暟鎹�
     /// </summary>
-    public class AlinkControlData
+    public class AlinkStatusData
     {
+        /*
+         mqtt鎺ユ敹鐨勭姸鎬佹暟鎹病鏈塪eviceId
+        鎺ュ彛鍙嶉鐨勬暟鎹湁
+         */
+        /// <summary>
+        /// 
+        /// </summary>
         public string sid = "";
-        public List<AlinkControlAttributes> status = new List<AlinkControlAttributes>();
+        /// <summary>
+        /// 璁惧ID
+        /// 浜戠璐熻矗鐢熸垚
+        /// </summary>
+        public string deviceId = "0";
+        public List<AttributesStatus> status = new List<AttributesStatus>();
     }
     /// <summary>
     /// a鍗忚鎺у埗鍔ㄤ綔鏁版嵁
     /// </summary>
-    public class AlinkControlAttributes
+    public class AttributesStatus
     {
         /// <summary>
         /// 灞炴�у悕
@@ -646,28 +682,20 @@
         /// </summary>
         public string data_type = "";
         /// <summary>
+        /// 褰撳墠鐘舵��
+        /// </summary>
+        public string state = "";
+        /// <summary>
         /// 褰撳墠鍊�
         /// </summary>
         public object curValue = new object();
-        /// <summary>
-        /// curValue鐨勭炕璇戝��,鏈�鍧忕殑缁撴灉涔熷彧浼氳繑鍥瀞tring.Empty
-        /// </summary>
-        public string realValue
-        {
-            get
-            {
-                var myValue = curValue.ToString();
-                //娌欓洉瀹氫箟鐨刼bject绫诲瀷
-                if (myValue.Contains("{") == true) { return string.Empty; }
-                return myValue;
-            }
-        }
     }
     /// <summary>
     /// 鍔熻兘灞炴�ч敭鍚嶅垪琛�
     /// </summary>
     public static class FunctionAttributeKey
     {
+        public const string _null = "";
         /// <summary>
         /// 寮�鍏�
         /// </summary>
@@ -689,13 +717,45 @@
         /// </summary>
         public const string Mode = "mode";
         /// <summary>
+        /// 鎵
+        /// </summary>
+        public const string Swing = "swing";
+        /// <summary>
+        /// 宸ヤ綔妯″紡
+        /// 鍦扮儹/鍦板喎/鍔熺巼鍦扮儹/鍔熺巼鍦板喎
+        /// </summary>
+        public const string WorkMode = "mode_work";
+        /// <summary>
         /// 椋庨��
         /// </summary>
         public const string FanSpeed = "fan";
         /// <summary>
+        /// 鎵嬪姩椋庡悜
+        /// </summary>
+        public const string FanManual = "fan_manual";
+        /// <summary>
+        /// 鑷姩椋庡悜
+        /// </summary>
+        public const string FanAuto = "fan_auto";
+
+        /// <summary>
         /// 璁剧疆娓╁害
         /// </summary>
         public const string SetTemp = "set_temp";
+        /// <summary>
+        /// 娓╁害鍔犲噺
+        /// </summary>
+        public const string SetTempStep = "set_temp_step";
+        /// <summary>
+        /// 娓╁害妯″紡
+        /// 绌鸿皟銆佸湴鐑�//app鑷姞
+        /// </summary>
+        public const string TempType = "temperature_type";
+        /// <summary>
+        /// 鏃堕棿鏍囪
+        /// 鍦扮儹//app鑷姞
+        /// </summary>
+        public const string TimeFlag = "time_flag";
         /// <summary>
         /// 寤舵椂
         /// </summary>
@@ -711,11 +771,129 @@
         /// <summary>
         /// 瀹ゅ唴娓╁害
         /// </summary>
-        public const string IndoorTemp = "room_temp";
+        public const string RoomTemp = "room_temp";
         /// <summary>
         /// value
         /// </summary>
         public const string Value = "value";
+        /// <summary>
+        /// 鐘舵��,浼犳劅鍣�
+        /// </summary>
+        public const string Status = "status";
+        /// <summary>
+        /// 姣背娉紶鎰熷櫒锛屽姩浣滅姸鎬�
+        /// </summary>
+        public const string ActionStatus = "action_state";
+        /// <summary>
+        /// 鐢甸噺鐘舵��
+        /// </summary>
+        public const string BatteryState = "battery_state";
+        /// <summary>
+        /// 鐑樺共
+        /// </summary>
+        public const string HotDry = "hot_dry";
+        /// <summary>
+        /// 椋庡共
+        /// </summary>
+        public const string WindDry = "wind_dry";
+        /// <summary>
+        /// 娑堟瘨
+        /// </summary>
+        public const string Disinfect = "disinfect";
+        /// <summary>
+        /// 涓婂崌涓嬮檷
+        /// </summary>
+        public const string Position = "position";
+        /// <summary>
+        /// 杩涘害
+        /// </summary>
+        public const string PositionPercent = "position_percent";
+        /// <summary>
+        /// 鐑樺共鏃堕棿
+        /// </summary>
+        public const string HotDryTime = "hot_dry_time";
+        /// <summary>
+        /// 鐑樺共鍓╀綑鏃堕棿
+        /// </summary>
+        public const string HotDryTimeLeft = "hot_dry_time_surplus";
+        /// <summary>
+        /// 椋庡共鏃堕棿
+        /// </summary>
+        public const string WindDryTime = "wind_dry_time";
+        /// <summary>
+        /// 椋庡共鍓╀綑鏃堕棿
+        /// </summary>
+        public const string WindDryTimeLeft = "wind_dry_time_surplus";
+        /// <summary>
+        /// 娑堟瘨鏃堕棿
+        /// </summary>
+        public const string DisinfectTime = "disinfect_time";
+        /// <summary>
+        /// 娑堟瘨鍓╀綑鏃堕棿
+        /// </summary>
+        public const string DisinfectTimeLeft = "disinfect_time_surplus";
+        /// <summary>
+        /// 璐熺瀛�
+        /// </summary>
+        public const string Anion = "anion";
+        /// <summary>
+        /// 璐熺瀛愭椂闂�
+        /// </summary>
+        public const string AnionTime = "anion_time";
+        /// <summary>
+        /// 璐熺瀛愬墿浣欐椂闂�
+        /// </summary>
+        public const string AnionTimeLeft = "anion_time_surplus";
+        /// <summary>
+        /// 鎵撳紑绛夌骇(椋庢墖)
+        /// </summary>
+        public const string OpenLevel = "openLevel";
+        /// <summary>
+        /// 绾㈠鎸夐敭
+        /// </summary>
+        public const string Key = "key";
+
+        /// <summary>
+        /// 鑺傝兘
+        /// </summary>
+        public const string Energy = "energy";
+        /// <summary>
+        /// 婀垮害
+        /// </summary>
+        public const string Humidity = "humidity";
+        /// <summary>
+        /// 瀹ゅ唴娓╁害
+        /// </summary>
+        public const string IndoorTemp = "indoor_temp";
+        /// <summary>
+        /// 瀹ゅ唴婀垮害
+        /// </summary>
+        public const string IndoorHumidity = "indoor_humidity";
+        /// <summary>
+        /// 杩囨护缃戝墿浣欓噺
+        /// </summary>
+        public const string FilterRemain = "filter_remain";
+        /// <summary>
+        /// 杩囨护缃戞槸鍚﹁秴鏃惰鍛�
+        /// </summary>
+        public const string FilterTimeout = "filter_timeout";
+
+        #region tuya
+        /// <summary>
+        /// 娑傞甫姘撮榾寮�鍚椂闂�
+        /// </summary>
+        public const string TuyaWaterTime = "countdown_1";
+        #endregion
+        /// <summary>
+        /// 鍔熺巼
+        /// </summary>
+        public const string Power = "power";
+        /// <summary>
+        /// 鎬荤數閲�
+        /// </summary>
+        public const string TotalElectricity = "total_electricity";
+
+
     }
     /// <summary>
     /// 璁惧鍔熻兘oid
@@ -756,7 +934,13 @@
         {
             get
             {
-                return Convert.ToByte(loopId, 16);
+                try
+                {
+                    return Convert.ToByte(loopId, 16);
+                }catch
+                {
+                    return 0;
+                }
             }
         }
 
@@ -765,6 +949,10 @@
 
     public static class SPK
     {
+       
+
+
+        #region 鐏厜
         /// <summary>
         /// 锛堝紑鍏崇伅锛�
         /// </summary>
@@ -785,6 +973,24 @@
         /// 锛圕CT鐏級
         /// </summary>
         public const string LightCCT = "light.cct";
+
+        /// <summary>
+        /// 鐏厜spk鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public static List<string> LightSpkList()
+        {
+            var spkList = new List<string>();
+            spkList.Add(LightCCT);
+            spkList.Add(LightDimming);
+            spkList.Add(LightRGB);
+            spkList.Add(LightRGBW);
+            spkList.Add(LightSwitch);
+            return spkList;
+        }
+        #endregion
+
+        #region 绐楀笜
         /// <summary>
         /// 锛堝紑鍏崇獥甯橈級
         /// </summary>
@@ -801,30 +1007,132 @@
         /// 锛堝嵎甯橈級
         /// </summary>
         public const string CurtainRoller = "curtain.roller";
+
+        /// <summary>
+        /// 绐楀笜spk鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public static List<string> CurtainSpkList()
+        {
+            var spkList = new List<string>();
+            spkList.Add(CurtainRoller);
+            spkList.Add(CurtainSwitch);
+            spkList.Add(CurtainShades);
+            spkList.Add(CurtainTrietex);
+            return spkList;
+        }
+        #endregion
+
+        #region 绌鸿皟
         /// <summary>
         /// 锛堢┖璋冿級
         /// </summary>
         public const string AcStandard = "ac.standard";
         /// <summary>
+        /// 锛堢孩澶栫┖璋冿級
+        /// </summary>
+        public const string AcIr= "ir.ac";
+
+        /// <summary>
+        /// 绌鸿皟spk鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public static List<string> AcSpkList()
+        {
+            var spkList = new List<string>();
+            spkList.Add(AcStandard);
+            spkList.Add(AcIr);
+            return spkList;
+        }
+        #endregion
+
+        #region 鍦扮儹
+        /// <summary>
         /// 锛堝湴鐑級
         /// </summary>
         public const string FloorHeatStandard = "floorHeat.standard";
+
+        /// <summary>
+        /// 鍦扮儹spk鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public static List<string> FhSpkList()
+        {
+            var spkList = new List<string>();
+            spkList.Add(FloorHeatStandard);
+            return spkList;
+        }
+        #endregion
+
+        #region 鏂伴
         /// <summary>
         /// 锛堟柊椋庯級
         /// </summary>
         public const string AirFreshStandard = "airFresh.standard";
         /// <summary>
+        /// 鏂伴 鈥斺�旈噾鑼傚畾鍒�
+        /// </summary>
+        public const string AirFreshJinmao = "airFresh.jinmao";
+
+        /// <summary>
+        /// 鏂伴spk鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public static List<string> AirFreshSpkList()
+        {
+            var spkList = new List<string>();
+            spkList.Add(AirFreshStandard);
+            spkList.Add(AirFreshJinmao);
+            return spkList;
+        }
+        #endregion
+
+        #region 鑳芥簮
+        /// <summary>
+        /// 鑳芥簮妯″潡
+        /// </summary>
+        public const string EnergyStandard = "energy.standard";
+
+        /// <summary>
+        /// 鑳芥簮-鐢佃兘
+        /// </summary>
+        public const string ElectricEnergy = "energy.electric";
+        /// <summary>
+        /// 鑳芥簮spk鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public static List<string> EnergySpkList()
+        {
+            var spkList = new List<string>();
+            spkList.Add(ElectricEnergy);
+            return spkList;
+        }
+        #endregion
+
+        #region 闊充箰
+        /// <summary>
         /// 锛堥煶涔愶級
         /// </summary>
         public const string MusicStandard = "music.standard";
+
+        /// <summary>
+        /// 闊充箰spk鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public static List<string> MusicSpkList()
+        {
+            var spkList = new List<string>();
+            spkList.Add(MusicStandard);
+            return spkList;
+        }
+        #endregion
+
+        #region 浼犳劅鍣�
+        #region 瀹夐槻浼犳劅鍣�
         /// <summary>
         /// 锛堜寒搴︿紶鎰熷櫒锛�
         /// </summary>
         public const string SensorLight = "sensor.light";
-        /// <summary>
-        /// 锛堟俯搴︿紶鎰熷櫒锛�
-        /// </summary>
-        public const string SensorTemperature = "sensor.temperature";
         /// <summary>
         /// (绾㈠绉诲姩浼犳劅鍣�)
         /// </summary>
@@ -833,6 +1141,66 @@
         /// 锛堥棬绐椾紶鎰熷櫒锛�
         /// </summary>
         public const string SensorDoorWindow = "sensor.doorwindow";
+        /// <summary>
+        /// 鐑熼浘浼犳劅鍣�
+        /// </summary>
+        public const string SensorSmoke = "sensor.smoke";
+        /// <summary>
+        /// 姘存蹈浼犳劅鍣�
+        /// </summary>
+        public const string SensorWater = "sensor.water";
+        /// <summary>
+        /// 鐕冩皵浼犳劅鍣�
+        /// </summary>
+        public const string SensorGas = "sensor.gas";
+        /// <summary>
+        /// 绾㈠鐝婃爮浼犳劅鍣�      
+        /// </summary>
+        public const string SensorShanLan = "sensor.shanlan";
+        /// <summary>
+        /// 绾㈠瀵瑰皠浼犳劅鍣�
+        /// </summary>
+        public const string SensorDuiShe = "sensor.duishe";
+        /// <summary>
+        /// 瓒呭0娉紶鎰熷櫒
+        /// </summary>
+        public const string SensoruUtrasonic = "sensor.ultrasonic";
+        /// <summary>
+        /// 锛堝共鎺ョ偣锛�
+        /// </summary>
+        public const string SensorDryContact = "sensor.dryContact";
+        /// <summary>
+        /// 姣背娉紶鎰熷櫒
+        /// </summary>
+        public const string SenesorMegahealth = "sensor.megahealth";
+
+        /// <summary>
+        /// 瀹夐槻浼犳劅鍣╯pk鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public static List<string> ArmSensorSpkList()
+        {
+            var spkList = new List<string>();
+            //spkList.Add(SensorLight);
+            spkList.Add(SensorPir);
+            spkList.Add(SensorDoorWindow);
+            spkList.Add(SensorSmoke);
+            spkList.Add(SensorWater);
+            //spkList.Add(SensorGas);
+            //spkList.Add(SensorShanLan);
+            //spkList.Add(SensorDuiShe);
+            //spkList.Add(SensoruUtrasonic);
+            //spkList.Add(SensorDryContact);
+            spkList.Add(SenesorMegahealth);
+            return spkList;
+        }
+        #endregion
+
+        #region 鐜浼犳劅鍣�
+        /// <summary>
+        /// 锛堟俯搴︿紶鎰熷櫒锛�
+        /// </summary>
+        public const string SensorTemperature = "sensor.temperature";
         /// <summary>
         /// 锛圥M2.5浼犳劅鍣級
         /// </summary>
@@ -851,34 +1219,23 @@
         public const string SensorHumidity = "sensor.humidity";
 
         /// <summary>
-        /// 鐑熼浘浼犳劅鍣�
+        /// 鐜浼犳劅鍣╯pk鍒楄〃
         /// </summary>
-        public const string SensorSmoke = "sensor.smoke";
-        /// <summary>
-        /// 姘存蹈浼犳劅鍣�
-        /// </summary>
-        public const string SensorWater = "sensor.water";
-        /// <summary>
-        /// 鐕冩皵浼犳劅鍣�
-        /// </summary>
-        public const string SensorGas= "sensor.gas";
-        /// <summary>
-        /// 绾㈠鐝婃爮浼犳劅鍣�      
-        /// </summary>
-        public const string SensorShanLan = "sensor.shanlan";
-        /// <summary>
-        /// 绾㈠瀵瑰皠浼犳劅鍣�
-        /// </summary>
-        public const string SensorDuiShe = "sensor.duishe";
-        /// <summary>
-        /// 瓒呭0娉紶鎰熷櫒
-        /// </summary>
-        public const string SensoruUtrasonic = "sensor.ultrasonic";
+        /// <returns></returns>
+        public static List<string> EnvironSpkList()
+        {
+            var spkList = new List<string>();
+            spkList.Add(SensorTemperature);
+            spkList.Add(SensorPm25);
+            spkList.Add(SensorCO2);
+            spkList.Add(SensorTVOC);
+            spkList.Add(SensorHumidity);
+            return spkList;
+        }
+        #endregion
+        #endregion
 
-        /// <summary>
-        /// 锛堝共鎺ョ偣锛�
-        /// </summary>
-        public const string SensorDryContact = "sensor.dryContact";
+        #region 瀹剁數
         /// <summary>
         /// 瀹剁數銆佹彃搴�
         /// </summary>
@@ -888,9 +1245,51 @@
         /// </summary>
         public const string ElectricTV = "electrical.tv";
         /// <summary>
+        /// 绾㈠銆佺數瑙�
+        /// </summary>
+        public const string TvIr = "ir.tv";
+        /// <summary>
+        /// 绾㈠銆佸皬绫崇數瑙�
+        /// </summary>
+        public const string TvXmIr = "ir.tvxm";
+        /// <summary>
         /// 瀹剁數銆侀鎵�
         /// </summary>
-        public const string ElectricFan = "electrical.fan";
+        public const string ElectricFan = "electrical.fan";
+        /// <summary>
+        /// 鍑夐湼
+        /// </summary>
+        public const string ClothesHanger = "electrical.racks";
+        /// <summary>
+        /// 绾㈠閬ユ帶鍣�
+        /// </summary>
+        public const string IrLearn = "ir.learn";
+        /// <summary>
+        /// 绾㈠鎶曞奖浠�
+        /// </summary>
+        public const string PjtIr = "ir.pjt";
+        /// <summary>
+        /// 绾㈠鏈洪《鐩�
+        /// </summary>
+        public const string StbIr = "ir.stb";
+        /// <summary>
+        /// 绾㈠褰辩鏈�
+        /// </summary>
+        public const string DvDIr = "ir.dvd";
+        /// <summary>
+        /// 绾㈠绌烘皵鍑�鍖栧櫒
+        /// </summary>
+        public const string PurifierIr = "ir.air_purifier";
+        /// <summary>
+        /// 绾㈠鐑按鍣�
+        /// </summary>
+        public const string HeaterIr = " ir.water_heater";
+        /// <summary>
+        /// 绾㈠椋庢墖
+        /// </summary>
+        public const string FanIr = "ir.fan";
+
+        #region 娑傞甫
         /// <summary>
         /// 瀹剁數銆佹秱楦︾┖姘斿噣鍖栧櫒
         /// </summary>
@@ -898,11 +1297,122 @@
         /// <summary>
         /// 瀹剁數銆佹秱楦︾數椋庢墖
         /// </summary>
-        public const string ElectricTuyaFan = "electrical.tyqborgovyzytytz";
+        public const string ElectricTuyaFan = "electrical.tyqborgovyzytytz";
         /// <summary>
         /// 瀹剁數銆佹秱楦︽壂鍦版満鍣ㄤ汉
         /// </summary>
         public const string ElectricTuyaWeepRobot = "electrical.ai6HtccKFIw3dxo3";
+        /// <summary>
+        /// 瀹剁數銆佹秱楦︽按闃�
+        /// </summary>
+        public const string ElectricTuyaWaterValve = "electrical.koiGhMKwLf2ZP81g";
+        #endregion
+
+
+        /// <summary>
+        /// 瀹剁數spk鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public static List<string> ElectricalSpkList()
+        {
+            var spkList = new List<string>();
+            spkList.Add(ElectricSocket);
+            spkList.Add(ElectricTV);
+            spkList.Add(TvIr);
+            spkList.Add(TvXmIr);
+            spkList.Add(ElectricFan);
+            spkList.Add(FanIr);
+            spkList.Add(ClothesHanger);
+            spkList.Add(IrLearn);
+            spkList.Add(PjtIr);
+            spkList.Add(StbIr);
+            spkList.Add(ElectricTuyaAirCleaner);
+            spkList.Add(ElectricTuyaFan);
+            spkList.Add(ElectricTuyaWeepRobot);
+            spkList.Add(ElectricTuyaWaterValve);
+            return spkList;
+        }
+
+
+        #endregion
+
+
+        #region 璁惧绫�
+        /// <summary>
+        /// 绾㈠瀹�
+        /// </summary>
+        public const string IrModule = "ir.module";
+
+        /// <summary>
+        /// 璁惧绫籹pk鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public static List<string> DeviceSpkList()
+        {
+            var spkList = new List<string>();
+            spkList.Add(IrModule);
+            return spkList;
+        }
+        #endregion
+
+        #region 绗笁鏂箂pk鍒楄〃
+        /// <summary>
+        /// 鑾峰彇鎵�鏈夌涓夋柟鍝佺墝鍔熻兘鐨剆pk
+        /// </summary>
+        /// <returns></returns>
+        public static List<string> GetAll3tySPK()
+        {
+            var spkList = new List<string>();
+            spkList.Add(ElectricTuyaAirCleaner);
+            spkList.Add(ElectricTuyaFan);
+            spkList.Add(ElectricTuyaWaterValve);
+            spkList.Add(ElectricTuyaWeepRobot);
+            spkList.Add(SenesorMegahealth);
+            return spkList;
+        }
+        /// <summary>
+        /// 鑾峰彇绗笁鏂硅澶噑pk
+        /// </summary>
+        /// <returns></returns>
+        public static List<string> Get3tySpk(BrandType brandType)
+        {
+            var list = new List<string>();
+
+            switch (brandType)
+            {
+                case BrandType.Tuya:
+                    list.Add(ElectricTuyaAirCleaner);
+                    list.Add(ElectricTuyaFan);
+                    list.Add(ElectricTuyaWaterValve);
+                    list.Add(ElectricTuyaWeepRobot);
+                    break;
+                case BrandType.All3tyBrand:
+                    list.Add(SenesorMegahealth);//鍏嗚
+                    break;
+            }
+            return list;
+        }
+        #endregion
+
+
+        /// <summary>
+        /// 绗笁鏂瑰搧鐗屽垪琛�
+        /// </summary>
+        public enum BrandType
+        {
+            All = 0,
+            Hdl = 1,
+            Tuya = 2,
+            /// <summary>
+            /// 鍏嗚
+            /// </summary>
+            Megahealth = 3,
+
+
+            All3tyBrand = 999,
+        }
+
+
     }
 
 
@@ -947,9 +1457,20 @@
         /// 瀹剁數
         /// </summary>
         public const string Electric = "electrical";
+        /// <summary>
+        /// 绾㈠璁惧
+        /// </summary>
+        public const string IR = "ir";
 
-        //Music = 0x09,
+
+
+
     }
 
 
+public class VersionInfo
+{
+    public string module = "";
+    public string version = "";
+}
 }

--
Gitblit v1.8.0