From 9a4b76398009cf76c508d61f7e48fb6f5cb7ac2d Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期二, 21 七月 2020 09:46:53 +0800
Subject: [PATCH] 请合并最新多功能面板代码

---
 ZigbeeApp/Shared/Phone/ZigBee/Device/Scene.cs | 1766 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 1,766 insertions(+), 0 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/Scene.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/Scene.cs
new file mode 100755
index 0000000..2e985f5
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/Scene.cs
@@ -0,0 +1,1766 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+using Newtonsoft.Json.Linq;
+
+namespace ZigBee.Device
+{
+    [System.Serializable]
+    public class Scene
+    {
+        /// <summary>
+        /// 褰撳墠涓荤綉鍏崇殑ID
+        /// </summary>
+        public string GateWayId;
+
+        /// <summary>
+        /// 缃戝叧杩斿洖鍦烘櫙鐨勫懡浠ゆ爣璇�
+        /// </summary>
+        public int DataID;
+
+        /// <summary>
+        /// 缃戝叧鍙嶉鐨勬椂闂存埑
+        /// </summary>
+        public int Time;
+
+        /// <summary>
+        /// 褰撳墠鍦烘櫙鐨処D
+        /// </summary>
+        [System.Serializable]
+        public class SceneBase
+        {
+            /// <summary>
+            /// 鍦烘櫙鐨処
+            /// </summary>
+            public int SceneId;
+        }
+
+        /// <summary>
+        /// 绛夊緟浠庣綉鍏虫帴鏀舵暟鎹殑鏃堕棿
+        /// </summary>
+        /// <value>The wait receive data time.</value>
+        public static int WaitReceiveDataTime
+        {
+            get
+            {
+                var mainGateway = ZbGateway.MainGateWay;
+                if (mainGateway == null)
+                {
+                    return 3000;
+                }
+                else if (mainGateway.IsVirtual)
+                {
+                    return 6000;
+                }
+                else
+                {
+                    return 3000;
+                }
+            }
+        }
+
+        /// <summary>
+        /// 缃戝叧淇℃伅閿欒鍙嶉鐨勫唴瀹�
+        /// </summary>
+        static string ErrorMess(int err)
+        {
+            string message = "";
+            switch (err)
+            {
+                case 1:
+                    message = " 缃戝叧鏃犳硶瑙f瀽鍛戒护鏁版嵁銆�";
+                    break;
+                case 2:
+                    message = " 鍗忚皟鍣ㄦ鍦ㄥ崌绾ф垨澶囦唤 / 鎭㈠鏁版嵁銆�";
+                    break;
+                case 3:
+                    message = "鎿嶄綔璁惧 / 缁� / 鍦烘櫙涓嶅瓨鍦�";
+                    break;
+                case 4:
+                    message = " 鍏朵粬閿欒";
+                    break;
+                case 5:
+                    message = " 鏁版嵁浼犺緭閿欒锛堝湪鏌愭瀹㈡埛绔悜缃戝叧鍙戦�佹暟鎹殑杩囩▼涓紝缃戝叧鍦ㄥ悎鐞嗘椂闂磋寖鍥村唴鎺ユ敹瀹㈡埛绔暟鎹笉瀹屾暣瀵艰嚧璇ラ敊璇彂鐢熴�傚瀹㈡埛绔悜缃戝叧涓�娆″彂閫�100涓瓧鑺傜殑鏁版嵁锛屼絾缃戝叧绛夊緟鎺ユ敹浜嗕竴绉掑彧鎺ユ敹浜�80涓瓧鑺傘�傚彂鐢熻閿欒锛岀綉鍏冲皢涓诲姩鍏抽棴瀹㈡埛绔繛鎺ワ級";
+                    break;
+                default:
+                    break;
+            }
+            return message;
+        }
+
+        #region 鍦ㄤ粠缃戝叧涓彂鍦烘櫙鐨勫懡浠ょ殑鍙嶉
+        /// <summary>
+        ///鍦ㄤ粠缃戝叧涓彂鍦烘櫙鐨勫懡浠ょ殑鍙嶉
+        /// </summary>
+        public SceneErrorRespon sceneErrorRespon;
+        /// <summary>
+        ///鍦ㄤ粠缃戝叧涓彂鍦烘櫙鐨勫懡浠ょ殑鍙嶉
+        /// </summary>
+        [System.Serializable]
+        public class SceneErrorRespon
+        {
+            /// <summary>
+            /// 闈炰富缃戝叧涓嶈兘浣跨敤鍦烘櫙鎸囦护銆�
+            /// </summary>
+            public int Data_ID;
+
+        }
+        #endregion
+
+        #region 鍒涘缓涓�涓┖鍦烘櫙
+        ///<summary >
+        /// 鍒涘缓涓�涓┖鍦烘櫙.(浠呯敤浜庝富缃戝叧鎺ュ彛锛�
+        /// <para>sceneName:鍙栬鍦烘櫙鐨勫悕瀛�</para>
+        /// </summary>
+        public static async System.Threading.Tasks.Task<GetSceneIdAllData> GetSceneNewIdAsync(string sceneName)
+        {
+            return await System.Threading.Tasks.Task.Run(async () =>
+            {
+                GetSceneIdAllData d = null;
+                var mainGateway = ZbGateway.MainGateWay;
+                if (mainGateway == null)
+                {
+                    d = new GetSceneIdAllData {errorMessageBase = "褰撳墠娌℃湁涓荤綉鍏�" };
+                    return d;
+                }
+
+                Action<string, string> action = (topic, message) =>
+                {
+                    var gatewayID = topic.Split('/')[0];
+                    var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+
+                    if (topic == gatewayID + "/" + "Error_Respon")
+                    {
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
+
+                        if (temp == null)
+                        {
+                            d = new GetSceneIdAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
+                        }
+                        else
+                        {
+                            d = new GetSceneIdAllData { errorResponData = temp , errorMessageBase = ErrorMess(temp.Error)};
+                        }
+                    }
+
+                    if (topic == gatewayID + "/" + "Scene/GetNewId_Respon")
+                    {
+                        var getSceneIdData = Newtonsoft.Json.JsonConvert.DeserializeObject<Scene.GetSceneIdData>(jobject["Data"].ToString());
+                        if (getSceneIdData == null)
+                        {
+                            d = new GetSceneIdAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
+                        }
+                        else
+                        {
+                            GetSceneAllInfoAsync();
+                            d = new GetSceneIdAllData { getSceneIdData = getSceneIdData };
+                            System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
+
+                        }
+                    }
+                };
+                mainGateway.Actions += action;
+                System.Console.WriteLine("Scene/GetNewId_Actions 鍚姩" + System.DateTime.Now.ToString());
+                try{
+                    var bytes = new byte[32];
+                    var reamarkGwBytes = System.Text.Encoding.UTF8.GetBytes(sceneName);
+                    System.Array.Copy(reamarkGwBytes, 0, bytes, 0, 32 < reamarkGwBytes.Length ? 32 : reamarkGwBytes.Length);
+                    sceneName = System.Text.Encoding.UTF8.GetString(bytes);
+
+                    var jObject = new Newtonsoft.Json.Linq.JObject() {
+                                    { "Cluster_ID", 0 },
+                                    { "Command", 800 }
+                                };
+                    var data = new JObject { { "ScenesName", sceneName } };
+                    jObject.Add("Data", data);
+                    mainGateway.Send("Scene/GetNewId", jObject.ToString());
+
+                }
+                catch
+                { }
+
+                var dateTime = DateTime.Now;
+                while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
+                {
+                    await System.Threading.Tasks.Task.Delay(10);
+                    if (d != null)
+                    {
+                        break;
+                    }
+                }
+                if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
+                {
+                     d = new GetSceneIdAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
+
+                }
+                mainGateway.Actions -= action;
+                System.Console.WriteLine("Scene/GetNewId_Actions 閫�鍑�" + System.DateTime.Now.ToString());
+
+                return d;
+            });
+        }
+
+        /// <summary>
+        /// 鍒涘缓涓�涓┖鍦烘櫙杩斿洖鐨勬暟鎹�,缃戝叧鍙嶉淇℃伅
+        /// </summary>
+        public GetSceneIdAllData getSceneIdAllData;
+        /// <summary>
+        /// 鍒涘缓涓�涓┖鍦烘櫙杩斿洖鐨勬暟鎹�,缃戝叧鍙嶉淇℃伅
+        /// </summary>
+        [System.Serializable]
+        public class GetSceneIdAllData:CommonDevice.ErrorResponCommon
+        {
+            /// <summary>
+            /// 鍒涘缓涓�涓┖鍦烘櫙杩斿洖鐨勬暟鎹�
+            /// </summary>
+            public GetSceneIdData getSceneIdData;
+        }
+
+        /// <summary>
+        /// 鍒涘缓涓�涓┖鍦烘櫙杩斿洖鐨勬暟鎹�
+        /// </summary>
+        public GetSceneIdData getSceneIdData;
+        /// <summary>
+        /// 鍒涘缓涓�涓┖鍦烘櫙杩斿洖鐨勬暟鎹�
+        /// </summary>
+        [System.Serializable]
+        public class GetSceneIdData
+        {
+            /// <summary>
+            /// 鏂扮殑鍦烘櫙id
+            /// </summary>
+            public int NewScenesId;
+            /// <summary>
+            /// 鍦烘櫙鍚嶇О 锛屼笉澶т簬32涓瓧鑺傘��
+            /// </summary>
+            public string ScenesName;
+        }
+        #endregion
+
+        #region 鑾峰彇涓�涓満鏅殑鎵�鏈変俊鎭�
+        ///<summary >
+        ///鑾峰彇涓�涓満鏅殑鎵�鏈変俊鎭� .
+        ///</summary>
+        public static async System.Threading.Tasks.Task<GetSceneAllData> GetSceneAllInfoAsync()
+        {
+            return await System.Threading.Tasks.Task.Run(async () => {
+                GetSceneAllData d = null;
+                var mainGateway = ZbGateway.MainGateWay;
+                if (mainGateway == null)
+                {
+                    d = new GetSceneAllData { errorMessageBase = "褰撳墠娌℃湁涓荤綉鍏�" };
+                    return d;
+                }
+
+                var dateTime = DateTime.Now;
+                Action<string, string> action = (topic, message) => {
+                     var gatewayID = topic.Split('/')[0];
+                    var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+
+                    if (topic == gatewayID + "/" + "Error_Respon")
+                    {
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
+
+                        if (temp == null)
+                        {
+                            d = new GetSceneAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
+                        }
+                        else
+                        {
+                            d = new GetSceneAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error)};
+                        }
+                    }
+
+                    if (topic == gatewayID + "/" + "Scene/GetAllInfo_Respon")
+                    {
+                        dateTime = DateTime.Now;
+                        var sceneGetAllInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<GetSceneAllInfo>(jobject["Data"].ToString());
+
+                        if (sceneGetAllInfo == null)
+                        {
+                            d = new GetSceneAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
+                        }
+                        else
+                        {
+                            d = new GetSceneAllData { getSceneAllInfo = sceneGetAllInfo };
+                            System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
+
+                        }
+                    }
+                };
+                mainGateway.Actions += action;
+                System.Console.WriteLine("Scene/GetAllInfo_Actions 鍚姩" + System.DateTime.Now.ToString());
+                try{
+                    var jObject = new JObject { { "Cluster_ID", 0 }, { "Command", 807 } };
+                    mainGateway.Send(("Scene/GetAllInfo"), jObject.ToString());
+                }
+                catch {}
+
+                while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
+                {
+                    await System.Threading.Tasks.Task.Delay(100);
+                }
+
+                mainGateway.Actions -= action;
+                System.Console.WriteLine("Scene/GetAllInfo_Actions 閫�鍑�" + System.DateTime.Now.ToString());
+
+                return d;
+            });
+        }
+        /// <summary>
+        /// 鑾峰彇鎵�鏈夊満鏅殑鎵�鏈変俊鎭�,缃戝叧鍙嶉淇℃伅
+        /// </summary>
+        public GetSceneAllData getSceneAllData;
+        /// <summary>
+        /// 鑾峰彇鎵�鏈夊満鏅殑鎵�鏈変俊鎭�,缃戝叧鍙嶉淇℃伅
+        /// </summary>
+        [System.Serializable]
+        public class GetSceneAllData:CommonDevice.ErrorResponCommon
+        {
+            /// <summary>
+            /// 鑾峰彇鎵�鏈夊満鏅殑鎵�鏈変俊鎭�
+            /// </summary>
+            public GetSceneAllInfo getSceneAllInfo;
+        }
+        /// <summary>
+        /// 鑾峰彇鎵�鏈夊満鏅殑鎵�鏈変俊鎭�
+        /// </summary>
+        public GetSceneAllInfo sceneGetAllInfo;
+        /// <summary>
+        /// 鑾峰彇鎵�鏈夊満鏅殑鎵�鏈変俊鎭�
+        /// </summary>
+        [System.Serializable]
+        public class GetSceneAllInfo
+        {
+            /// <summary>
+            ///鍦烘櫙鎬绘暟
+            /// </summary>
+            public int ScenesSum;
+
+            /// <summary>
+            ///琛ㄧず褰撳墠鍙戦�佺殑鏄鍑犱釜鍦烘櫙淇℃伅銆係cenesNum浠�0寮�濮嬶紝姣忓彂閫佷竴涓満鏅俊鎭皢鑷姞1锛屽綋ScenesNum绛変簬ScenesSum鏃讹紝琛ㄧず鎵�鏈変俊鎭彂閫佸畬姣曘��
+            /// </summary>
+            public int ScenesNum;
+
+            /// <summary>
+            /// 鍦烘櫙ID
+            /// </summary>
+            public int ScenesId;
+
+            /// <summary>
+            /// 鍦烘櫙鏄惁澶勪簬寮�鍚姸鎬�
+            /// <para>0锛氬満鏅病鏈夊紑鍚�</para>
+            ///<para>1锛氬満鏅浜庡紑鍚姸鎬�</para>
+            /// </summary>
+            public int IsOpen;
+
+            /// <summary>
+            /// 鍦烘櫙鍚嶇О
+            /// </summary>
+            public string ScenesName;
+
+            /// <summary>
+            /// 褰撳墠鍦烘櫙鐨勮澶囨暟閲�
+            /// </summary>
+            public int DeviceSum;
+
+            /// <summary>
+            /// 鍦烘櫙鍒楄〃
+            /// </summary>
+            public List<DeviceListData> DeviceList = new List<DeviceListData>();
+        }
+        /// <summary>
+        /// 鍦烘櫙鍒楄〃鏁版嵁
+        /// </summary>
+        [System.Serializable]
+        public class DeviceListData
+        {
+            /// <summary>
+            /// 鎴愬憳绫诲瀷
+            ///<para>0锛氳澶囨垚鍛�</para>
+            ///<para>1锛氬満鏅垚鍛�</para>
+            ///<para>2锛氬欢鏃舵垚鍛�</para>
+            /// </summary>
+            public int Type;
+            /// <summary>
+            /// 璁惧mac鍦板潃 锛�
+            ///<para>褰揟ype=0鏃跺瓨鍦ㄣ��</para>
+            /// </summary>
+            public string DeviceAddr;
+            /// <summary>
+            /// 璁惧绔彛鍙�
+            ///<para>褰揟ype=0鏃跺瓨鍦ㄣ��</para>
+            /// </summary>
+            public int Epoint;
+            /// <summary>
+            /// 璁惧鍒楄〃
+            /// 褰揟ype=0鏃跺瓨鍦�
+            /// </summary>
+            public List<Safeguard.TaskListInfo> TaskList = new List<Safeguard.TaskListInfo>();
+            /// <summary>
+            /// 鍦烘櫙鎴愬憳鐨勫満鏅痠d
+            /// <para>褰揟ype=1鏃跺瓨鍦�</para>
+            /// </summary>
+            public int ElseScenesId;
+            /// <summary>
+            ///寤舵椂鎵ц鏃堕棿锛屽崟浣嶇銆�
+            /// </summary>
+            public int DelayTime;
+            /// <summary>
+            /// 鍦烘櫙鍔ㄤ綔搴忓彿锛岃〃绀虹鍑犱釜鍔ㄤ綔
+            /// </summary>
+            public int MemberNumber;
+        }
+
+        #endregion
+
+        #region 鍙兘鑾峰彇鍦烘櫙淇℃伅锛屾病鏈夊満鏅腑鐨勮澶囦俊鎭�
+        /// <summary>
+        /// 鍙兘鑾峰彇鍦烘櫙淇℃伅锛屾病鏈夊満鏅腑鐨勮澶囦俊鎭�
+        /// </summary>
+        /// <returns></returns>
+        //static async System.Threading.Tasks.Task<GetOnlySceneAllData> GetSceneInfoAsync()
+        //{
+        //if (ZbGateway.MainGateWay == null)
+        //{
+        //    return null;
+        //}
+        //return await System.Threading.Tasks.Task.Run(async () =>
+        //{
+        //var d = new GetOnlySceneAllData { };
+        //Action<string, string> action = (topic, message) =>
+        //{
+        //var gatewayID = topic.Split('/')[0];
+        //var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+
+        //if (topic == gatewayID + "/" + "Error_Respon")
+        //{
+        //    var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = ZbGateway.MainGateWay.GwId };
+        //    var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ErrorResponData>(jobject["Data"].ToString());
+
+        //    if (temp == null)
+        //    {
+        //        d.errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖";
+        //    }
+        //    else
+        //    {
+        //        d.errorResponData = temp;
+        //        d.errorMessageBase = ErrorMess(temp.Error);
+        //    }
+        //}
+
+        //if (topic == gatewayID + "/" + "Scene/GetInfo_Respon")
+        //{
+        //var scene = new Scene() { DataID = jobject.Value<int>("Data_ID"), GateWayId = ZbGateway.MainGateWay?.CurrentGateWayId };
+        //scene.sceneGetInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<GetSceneInfo>(jobject["Data"].ToString());
+
+        //if (scene.sceneGetInfo == null)
+        //{
+        //    d.errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�";
+        //}
+        //else
+        //{
+        //if (ZbGateway.MainGateWay?.SceneList.Count == 0)
+        //{
+        //    ZbGateway.MainGateWay.SceneList.Add(scene.sceneGetInfo);
+        //}
+        //else
+        //{
+        //    foreach (var a in ZbGateway.MainGateWay.SceneList)
+        //    {
+        //        a.ScenesList = scene.sceneGetInfo.ScenesList;
+        //    }
+        //}
+        //d.getSceneInfo = scene.sceneGetInfo;
+        //        }
+        //    }
+        //};
+        //ZbGateway.MainGateWay.Actions += action;
+        //System.Console.WriteLine("Scene/GetInfo_Actions 鍚姩" + System.DateTime.Now.ToString());
+
+        //var jObject = new JObject { { "Cluster_ID", 0 }, { "Command", 805 } };
+        //ZbGateway.MainGateWay?.Send(("Scene/GetInfo"),System.Text.Encoding.UTF8.GetBytes(jObject.ToString()));
+
+        //var dateTime = DateTime.Now;
+        //while ((DateTime.Now - dateTime).TotalMilliseconds < 1000)
+        //{
+        //    await System.Threading.Tasks.Task.Delay(10);
+        //    if (d.getSceneInfo != null)
+        //    {
+        //        break;
+        //    }
+        //}
+        //if ((DateTime.Now - dateTime).TotalMilliseconds > 10000)
+        //{
+        //    d.errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔";
+        //}
+        //ZbGateway.MainGateWay.Actions -= action;
+        //System.Console.WriteLine("Scene/GetInfo_Actions 閫�鍑�" + System.DateTime.Now.ToString());
+
+        //return d;
+        //});
+        // }
+
+        /// <summary>
+        ///鑾峰彇鍦烘櫙淇℃伅,缃戝叧鍙嶉淇℃伅
+        /// </summary>
+        [System.Serializable]
+        class GetOnlySceneAllData:CommonDevice.ErrorResponCommon
+        {
+            /// <summary>
+            /// 鑾峰彇鍦烘櫙淇℃伅
+            /// </summary>
+            public GetSceneInfo getSceneInfo;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍦烘櫙淇℃伅
+        /// </summary>
+        public GetSceneInfo sceneGetInfo;
+        /// <summary>
+        /// 鑾峰彇鍦烘櫙淇℃伅
+        /// </summary>
+        [System.Serializable]
+        public class GetSceneInfo
+        {
+            /// <summary>
+            ///鍦烘櫙鎬绘暟
+            /// </summary>
+            public int ScenesSum;
+
+            /// <summary>
+            /// 鍦烘櫙鍒楄〃
+            /// </summary>
+            public List<ScenesListInfo> ScenesList = new List<ScenesListInfo>();
+        }
+
+        /// <summary>
+        /// 鍦烘櫙鍒楄〃涓殑鍏蜂綋淇℃伅
+        /// </summary>
+        [System.Serializable]
+        public class ScenesListInfo:CommonDevice
+        {
+            /// <summary>
+            /// 鍦烘櫙ID
+            /// </summary>
+            public int ScenesId;
+
+            /// <summary>
+            /// 鍚嶇О
+            /// </summary>
+            public string ScenesName;
+
+            /// <summary>
+            /// 鏄惁澶勪簬寮�鍚姸鎬�
+            ///0锛氬満鏅病鏈夎寮�鍚�
+            ///1锛氬満鏅浜庡紑鍚姸鎬�
+            /// </summary>
+            public int IsOpen;
+        }
+        #endregion
+
+        #region 鑾峰彇褰撳墠鍦烘櫙涓殑璁惧鍒楄〃淇℃伅
+        ///<summary >
+        ///鑾峰彇褰撳墠鍦烘櫙涓殑璁惧鍒楄〃淇℃伅
+        /// </summary>
+        public static async System.Threading.Tasks.Task<GetSceneDeviceListAllInfo> GetSceneDeviceListAsync(int scenesId)
+        {
+            return await System.Threading.Tasks.Task.Run(async () =>
+            {
+                GetSceneDeviceListAllInfo d = null;
+                var mainGateway = ZbGateway.MainGateWay;
+                if (mainGateway == null)
+                {
+                    d = new GetSceneDeviceListAllInfo { errorMessageBase = "褰撳墠娌℃湁涓荤綉鍏�" };
+                    return d;
+                }
+                Action<string, string> action = (topic, message) =>
+                {
+                    var gatewayID = topic.Split('/')[0];
+                    var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+
+                    if (topic == gatewayID + "/" + "Error_Respon")
+                    {
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
+
+                        if (temp == null)
+                        {
+                            d = new GetSceneDeviceListAllInfo { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
+                        }
+                        else
+                        {
+                            d = new GetSceneDeviceListAllInfo { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                        }
+                    }
+
+                    if (topic == gatewayID + "/" + "Scene/GetDeviceList_Respon")
+                    {
+                        var sceneGetDeviceListObj = Newtonsoft.Json.JsonConvert.DeserializeObject<GetSceneDeviceListInfo>(jobject["Data"].ToString());
+
+                        if (sceneGetDeviceListObj == null)
+                        {
+                            d = new GetSceneDeviceListAllInfo { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
+                         }
+                        else
+                        {
+                            d = new GetSceneDeviceListAllInfo { getSceneDeviceListInfo = sceneGetDeviceListObj };
+                            System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
+
+                        }
+                    }
+                };
+                mainGateway.Actions += action;
+                System.Console.WriteLine("Scene/GetDeviceList_Actions 鍚姩" + System.DateTime.Now.ToString());
+                try
+                {
+                    var jObject = new JObject { { "Cluster_ID", 0 }, { "Command", 806 } };
+                    var data = new JObject { { "ScenesId", scenesId } };
+                    jObject.Add("Data", data);
+                    mainGateway.Send(("Scene/GetDeviceList"),System.Text.Encoding.UTF8.GetBytes(jObject.ToString()));
+                }
+                catch { }
+
+                var dateTime = DateTime.Now;
+                while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
+                {
+
+                    await System.Threading.Tasks.Task.Delay(10);
+
+                    if (d != null)
+                    {
+                         break;
+                     }
+                }
+                if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
+                {
+                     d = new GetSceneDeviceListAllInfo { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
+                }
+                mainGateway.Actions -= action;
+                System.Console.WriteLine("Scene/GetDeviceList_Actions閫�鍑�" + System.DateTime.Now.ToString());
+
+                return d;
+            });
+        }
+
+        /// <summary>
+        ///鑾峰彇鍦烘櫙鐨勮澶囧垪琛ㄤ俊鎭�,缃戝叧鍙嶉淇℃伅
+        /// </summary>
+        public GetSceneDeviceListAllInfo getSceneDeviceListAllInfo;
+        /// <summary>
+        ///鑾峰彇鍦烘櫙鐨勮澶囧垪琛ㄤ俊鎭�,缃戝叧鍙嶉淇℃伅
+        /// </summary>
+        [System.Serializable]
+        public class GetSceneDeviceListAllInfo : CommonDevice.ErrorResponCommon
+        {
+            /// <summary>
+            /// 鑾峰彇鍦烘櫙鐨勮澶囧垪琛ㄤ俊鎭�
+            /// </summary>
+            public GetSceneDeviceListInfo getSceneDeviceListInfo;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍦烘櫙鐨勮澶囧垪琛ㄤ俊鎭�
+        /// </summary>
+        public GetSceneDeviceListInfo sceneGetDeviceListObj;
+        /// <summary>
+        /// 鑾峰彇鍦烘櫙鐨勮澶囧垪琛ㄤ俊鎭�
+        /// </summary>
+        [System.Serializable]
+        public class GetSceneDeviceListInfo
+        {
+            /// <summary>
+            ///鍦烘櫙ID
+            /// </summary>
+            public int ScenesId;
+
+            /// <summary>
+            ///鍦烘櫙鏄惁澶勪簬寮�鍚姸鎬�
+            ///0锛氬満鏅病鏈夊紑鍚�
+            ///1锛氬満鏅浜庡紑鍚姸鎬�
+            /// </summary>
+            public int IsOpen;
+
+            /// <summary>
+            ///鍦烘櫙鐨勮澶囨暟閲�
+            /// </summary>
+            public int DeviceSum;
+
+            /// <summary>
+            /// 璁惧鍒楄〃
+            /// </summary>
+            public List<DeviceListData> DeviceList = new List<DeviceListData>();
+
+        }
+        #endregion
+
+        #region 鍦烘櫙涓坊鍔犵殑鎴愬憳
+        /// <summary>
+        /// 娣诲姞鐩爣鍒扮綉鍏冲埌鍦烘櫙涓��
+        /// <para>杩斿洖缁撴灉Result 1 鍔犲叆鎴愬姛</para>
+        /// <para>杩斿洖缁撴灉Result 0 鍔犲叆澶辫触</para>
+        /// </summary>
+        /// <returns>The scene member.</returns>
+        /// <param name="scenesId">Scenes identifier.</param>
+        public static async System.Threading.Tasks.Task<AddSceneMemberResponseAllData> AddSceneMemberAsync(AddSceneMemberData sceneMemberData)
+        {
+            return await System.Threading.Tasks.Task.Run(async () =>
+            {
+                AddSceneMemberResponseAllData d = null;
+                var mainGateway = ZbGateway.MainGateWay;
+                if (mainGateway == null)
+                {
+                    d = new AddSceneMemberResponseAllData { errorMessageBase = "褰撳墠娌℃湁涓荤綉鍏�" };
+                    return d;
+                }
+                Action<string, string> action = (topic, message) =>
+                {
+                    var gatewayID = topic.Split('/')[0];
+                    var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+
+                    if (topic == gatewayID + "/" + "Error_Respon")
+                    {
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
+
+                        if (temp == null)
+                        {
+                            d = new AddSceneMemberResponseAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
+                        }
+                        else
+                        {
+                            d = new AddSceneMemberResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                        }
+                    }
+
+                    if (topic == gatewayID + "/" + "Scene/AddMember_Respon")
+                    {
+                        var addSceneMemberData = Newtonsoft.Json.JsonConvert.DeserializeObject<AddSceneMemberResponseData>(jobject["Data"].ToString());
+
+                        if (addSceneMemberData == null)
+                        {
+                            d = new AddSceneMemberResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
+                        }
+                        else
+                        {
+                            d = new AddSceneMemberResponseAllData { addSceneMemberResponseData = addSceneMemberData };
+                            System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
+
+                        }
+                    }
+                };
+                mainGateway.Actions += action;
+                System.Console.WriteLine("Scene/AddMember_Actions 鍚姩" + System.DateTime.Now.ToString());
+                try{
+                    if (sceneMemberData != null)
+                    {
+                        var jObject = new JObject { { "Cluster_ID", 0 }, { "Command", 820 } };
+                        var data = new JObject { };
+                        if (sceneMemberData.Type == 0)
+                        {
+                            var taskList = new JArray { };
+                            foreach (var taskInfo in sceneMemberData.TaskList)
+                            {
+                                var tInfo = new JObject{
+                            { "TaskType", taskInfo.TaskType},
+                            { "Data1", taskInfo.Data1},
+                            { "Data2",taskInfo.Data2}
+                            };
+                                taskList.Add(tInfo);
+                            }
+
+                            data = new JObject {
+                         { "ScenesId",sceneMemberData.ScenesId},
+                         { "Type", sceneMemberData.Type} ,
+                         { "DeviceAddr",sceneMemberData.DeviceAddr} ,
+                         { "Epoint", sceneMemberData.Epoint} ,
+                         { "TaskList", taskList },
+                         { "DelayTime", sceneMemberData.DelayTime} ,
+                         { "MemberNumber",sceneMemberData.MemberNumber},
+                        };
+                        }
+                        else if (sceneMemberData.Type == 1)
+                        {
+                            data = new JObject {
+                         { "ScenesId",sceneMemberData.ScenesId},
+                         { "Type", sceneMemberData.Type} ,
+                         { "ElseScenesId", sceneMemberData.ElseScenesId },
+                         { "DelayTime", sceneMemberData.DelayTime} ,
+                         { "MemberNumber",sceneMemberData.MemberNumber},
+                        };
+                        }
+                        else if (sceneMemberData.Type == 2)
+                        {
+                            data = new JObject {
+                          { "Type", sceneMemberData.Type} ,
+                         { "ScenesId",sceneMemberData.ScenesId},
+                         { "DelayTime", sceneMemberData.DelayTime} ,
+                         { "MemberNumber",sceneMemberData.MemberNumber},
+                        };
+                        }
+
+                        jObject.Add("Data", data);
+                        mainGateway.Send(("Scene/AddMember"),System.Text.Encoding.UTF8.GetBytes(jObject.ToString()));
+                    }
+                }
+                catch{}
+
+
+                var dateTime = DateTime.Now;
+                while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
+                {
+                    await System.Threading.Tasks.Task.Delay(10);
+                    if (d != null)
+                    {
+                        break;
+                    }
+                }
+                if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
+                {
+                    d = new AddSceneMemberResponseAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
+                }
+
+                mainGateway.Actions -= action;
+                System.Console.WriteLine("Scene/AddMember_Actions 閫�鍑�" + System.DateTime.Now.ToString());
+
+                return d;
+            });
+        }
+
+
+        /// <summary>
+        /// 鑾峰彇鍦烘櫙涓坊鍔犵殑鎴愬憳,缃戝叧鍙嶉淇℃伅
+        /// </summary>
+        public AddSceneMemberResponseAllData addSceneMemberResponseAllData;
+        /// <summary>
+        /// 鑾峰彇鍦烘櫙涓坊鍔犵殑鎴愬憳,缃戝叧鍙嶉淇℃伅
+        /// </summary>
+        [System.Serializable]
+        public class AddSceneMemberResponseAllData : CommonDevice.ErrorResponCommon
+        {
+            /// <summary>
+            /// 鑾峰彇鍦烘櫙涓坊鍔犵殑鎴愬憳
+            /// </summary>
+            public AddSceneMemberResponseData addSceneMemberResponseData;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍦烘櫙涓坊鍔犵殑鎴愬憳
+        /// </summary>
+        public AddSceneMemberResponseData addSceneMemberData;
+        /// <summary>
+        /// 鑾峰彇娣诲姞鎴愬憳鍒板満鏅垨鏇存柊鍦烘櫙
+        /// </summary>
+        [System.Serializable]
+        public class AddSceneMemberResponseData
+        {
+            /// <summary>
+            /// 1 鍔犲叆鎴愬姛
+            /// <para>0 鍔犲叆澶辫触</para>
+            /// </summary>
+            public int Result;
+
+            /// <summary>
+            /// 鍦烘櫙ID
+            /// </summary>
+            public int ScenesId;
+
+            /// <summary>
+            /// 寤舵椂鎵ц鏃堕棿锛屽崟浣嶇
+            /// </summary>
+            public int DelayTime;
+
+            /// <summary>
+            /// 0锛氬姞鍏ユ垚鍛樹负鑺傜偣璁惧
+            /// <para>1锛氬姞鍏ユ垚鍛樹负鍏朵粬鍦烘櫙</para>
+            /// </summary>
+            public int Type;
+
+            /// <summary>
+            /// 鍏朵粬鍦烘櫙id
+            /// <para>褰揟ype=1鏃讹紝璇ュ瓧娈靛瓨鍦�</para>
+            /// </summary>
+            public int ElseScenesId;
+
+            /// <summary>
+            /// 璁惧mac鍦板潃
+            /// </summary>
+            public string DeviceAddr;
+
+            /// <summary>
+            /// 璁惧绔彛鍙�
+            /// </summary>
+            public int Epoint;
+
+            /// <summary>
+            /// 璁惧鍚嶇О 锛屽綋Type=0鏃讹紝璇ュ瓧娈靛瓨鍦�
+            /// </summary>
+            public string DeviceName;
+        }
+
+        /// <summary>
+        /// 娣诲姞鎴愬憳鍒板満鏅垨鏇存柊鍦烘櫙
+        /// </summary>
+        public AddSceneMemberData setAddMember;
+        /// <summary>
+        /// 娣诲姞鎴愬憳鍒板満鏅垨鏇存柊鍦烘櫙
+        /// </summary>
+        [System.Serializable]
+        public class AddSceneMemberData
+        {
+            /// <summary>
+            /// 鍦烘櫙ID
+            /// <para>0锛氭柊澧炲満鏅紝缃戝叧灏嗚嚜鍔ㄤ负璇ュ満鏅垎閰嶄竴涓湭琚娇鐢ㄧ殑鍦烘櫙id銆�</para>
+            /// <para>鍏朵粬锛氳澶囪鍔犲叆鐨勫満鏅�傚鏋滃満鏅痠d涓嶅瓨鍦紝鍒欑綉鍏虫柊寤轰竴涓満鏅苟鐢ㄨ瀛楁鍊间綔涓哄満鏅痠d銆�</para>
+            /// </summary>
+            public int ScenesId;
+
+            /// <summary>
+            /// 娣诲姞鎴愬憳绫诲瀷
+            ///<para>0锛氳妭鐐硅澶�</para>
+            ///<para>1锛氬叾浠栧満鏅�</para>
+            ///<para>2锛氬欢鏃剁被鍨�</para>
+            /// </summary>
+            public int Type;
+
+            /// <summary>
+            /// 寤舵椂鎵ц鏃堕棿锛屽崟浣嶇
+            /// 褰揟ype=2鏃跺瓨鍦�
+            /// </summary>
+            public int DelayTime;
+            /// <summary>
+            /// 寤舵椂鎵ц搴忓彿锛岃〃绀哄欢鏃剁储寮�
+            ///褰揟ype=2鏃跺瓨鍦�
+            /// </summary>
+            public int MemberNumber;
+
+            /// <summary>
+            /// 浣滀负鎴愬憳鐨勫叾浠栧満鏅痠d銆�
+            ///<para>褰揟ype=1鏃讹紝璇ュ瓧娈垫墠瀛樺湪銆�</para>
+            /// </summary>
+            public int ElseScenesId;
+
+            /// <summary>
+            /// 璁惧mac鍦板潃
+            /// <para>Type=0鏃跺瓨鍦�</para>
+            /// </summary>
+            public string DeviceAddr;
+            /// <summary>
+            /// 璁惧绔彛鍙�
+            /// <para>Type=0鏃跺瓨鍦�</para>
+            /// </summary>
+            public int Epoint;
+            /// <summary>
+            /// 璁惧鍒楄〃
+            /// <para>Type=0鏃跺瓨鍦�</para>
+            /// </summary>
+            public List<Safeguard.TaskListInfo> TaskList = new List<Safeguard.TaskListInfo>();
+        }
+        #endregion
+
+        #region 浠庣綉鍏崇殑鍦烘櫙涓Щ闄よ澶�
+        /// <summary>
+        /// 浠庣綉鍏崇殑鍦烘櫙涓Щ闄よ澶�.
+        /// <para>杩斿洖缁撴灉Result/RemoveResult 1锛氱Щ闄ゅけ璐ワ紝鎴愬憳涓嶅瓨鍦ㄥ満鏅腑</para>
+        /// <para>杩斿洖缁撴灉Result/RemoveResult 0锛氱Щ闄ゆ垚鍔熻触</para>
+        /// </summary>
+        /// <returns>The scene member.</returns>
+        /// <param name="scenesId">Scenes identifier.</param>
+        public static async System.Threading.Tasks.Task<RemoveSceneMemberResponseAllData> RemoveSceneMemberAsync(SceneRemoveMemberData sceneRemoveMemberData)
+        {
+            return await System.Threading.Tasks.Task.Run(async () =>
+            {
+                RemoveSceneMemberResponseAllData d = null;
+                var mainGateway = ZbGateway.MainGateWay;
+                if (mainGateway == null)
+                {
+                    d = new RemoveSceneMemberResponseAllData { errorMessageBase = "褰撳墠娌℃湁涓荤綉鍏�" };
+                    return d;
+                }
+                Action<string, string> action = (topic, message) =>
+                {
+                    var gatewayID = topic.Split('/')[0];
+                    var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+                    if (topic == gatewayID + "/" + "Error_Respon")
+                    {
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
+
+                        if (temp == null)
+                        {
+                            d = new RemoveSceneMemberResponseAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
+                        }
+                        else
+                        {
+                            d = new RemoveSceneMemberResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                        }
+                    }
+                    if (topic == gatewayID + "/" + "Scene/RemoveMember_Respon")
+                    {
+                        var removeSceneMemberResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<RemoveSceneMemberResponseData>(jobject["Data"].ToString());
+
+                        if (removeSceneMemberResponseData == null)
+                        {
+                            d = new RemoveSceneMemberResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
+                        }
+                        else
+                        {
+                            d = new RemoveSceneMemberResponseAllData { removeSceneMemberResponseData = removeSceneMemberResponseData };
+                            System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
+
+                        }
+                    }
+                };
+                mainGateway.Actions += action;
+                System.Console.WriteLine("Scene/RemoveMember_Actions 鍚姩" + "_" + mainGateway.GwId + System.DateTime.Now.ToString());
+
+                try{
+                    if (sceneRemoveMemberData != null)
+                    {
+                        var jObject = new JObject { { "Cluster_ID", 0 }, { "Command", 802 } };
+                        var deviceList = new JArray { };
+                        foreach (var deviceInfo in sceneRemoveMemberData.DeviceList)
+                        {
+                            if (deviceInfo.Type == 0)
+                            {
+                                var dInfo = new JObject{
+                            { "Type", deviceInfo.Type},
+                            { "DeviceAddr",deviceInfo.DeviceAddr},
+                            { "Epoint",deviceInfo.Epoint},
+                            { "DelayTime", deviceInfo.DelayTime} ,
+                            { "MemberNumber",deviceInfo.MemberNumber},
+                            };
+                                deviceList.Add(dInfo);
+                            }
+                            else if (deviceInfo.Type == 1)
+                            {
+                                var dInfo = new JObject{
+                            { "Type", deviceInfo.Type},
+                            { "ElseScenesId",deviceInfo.ElseScenesId},
+                            { "DelayTime", deviceInfo.DelayTime} ,
+                            { "MemberNumber",deviceInfo.MemberNumber},
+                            };
+                                deviceList.Add(dInfo);
+                            }
+                            else if (deviceInfo.Type == 2)
+                            {
+                                var dInfo = new JObject{
+                            { "Type", deviceInfo.Type},
+                           { "DelayTime", deviceInfo.DelayTime} ,
+                           { "MemberNumber",deviceInfo.MemberNumber},
+                            };
+                                deviceList.Add(dInfo);
+                            }
+
+                            }
+
+                        var data = new JObject {
+                    {"ScenesId",sceneRemoveMemberData.ScenesId},
+                    { "DeviceList", deviceList }
+                    };
+                        jObject.Add("Data", data);
+                        mainGateway.Send(("Scene/RemoveMember"),System.Text.Encoding.UTF8.GetBytes(jObject.ToString()));
+
+                    }
+                }
+                catch{}
+
+                var dateTime = DateTime.Now;
+                while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
+                {
+                    await System.Threading.Tasks.Task.Delay(10);
+                    if (d != null)
+                    {
+                        break;
+                    }
+                }
+                if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
+                {
+                    d = new RemoveSceneMemberResponseAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
+                }
+                mainGateway.Actions -= action;
+                System.Console.WriteLine("Scene/RemoveMember_Actions 閫�鍑�" + "_" + mainGateway.GwId + System.DateTime.Now.ToString());
+
+                return d;
+            });
+        }
+        /// <summary>
+        /// 浠庡満鏅腑绉婚櫎鎴愬憳
+        /// </summary>
+        public SceneRemoveMemberData sceneRemoveMemberData;
+        /// <summary>
+        /// 浠庡満鏅腑绉婚櫎鎴愬憳
+        /// </summary>
+        [System.Serializable]
+        public class SceneRemoveMemberData
+        {
+            /// <summary>
+            /// 鍦烘櫙ID
+            /// </summary>
+            public int ScenesId;
+
+            /// <summary>
+            /// 璁惧鍒楄〃 锛岃绉婚櫎鐨勮澶�
+            /// </summary>
+            public List<RemoveSceneDeviceListInfo> DeviceList = new List<RemoveSceneDeviceListInfo>();
+        }
+
+        /// <summary>
+        /// 绉婚櫎鍦烘櫙鎴愬憳淇℃伅
+        /// </summary>
+        [System.Serializable]
+        public class RemoveSceneDeviceListInfo
+        {
+            /// <summary>
+            /// 绉婚櫎鎴愬憳绫诲瀷
+            ///<para >0锛氳澶囨垚鍛�</para>
+            ///<para >1锛氬満鏅垚鍛�</para>
+            ///<para >2锛氬欢鏃剁被鍨�</para>
+            /// </summary>
+            public int Type;
+
+            /// <summary>
+            /// 璁惧mac鍦板潃
+            /// <para>褰揟ype=0鏃跺瓨鍦�</para>
+            /// </summary>
+            public string DeviceAddr;
+
+            /// <summary>
+            /// 璁惧绔彛鍙�
+            /// 褰揟ype=0鏃跺瓨鍦�
+            /// </summary>
+            public int Epoint;
+
+            /// <summary>
+            /// 鍦烘櫙鎴愬憳id
+            /// 褰揟ype=1鏃跺瓨鍦�
+            /// </summary>
+            public int ElseScenesId;
+
+            /// <summary>
+            /// 寤舵椂鎵ц鏃堕棿锛屽崟浣嶇
+            /// 褰揟ype=2鏃跺瓨鍦�
+            /// </summary>
+            public int DelayTime;
+            /// <summary>
+            /// 寤舵椂鎵ц搴忓彿锛岃〃绀哄欢鏃剁储寮�
+            ///褰揟ype=2鏃跺瓨鍦�
+            /// </summary>
+            public int MemberNumber;
+        }
+
+        /// <summary>
+        ///  绉婚櫎鍦烘櫙鎴愬憳淇℃伅鍙嶉,缃戝叧鍙嶉淇℃伅
+        /// </summary>
+        public RemoveSceneMemberResponseAllData removeSceneMemberResponseAllData;
+        /// <summary>
+        ///  绉婚櫎鍦烘櫙鎴愬憳淇℃伅鍙嶉,缃戝叧鍙嶉淇℃伅
+        /// </summary>
+        [System.Serializable]
+        public class RemoveSceneMemberResponseAllData : CommonDevice.ErrorResponCommon
+        {
+            /// <summary>
+            /// 绉婚櫎鍦烘櫙鎴愬憳淇℃伅鍙嶉
+            /// </summary>
+            public RemoveSceneMemberResponseData removeSceneMemberResponseData;
+        }
+
+        /// <summary>
+        /// 绉婚櫎鍦烘櫙鎴愬憳淇℃伅鍙嶉
+        /// </summary>
+        public RemoveSceneMemberResponseData removeSceneMemberResponseData;
+        /// <summary>
+        /// 绉婚櫎鍦烘櫙鎴愬憳淇℃伅鍙嶉
+        /// </summary>
+        [System.Serializable]
+        public class RemoveSceneMemberResponseData
+        {
+            /// <summary>
+            /// 0 绉婚櫎鎴愬姛
+            ///<para>1 鍦烘櫙ID涓嶅瓨鍦�</para>
+            /// </summary>
+            public int Result = 2;
+
+            /// <summary>
+            /// 鍦烘櫙ID
+            /// </summary>
+            public int ScenesId;
+            /// <summary>
+            /// 绉婚櫎璁惧鍒楄〃 锛孯esult=0鏃跺瓨鍦ㄣ��
+            /// </summary>
+            public List<RemoveSceneDeviceListResponseInfo> RemoveList = new List<RemoveSceneDeviceListResponseInfo>();
+        }
+
+        /// <summary>
+        /// 绉婚櫎鍦烘櫙鎴愬憳淇℃伅
+        /// </summary>
+        [System.Serializable]
+        public class RemoveSceneDeviceListResponseInfo
+        {
+            /// <summary>
+            /// 0锛氱Щ闄ゆ垚鍔�
+            ///<para >1锛氱Щ闄ゅけ璐ワ紝鎴愬憳涓嶅瓨鍦ㄥ満鏅腑</para>
+            /// </summary>
+            public int RemoveResult = 999;
+            /// <summary>
+            /// 绉婚櫎鎴愬憳绫诲瀷
+            ///<para >0锛氳澶囨垚鍛�</para>
+            ///<para >1锛氬叾浠栧満鏅�</para>
+            /// </summary>
+            public int Type;
+
+            /// <summary>
+            /// 璁惧mac鍦板潃
+            /// <para>褰揟ype=0鏃跺瓨鍦�</para>
+            /// </summary>
+            public string DeviceAddr;
+
+            /// <summary>
+            /// 璁惧绔彛鍙� 褰揟ype=0鏃跺瓨鍦�
+            /// </summary>
+            public int Epoint;
+
+            /// <summary>
+            /// 鍦烘櫙鎴愬憳id锛屽綋Type=1鏃跺瓨鍦�
+            /// </summary>
+            public int ElseScenesId;
+        }
+        #endregion
+
+        #region  淇敼鍦烘櫙鍚嶇О
+        ///<summary >
+        /// 淇敼鍦烘櫙鍚嶇О.
+        /// </summary>
+        public static async System.Threading.Tasks.Task<SceneRenameResponseAllData> RenameSceneAsync(int scenesId, string scenesName)
+        {
+            return await System.Threading.Tasks.Task.Run(async () =>
+            {
+                SceneRenameResponseAllData d = null;
+                var mainGateway = ZbGateway.MainGateWay;
+                if (mainGateway == null)
+                {
+                    d = new SceneRenameResponseAllData { errorMessageBase = "褰撳墠娌℃湁涓荤綉鍏�" };
+                    return d;
+                }
+                Action<string, string> action = (topic, message) =>
+                {
+                    var gatewayID = topic.Split('/')[0];
+                    var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+
+                    if (topic == gatewayID + "/" + "Error_Respon")
+                    {
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
+
+                        if (temp == null)
+                        {
+                            d = new SceneRenameResponseAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
+                        }
+                        else
+                        {
+                            d = new SceneRenameResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                        }
+                    }
+
+                    if (topic == gatewayID + "/" + "Scene/Rename_Respon")
+                    {
+                        var sceneRenameResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<SceneRenameResponseData>(jobject["Data"].ToString());
+
+                        if (sceneRenameResponseData == null)
+                        {
+                            d = new SceneRenameResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
+                        }
+                        else
+                        {
+                            d = new SceneRenameResponseAllData { sceneRenameResponseData = sceneRenameResponseData };
+                            System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
+
+                        }
+                    }
+                };
+                mainGateway.Actions += action;
+                System.Console.WriteLine("Scene/Rename_Actions 鍚姩" + "_" + mainGateway.GwId + System.DateTime.Now.ToString());
+                try{
+                    var jObject = new JObject { { "Cluster_ID", 0 }, { "Command", 804 } };
+                    var data = new JObject { { "ScenesId", scenesId }, { "ScenesName", scenesName } };
+                    jObject.Add("Data", data);
+                    mainGateway.Send(("Scene/Rename"),System.Text.Encoding.UTF8.GetBytes(jObject.ToString()));
+                }
+                catch {}
+
+                var dateTime = DateTime.Now;
+                while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
+                {
+                    await System.Threading.Tasks.Task.Delay(10);
+                    if (d != null)
+                    {
+                        break;
+                    }
+                }
+                if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
+                {
+                    d = new SceneRenameResponseAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
+                }
+                mainGateway.Actions -= action;
+                System.Console.WriteLine("Scene/Rename_Actions 閫�鍑�" + "_" + mainGateway.GwId + System.DateTime.Now.ToString());
+
+                return d;
+            });
+        }
+
+        /// <summary>
+        /// 淇敼鍦烘櫙鍚嶇О,缃戝叧鍙嶉淇℃伅
+        /// </summary>
+        public SceneRenameResponseAllData sceneRenameResponseAllData;
+        ///<summary >
+        /// 淇敼鍦烘櫙鍚嶇О
+        /// </summary>
+        [System.Serializable]
+        public class SceneRenameResponseAllData : CommonDevice.ErrorResponCommon
+        {
+            /// <summary>
+            /// 淇敼鍦烘櫙鍚嶇О
+            /// </summary>
+            public SceneRenameResponseData sceneRenameResponseData;
+        }
+
+        ///<summary >
+        /// 淇敼鍦烘櫙鍚嶇О
+        /// </summary>
+        public SceneRenameResponseData sceneRenameResponseData;
+        ///<summary >
+        /// 淇敼鍦烘櫙鍚嶇О
+        /// </summary>
+        [System.Serializable]
+        public class SceneRenameResponseData
+        {
+            /// <summary>
+            ///缁撴灉
+            ///<para>0 淇敼澶辫触</para>
+            ///<para>1 淇敼鎴愬姛</para>
+            ///<para>2 娌℃湁鍦ㄨ鍦烘櫙</para>
+            /// </summary>
+            public int Result=999;
+
+            /// <summary>
+            /// 鍦烘櫙ID
+            /// </summary>
+            public int ScenesId;
+
+            /// <summary>
+            /// 鍦烘櫙鍚嶇О
+            /// </summary>
+            public string ScenesName;
+        }
+        #endregion
+
+        #region  鍒犻櫎鍦烘櫙
+        ///<summary >
+        /// 鍒犻櫎鍦烘櫙
+        /// <para>杩斿洖缁撴灉 0 绉婚櫎澶辫触</para>
+        ///<para>杩斿洖缁撴灉 1 绉婚櫎鎴愬姛</para>
+        ///<para>杩斿洖缁撴灉 2 娌℃湁璇ュ満鏅�</para>
+        /// </summary>
+        public static async System.Threading.Tasks.Task<RemoveSceneAllData> DeleteSceneAsync(int scenesId)
+        {
+            return await System.Threading.Tasks.Task.Run(async () =>
+            {
+                RemoveSceneAllData d =null;
+                var mainGateway = ZbGateway.MainGateWay;
+                if (mainGateway == null)
+                {
+                    d = new RemoveSceneAllData { errorMessageBase = "褰撳墠娌℃湁涓荤綉鍏�" };
+                    return d;
+                }
+                Action<string, string> action = (topic, message) =>
+                {
+                    var gatewayID = topic.Split('/')[0];
+                    var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+
+                    if (topic == gatewayID + "/" + "Error_Respon")
+                    {
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
+
+                        if (temp == null)
+                        {
+                            d = new RemoveSceneAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
+                        }
+                        else
+                        {
+                            d = new RemoveSceneAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                        }
+                    }
+
+                    if (topic == gatewayID + "/" + "Scene/Remove_Respon")
+                    {
+                        var removeSceneData = Newtonsoft.Json.JsonConvert.DeserializeObject<RemoveSceneData>(jobject["Data"].ToString());
+                        if (removeSceneData == null)
+                        {
+                            d = new RemoveSceneAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
+                            return;
+                        }
+                        else
+                        {
+                            d = new RemoveSceneAllData { removeSceneData = removeSceneData };
+                            System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
+
+                        }
+                    }
+                };
+                mainGateway.Actions += action;
+                System.Console.WriteLine("Scene/Remove_Actions 鍚姩" + "_" + mainGateway.GwId + System.DateTime.Now.ToString());
+                try{
+                    var jObject = new JObject { { "Cluster_ID", 0 }, { "Command", 803 } };
+                    var data = new JObject { { "ScenesId", scenesId } };
+                    jObject.Add("Data", data);
+                    mainGateway.Send(("Scene/Remove"),jObject.ToString());
+                }
+                catch {}
+
+                var dateTime = DateTime.Now;
+                while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
+                {
+                    await System.Threading.Tasks.Task.Delay(10);
+                    if (d != null)
+                    {
+                        break;
+                    }
+                }
+                if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
+                {
+                    d = new RemoveSceneAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
+                }
+                mainGateway.Actions -= action;
+                System.Console.WriteLine("Scene/Remove_Actions 閫�鍑�" + "_" + mainGateway.GwId + System.DateTime.Now.ToString());
+
+                return d;
+            });
+        }
+
+        /// <summary>
+        /// 绉婚櫎鍦烘櫙,缃戝叧鍙嶉淇℃伅
+        /// </summary>
+        public RemoveSceneAllData removeSceneAllData;
+        /// <summary>
+        /// 绉婚櫎鍦烘櫙,缃戝叧鍙嶉淇℃伅
+        /// </summary>
+        [System.Serializable]
+        public class RemoveSceneAllData : CommonDevice.ErrorResponCommon
+        {
+            /// <summary>
+            /// 绉婚櫎鍦烘櫙
+            /// </summary>
+            public RemoveSceneData removeSceneData;
+        }
+
+        /// <summary>
+        /// 绉婚櫎鍦烘櫙鏁版嵁
+        /// </summary>
+        public RemoveSceneData removeSceneData;
+        /// <summary>
+        /// 绉婚櫎鍦烘櫙鏁版嵁
+        /// </summary>
+        [System.Serializable]
+        public class RemoveSceneData
+        {
+            /// <summary>
+            ///0 绉婚櫎澶辫触
+            ///<para>1 绉婚櫎鎴愬姛</para>
+            ///<para>2 娌℃湁璇ュ満鏅�</para>
+            /// </summary>
+            public int Result=999;
+
+            /// <summary>
+            /// 鍦烘櫙ID
+            /// </summary>
+            public int ScenesId;
+        }
+        #endregion
+
+        #region  璋冪敤鍦烘櫙
+        ///<summary >
+        ///璋冪敤鍦烘櫙
+        /// <para>DelayTime:寤舵椂鎵ц鏃堕棿锛屽崟浣嶇</para>
+        /// </summary>
+        public static async System.Threading.Tasks.Task<SceneOpenAllData> ControlSceneAsync(int ScenesId,int delayTime)
+        {
+            return await System.Threading.Tasks.Task.Run(async () =>
+            {
+                SceneOpenAllData d = null;
+                var mainGateway = ZbGateway.MainGateWay;
+                if (mainGateway == null)
+                {
+                    d = new SceneOpenAllData { errorMessageBase = "褰撳墠娌℃湁涓荤綉鍏�" };
+                    return d;
+                }
+                Action<string, string> action = (topic, message) =>
+                {
+                    var gatewayID = topic.Split('/')[0];
+                    var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+
+                    if (topic == gatewayID + "/" + "Error_Respon")
+                    {
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
+
+                        if (temp == null)
+                        {
+                            d = new SceneOpenAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
+                        }
+                        else
+                        {
+                            d = new SceneOpenAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                        }
+                    }
+
+                    if (topic == gatewayID + "/" + "Scene/Open_Respon")
+                    {
+                        var sceneOpen = Newtonsoft.Json.JsonConvert.DeserializeObject<SceneOpenData>(jobject["Data"].ToString());
+                        if (sceneOpen == null)
+                        {
+                            d = new SceneOpenAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
+                        }
+                        else
+                        {
+                            d = new SceneOpenAllData { sceneOpenData = sceneOpen };
+                            System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
+
+                        }
+                    }
+                };
+                mainGateway.Actions += action;
+                System.Console.WriteLine("Scene/Open_Actions 鍚姩" + "_" + mainGateway.GwId + System.DateTime.Now.ToString());
+                try{
+                    var jObject = new JObject { { "Cluster_ID", 0 }, { "Command", 821 } };
+                    var data = new JObject { { "ScenesId", ScenesId }, { "DelayTime", delayTime } };
+                    jObject.Add("Data", data);
+                    mainGateway.Send(("Scene/Open"),System.Text.Encoding.UTF8.GetBytes(jObject.ToString()));
+                }
+                catch {}
+
+                var dateTime = DateTime.Now;
+                while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime )
+                {
+                    await System.Threading.Tasks.Task.Delay(10);
+                    if (d != null)
+                    {
+                        break;
+                    }
+                }
+                if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
+                {
+                    d = new SceneOpenAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
+                }
+                mainGateway.Actions -= action;
+                System.Console.WriteLine("Scene/Open_Actions閫�鍑�" + "_" + mainGateway.GwId + System.DateTime.Now.ToString());
+
+                return d;
+            });
+        }
+
+        /// <summary>
+        /// 璋冪敤鍦烘櫙,缃戝叧鍙嶉淇℃伅
+        /// <para>杩斿洖Result 0锛氳皟鐢ㄥけ璐�</para>
+        ///<para>Result 1锛氳皟鐢ㄦ垚鍔�<para>
+        /// </summary>
+        public SceneOpenAllData sceneOpenAllData;
+        /// <summary>
+        /// 璋冪敤鍦烘櫙,缃戝叧鍙嶉淇℃伅
+        /// </summary>
+        [System.Serializable]
+        public class SceneOpenAllData : CommonDevice.ErrorResponCommon
+        {
+            /// <summary>
+            /// 璋冪敤鍦烘櫙
+            /// </summary>
+            public SceneOpenData sceneOpenData;
+        }
+
+        ///<summary >
+        /// 璋冪敤鍦烘櫙
+        /// </summary>
+        public SceneOpenData sceneOpen;
+        ///<summary >
+        /// 璋冪敤鍦烘櫙
+        /// </summary>
+        [System.Serializable]
+        public class SceneOpenData
+        {
+            /// <summary>
+            /// 鍦烘櫙ID
+            /// </summary>
+            public int ScenesId;
+
+            /// <summary>
+            ///缁撴灉
+            ///<para>Result 0锛氳皟鐢ㄥけ璐�</para>
+            ///<para>Result 1锛氳皟鐢ㄦ垚鍔�<para>
+            /// </summary>
+            public int Result=999;
+
+            /// <summary>
+            /// 寤舵椂鏃堕棿
+            /// </summary>
+            public int DelayTime;
+
+        }
+        #endregion
+
+        #region 鏌ョ湅姝e湪寤舵椂鐨勫満鏅�
+        /// <summary>
+        /// 鏌ョ湅姝e湪寤舵椂鐨勫満鏅�.
+        /// </summary>
+        public static async System.Threading.Tasks.Task<CatDelaySceneResponseAllData> CatDelaySceneAsync()
+        {
+            return await System.Threading.Tasks.Task.Run(async () =>
+            {
+                CatDelaySceneResponseAllData d = null;
+                var mainGateway = ZbGateway.MainGateWay;
+                if (mainGateway == null)
+                {
+                    d = new CatDelaySceneResponseAllData { errorMessageBase = "褰撳墠娌℃湁涓荤綉鍏�" };
+                    return d;
+                }
+                Action<string, string> action = (topic, message) =>
+                {
+                    var gatewayID = topic.Split('/')[0];
+                    var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+                    if (topic == gatewayID + "/" + "Error_Respon")
+                    {
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
+
+                        if (temp == null)
+                        {
+                            d = new CatDelaySceneResponseAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
+                         }
+                        else
+                        {
+                            d = new CatDelaySceneResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                         }
+                    }
+                    if (topic == gatewayID + "/" + "Scene/CatDelayScene_Respon")
+                    {
+                        var catDelaySceneResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<CatDelaySceneResponseData>(jobject["Data"].ToString());
+
+                        if (catDelaySceneResponseData == null)
+                        {
+                            d = new CatDelaySceneResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
+                        }
+                        else
+                        {
+                            d = new CatDelaySceneResponseAllData { catDelaySceneResponseData = catDelaySceneResponseData };
+                            System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
+                        }
+                    }
+                };
+                mainGateway.Actions += action;
+                System.Console.WriteLine("Scene/CatDelayScene_Actions 鍚姩" + "_" + mainGateway.GwId + System.DateTime.Now.ToString());
+                try
+                {
+                    var jObject = new JObject { { "Cluster_ID", 0 }, { "Command", 811 } };
+                    mainGateway.Send(("Scene/CatDelayScene"),System.Text.Encoding.UTF8.GetBytes(jObject.ToString()));
+                }catch {}
+                var dateTime = DateTime.Now;
+                while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
+                {
+                    await System.Threading.Tasks.Task.Delay(10);
+                    if (d != null)
+                    {
+                        break;
+                    }
+                }
+                if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
+                {
+                    d = new CatDelaySceneResponseAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
+                  }
+                mainGateway.Actions -= action;
+                System.Console.WriteLine("Scene/CatDelayScene_Actions 閫�鍑�" + "_" + mainGateway.GwId + System.DateTime.Now.ToString());
+
+                return d;
+            });
+        }
+
+        /// <summary>
+        ///  鏌ョ湅姝e湪寤舵椂鐨勫満鏅俊鎭俊鎭弽棣�,缃戝叧鍙嶉淇℃伅
+        /// </summary>
+        public CatDelaySceneResponseAllData catDelaySceneResponseAllData;
+        /// <summary>
+        ///  鏌ョ湅姝e湪寤舵椂鐨勫満鏅俊鎭弽棣�,缃戝叧鍙嶉淇℃伅
+        /// </summary>
+        [System.Serializable]
+        public class CatDelaySceneResponseAllData : CommonDevice.ErrorResponCommon
+        {
+            /// <summary>
+            /// 鏌ョ湅姝e湪寤舵椂鐨勫満鏅俊鎭俊鎭弽棣�
+            /// </summary>
+            public CatDelaySceneResponseData catDelaySceneResponseData;
+        }
+
+        /// <summary>
+        /// 鏌ョ湅姝e湪寤舵椂鐨勫満鏅俊鎭弽棣�
+        /// </summary>
+        public CatDelaySceneResponseData catDelaySceneResponseData;
+        /// <summary>
+        /// 鏌ョ湅姝e湪寤舵椂鐨勫満鏅俊鎭弽棣�
+        /// </summary>
+        [System.Serializable]
+        public class CatDelaySceneResponseData
+        {
+            /// <summary>
+            /// 姝e湪寤舵椂鎵ц鐨勫満鏅�
+            /// </summary>
+            public List<DelayScenesListResponseInfo> DelayScenesList = new List<DelayScenesListResponseInfo>();
+        }
+
+        /// <summary>
+        /// 姝e湪寤舵椂鎵ц鐨勫満鏅俊鎭�
+        /// </summary>
+        [System.Serializable]
+        public class DelayScenesListResponseInfo
+        {
+            /// <summary>
+            /// 鍦烘櫙ID
+            /// </summary>
+            public int ScenesId ;
+            /// <summary>
+            /// 寤舵椂鏃堕棿
+            /// </summary>
+            public int DelayTime;
+
+            /// <summary>
+            /// 鍓╀綑瑙﹀彂鏃堕棿锛屽崟浣嶇
+            /// </summary>
+            public int RemainTime;
+        }
+        #endregion
+
+        ///<summary >
+        /// 鍦烘櫙琚牬鍧忓弽棣�
+        /// </summary>
+        public SceneBreak sceneBreak;
+        ///<summary >
+        /// 鍦烘櫙琚牬鍧忓弽棣�
+        /// </summary>
+        [System.Serializable]
+        public class SceneBreak
+        {
+            /// <summary>
+            /// 鍦烘櫙ID
+            /// </summary>
+            public int ScenesId;
+
+        }
+
+        ///<summary >
+        /// 鍦烘櫙鍔ㄤ綔琚墽琛岄�氱煡
+        /// </summary>
+        public SceneExecRespon sceneExecRespon;
+        ///<summary >
+        /// 鍦烘櫙鍔ㄤ綔琚墽琛岄�氱煡
+        /// </summary>
+        [System.Serializable]
+        public class SceneExecRespon
+        {
+            /// <summary>
+            /// 鍦烘櫙ID
+            /// </summary>
+            public int ScenesId;
+
+        }
+    }
+}

--
Gitblit v1.8.0