From 6fa9d69da922c8049f5acfcbb9ce9fd26811024c Mon Sep 17 00:00:00 2001 From: xm <1271024303@qq.com> Date: 星期四, 16 四月 2020 17:10:57 +0800 Subject: [PATCH] 请合并代码 --- ZigbeeApp/Shared/Phone/ZigBee/Device/Scene.cs | 2164 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 2,164 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..7006480 --- /dev/null +++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/Scene.cs @@ -0,0 +1,2164 @@ +锘縰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> + //[Newtonsoft.Json.JsonIgnore] + //public List<GetSceneDeviceListInfo> SceneDeviceList = new List<GetSceneDeviceListInfo>(); + + /// <summary> + /// 缃戝叧淇℃伅閿欒鍙嶉 + /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para> + /// </summary> + ErrorResponData errResponData; + /// <summary> + /// 缃戝叧淇℃伅閿欒鍙嶉 + /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para> + /// </summary> + [System.Serializable] + public class ErrorResponData + { + /// <summary> + /// Error鍙傛暟鍚箟 + ///<para>1锛氱綉鍏虫棤娉曡В鏋愬懡浠ゆ暟鎹��</para> + ///<para>2锛氬崗璋冨櫒姝e湪鍗囩骇鎴栧浠�/鎭㈠鏁版嵁 + ///<para>3锛氭搷浣滆澶�/缁�/鍦烘櫙涓嶅瓨鍦�</para> + ///<para>4锛氬叾浠栭敊璇�</para> + ///<para>5锛氭暟鎹紶杈撻敊璇紙鍦ㄦ煇娆″鎴风鍚戠綉鍏冲彂閫佹暟鎹殑杩囩▼涓紝缃戝叧鍦ㄥ悎鐞嗘椂闂磋寖鍥村唴鎺ユ敹瀹㈡埛绔暟鎹笉瀹屾暣瀵艰嚧璇ラ敊璇彂鐢熴�傚瀹㈡埛绔悜缃戝叧涓�娆″彂閫�100涓瓧鑺傜殑鏁版嵁锛屼絾缃戝叧绛夊緟鎺ユ敹浜嗕竴绉掑彧鎺ユ敹浜�80涓瓧鑺傘�傚彂鐢熻閿欒锛岀綉鍏冲皢涓诲姩鍏抽棴瀹㈡埛绔繛鎺ワ級</para> + /// </summary> + public int Error; + } + + /// <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 gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = mainGateway.getGatewayBaseInfo.gwID }; + var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<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 scene = new Scene() { DataID = jobject.Value<int>("Data_ID"), GateWayId = mainGateway.CurrentGateWayId }; + scene.getSceneIdData = Newtonsoft.Json.JsonConvert.DeserializeObject<Scene.GetSceneIdData>(jobject["Data"].ToString()); + if (scene.getSceneIdData == null) + { + d = new GetSceneIdAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; + } + else + { + GetSceneAllInfoAsync(); + d = new GetSceneIdAllData { getSceneIdData = scene.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 + { + /// <summary> + /// 閿欒淇℃伅 + /// </summary> + public string errorMessageBase; + /// <summary> + /// 缃戝叧淇℃伅閿欒鍙嶉 + /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para> + /// </summary> + public ErrorResponData errorResponData; + /// <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; + } + ZbGateway.AllSceneList.Clear(); + 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 gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = mainGateway.getGatewayBaseInfo.gwID }; + var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<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 scene = new Scene() { DataID = jobject.Value<int>("Data_ID"), GateWayId = mainGateway.CurrentGateWayId }; + scene.sceneGetAllInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<GetSceneAllInfo>(jobject["Data"].ToString()); + + if (scene.sceneGetAllInfo == null) + { + d = new GetSceneAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; + } + else + { + var info = ZbGateway.AllSceneList.Find(obj => obj.ScenesId == scene.sceneGetAllInfo.ScenesId); + if (info == null) + { + ZbGateway.AllSceneList.Add(scene.sceneGetAllInfo); + } + else + { + info.DeviceList = scene.sceneGetAllInfo.DeviceList; + info.DeviceSum = scene.sceneGetAllInfo.DeviceSum; + info.IsOpen = scene.sceneGetAllInfo.IsOpen; + info.ScenesId = scene.sceneGetAllInfo.ScenesId; + info.ScenesName = scene.sceneGetAllInfo.ScenesName; + info.ScenesNum = scene.sceneGetAllInfo.ScenesNum; + info.ScenesSum = scene.sceneGetAllInfo.ScenesSum; + } + d = new GetSceneAllData { getSceneAllInfo = scene.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 + { + /// <summary> + /// 閿欒淇℃伅 + /// </summary> + public string errorMessageBase; + /// <summary> + /// 缃戝叧淇℃伅閿欒鍙嶉 + /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para> + /// </summary> + public ErrorResponData errorResponData; + /// <summary> + /// 鑾峰彇鎵�鏈夊満鏅殑鎵�鏈変俊鎭� + /// </summary> + public GetSceneAllInfo getSceneAllInfo; + } + /// <summary> + /// 鑾峰彇鎵�鏈夊満鏅殑鎵�鏈変俊鎭� + /// </summary> + public GetSceneAllInfo sceneGetAllInfo; + /// <summary> + /// 鑾峰彇鎵�鏈夊満鏅殑鎵�鏈変俊鎭� + /// </summary> + [System.Serializable] + public class GetSceneAllInfo:CommonDevice + { + /// <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> + /// 璁惧鍚嶇О + /// </summary> + public string DeviceName; + /// <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> + public static async System.Threading.Tasks.Task<List<GetSceneAllInfo>> GetSceneListAsync() + { + ZbGateway.AllSceneList.Clear(); + return await System.Threading.Tasks.Task.Run(async () => { + var dateTime = DateTime.Now; + GetSceneAllData d = null; + var mainGateway = ZbGateway.MainGateWay; + if (mainGateway == null) + { + d = new GetSceneAllData { errorMessageBase = "褰撳墠娌℃湁涓荤綉鍏�" }; + return null; + } + Action<string, string> action = (topic, message) => + { + var gatewayID = topic.Split('/')[0]; + var jobject = Newtonsoft.Json.Linq.JObject.Parse(message); + + if (topic == gatewayID + "/" + "Scene/GetAllInfo_Respon") + { + dateTime = DateTime.Now; + var scene = new Scene() { DataID = jobject.Value<int>("Data_ID"), GateWayId = mainGateway.CurrentGateWayId }; + scene.sceneGetAllInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<GetSceneAllInfo>(jobject["Data"].ToString()); + + var info = ZbGateway.AllSceneList.Find(obj => obj.ScenesId == scene.sceneGetAllInfo.ScenesId); + if (info == null) + { + ZbGateway.AllSceneList.Add(scene.sceneGetAllInfo); + } + else + { + info.DeviceList = scene.sceneGetAllInfo.DeviceList; + info.DeviceSum = scene.sceneGetAllInfo.DeviceSum; + info.IsOpen = scene.sceneGetAllInfo.IsOpen; + info.ScenesId = scene.sceneGetAllInfo.ScenesId; + info.ScenesName = scene.sceneGetAllInfo.ScenesName; + info.ScenesNum = scene.sceneGetAllInfo.ScenesNum; + info.ScenesSum = scene.sceneGetAllInfo.ScenesSum; + } + 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"),System.Text.Encoding.UTF8.GetBytes(jObject.ToString())); + } + catch { } + + while ((DateTime.Now - dateTime).TotalMilliseconds < 1000) + { + await System.Threading.Tasks.Task.Delay(10); + } + + mainGateway.Actions -= action; + System.Console.WriteLine("Scene/GetAllInfo_Actions 閫�鍑�" + System.DateTime.Now.ToString()); + + return ZbGateway.AllSceneList; + }); + } + #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.getGatewayBaseInfo.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> + GetOnlySceneAllData getOnlySceneAllData; + /// <summary> + ///鑾峰彇鍦烘櫙淇℃伅,缃戝叧鍙嶉淇℃伅 + /// </summary> + [System.Serializable] + class GetOnlySceneAllData + { + /// <summary> + /// 閿欒淇℃伅 + /// </summary> + public string errorMessageBase; + /// <summary> + /// 缃戝叧淇℃伅閿欒鍙嶉 + /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para> + /// </summary> + public ErrorResponData errorResponData; + /// <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 gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = mainGateway.getGatewayBaseInfo.gwID }; + var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<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 sceneTemp = new Scene() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), GateWayId = mainGateway.getGatewayBaseInfo.gwID }; + sceneTemp.sceneGetDeviceListObj = Newtonsoft.Json.JsonConvert.DeserializeObject<GetSceneDeviceListInfo>(jobject["Data"].ToString()); + + if (sceneTemp.sceneGetDeviceListObj == null) + { + d = new GetSceneDeviceListAllInfo { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; + } + else + { + var sDev = mainGateway.SceneDeviceList.Find(obj => obj.ScenesId == sceneTemp.sceneGetDeviceListObj.ScenesId); + if (sDev == null) + { + ZbGateway.MainGateWay.SceneDeviceList.Add(sceneTemp.sceneGetDeviceListObj); + } + else + { + sDev.DeviceList = sceneTemp.sceneGetDeviceListObj.DeviceList; + } + + d = new GetSceneDeviceListAllInfo { getSceneDeviceListInfo = sceneTemp.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 + { + /// <summary> + /// 閿欒淇℃伅 + /// </summary> + public string errorMessageBase; + /// <summary> + /// 缃戝叧淇℃伅閿欒鍙嶉 + /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para> + /// </summary> + public ErrorResponData errorResponData; + /// <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 gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = mainGateway.getGatewayBaseInfo.gwID }; + var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<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 scene = new Scene() { DataID = jobject.Value<int>("Data_ID"), GateWayId = mainGateway.CurrentGateWayId }; + scene.addSceneMemberData = Newtonsoft.Json.JsonConvert.DeserializeObject<AddSceneMemberResponseData>(jobject["Data"].ToString()); + + if (scene.addSceneMemberData == null) + { + d = new AddSceneMemberResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; + } + else + { + d = new AddSceneMemberResponseAllData { addSceneMemberResponseData = scene.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 + { + /// <summary> + /// 閿欒淇℃伅 + /// </summary> + public string errorMessageBase; + /// <summary> + /// 缃戝叧淇℃伅閿欒鍙嶉 + /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para> + /// </summary> + public ErrorResponData errorResponData; + /// <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 gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = mainGateway.getGatewayBaseInfo.gwID }; + var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<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 scene = new Scene() { DataID = jobject.Value<int>("Data_ID"), GateWayId = mainGateway.CurrentGateWayId }; + scene.removeSceneMemberResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<RemoveSceneMemberResponseData>(jobject["Data"].ToString()); + + if (scene.removeSceneMemberResponseData == null) + { + d = new RemoveSceneMemberResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; + } + else + { + d = new RemoveSceneMemberResponseAllData { removeSceneMemberResponseData = scene.removeSceneMemberResponseData }; + System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}"); + + } + } + }; + mainGateway.Actions += action; + System.Console.WriteLine("Scene/RemoveMember_Actions 鍚姩" + "_" + mainGateway.getGatewayBaseInfo.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.getGatewayBaseInfo.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 + { + /// <summary> + /// 閿欒淇℃伅 + /// </summary> + public string errorMessageBase; + /// <summary> + /// 缃戝叧淇℃伅閿欒鍙嶉 + /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para> + /// </summary> + public ErrorResponData errorResponData; + /// <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 gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = mainGateway.getGatewayBaseInfo.gwID }; + var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<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 scene = new Scene() { DataID = jobject.Value<int>("DataID"), GateWayId = mainGateway.CurrentGateWayId }; + scene.sceneRenameResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<SceneRenameResponseData>(jobject["Data"].ToString()); + + if (scene.sceneRenameResponseData == null) + { + d = new SceneRenameResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; + } + else + { + d = new SceneRenameResponseAllData { sceneRenameResponseData = scene.sceneRenameResponseData }; + System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}"); + + } + } + }; + mainGateway.Actions += action; + System.Console.WriteLine("Scene/Rename_Actions 鍚姩" + "_" + mainGateway.getGatewayBaseInfo.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.getGatewayBaseInfo.gwID + System.DateTime.Now.ToString()); + + return d; + }); + } + + /// <summary> + /// 淇敼鍦烘櫙鍚嶇О,缃戝叧鍙嶉淇℃伅 + /// </summary> + public SceneRenameResponseAllData sceneRenameResponseAllData; + ///<summary > + /// 淇敼鍦烘櫙鍚嶇О + /// </summary> + [System.Serializable] + public class SceneRenameResponseAllData + { + /// <summary> + /// 閿欒淇℃伅 + /// </summary> + public string errorMessageBase; + /// <summary> + /// 缃戝叧淇℃伅閿欒鍙嶉 + /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para> + /// </summary> + public ErrorResponData errorResponData; + /// <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 gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = mainGateway.getGatewayBaseInfo.gwID }; + var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<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 scene = new Scene() { DataID = jobject.Value<int>("Data_ID"), GateWayId = mainGateway.CurrentGateWayId }; + scene.removeSceneData = Newtonsoft.Json.JsonConvert.DeserializeObject<RemoveSceneData>(jobject["Data"].ToString()); + if (scene.removeSceneData == null) + { + d = new RemoveSceneAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; + return; + } + else + { + for (int listCount = 0; listCount < ZigBee.Device.ZbGateway.AllSceneList.Count; listCount++) + { + var sc = ZbGateway.AllSceneList[listCount]; + + if (scene.removeSceneData.ScenesId == sc.ScenesId) + { + ZigBee.Device.ZbGateway.AllSceneList.RemoveAt(listCount); + listCount--; + } + } + d = new RemoveSceneAllData { removeSceneData = scene.removeSceneData }; + System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}"); + + } + } + }; + mainGateway.Actions += action; + System.Console.WriteLine("Scene/Remove_Actions 鍚姩" + "_" + mainGateway.getGatewayBaseInfo.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.getGatewayBaseInfo.gwID + System.DateTime.Now.ToString()); + + return d; + }); + } + + /// <summary> + /// 绉婚櫎鍦烘櫙,缃戝叧鍙嶉淇℃伅 + /// </summary> + public RemoveSceneAllData removeSceneAllData; + /// <summary> + /// 绉婚櫎鍦烘櫙,缃戝叧鍙嶉淇℃伅 + /// </summary> + [System.Serializable] + public class RemoveSceneAllData + { + /// <summary> + /// 閿欒淇℃伅 + /// </summary> + public string errorMessageBase; + /// <summary> + /// 缃戝叧淇℃伅閿欒鍙嶉 + /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para> + /// </summary> + public ErrorResponData errorResponData; + /// <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 gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = mainGateway.getGatewayBaseInfo.gwID }; + var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<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 scene = new Scene() { DataID = jobject.Value<int>("Data_ID"), GateWayId = mainGateway.CurrentGateWayId }; + scene.sceneOpen = Newtonsoft.Json.JsonConvert.DeserializeObject<SceneOpenData>(jobject["Data"].ToString()); + if (scene.sceneOpen == null) + { + d = new SceneOpenAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; + } + else + { + d = new SceneOpenAllData { sceneOpenData = scene.sceneOpen }; + System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}"); + + } + } + }; + mainGateway.Actions += action; + System.Console.WriteLine("Scene/Open_Actions 鍚姩" + "_" + mainGateway.getGatewayBaseInfo.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.getGatewayBaseInfo.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 + { + /// <summary> + /// 閿欒淇℃伅 + /// </summary> + public string errorMessageBase; + /// <summary> + /// 缃戝叧淇℃伅閿欒鍙嶉 + /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para> + /// </summary> + public ErrorResponData errorResponData; + /// <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 gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = mainGateway.getGatewayBaseInfo.gwID }; + var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<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 scene = new Scene() { DataID = jobject.Value<int>("Data_ID"), GateWayId = mainGateway.CurrentGateWayId }; + scene.catDelaySceneResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<CatDelaySceneResponseData>(jobject["Data"].ToString()); + + if (scene.catDelaySceneResponseData == null) + { + d = new CatDelaySceneResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; + } + else + { + d = new CatDelaySceneResponseAllData { catDelaySceneResponseData = scene.catDelaySceneResponseData }; + System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}"); + } + } + }; + mainGateway.Actions += action; + System.Console.WriteLine("Scene/CatDelayScene_Actions 鍚姩" + "_" + mainGateway.getGatewayBaseInfo.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.getGatewayBaseInfo.gwID + System.DateTime.Now.ToString()); + + return d; + }); + } + + /// <summary> + /// 鏌ョ湅姝e湪寤舵椂鐨勫満鏅俊鎭俊鎭弽棣�,缃戝叧鍙嶉淇℃伅 + /// </summary> + public CatDelaySceneResponseAllData catDelaySceneResponseAllData; + /// <summary> + /// 鏌ョ湅姝e湪寤舵椂鐨勫満鏅俊鎭弽棣�,缃戝叧鍙嶉淇℃伅 + /// </summary> + [System.Serializable] + public class CatDelaySceneResponseAllData + { + /// <summary> + /// 閿欒淇℃伅 + /// </summary> + public string errorMessageBase; + /// <summary> + /// 缃戝叧淇℃伅閿欒鍙嶉 + /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para> + /// </summary> + public ErrorResponData errorResponData; + /// <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; + + } + + //public static string SceneFilePath = "SceneFile"; + + //static Scene() + //{ + // if (null == Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(Encoding.UTF8.GetString(Shared.IO.FileUtils.ReadFile(SceneFilePath)))) + // { + // //鍒濆鍖栧満鏅垪琛� + // Shared.IO.FileUtils.WriteFileByBytes(SceneFilePath, System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(new List<string>()))); + // } + //} + + ///// <summary> + ///// 淇濆瓨褰撳墠鍦烘櫙 + ///// </summary> + ///// <param name="scenceFilePath">Scence file path.</param> + //public void Save(string scenceFilePath) + //{ + // Shared.IO.FileUtils.WriteFileByBytes(scenceFilePath, System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this))); + //} + + /// <summary> + /// 鏍规嵁鍦烘櫙璺緞鎭㈠鍦烘櫙瀵硅薄 + /// </summary> + /// <returns>The by file path.</returns> + /// <param name="sceneFilePath">Room file path.</param> + //public static Scene GetSceneByFilePath(string sceneFilePath) + //{ + // try + // { + // return Newtonsoft.Json.JsonConvert.DeserializeObject<Scene>(System.Text.Encoding.UTF8.GetString(Shared.IO.FileUtils.ReadFile(sceneFilePath))); + // } + // catch + // { + // return new Scene(); + // } + //} + + /// <summary> + /// 鍦烘櫙鏍囪瘑 + /// </summary> + //public bool SceneLabel = false; + + /// <summary> + /// 鎺у埗鐩爣鐨勬枃浠惰矾寰�,鏍煎紡濡傦細RoomScene_+DeviceID_Mac_Epoint + /// </summary> + //public readonly List<string> DeviceFilePathList = new List<string>(); + + /// <summary> + /// 鍦烘櫙鐨勮儗鏅浘 + /// </summary> + //public string BackgroundImagePath = "Scene/s1.png"; + + /// <summary> + /// 鍦烘櫙涓殑璁惧鍒楄〃 + /// </summary> + //[Newtonsoft.Json.JsonIgnore] + //public List<Scene> sceneDeviceList = new List<Scene>(); + + //[Newtonsoft.Json.JsonIgnore] + //public List<Scene> LocalSceneList = new List<Scene>(); + + //public SceneId SceneID; + + ///<summary > + /// 浠庣綉鍏崇殑鍦烘櫙涓Щ闄よ澶� + /// </summary> + //public static void SceneRemoveMember1(ZigBee.Device.ZbGateway gateway, int ScenesId, string DeviceAddr, int Epoint) + //{ + // var jobject = new JObject { { "Cluster_ID", 0 }, { "Command", 802 } }; + // var DeviceList = new JArray + // { + // new JObject { + // { "Type", 0}, + // { "DeviceAddr",DeviceAddr}, + // { "Epoint",Epoint} + // } + // }; + // var data = new JObject { + // {"ScenesId",ScenesId}, + // { "DeviceList", DeviceList } + // }; + // jobject.Add("Data", data); + // gateway.Send(("Scene/RemoveMember"), Common.SecuritySet.Encryption((jobject.ToString()))); + + //} + + ///<summary > + /// 鍒犻櫎鍦烘櫙 + /// </summary> + //public static void SceneRemove1(ZigBee.Device.ZbGateway gateway, int scenesId) + //{ + // var jobject = new JObject { { "Cluster_ID", 0 }, { "Command", 803 } }; + // var data = new JObject { { "ScenesId", scenesId } }; + // jobject.Add("Data", data); + // gateway.Send(("Scene/Remove"), Common.SecuritySet.Encryption((jobject.ToString()))); + //} + + ///<summary > + /// 淇敼鍦烘櫙鍚嶇О + /// </summary> + //public static void SceneRename1(ZigBee.Device.ZbGateway gateway, int scenesId, string scenesName) + //{ + // var jobject = new JObject { { "Cluster_ID", 0 }, { "Command", 804 } }; + // var data = new JObject { { "ScenesId", scenesId }, { "ScenesName", scenesName } }; + // jobject.Add("Data", data); + // gateway.Send(("Scene/Rename"), Common.SecuritySet.Encryption((jobject.ToString()))); + //} + + ///<summary > + /// 鑾峰彇缃戝叧涓満鏅俊鎭� + /// </summary> + //public static void SceneGetInfo1(ZigBee.Device.ZbGateway gateway) + //{ + // var jobject = new JObject { { "Cluster_ID", 0 }, { "Command", 805 } }; + // gateway.Send(("Scene/GetInfo"), Common.SecuritySet.Encryption((jobject.ToString()))); + //} + + ///<summary > + ///鑾峰彇缃戝叧涓満鏅殑璁惧鍒楄〃 + /// </summary> + //public static void SceneGetDeviceList1(ZigBee.Device.ZbGateway gateway, int ScenesId) + //{ + // var jobject = new JObject { { "Cluster_ID", 0 }, { "Command", 806 } }; + // var data = new JObject { { "ScenesId", ScenesId } }; + // jobject.Add("Data", data); + // gateway.Send(("Scene/GetDeviceList"), Common.SecuritySet.Encryption((jobject.ToString()))); + //} + + ///<summary > + /// 鑾峰彇鎵�鏈夊満鏅俊鎭紙鍖呮嫭鍦烘櫙璁惧鍒楄〃锛� + /// </summary> + //public static void SceneGetAllInfo1(ZigBee.Device.ZbGateway gateway) + //{ + // var jobject = new JObject { { "Cluster_ID", 0 }, { "Command", 807 } }; + // gateway.Send(("Scene/GetAllInfo"), Common.SecuritySet.Encryption((jobject.ToString()))); + //} + + ///<summary > + ///璋冪敤鍦烘櫙 + /// </summary> + //public static void SceneOpen1(ZigBee.Device.ZbGateway gateway, int ScenesId) + //{ + // var jobject = new JObject { { "Cluster_ID", 0 }, { "Command", 808 } }; + // var data = new JObject { { "ScenesId", ScenesId } }; + // jobject.Add("Data", data); + // gateway.Send(("Scene/Open"), Common.SecuritySet.Encryption((jobject.ToString()))); + //} + } +} -- Gitblit v1.8.0