From 01c46e7bfe9aa8fb20b29f70c83c03a307af548a Mon Sep 17 00:00:00 2001 From: JLChen <551775569@qq.com> Date: 星期二, 22 十二月 2020 16:35:16 +0800 Subject: [PATCH] 2020-12-22 1.更新。 --- HDL_ON/DAL/DriverLayer/Control.cs | 669 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 590 insertions(+), 79 deletions(-) diff --git a/HDL_ON/DAL/DriverLayer/Control.cs b/HDL_ON/DAL/DriverLayer/Control.cs index 7f51627..d6da0f6 100644 --- a/HDL_ON/DAL/DriverLayer/Control.cs +++ b/HDL_ON/DAL/DriverLayer/Control.cs @@ -2,6 +2,8 @@ using System.Collections.Generic; using System.Text; using HDL_ON.Entity; +using HDL_ON.UI; +using Shared; namespace HDL_ON.DriverLayer { @@ -23,6 +25,8 @@ public class Control { + + static Control _control; public static Control Ins { @@ -46,27 +50,76 @@ return _msg_id++; } } + /// <summary> + /// 鑾峰彇13浣嶆椂闂存埑 + /// </summary> + /// <returns></returns> + public string Get_TimeStamp() + { + long t = DateTime.Now.Ticks / 10000; + return t.ToString(); + } + /// <summary> + /// 鏄惁鎼滅储鏈湴缃戝叧鎴愬姛 + /// </summary> + public bool IsSearchLocalGatewaySuccessful = false; + + /// <summary> + /// + /// </summary> bool _gatewayOnline = false; /// <summary> /// 缃戝叧鏄惁鍦ㄧ嚎 /// </summary> - public bool GatewayOnline { + public bool GatewayOnline + { get { return _gatewayOnline; } set { - _gatewayOnline = value; - //淇敼涓婚〉杩炴帴鐘舵�� - UI.HomePage.LoadEvent_CheckLinkStatus(); + if (_gatewayOnline != value) + { + _gatewayOnline = value; + //淇敼涓婚〉杩炴帴鐘舵�� + UI.HomePage.LoadEvent_CheckLinkStatus(); + if (value) + { + MainPage.Log($"缃戝叧鍦ㄧ嚎锛屽埛鏂拌澶囩姸鎬�"); + new System.Threading.Thread(() => + { + System.Threading.Thread.Sleep(1000); + FunctionList.List.ReadAllFunctionStatus(); + }) + { IsBackground = true, Priority = System.Threading.ThreadPriority.AboveNormal }.Start(); + } + } } } /// <summary> + /// 缃戝叧閫氳ID + /// </summary> + public string GatewayId = ""; + + bool _isRemote = false; + /// <summary> /// 鏄惁涓鸿繙绋嬭繛鎺� /// </summary> - public bool IsRemote = false; + public bool IsRemote + { + get + { + return _isRemote; + } + set + { + _isRemote = value; + //淇敼涓婚〉杩炴帴鐘舵�� + HomePage.LoadEvent_CheckLinkStatus(); + } + } /// <summary> /// 閫氳鍦板潃IP /// </summary> @@ -82,7 +135,7 @@ /// <summary> /// 鏈湴udp /// </summary> - public Control_Udp myUdp = null; + public Control_Udp myUdp1 = null; /// <summary> /// 閫氳鏂瑰紡 @@ -103,13 +156,16 @@ /// </summary> public void OpenUdp(int port) { - if (myUdp == null) - { - myUdp = new Control_Udp(); - } - UdpSocket._BusSocket.Start(port); } + /// <summary> + /// 鍏抽棴udp + /// </summary> + public void CloseUdp() + { + UdpSocket._BusSocket.Stop(); + } + /// <summary> /// 鎵撳紑tcp瀹㈡湇绔� /// </summary> @@ -122,28 +178,59 @@ } } - ///// <summary> - ///// 鏀瑰彉閫氳鏂瑰紡 - ///// </summary> - //public void ChangeCommunicationMode(CommunicationMode communicationMode) - //{ - // this.communicationMode = communicationMode; - //} - /// <summary> /// 鎼滅储鏈湴缃戝叧鍒楄〃 /// </summary> public void SearchLoaclGateway() { - OpenUdp(DB_ResidenceData.residenceData.GatewayType == 0 ? 6000 : 8585); - - if (DB_ResidenceData.residenceData.GatewayType == 0) + MainPage.Log($"鎼滅储鏈湴缃戝叧鍒楄〃锛岀綉鍏崇被鍨�:{DB_ResidenceData.Instance.GatewayType}"); + if (MainPage.InternetStatus == 0) { - myUdp.ControlBytesSend(Command.ReadGateway, 255, 255, new byte[] { (byte)new Random().Next(255), (byte)new Random().Next(255) }); + Ins.GatewayOnline = false; + return; } - else if (DB_ResidenceData.residenceData.GatewayType == 1) + else if (MainPage.InternetStatus == 1) { - myUdp.SearchLocalGateway(); + if (!Ins.IsRemote) + { + Ins.IsRemote = true; + DAL.Mqtt.MqttClient.InitState(); + } + } + else if (MainPage.InternetStatus == 2) + { + OpenUdp(DB_ResidenceData.Instance.GatewayType == 0 ? 6000 : 8585); + //閲嶇疆鎼滅储缃戝叧鏍囧織 + IsSearchLocalGatewaySuccessful = false; + + new System.Threading.Thread(() => + { + for (int i = 0; i < 5; i++) + { + if (IsSearchLocalGatewaySuccessful) + break; + if (DB_ResidenceData.Instance.GatewayType == 0) + { + new Control_Udp().ControlBytesSend(Command.ReadGateway, 255, 255, new byte[] { (byte)new Random().Next(255), (byte)new Random().Next(255) }); + } + else if (DB_ResidenceData.Instance.GatewayType == 1) + { + new Control_Udp().SearchLocalGateway(); + } + System.Threading.Thread.Sleep(500); + } + + if (!IsSearchLocalGatewaySuccessful) + { + //鏈湴鎼滅储涓嶅埌缃戝叧 + if (!Ins.IsRemote) + { + Ins.IsRemote = true; + DAL.Mqtt.MqttClient.InitState(); + } + } + }) + { IsBackground = true }.Start(); } } @@ -152,13 +239,16 @@ /// </summary> public void ControlScene(Scene scene) { - if(myUdp!=null) - { - myUdp.ControlBusScenes(scene); - } - if(myTcpClient!= null) + if (Ins.IsRemote || DB_ResidenceData.Instance.GatewayType == 1) { ControlAProtocolScene(scene); + } + else + { + if (DB_ResidenceData.Instance.GatewayType == 0) + { + new Control_Udp().ControlBusScenes(scene); + } } } @@ -172,32 +262,73 @@ /// <returns></returns> public void SendWriteCommand(Function function, Dictionary<string, string> commandDictionary) { - function.usageCount++; + function.controlCounter++; function.refreshTime = DateTime.Now; - if (DB_ResidenceData.residenceData.GatewayType == 0) + + //濡傛灉鏄帶鍒惰皟鍏夌殑寮�鏃讹紝浜害鍊间笉鑳戒负0 + if (commandDictionary.Count > 2) { - try + if (commandDictionary.ContainsKey(FunctionAttributeKey.OnOff) && commandDictionary.ContainsKey(FunctionAttributeKey.Brightness)) { - if(myUdp != null) + if (commandDictionary[FunctionAttributeKey.OnOff] == "on") { - myUdp.WriteBusData(function, commandDictionary); + if (commandDictionary[FunctionAttributeKey.Brightness] == "0") + { + commandDictionary[FunctionAttributeKey.Brightness] = "100"; + } + } + if (commandDictionary[FunctionAttributeKey.OnOff] == "off") + { + if (commandDictionary[FunctionAttributeKey.Brightness] != "0") + { + commandDictionary[FunctionAttributeKey.Brightness] = "0"; + } } } - catch (Exception ex) - { - MainPage.Log($"鍙戦�佹暟鎹紓甯�: {ex.Message}"); - } } + + //杩滅▼閫氳 + if (Ins.IsRemote) + { + DAL.Server.HttpServerRequest httpServer = new DAL.Server.HttpServerRequest(); + //ALink鎺у埗銆丅us鎺у埗浣跨敤鍚屼竴涓帴鍙f帶鍒讹紝鐢变簯绔礋璐hВ鏋� + var apiControlData = function.GetApiControlData(commandDictionary); + var actionObjs = new List<ApiAlinkControlActionObj>(); + actionObjs.Add(apiControlData); + var pack = httpServer.ControlDevice(actionObjs); + //MainPage.Log($"{pack.Code}:{pack.Data}"); + } + //鏈湴閫氳 else { - if (myTcpClient != null) + //Bus鎺у埗 + if (DB_ResidenceData.Instance.GatewayType == 0) { - var sendDataObj = function.GetControlSendData(commandDictionary); - var sendJson = Newtonsoft.Json.JsonConvert.SerializeObject(sendDataObj); - var sendBytes = System.Text.Encoding.UTF8.GetBytes(sendJson); - myTcpClient.SendMessage(sendBytes); + try + { + new Control_Udp().WriteBusData(function, commandDictionary); + } + catch (Exception ex) + { + MainPage.Log($"鍙戦�佹暟鎹紓甯�: {ex.Message}"); + } + } + //ALink鎺у埗 + else + { + var functionControlDataObj = function.GetGatewayAlinkControlData(commandDictionary); + var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(functionControlDataObj); + var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ControlFunctionTopic, functionControlDataJson); + new Control_Udp().SendLocalHdlLinkData(sendBytes, functionControlDataObj.id); + MainPage.Log($"鍙戦�丠DL-Link鏁版嵁:{functionControlDataJson}"); } } + } + + public void SendApiReadCommand(List<string> functionIds) + { + var pm = new DAL.Server.HttpServerRequest(); + var pack = pm.RefreshDeviceStatus(functionIds); } /// <summary> @@ -207,36 +338,89 @@ public void SendReadCommand(Function function) { function.refreshTime = DateTime.Now; - if (function.bus_Data != null) + if (Ins.IsRemote) { - try - { - //ReadBusData(function); - } - catch (Exception ex) - { - MainPage.Log($"鍙戦�佹暟鎹紓甯�: {ex.Message}"); - } + var pm = new DAL.Server.HttpServerRequest(); + var pack = pm.RefreshDeviceStatus(new List<string>() { function.deviceId }); } else { - //var commandObj = function.GetSendJObject(CommandType_A.read); - //var commandString = Newtonsoft.Json.JsonConvert.SerializeObject(commandObj); - //var commandBytes = System.Text.Encoding.UTF8.GetBytes(commandString); - //MqttCommon.MqttRemoteSend(commandBytes); + if (DB_ResidenceData.Instance.GatewayType == 0) + { + try + { + new Control_Udp().ReadBusData(function); + } + catch (Exception ex) + { + MainPage.Log($"鍙戦�佹暟鎹紓甯�: {ex.Message}"); + } + } + else + { + var readKey = new Dictionary<string, string>(); + readKey.Add("sid", function.sid); + + var readDataObj = new AlinkReadFunctionStatusObj() + { + id = Ins.msg_id.ToString(), + objects = new List<Dictionary<string, string>>() + { + readKey + }, + time_stamp = Utlis.GetTimestamp() + }; + var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(readDataObj); + var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ReadStatus, functionControlDataJson); + MainPage.Log($"鍙戦�丠DL-Link鏁版嵁:{functionControlDataJson}"); + new Control_Udp().SendLocalHdlLinkData(sendBytes, readDataObj.id); + } } } + ///// <summary> + ///// 鍙戦�丄鍗忚璇诲彇鍛戒护 + ///// </summary> + //public void SendReadCommand(List<Dictionary<string, string>> keyValuePairs) + //{ + // var readDataObj = new GatewayAlinkReadObj() + // { + // id = Ins.msg_id.ToString(), + // objects = keyValuePairs, + // time_stamp = Utlis.GetTimestamp() + // }; + // var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(readDataObj); + // var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ReadStatus, functionControlDataJson); + // Ins.myUdp.SendLocalHdlLinkData(sendBytes); + //} /// <summary> - /// 鎺у埗a鍗忚鍦烘櫙 + /// a鍗忚鎺у埗鍦烘櫙 /// </summary> /// <param name="scene"></param> static void ControlAProtocolScene(Scene scene) { - var sendSidObj = new AProtocolSendingObject(); - sendSidObj.time_stamp = ""; - sendSidObj.type = "device_sid"; - sendSidObj.command = "get_list_response"; + if (Ins.IsRemote) + { + var pm = new HDL_ON.DAL.Server.HttpServerRequest(); + pm.ExecuteScene(scene.userSceneId); + } + else + { + Dictionary<string, string> keys = new Dictionary<string, string>(); + keys.Add("sid", scene.sid); + var aLinkData = new AlinkReadFunctionStatusObj() + { + id = Ins.msg_id.ToString(), + objects = new List<Dictionary<string, string>>() + { + keys + }, + time_stamp = Utlis.GetTimestamp() + }; + var aLinkJson = Newtonsoft.Json.JsonConvert.SerializeObject(aLinkData); + var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ControlScene, aLinkJson); + new Control_Udp().SendLocalHdlLinkData(sendBytes, aLinkData.id); + } } /// <summary> /// 杞崲閫氳鏁版嵁 @@ -249,6 +433,7 @@ string sendDataString = topicString + lengthString + bodyDataString; byte[] sendDataBytes = Encoding.ASCII.GetBytes(sendDataString); + //MainPage.Log($"杞崲HDL-Link鏁版嵁\r\n{sendDataString}\r\n"); return sendDataBytes; } @@ -274,7 +459,7 @@ if (res.Length == 2) { var topics = res[0].Split("\r\n"); - MainPage.Log(res[1]); + //MainPage.Log(res[1]); foreach (var ts in topics) { var key = ts.Split(":"); @@ -289,12 +474,15 @@ } } + MainPage.Log($"time 1 :{receiveObj.Topic}"); + + //楠岃瘉鏈夋晥鏁版嵁闀垮害 - if (res[1].Length != receiveObj.Length) - { - MainPage.Log($"鏀跺埌鏁版嵁鍖呴暱搴︿笉澶�"); - return receiveObj; - } + //if (res[1].Length != receiveObj.Length) + //{ + // MainPage.Log($"鏀跺埌鏁版嵁鍖呴暱搴︿笉澶�"); + // return receiveObj; + //} receiveObj.BodyDataString = res[1]; var bodyJObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack>(res[1]); @@ -302,27 +490,350 @@ { return receiveObj; } - switch (receiveObj.Topic) + if (receiveObj.Topic == CommunicationTopic.SearchLoaclGatewayReply) { - case CommunicationTopic.SearchLoaclGateway: - var device = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceModule>(bodyJObj.objects.ToString()); -#if DEBUG - if (UserInfo.Current.AccountString == "464027401@qq.com") + var device = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceModule>(bodyJObj.objects.ToString()); + if (device.device_mac == DB_ResidenceData.Instance.residenceGatewayMAC) + { + //鏈湴鎼滅储缃戝叧鎴愬姛 + Control.Ins.IsSearchLocalGatewaySuccessful = true; + Ins.GatewayOnline = true; + if (!string.IsNullOrEmpty(device.gatewayId)) { - DB_ResidenceData.residenceData.residenceGatewayMAC = "0000000000000000"; + Ins.GatewayId = device.gatewayId; } -#endif - if (device.device_mac == DB_ResidenceData.residenceData.residenceGatewayMAC) + else { - Control.Ins.GatewayOnline = true; + Ins.GatewayId = device.device_mac; } - break; + reportIp = "239.0.168.188";// device.ip_address; + Ins.IsRemote = false; + } + } + else if (receiveObj.Topic == CommunicationTopic.ct.ReadStatus + "_reply" || + receiveObj.Topic == CommunicationTopic.ct.ControlFunctionTopic + "_reply" || + receiveObj.Topic == CommunicationTopic.ct.GatewayUpStatus) + { + //TODO 鏆傛椂涓嶄紶姝g‘鐨勬暟鎹笂鍘伙紝濡傛灉鍚庨潰瑕佷紭鍖栧墠闈㈣繖浜涗唬鐮� + UpdataFunctionStatus(receiveObj.BodyDataString, null); } } return receiveObj; - } + /// <summary> + /// 鏇存柊璁惧鐘舵�� + /// A鍗忚鏁版嵁 + /// </summary> + /// <param name="updateBytes"></param> + public void UpdataFunctionStatus(string revString, byte[] usefulBytes) + { + MainPage.Log($"A鍗忚鏇存柊鐘舵��:{revString}"); + var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<AlinkFunctionStatusObj>(revString); + if (temp != null) + { + Control_Udp.ReceiveRepeatManager(temp.id, usefulBytes); + var allLocalFuntion = FunctionList.List.GetDeviceFunctionList(); + foreach (var updateTemp in temp.objects) + { + try + { + //bool hadChange = false;//鐘舵�佹湁鍙樺寲鍐嶆洿鏂扮晫闈� + var localFunction = allLocalFuntion.Find((obj) => obj.sid == updateTemp.sid); + if (localFunction != null) + { + //var updateInfoString = $"鏇存柊璁惧:{localFunction.name}"; + //foreach (var attr in updateTemp.status) + //{ + // updateInfoString += $" key:{attr.key};value:{attr.value}"; + //} + //MainPage.Log(updateInfoString); + + + //鏇存柊鐣岄潰鐘舵�� + Function localObj = null; + switch (localFunction.spk) + { + case SPK.LightSwitch: + var localSwitch = FunctionList.List.lights.Find((obj) => obj.sid == updateTemp.sid); + if (localSwitch != null) + { + localObj = localSwitch; + foreach (var attr in updateTemp.status) + { + var localAttr = localSwitch.attributes.Find((obj) => obj.key == attr.key); + if (localAttr != null) + { + localAttr.curValue = attr.value; + } + } + //rgb.lastState = Language.StringByID(StringId.Brightness) + " : " + rgb.brightness + "%"; + RelayPage.UpdataState(localSwitch); + } + break; + case SPK.LightDimming: + var dimming = FunctionList.List.lights.Find((obj) => obj.sid == updateTemp.sid); + if (dimming != null) + { + localObj = dimming; + foreach (var attr in updateTemp.status) + { + var localAttr = dimming.attributes.Find((obj) => obj.key == attr.key); + if (localAttr != null) + { + localAttr.curValue = attr.value; + } + } + dimming.lastState = Language.StringByID(StringId.Brightness) + " : " + dimming.brightness + "%"; + DimmerPage.UpdataStates(dimming); + } + break; + case SPK.ElectricFan: + var fan = FunctionList.List.fans.Find((obj) => obj.sid == updateTemp.sid); + if (fan != null) + { + localObj = fan; + foreach (var attr in updateTemp.status) + { + var localAttr = fan.attributes.Find((obj) => obj.key == attr.key); + if (localAttr != null) + { + localAttr.curValue = attr.value; + } + } + fan.lastState = Language.StringByID(StringId.Level) + " : " + fan.openLevel; + FanPage.UpdataState(fan); + } + break; + case SPK.LightRGB: + var rgb = FunctionList.List.lights.Find((obj) => obj.sid == updateTemp.sid); + if (rgb != null) + { + localObj = rgb; + foreach (var attr in updateTemp.status) + { + var localAttr = rgb.attributes.Find((obj) => obj.key == attr.key); + if (localAttr != null) + { + localAttr.curValue = attr.value; + } + } + rgb.lastState = Language.StringByID(StringId.Brightness) + " : " + rgb.brightness + "%"; + RGBPage.UpdataStates(rgb); + } + break; + case SPK.LightRGBW: + break; + case SPK.LightCCT: + var lightCCT = FunctionList.List.lights.Find((obj) => obj.sid == updateTemp.sid); + if (lightCCT != null) + { + localObj = lightCCT; + foreach (var attr in updateTemp.status) + { + var localAttr = lightCCT.attributes.Find((obj) => obj.key == attr.key); + if (localAttr != null) + { + localAttr.curValue = attr.value; + } + } + lightCCT.lastState = Language.StringByID(StringId.Brightness) + " : " + lightCCT.brightness + "%"; + ColorTureLampPage.UpdataStates(lightCCT); + } + break; + case SPK.CurtainSwitch: + var curtain = FunctionList.List.curtains.Find((obj) => obj.sid == updateTemp.sid); + if (curtain != null) + { + localObj = curtain; + foreach (var attr in updateTemp.status) + { + var localAttr = curtain.attributes.Find((obj) => obj.key == attr.key); + if (localAttr != null) + { + localAttr.curValue = attr.value; + } + } + curtain.lastState = curtain.trait_on_off.curValue.ToString() == "on" ? Language.StringByID(StringId.Open) : Language.StringByID(StringId.Close); + CurtainModulePage.UpdataState(curtain); + } + break; + case SPK.CurtainTrietex: + var trietex = FunctionList.List.curtains.Find((obj) => obj.sid == updateTemp.sid); + if (trietex != null) + { + localObj = trietex; + foreach (var attr in updateTemp.status) + { + var localAttr = trietex.attributes.Find((obj) => obj.key == attr.key); + if (localAttr != null) + { + localAttr.curValue = attr.value; + } + } + trietex.lastState = Language.StringByID(StringId.Open) + trietex.percent + "%"; + MotorCurtainPage.UpdataState(trietex); + } + break; + case SPK.CurtainRoller: + var roller = FunctionList.List.curtains.Find((obj) => obj.sid == updateTemp.sid); + if (roller != null) + { + localObj = roller; + foreach (var attr in updateTemp.status) + { + var localAttr = roller.attributes.Find((obj) => obj.key == attr.key); + if (localAttr != null) + { + localAttr.curValue = attr.value; + } + } + roller.lastState = Language.StringByID(StringId.Open) + roller.percent + "%"; + RollingShutterPage.UpdataState(roller); + } + break; + case SPK.CurtainShades: + break; + case SPK.AcStandard: + var ac = FunctionList.List.aCs.Find((obj) => obj.sid == updateTemp.sid); + if (ac != null) + { + localObj = ac; + foreach (var attr in updateTemp.status) + { + var localAttr = ac.attributes.Find((obj) => obj.key == attr.key); + if (localAttr != null) + { + localAttr.curValue = attr.value; + } + } + ac.lastState = ""; + switch (ac.trait_mode.curValue.ToString()) + { + case "cool": + ac.lastState = Language.StringByID(StringId.Cool); + break; + case "heat": + ac.lastState = Language.StringByID(StringId.Heat); + break; + case "dry": + ac.lastState = Language.StringByID(StringId.Dry); + break; + case "auto": + ac.lastState = Language.StringByID(StringId.Auto); + break; + case "fan": + ac.lastState = Language.StringByID(StringId.AirSupply); + break; + } + switch (ac.trait_fan.curValue.ToString()) + { + case "high": + ac.lastState += " " + Language.StringByID(StringId.HighWindSpeed); + break; + case "medium": + ac.lastState += " " + Language.StringByID(StringId.MiddleWindSpeed); + break; + case "low": + ac.lastState += " " + Language.StringByID(StringId.LowWindSpeed); + break; + case "auto": + ac.lastState += " " + Language.StringByID(StringId.Auto); + break; + } + ac.lastState += " " + ac.trait_temp.curValue + ac.tempUnitString; + ACPage.UpdataStates(ac); + } + break; + case SPK.FloorHeatStandard: + var fh = FunctionList.List.floorHeatings.Find((obj) => obj.sid == updateTemp.sid); + if (fh != null) + { + localObj = fh; + foreach (var attr in updateTemp.status) + { + var localAttr = fh.attributes.Find((obj) => obj.key == attr.key); + if (localAttr != null) + { + localAttr.curValue = attr.value; + } + } + switch (fh.trait_mode.curValue) + { + case "normal": + fh.lastState = Language.StringByID(StringId.Normal); + break; + case "day": + fh.lastState = Language.StringByID(StringId.Day); + break; + case "night": + fh.lastState = Language.StringByID(StringId.Night); + break; + case "timer": + fh.lastState = Language.StringByID(StringId.Auto); + break; + case "away": + fh.lastState = Language.StringByID(StringId.Away); + break; + } + fh.lastState += " " + fh.trait_temp.curValue + fh.tempUnitString; + FloorHeatingPage.UpdataStates(fh); + } + break; + case SPK.SensorPm25: + case SPK.SensorCO2: + case SPK.SensorTVOC: + case SPK.SensorTemperature: + case SPK.SensorHumidity: + var sensor = FunctionList.List.sensorsEnvironmentalScience.Find((obj) => obj.sid == updateTemp.sid); + if (sensor != null) + { + localObj = sensor; + foreach (var attr in updateTemp.status) + { + var localAttr = sensor.attributes.Find((obj) => obj.key == attr.key); + if (localAttr != null) + { + localAttr.curValue = attr.value; + } + } + EnvironmentalSciencePage.LoadEvent_UpdataStatus(sensor); + } + break; + case SPK.ElectricSocket: + var es = FunctionList.List.switchSockets.Find((obj) => obj.sid == updateTemp.sid); + if (es != null) + { + localObj = es; + foreach (var attr in updateTemp.status) + { + var localAttr = es.attributes.Find((obj) => obj.key == attr.key); + if (localAttr != null) + { + localAttr.curValue = attr.value; + } + } + SocketPage.UpdataState(es); + } + break; + case SPK.ElectricTV: + break; + default: + break; + } + HomePage.UpdataFunctionStates(localObj); + RoomPage.UpdataStates(localObj); + FunctionPage.UpdataStates(localObj); + ClassificationPage.UpdataInfo(localObj); + } + } + catch (Exception ex) + { + MainPage.Log($"A鍗忚鏇存柊鐘舵�佸紓甯�:{ex.Message}"); + } + } + } + } } } \ No newline at end of file -- Gitblit v1.8.0