From 25429f085093d89d543a0b90e30d0d62d1b7dac9 Mon Sep 17 00:00:00 2001 From: hxb <hxb@hdlchina.com.cn> Date: 星期二, 30 八月 2022 09:37:38 +0800 Subject: [PATCH] 合并了IOS的代码 --- ZigbeeApp/Shared/Phone/ZigBee/Device/Panel.cs | 1199 ++++------------------------------------------------------- 1 files changed, 88 insertions(+), 1,111 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/Panel.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/Panel.cs index 360323a..aed8f7a 100755 --- a/ZigbeeApp/Shared/Phone/ZigBee/Device/Panel.cs +++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/Panel.cs @@ -15,10 +15,20 @@ this.Type = DeviceType.OnOffSwitch; } /// <summary> + /// 澶氬姛鑳介潰鏉夸腑琚粦瀹氱殑鐩爣 + /// </summary> + [Newtonsoft.Json.JsonIgnore] + public System.Collections.Generic.Dictionary<string, List<BindListAllInfo>> bindTargetsFromMutilfunctionPanelList = new System.Collections.Generic.Dictionary<string, List<BindListAllInfo>>(); + /// <summary> /// 鎸夐敭妯″紡锛堢鏈夊姛鑳斤級 /// </summary> public int panelMode = 65535; - + /// <summary> + ///褰撳墠閫夋嫨鐨勭畝绾﹀鍔熻兘闈㈡澘鐨勭被鍨嬨�愮畝绾﹀鍔熻兘闈㈡澘銆� + /// 0:鍦烘櫙 1:寮�鍏� 2:鎻掑骇 3:鐏厜 4:閬槼 5:绌鸿皟 6:鏂伴 + /// </summary> + [Newtonsoft.Json.JsonIgnore] + public int currentMutilfunctionBindType = 0; /// <summary> /// 褰撳墠閫夋嫨妯″紡 /// </summary> @@ -318,7 +328,7 @@ /// PIR閰嶇疆鍙傛暟鍥炲 /// </summary> [System.Serializable] - public class PanelPrivateFunctionsResponseAllInfo:ErrorResponCommon + public class PanelPrivateFunctionsResponseAllInfo : ErrorResponCommon { /// <summary> /// 鍏夋劅绛夌骇涓暟锛圠ux鑳藉姏锛� @@ -773,7 +783,6 @@ string dataSerialNum = "01"; string addDataLength = "03"; string kStatus = ""; - string kNum = ""; int attributeData = 0; try @@ -819,103 +828,6 @@ #endregion #region 閰嶇疆鎸夐敭鎸囩ず鐏鑹�. - ///<summary > - ///閰嶇疆鎸夐敭鎸囩ず鐏鑹� - /// </summary> - public async System.Threading.Tasks.Task<ResponseAllData> SetPanelColorInfoAsync(KeyColorData keyColorData, KeyNumStatus keyNumStatus) - { - ResponseAllData result = null; - if (Gateway == null) - { - result = new ResponseAllData { errorMessageBase = "褰撳墠娌℃湁缃戝叧" }; - return result; - } - return await System.Threading.Tasks.Task.Run(async () => - { - 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) - { - result = new ResponseAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" }; - } - - else - { - result = new ResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) }; - } - } - if (topic == gatewayID + "/" + "ZbDataPassthrough") - { - var clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); - - if (clientDataPassthroughResponseData == null) - { - result = new ResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; - } - else - { - if (clientDataPassthroughResponseData?.PassData != null) - { - var data = clientDataPassthroughResponseData.PassData; - if (data.Length == 16) - { - var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString(); - if (command == "0002") - { - var tempD = new ResponseData(); - tempD.command = data[12].ToString() + data[13].ToString() + data[10].ToString() + data[11].ToString(); - tempD.status = Convert.ToInt32(data[14].ToString() + data[15].ToString(), 16); - if (tempD.command == "0401") - { - result = new ResponseAllData { responseData = tempD }; - DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_command:0401_{ topic}"); - } - } - } - } - } - } - }; - - Gateway.Actions += action; - System.Console.WriteLine("ClientDataPassthrough_Actions 鍚姩" + System.DateTime.Now.ToString()); - - try - { - var passData = SetPanelColorData(keyColorData, keyNumStatus); - var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } }; - var data = new JObject { { "PassData", passData } }; - jObject.Add("Data", data); - Gateway.Send(("ClientDataPassthrough"), jObject.ToString()); - } - catch { } - - var dateTime = DateTime.Now; - while ((DateTime.Now - dateTime).TotalMilliseconds < 9000)// WaitReceiveDataTime) - { - await System.Threading.Tasks.Task.Delay(10); - if (result != null) - { - break; - } - } - if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime) - { - result = new ResponseAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" }; - } - Gateway.Actions -= action; - System.Console.WriteLine("ClientDataPassthrough_Actions 閫�鍑�" + System.DateTime.Now.ToString()); - - return result; - }); - } /// <summary> /// 缁戝畾璁惧淇℃伅,缃戝叧鍙嶉淇℃伅 @@ -936,132 +848,6 @@ /// 鎸夐敭鎸囩ず鐏鑹蹭俊鎭� /// </summary> public KeyColorData keyColorData; - } - - /// <summary> - /// 閰嶇疆鎸夐敭鎸囩ず鐏鑹叉暟鎹� - /// <para>鍙戦厤缃寜閿寚绀虹伅棰滆壊鍛戒护鏃讹紝姝ゆ椂涓哄彂閫佸埌缃戝叧鐨勯�忎紶鏁版嵁</para> - /// </summary> - /// <returns>The passthorugh data.</returns> - /// <param name="keyColorData">Key color data.</param> - /// <param name="keyNum">Key number.</param> - string SetPanelColorData(KeyColorData keyColorData, KeyNumStatus keyNumStatus) - { - string data = ""; - string dataLength = "0c"; - string dataComand1 = "01"; - string dataComand2 = "04"; - string dataSerialNum = "01"; - string addDataLength = "08"; - int attributeData = 0; - - try - { - for (int i = 1; i <= 16; i++) - { - Type type = keyNumStatus.GetType(); - var obj = type.InvokeMember("Key" + i, System.Reflection.BindingFlags.GetField, null, keyNumStatus, null); - int value0 = 0; - if (Convert.ToBoolean(obj) == true) - { - value0 = 1; - } - int v = (int)Math.Pow(2, i - 1); - attributeData += value0 * v; - } - - string td = attributeData.ToString("X4"); - char[] td1 = td.ToCharArray(); - string tempAttributeData = string.Concat(td1[2].ToString(), td1[3].ToString(), td1[0].ToString(), td1[1].ToString()); - string temp = ""; - var tempColor1 = keyColorData.OpenColorR.ToString(); - var sbString1 = new System.Text.StringBuilder(); - switch (tempColor1.Length) - { - case 1: - temp = "0" + tempColor1; - break; - case 2: - temp = tempColor1; - break; - } - sbString1.Append(temp.ToUpper()); - - var tempColor2 = keyColorData.OpenColorG.ToString(); - var sbString2 = new System.Text.StringBuilder(); - switch (tempColor2.Length) - { - case 1: - temp = "0" + tempColor2; - break; - case 2: - temp = tempColor2; - break; - } - sbString2.Append(temp.ToUpper()); - - var tempColor3 = keyColorData.OpenColorB.ToString(); - var sbString3 = new System.Text.StringBuilder(); - switch (tempColor3.Length) - { - case 1: - temp = "0" + tempColor3; - break; - case 2: - temp = tempColor3; - break; - } - sbString3.Append(temp.ToUpper()); - - var tempColor4 = keyColorData.CloseColorR.ToString(); - var sbString4 = new System.Text.StringBuilder(); - switch (tempColor3.Length) - { - case 1: - temp = "0" + tempColor4; - break; - case 2: - temp = tempColor4; - break; - } - sbString4.Append(temp.ToUpper()); - - var tempColor5 = keyColorData.CloseColorG.ToString(); - var sbString5 = new System.Text.StringBuilder(); - switch (tempColor5.Length) - { - case 1: - temp = "0" + tempColor5; - break; - case 2: - temp = tempColor5; - break; - } - sbString5.Append(temp.ToUpper()); - - var tempColor6 = keyColorData.CloseColorB.ToString(); - var sbString6 = new System.Text.StringBuilder(); - switch (tempColor6.Length) - { - case 1: - temp = "0" + tempColor6; - break; - case 2: - temp = tempColor6; - break; - } - sbString6.Append(temp.ToUpper()); - - if (keyColorData != null) - { - data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength + - tempAttributeData + sbString1 + sbString2 + sbString3 + - sbString4 + sbString5 + sbString6; - } - } - catch { }; - - return data; } // <summary> @@ -1185,330 +971,6 @@ /// true:寮� /// </summary> public bool Key16; - } - #endregion - - #region 閰嶇疆鎸夐敭鎸囩ず鐏潰鏉夸寒搴﹀睘鎬�. - ///<summary > - ///閰嶇疆鎸夐敭鎸囩ず鐏潰鏉夸寒搴﹀睘鎬� - /// <para>directionsLevel:鎸囩ず鐏寒搴� 0-100(杩欎釜鏄偣鍑诲悗鐨勫��)</para> - /// <para>backlightLevel:鑳屽厜鐏寒搴� 0-100(杩欎釜鏄偣鍑诲墠鐨勫��)</para> - /// </summary> - public async System.Threading.Tasks.Task<ResponseAllData> SetKeyLevelAsync(int directionsLevel, int backlightLevel) - { - ResponseAllData result = null; - if (Gateway == null) - { - result = new ResponseAllData { errorMessageBase = "褰撳墠娌℃湁缃戝叧" }; - return result; - } - return await System.Threading.Tasks.Task.Run(async () => - { - 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) - { - result = new ResponseAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" }; - } - - else - { - result = new ResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) }; - } - } - if (topic == gatewayID + "/" + "ZbDataPassthrough") - { - var clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); - - if (clientDataPassthroughResponseData == null) - { - result = new ResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; - } - else - { - if (clientDataPassthroughResponseData?.PassData != null) - { - var data = clientDataPassthroughResponseData.PassData; - if (data.Length == 16) - { - var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString(); - if (command == "0002") - { - var tempD = new ResponseData(); - tempD.command = data[12].ToString() + data[13].ToString() + data[10].ToString() + data[11].ToString(); - tempD.status = Convert.ToInt32(data[14].ToString() + data[15].ToString(), 16); - if (tempD.command == "0402") - { - result = new ResponseAllData { responseData = tempD }; - DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_command:0402_{ topic}"); - } - } - } - } - } - } - }; - - Gateway.Actions += action; - System.Console.WriteLine("ClientDataPassthrough_Actions 鍚姩" + System.DateTime.Now.ToString()); - - try - { - var passData = SetPanelLevelData(directionsLevel, backlightLevel); - var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } }; - var data = new JObject { { "PassData", passData } }; - jObject.Add("Data", data); - Gateway.Send(("ClientDataPassthrough"), jObject.ToString()); - } - catch { } - - var dateTime = DateTime.Now; - while ((DateTime.Now - dateTime).TotalMilliseconds < 9000)// WaitReceiveDataTime) - { - await System.Threading.Tasks.Task.Delay(10); - if (result != null) - { - break; - } - } - if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime) - { - result = new ResponseAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" }; - } - Gateway.Actions -= action; - System.Console.WriteLine("ClientDataPassthrough_Actions 閫�鍑�" + System.DateTime.Now.ToString()); - - return result; - }); - } - - /// <summary> - /// 鎺у埗鎸夐敭鎸囩ず鐏� - /// </summary> - string SetPanelLevelData(int level1, int level2) - { - string data = ""; - string dataLength = "06"; - string dataComand1 = "02"; - string dataComand2 = "04"; - string dataSerialNum = "01"; - string addDataLength = "02"; - string l1 = ""; - string l2 = ""; - try - { - var sbString1 = new System.Text.StringBuilder(); - var sbString2 = new System.Text.StringBuilder(); - string temp1 = Convert.ToString(level1, 16); - string temp2 = Convert.ToString(level2, 16); - - switch (temp1.Length) - { - case 1: - l1 = "0" + temp1; - break; - case 2: - l1 = temp1; - break; - } - switch (temp2.Length) - { - case 1: - l2 = "0" + temp2; - break; - case 2: - l2 = temp2; - break; - } - sbString1.Append(l1.ToString().ToUpper()); - sbString2.Append(l2.ToString().ToUpper()); - data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength + - sbString1 + sbString2; - } - catch { }; - - return data; - } - #endregion - - #region 閰嶇疆鎸夐敭鎸囩ず鐏潰鏉胯妭鑳芥ā寮�. - ///<summary > - /// 閰嶇疆鎸夐敭鎸囩ず鐏潰鏉胯妭鑳芥ā寮� - /// <para>modeEnable:鑺傝兘妯″紡浣胯兘</para> - /// <para>modeTime:鏃犳搷浣滆繘鍏ヨ妭鑳芥ā寮忔椂闂� 0-ffff</para> - /// <para>鑺傝兘妯″紡浜害:0-100</para> - /// </summary> - public async System.Threading.Tasks.Task<ResponseAllData> SetKeyModeAsync(bool modeEnable, int modeTime, int level) - { - ResponseAllData result = null; - if (Gateway == null) - { - result = new ResponseAllData { errorMessageBase = "褰撳墠娌℃湁缃戝叧" }; - return result; - } - return await System.Threading.Tasks.Task.Run(async () => - { - 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) - { - result = new ResponseAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" }; - } - - else - { - result = new ResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) }; - } - } - - if (topic == gatewayID + "/" + "ZbDataPassthrough") - { - var clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); - - if (clientDataPassthroughResponseData == null) - { - result = new ResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; - } - else - { - if (clientDataPassthroughResponseData?.PassData != null) - { - var data = clientDataPassthroughResponseData.PassData; - if (data.Length == 16) - { - var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString(); - if (command == "0002") - { - var tempD = new ResponseData(); - tempD.command = data[12].ToString() + data[13].ToString() + data[10].ToString() + data[11].ToString(); - tempD.status = Convert.ToInt32(data[14].ToString() + data[15].ToString(), 16); - if (tempD.command == "0403") - { - result = new ResponseAllData { responseData = tempD }; - System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_command:0403_{ topic}"); - } - } - } - } - } - } - }; - - Gateway.Actions += action; - System.Console.WriteLine("ClientDataPassthrough_Actions 鍚姩" + System.DateTime.Now.ToString()); - - try - { - var passData = SetPanelModeModeData(modeEnable, modeTime, level); - var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } }; - var data = new JObject { { "PassData", passData } }; - jObject.Add("Data", data); - Gateway.Send(("ClientDataPassthrough"), jObject.ToString()); - } - catch { } - - var dateTime = DateTime.Now; - while ((DateTime.Now - dateTime).TotalMilliseconds < 9000)// WaitReceiveDataTime) - { - await System.Threading.Tasks.Task.Delay(10); - if (result != null) - { - break; - } - } - if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime) - { - result = new ResponseAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" }; - } - Gateway.Actions -= action; - System.Console.WriteLine("ClientDataPassthrough_Actions 閫�鍑�" + System.DateTime.Now.ToString()); - - return result; - }); - } - - /// <summary> - /// 閰嶇疆鎸夐敭鎸囩ず鐏潰鏉胯妭鑳芥ā寮� - /// </summary> - string SetPanelModeModeData(bool modeEnable, int modeTime, int modelevel) - { - string data = ""; - string dataLength = "08"; - string dataComand1 = "03"; - string dataComand2 = "04"; - string dataSerialNum = "01"; - string addDataLength = "04"; - string mode = ""; - string time = ""; - string level = ""; - try - { - if (modeEnable) - { - mode = "01"; - } - else - { - mode = "00"; - } - - if (modeTime == -1) - { - //褰撹妭鑳芥ā寮忔病鏈夌粰鏃堕棿锛岄粯璁ょ粰60绉� - modeTime = 60; - } - - var tempBytes = new byte[2]; - for (int i = 0; i < 2; i++) - { - tempBytes[i] = (byte)(modeTime >> (i * 8) & 0xff); - } - var time1 = Convert.ToString(tempBytes[0], 16); - var time2 = Convert.ToString(tempBytes[1], 16); - if (time1.Length == 1) - { - time1 = "0" + time1; - } - if (time2.Length == 1) - { - time2 = "0" + time2; - } - - time = (time1 + time2).ToUpper(); - - var sbString2 = new System.Text.StringBuilder(); - string temp2 = Convert.ToString(modelevel, 16); - switch (temp2.Length) - { - case 1: - level = "0" + temp2; - break; - case 2: - level = temp2; - break; - } - - sbString2.Append(level.ToUpper()); - data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength + - mode + time + sbString2; - } - catch { }; - - return data; } #endregion @@ -1648,16 +1110,16 @@ } #endregion - #region 鑾峰彇鎸夐敭鎸囩ず鐏紑鍏抽鑹�. + #region 鏍℃娓╁害 ///<summary > - ///鑾峰彇鎸夐敭鎸囩ず鐏紑鍏抽鑹�. + /// 鏍℃娓╁害 /// </summary> - public async System.Threading.Tasks.Task<KeyColorDataResponseAllData> GetPanelColorInfoAsync(KeyNum keyNum) + public async System.Threading.Tasks.Task<ResponseAllData> CorrectTemperature(double correctValue, int direction = 0, int type = 0) { - KeyColorDataResponseAllData result = null; + ResponseAllData result = null; if (Gateway == null) { - result = new KeyColorDataResponseAllData { errorMessageBase = "褰撳墠娌℃湁缃戝叧" }; + result = new ResponseAllData { errorMessageBase = "褰撳墠娌℃湁缃戝叧" }; return result; } return await System.Threading.Tasks.Task.Run(async () => @@ -1673,12 +1135,12 @@ if (temp == null) { - result = new KeyColorDataResponseAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" }; + result = new ResponseAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" }; } else { - result = new KeyColorDataResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) }; + result = new ResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) }; } } @@ -1688,78 +1150,26 @@ if (clientDataPassthroughResponseData == null) { - result = new KeyColorDataResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; + result = new ResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; } else { if (clientDataPassthroughResponseData?.PassData != null) { var data = clientDataPassthroughResponseData.PassData; - if (data.Length == 24) + if (data.Length == 16) { var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString(); - if (command == "0405") + if (command == "0002") { - var key1 = data[10] + data[11]; - var key = data[10].ToString() + data[11].ToString(); - var tempR = new KeyColorData(); - tempR.OpenColorR = data[12].ToString() + data[13].ToString(); ; - tempR.OpenColorG = data[14].ToString() + data[15].ToString(); ; - tempR.OpenColorB = data[16].ToString() + data[17].ToString(); ; - tempR.CloseColorR = data[18].ToString() + data[19].ToString(); ; - tempR.CloseColorG = data[20].ToString() + data[21].ToString(); ; - tempR.CloseColorB = data[22].ToString() + data[23].ToString(); ; - - switch (key) + var tempD = new ResponseData(); + tempD.command = data[12].ToString() + data[13].ToString() + data[10].ToString() + data[11].ToString(); + tempD.status = Convert.ToInt32(data[14].ToString() + data[15].ToString(), 16); + if (tempD.command == "0503") { - case "01": - tempR.keyNum = KeyNum.Key1; - break; - case "02": - tempR.keyNum = KeyNum.Key2; - break; - case "03": - tempR.keyNum = KeyNum.Key3; - break; - case "04": - tempR.keyNum = KeyNum.Key4; - break; - case "05": - tempR.keyNum = KeyNum.Key5; - break; - case "06": - tempR.keyNum = KeyNum.Key6; - break; - case "07": - tempR.keyNum = KeyNum.Key7; - break; - case "08": - tempR.keyNum = KeyNum.Key8; - break; - case "09": - tempR.keyNum = KeyNum.Key9; - break; - case "0a": - tempR.keyNum = KeyNum.Key10; - break; - case "0b": - tempR.keyNum = KeyNum.Key11; - break; - case "0c": - tempR.keyNum = KeyNum.Key12; - break; - case "0d": - tempR.keyNum = KeyNum.Key13; - break; - case "0e": - tempR.keyNum = KeyNum.Key14; - break; - case "0f": - tempR.keyNum = KeyNum.Key15; - break; + result = new ResponseAllData { responseData = tempD }; + DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_command:0500_{ topic}"); } - result = new KeyColorDataResponseAllData { keyColorData = tempR }; - System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_command:0404_{ topic}"); } } } @@ -1772,10 +1182,10 @@ try { - var passData = GetkeyColorData(keyNum); + var passData = CorrectTemperatureData(correctValue,direction, type); var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } }; var data = new JObject { { "PassData", passData } }; - jObject.Add("Data", data); + jObject.Add("Data", data); Gateway.Send(("ClientDataPassthrough"), jObject.ToString()); } catch { } @@ -1791,7 +1201,7 @@ } if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime) { - result = new KeyColorDataResponseAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" }; + result = new ResponseAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" }; } Gateway.Actions -= action; System.Console.WriteLine("ClientDataPassthrough_Actions 閫�鍑�" + System.DateTime.Now.ToString()); @@ -1801,78 +1211,74 @@ } /// <summary> - /// 鑾峰彇鎸夐敭鎸囩ず鐏紑鍏抽鑹� + /// 鏍℃娓╁害 + /// [璇ユ潯鍗忚鍙﹀2涓弬鏁癠I鍜岃澶囬兘涓嶉渶瑕侊紝璁惧閮藉悓浜嬭姹備紶鎰熷櫒璺濈鍜屼紶鎰熷櫒瑙﹀彂寤惰繜鏃堕棿閮介粯璁ゆ槸FFFF] /// </summary> - string GetkeyColorData(KeyNum keyNum) + /// <param name="correctValue">鏍℃娓╁害鍊�</param> + /// <returns></returns> + string CorrectTemperatureData(double correctValue,int direction=0, int type = 0) { string data = ""; - string dataLength = "05"; - string dataComand1 = "04"; - string dataComand2 = "04"; + string dataLength = "09"; + string dataComand1 = "03"; + string dataComand2 = "05"; string dataSerialNum = "01"; - string addDataLength = "01"; - string kNum = ""; - + string addDataLength = "05"; + string typeString = ""; + string directString = ""; + string correctValueString = ""; try { - switch (keyNum) + if (type == 1) { - case KeyNum.Key1: - kNum = "01"; - break; - case KeyNum.Key2: - kNum = "02"; - break; - case KeyNum.Key3: - kNum = "03"; - break; - case KeyNum.Key4: - kNum = "04"; - break; - case KeyNum.Key5: - kNum = "05"; - break; - case KeyNum.Key6: - kNum = "06"; - break; - case KeyNum.Key7: - kNum = "07"; - break; - case KeyNum.Key8: - kNum = "08"; - break; - case KeyNum.Key9: - kNum = "09"; - break; - case KeyNum.Key10: - kNum = "0A"; - break; - case KeyNum.Key11: - kNum = "0B"; - break; - case KeyNum.Key12: - kNum = "0C"; - break; - case KeyNum.Key13: - kNum = "0D"; - break; - case KeyNum.Key14: - kNum = "0E"; - break; - case KeyNum.Key15: - kNum = "0F"; - break; - case KeyNum.Key16: - kNum = "10"; - break; + typeString = "0100"; + } + else + { + typeString = "0000"; } - data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength + kNum; + if (direction == 1) + { + directString = "01"; + } + else if (direction == 2) + { + directString = "02"; + } + else + { + directString = "00"; + } + + int curV = (int)(correctValue * 100); + var tempBytes = new byte[2]; + for (int i = 0; i < 2; i++) + { + tempBytes[i] = (byte)(curV >> (i * 8) & 0xff); + } + var curV1 = Convert.ToString(tempBytes[0], 16); + var curV2 = Convert.ToString(tempBytes[1], 16); + if (curV1.Length == 1) + { + curV1 = "0" + curV1; + } + if (curV2.Length == 1) + { + curV2 = "0" + curV2; + } + + correctValueString = (curV1 + curV2).ToUpper(); + data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength + + typeString + directString + correctValueString; } catch { }; return data; } + #endregion + + #region 鑾峰彇鎸夐敭鎸囩ず鐏紑鍏抽鑹�. /// <summary> /// 鎸夐敭鎸囩ず鐏鑹蹭俊鎭搴旈『搴忓彿(鐫$湢缁勫彿) @@ -1899,124 +1305,6 @@ #endregion #region 鑾峰彇鎸夐敭鎸囩ず鐏潰鏉垮紑鍏充寒搴﹂厤缃�. - ///<summary > - ///鑾峰彇鎸夐敭鎸囩ず鐏潰鏉垮紑鍏充寒搴﹂厤缃� - /// </summary> - public async System.Threading.Tasks.Task<PanelSwitchLevelInfo> GetPanelSwitchLevelAsync(string reserve = "01") - { - PanelSwitchLevelInfo result = null; - if (Gateway == null) - { - result = new PanelSwitchLevelInfo { errorMessageBase = "褰撳墠娌℃湁缃戝叧" }; - return result; - } - return await System.Threading.Tasks.Task.Run(async () => - { - 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) - { - result = new PanelSwitchLevelInfo { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" }; - } - - else - { - result = new PanelSwitchLevelInfo { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) }; - } - } - - if (topic == gatewayID + "/" + "ZbDataPassthrough") - { - var clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); - - if (clientDataPassthroughResponseData == null) - { - result = new PanelSwitchLevelInfo { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; - } - else - { - if (clientDataPassthroughResponseData?.PassData != null) - { - var data = clientDataPassthroughResponseData.PassData; - if (data.Length == 14) - { - var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString(); - if (command == "0407") - { - var level1 = Convert.ToInt32(data[10].ToString() + data[11].ToString(), 16); - var level2 = Convert.ToInt32(data[12].ToString() + data[13].ToString(), 16); - result = new PanelSwitchLevelInfo { panelDirectionsLevel = level1, panelBacklightLevel = level2 }; - System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_command:0406_{ topic}"); - } - } - } - } - } - }; - - Gateway.Actions += action; - System.Console.WriteLine("ClientDataPassthrough_Actions 鍚姩" + System.DateTime.Now.ToString()); - - try - { - var passData = SendPanelSwitchLevelData(reserve); - var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } }; - var data = new JObject { { "PassData", passData } }; - jObject.Add("Data", data); - Gateway.Send(("ClientDataPassthrough"), jObject.ToString()); - } - catch { } - - var dateTime = DateTime.Now; - while ((DateTime.Now - dateTime).TotalMilliseconds < 9000)//WaitReceiveDataTime) - { - await System.Threading.Tasks.Task.Delay(10); - if (result != null) - { - break; - } - } - if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime) - { - result = new PanelSwitchLevelInfo { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" }; - } - Gateway.Actions -= action; - System.Console.WriteLine("ClientDataPassthrough_Actions 閫�鍑�" + System.DateTime.Now.ToString()); - - return result; - }); - } - - /// <summary> - /// 鑾峰彇鎸夐敭鎸囩ず鐏潰鏉垮紑鍏充寒搴﹂厤缃暟鎹� - /// <para>鍙戦厤缃寜閿寚绀虹伅棰滆壊鍛戒护鏃讹紝姝ゆ椂涓哄彂閫佸埌缃戝叧鐨勯�忎紶鏁版嵁</para> - /// </summary> - string SendPanelSwitchLevelData(string reserve) - { - string data = ""; - string dataLength = "05"; - string dataComand1 = "06"; - string dataComand2 = "04"; - string dataSerialNum = "01"; - string addDataLength = "01"; - string reserveData = reserve; - - try - { - data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength + - reserveData; - } - catch { }; - - return data; - } /// <summary> /// 鎸夐敭鎸囩ず鐏潰鏉垮紑鍏充寒搴﹂厤缃洖澶� @@ -2034,144 +1322,18 @@ /// </summary> public ErrorResponData errorResponData; /// <summary> - ///鎸夐敭寮�鐘舵�侊紙鎸囩ず锛変寒搴�(杩欎釜鏄偣鍑诲悗鐨勫��) + ///鎸夐敭寮�鐘舵�侊紙鎸囩ず锛変寒搴�(杩欎釜鏄偣鍑诲悗鐨勫��,鎴栬�� 1-6骞叉帴鐐圭殑鑳屽厜鐏�) /// </summary> public int panelDirectionsLevel = -1; /// <summary> - /// 鎸夐敭鍏崇姸鎬侊紙鑳屽厜锛変寒搴�(杩欎釜鏄偣鍑诲墠鐨勫��) + /// 鎸夐敭鍏崇姸鎬侊紙鑳屽厜锛変寒搴�(杩欎釜鏄偣鍑诲墠鐨勫��,鎴栬�� 绗竷骞叉帴鐐圭殑鑳屽厜鐏�) /// </summary> public int panelBacklightLevel = -1; } #endregion #region 鑾峰彇鎸夐敭鑺傝兘妯″紡閰嶇疆鐘舵��. - ///<summary > - ///鑾峰彇鎸夐敭鑺傝兘妯″紡閰嶇疆鐘舵�� - /// </summary> - public async System.Threading.Tasks.Task<PanelSwitchLevelResponInfo> GetPanelSaveEnergyModeAsync(string reserve = "01") - { - PanelSwitchLevelResponInfo result = null; - if (Gateway == null) - { - result = new PanelSwitchLevelResponInfo { errorMessageBase = "褰撳墠娌℃湁缃戝叧" }; - return result; - } - return await System.Threading.Tasks.Task.Run(async () => - { - 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) - { - result = new PanelSwitchLevelResponInfo { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" }; - } - - else - { - result = new PanelSwitchLevelResponInfo { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) }; - } - } - - if (topic == gatewayID + "/" + "ZbDataPassthrough") - { - var clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); - - if (clientDataPassthroughResponseData == null) - { - result = new PanelSwitchLevelResponInfo { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; - } - else - { - if (clientDataPassthroughResponseData?.PassData != null) - { - var data = clientDataPassthroughResponseData.PassData; - if (data.Length == 18) - { - var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString(); - if (command == "0409") - { - var tempR = new PanelSaveEnergyModeInfo(); - if (data[10].ToString() + data[11].ToString() == "01") - { - tempR.enable = true; - } - else - { - tempR.enable = false; - } - tempR.time = Convert.ToInt32(data[14].ToString() + data[15].ToString() + data[12].ToString() + data[13].ToString(), 16); - tempR.level = Convert.ToInt32(data[16].ToString() + data[17].ToString(), 16); - result = new PanelSwitchLevelResponInfo { panelSaveEnergyModeInfo = tempR }; - System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_command:0408_{ topic}"); - } - } - } - } - } - }; - - Gateway.Actions += action; - System.Console.WriteLine("ClientDataPassthrough_Actions 鍚姩" + System.DateTime.Now.ToString()); - - try - { - var passData = SendPanelSaveEnergyModeData(reserve); - var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } }; - var data = new JObject { { "PassData", passData } }; - jObject.Add("Data", data); - Gateway.Send(("ClientDataPassthrough"), jObject.ToString()); - } - catch { } - - var dateTime = DateTime.Now; - while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime) - { - await System.Threading.Tasks.Task.Delay(10); - if (result != null) - { - break; - } - } - if ((DateTime.Now - dateTime).TotalMilliseconds > 9000)// WaitReceiveDataTime) - { - result = new PanelSwitchLevelResponInfo { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" }; - } - Gateway.Actions -= action; - System.Console.WriteLine("ClientDataPassthrough_Actions 閫�鍑�" + System.DateTime.Now.ToString()); - - return result; - }); - } - - /// <summary> - /// 鑾峰彇鎸夐敭鑺傝兘妯″紡閰嶇疆鐘舵�佹暟鎹� - /// </summary> - string SendPanelSaveEnergyModeData(string reserve) - { - string data = ""; - string dataLength = "05"; - string dataComand1 = "08"; - string dataComand2 = "04"; - string dataSerialNum = "01"; - string addDataLength = "01"; - string reserveData = reserve; - - try - { - data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength + - reserveData; - } - catch { }; - - return data; - } /// <summary> /// 鑾峰彇鎸夐敭鑺傝兘妯″紡閰嶇疆鐘舵�佹暟鎹洖澶� @@ -2376,7 +1538,7 @@ /// 浼犳劅鍣ㄤ娇鑳� ///false-disable true-enable /// </summary> - public bool enable; + public bool enable= false; /// <summary> ///浼犳劅鍣ㄨ窛绂� @@ -2781,82 +1943,6 @@ #endregion #region 閰嶇疆闈㈡澘鍔熻兘 - ///<summary > - ///閰嶇疆闈㈡澘鍔熻兘 - ///<para>value:缁欓潰鏉块厤缃殑妯″紡</para> - /// </summary> - public async System.Threading.Tasks.Task<SetWritableValueResponAllData> ConfigureHdlKeyValueAsync(KeyMode value, int clusterID = 6) - { - if (Gateway == null) - { - return null; - } - return await System.Threading.Tasks.Task.Run(async () => - { - SetWritableValueResponAllData d = null; - 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 SetWritableValueResponAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" }; - } - else - { - d = new SetWritableValueResponAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) }; - } - } - - if (topic == gatewayID + "/" + "SetWritableValue_Respon") - { - var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<SetWritableValueResponData>(jobject["Data"].ToString()); - - if (tempData == null) - { - d = new SetWritableValueResponAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; - } - else - { - d = new SetWritableValueResponAllData { setWritableValueResponData = tempData }; - System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}"); - } - } - }; - Gateway.Actions += action; - System.Console.WriteLine("SetWritableValue_Actions 鍚姩" + "_" + System.DateTime.Now.ToString()); - try - { - var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", DeviceEpoint }, { "Cluster_ID", clusterID }, { "Command", 120 } }; - var data = new JObject { { "Undivided", 0 }, { "AttributeId", 6533 }, { "AttributeDataType", 33 }, { "AttributeData", (int)value } }; - jObject.Add("Data", data); - Gateway.Send("SetWritableValue", 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 SetWritableValueResponAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" }; - } - Gateway.Actions -= action; - System.Console.WriteLine("SetWritableValue_Actions 閫�鍑�" + System.DateTime.Now.ToString()); - return d; - }); - } /// <summary> /// 閰嶇疆闈㈡澘鐨勫姛鑳芥ā寮� @@ -2939,115 +2025,6 @@ } #region 璇诲彇闈㈡澘鐨勯厤缃俊鎭� - /// <summary> - /// 璇诲彇闈㈡澘鐨勯厤缃俊鎭� - /// </summary> - public async System.Threading.Tasks.Task<PanelConfigureInfoResponAllData> ReadPanelConfigureInfoAsync(params int[] args) - { - if (Gateway == null) - { - return null; - } - return await System.Threading.Tasks.Task.Run(async () => - { - PanelConfigureInfoResponAllData d = null; - Action<string, string> action = (topic, message) => - { - var gatewayID = topic.Split('/')[0];//缃戝叧杩斿洖鐨勭綉鍏矷D - var reportStatus = topic.Split('/')[1];//涓婚涓鸿澶囦笂鎶ョ殑涓婚 - string addr = "";//涓婃姤鐨勮澶嘺ddr - string epoint = "";//涓婃姤鐨勮澶噀point - string cluID = "";//涓婃姤鐨勮澶嘽luID - string attrId = "";//涓婃姤鐨勮澶嘺ttrId - if (reportStatus == "DeviceStatusReport") - { - addr = topic.Split('/')[2]; - epoint = topic.Split('/')[3]; - cluID = topic.Split('/')[4]; - attrId = topic.Split('/')[5]; - } - 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 PanelConfigureInfoResponAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" }; - } - else - { - d = new PanelConfigureInfoResponAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) }; - } - } - else if (topic == gatewayID + "/" + "DeviceStatusReport" + "/" + addr + "/" + epoint + "/" + cluID + "/" + attrId) - { - var deviceID = jobject.Value<int>("Device_ID"); - var deviceAddr = jobject.Value<string>("DeviceAddr"); - var tempEpoint = jobject.Value<int>("Epoint"); - var dataId = jobject.Value<int>("Data_ID"); - - if ((DeviceType)(deviceID) == DeviceType.OnOffSwitch) - { - var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<Panel.DeviceStatusReportData>(jobject["Data"].ToString()); - if (tempData == null) - { - d = new PanelConfigureInfoResponAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" }; - } - else - { - d = new PanelConfigureInfoResponAllData { deviceStatusReportData = tempData }; - System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}"); - } - } - } - }; - - Gateway.Actions += action; - System.Console.WriteLine("GetDeviceStatus_Actions 鍚姩" + System.DateTime.Now.ToString()); - - try - { - var JObject = new JObject { - { "DeviceAddr",DeviceAddr }, - { "Epoint", DeviceEpoint }, - { "Cluster_ID", (int)Device.Cluster_ID.HdlKey }, - { "Command", 108 } - }; - var attriBute = new JArray{ - new JObject { - { "AttriButeId", (int)AttriButeId.HdlKey} - } - }; - var data = new JObject { { "AttriBute", attriBute } }; - JObject.Add("Data", data); - Gateway?.Send(("GetDeviceStatus"), 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 PanelConfigureInfoResponAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" }; - } - Gateway.Actions -= action; - System.Console.WriteLine("GetDeviceStatus_Actions 閫�鍑�" + System.DateTime.Now.ToString()); - - return d; - }); - } /// <summary> /// 缃戝叧鎭㈠鍑哄巶璁剧疆杩斿洖鏁版嵁 -- Gitblit v1.8.0