From 7232642ff48a7fbde2018cde652f3e771fa58025 Mon Sep 17 00:00:00 2001 From: wei <kaede@kaededeMacBook-Air.local> Date: 星期三, 27 一月 2021 14:32:55 +0800 Subject: [PATCH] 20200127-英文版处理 --- HDL_ON/DAL/DriverLayer/Control.cs | 586 ++++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 423 insertions(+), 163 deletions(-) diff --git a/HDL_ON/DAL/DriverLayer/Control.cs b/HDL_ON/DAL/DriverLayer/Control.cs index 13996e8..84a426e 100644 --- a/HDL_ON/DAL/DriverLayer/Control.cs +++ b/HDL_ON/DAL/DriverLayer/Control.cs @@ -1,4 +1,4 @@ -using System; +锘縰sing System; using System.Collections.Generic; using System.Text; using HDL_ON.Entity; @@ -25,6 +25,8 @@ public class Control { + + static Control _control; public static Control Ins { @@ -58,11 +60,20 @@ 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; @@ -71,11 +82,27 @@ { if (_gatewayOnline != value) { - _gatewayOnline = value; - //淇敼涓婚〉杩炴帴鐘舵�� - UI.HomePage.LoadEvent_CheckLinkStatus(); - if (value) + if(value) { + if (IsRemote)//濡傛灉鏄繙绋� + { + if(DB_ResidenceData.Instance.HomeGateway == null) + { + return; + } + if (!DB_ResidenceData.Instance.HomeGateway.gatewayStatus)//杩滅▼鎯呭喌涓嬶紝缃戝叧鏈摼鎺ユ湇鍔″櫒涓嶈兘淇敼涓婚〉缃戝叧鐘舵�� + { + new System.Threading.Thread(() => { + System.Threading.Thread.Sleep(3000); + var pm = new DAL.Server.HttpServerRequest(); + pm.GetGatewayInfo(); + }) { IsBackground = true }.Start(); + return; + } + } + _gatewayOnline = value; + //淇敼涓婚〉杩炴帴鐘舵�� + HomePage.LoadEvent_CheckLinkStatus(); MainPage.Log($"缃戝叧鍦ㄧ嚎锛屽埛鏂拌澶囩姸鎬�"); new System.Threading.Thread(() => { @@ -84,30 +111,24 @@ }) { IsBackground = true, Priority = System.Threading.ThreadPriority.AboveNormal }.Start(); } + else + { + _gatewayOnline = value; + //淇敼涓婚〉杩炴帴鐘舵�� + HomePage.LoadEvent_CheckLinkStatus(); + } } } } /// <summary> /// 缃戝叧閫氳ID /// </summary> - public string GatewayId =""; + public string GatewayId = ""; - bool _isRemote = false; /// <summary> /// 鏄惁涓鸿繙绋嬭繛鎺� /// </summary> - public bool IsRemote { - get - { - return _isRemote; - } - set - { - _isRemote = value; - //淇敼涓婚〉杩炴帴鐘舵�� - HomePage.LoadEvent_CheckLinkStatus(); - } - } + public bool IsRemote = false; /// <summary> /// 閫氳鍦板潃IP /// </summary> @@ -166,42 +187,66 @@ } } - ///// <summary> - ///// 鏀瑰彉閫氳鏂瑰紡 - ///// </summary> - //public void ChangeCommunicationMode(CommunicationMode communicationMode) - //{ - // this.communicationMode = communicationMode; - //} - /// <summary> /// 鎼滅储鏈湴缃戝叧鍒楄〃 /// </summary> public void SearchLoaclGateway() { - OpenUdp(DB_ResidenceData.Instance.GatewayType == 0 ? 6000 : 8585); - new System.Threading.Thread(() => + //2021-01-15 : 浣忓畢娌℃湁缁戝畾缃戝叧鐨勬椂鍊欎笉鐢ㄦ悳绱紝骞朵笖涓嶈兘閾炬帴mqtt + if(DB_ResidenceData.Instance.HomeGateway == null) { - for (int i = 0; i < 5; i++) + return; + } + var ggg = DB_ResidenceData.Instance.GatewayType == 0 ? "涓�绔彛" : "A缃戝叧"; + var ggg1 = MainPage.InternetStatus == 1 ? "4G" : "wifi"; + MainPage.Log($"鎼滅储缃戝叧鍒楄〃锛岀綉鍏崇被鍨�:{ggg};缃戠粶绫诲瀷:{ggg1}"); + if (MainPage.InternetStatus == 0) + { + Ins.GatewayOnline = false; + return; + } + else if (MainPage.InternetStatus == 1) + { + if (!Ins.IsRemote) { - if (GatewayOnline) - 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); + Ins.IsRemote = true; + DAL.Mqtt.MqttClient.InitState(); } - }) - { IsBackground = true }.Start(); - if (!GatewayOnline)//缃戝叧涓嶅湪绾跨殑鏃跺�欐墠鍙皾璇曡繙绋嬭繛鎺� + } + else if (MainPage.InternetStatus == 2) { - Ins.IsRemote = true; - DAL.Mqtt.MqttClient.InitState(); + 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(); } } @@ -212,7 +257,11 @@ { if (Ins.IsRemote || DB_ResidenceData.Instance.GatewayType == 1) { - ControlAProtocolScene(scene); + new System.Threading.Thread(() => + { + ControlAProtocolScene(scene); + }) + { IsBackground = true }.Start(); } else { @@ -233,18 +282,42 @@ /// <returns></returns> public void SendWriteCommand(Function function, Dictionary<string, string> commandDictionary) { - function.usageCount++; + function.controlCounter++; function.refreshTime = DateTime.Now; - DAL.Server.HttpServerRequest httpServer = new DAL.Server.HttpServerRequest(); + + //濡傛灉鏄帶鍒惰皟鍏夌殑寮�鏃讹紝浜害鍊间笉鑳戒负0 + if (commandDictionary.Count > 2) + { + if (commandDictionary.ContainsKey(FunctionAttributeKey.OnOff) && commandDictionary.ContainsKey(FunctionAttributeKey.Brightness)) + { + if (commandDictionary[FunctionAttributeKey.OnOff] == "on") + { + if (commandDictionary[FunctionAttributeKey.Brightness] == "0") + { + commandDictionary[FunctionAttributeKey.Brightness] = "100"; + } + } + if (commandDictionary[FunctionAttributeKey.OnOff] == "off") + { + if (commandDictionary[FunctionAttributeKey.Brightness] != "0") + { + commandDictionary[FunctionAttributeKey.Brightness] = "0"; + } + } + } + } + + MainPage.Log($"鍙戦�佹暟鎹�:{Newtonsoft.Json.JsonConvert.SerializeObject(commandDictionary)}"); + //杩滅▼閫氳 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 @@ -268,8 +341,38 @@ 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}"); } } + } + /// <summary> + /// 鍏ㄥ紑鍏ㄥ叧鍔熻兘 + /// </summary> + public void SwtichFunctions(bool open,List<Function> functions) + { + var count = 0; + var logString = open ? "鎵撳紑\r\n" : "鍏抽棴\r\n"; + List<ApiAlinkControlActionObj> actionObjs = new List<ApiAlinkControlActionObj>(); + Dictionary<string, string> d = new Dictionary<string, string>(); + d.Add(FunctionAttributeKey.OnOff, open ? "on" : "off"); + var pm = new DAL.Server.HttpServerRequest(); + foreach (var temp in functions) + { + logString += temp.spk + ":" + temp.sid + "\r\n"; + var apiControlData = temp.GetApiControlData(d); + actionObjs.Add(apiControlData); + count++; + if (count > 9) + { + var result = pm.ControlDevice(actionObjs); + actionObjs = new List<ApiAlinkControlActionObj>(); + count = 0; + MainPage.Log(logString); + logString = ""; + } + } + var pack = pm.ControlDevice(actionObjs); + MainPage.Log(logString); } public void SendApiReadCommand(List<string> functionIds) @@ -288,7 +391,7 @@ if (Ins.IsRemote) { var pm = new DAL.Server.HttpServerRequest(); - var pack = pm.RefreshDeviceStatus(new List<string>() { function.deviceId}); + var pack = pm.RefreshDeviceStatus(new List<string>() { function.deviceId }); } else { @@ -319,7 +422,8 @@ }; var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(readDataObj); var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ReadStatus, functionControlDataJson); - new Control_Udp().SendLocalHdlLinkData(sendBytes,readDataObj.id); + MainPage.Log($"鍙戦�丠DL-Link鏁版嵁:{functionControlDataJson}"); + new Control_Udp().SendLocalHdlLinkData(sendBytes, readDataObj.id); } } } @@ -347,8 +451,16 @@ { if (Ins.IsRemote) { - var pm = new HDL_ON.DAL.Server.HttpServerRequest(); - pm.ExecuteScene(scene.userSceneId); + //浜戠鍋氬鐞嗗彂閫佷竴绔彛鍦烘櫙 + //if (DB_ResidenceData.Instance.GatewayType == 0) + //{ + // new Control_Udp().ControlBusScenes(scene); + //} + //else + { + var pm = new DAL.Server.HttpServerRequest(); + var result = pm.ExecuteScene(scene.userSceneId); + } } else { @@ -365,7 +477,7 @@ }; var aLinkJson = Newtonsoft.Json.JsonConvert.SerializeObject(aLinkData); var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ControlScene, aLinkJson); - new Control_Udp().SendLocalHdlLinkData(sendBytes,aLinkData.id); + new Control_Udp().SendLocalHdlLinkData(sendBytes, aLinkData.id); } } /// <summary> @@ -379,7 +491,7 @@ string sendDataString = topicString + lengthString + bodyDataString; byte[] sendDataBytes = Encoding.ASCII.GetBytes(sendDataString); - MainPage.Log($"杞崲HDL-Link鏁版嵁\r\n{sendDataString}\r\n"); + //MainPage.Log($"杞崲HDL-Link鏁版嵁\r\n{sendDataString}\r\n"); return sendDataBytes; } @@ -419,6 +531,10 @@ break; } } + + MainPage.Log($"time 1 :{receiveObj.Topic}"); + + //楠岃瘉鏈夋晥鏁版嵁闀垮害 //if (res[1].Length != receiveObj.Length) //{ @@ -437,8 +553,10 @@ var device = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceModule>(bodyJObj.objects.ToString()); if (device.device_mac == DB_ResidenceData.Instance.residenceGatewayMAC) { + MainPage.Log("鏈湴鎼滅储缃戝叧鎴愬姛"); + Control.Ins.IsSearchLocalGatewaySuccessful = true; Ins.GatewayOnline = true; - if(!string.IsNullOrEmpty( device.gatewayId)) + if (!string.IsNullOrEmpty(device.gatewayId)) { Ins.GatewayId = device.gatewayId; } @@ -450,11 +568,12 @@ Ins.IsRemote = false; } } - else if(receiveObj.Topic == CommunicationTopic.ct.ReadStatus+"_reply" || + 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); + UpdataFunctionStatus(receiveObj.BodyDataString, null); } } return receiveObj; @@ -465,164 +584,305 @@ /// A鍗忚鏁版嵁 /// </summary> /// <param name="updateBytes"></param> - public void UpdataFunctionStatus(string revString,byte []usefulBytes) + 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); + Control_Udp.ReceiveRepeatManager(temp.id, usefulBytes); var allLocalFuntion = FunctionList.List.GetDeviceFunctionList(); foreach (var updateTemp in temp.objects) { try { //bool hadChange = false;//鐘舵�佹湁鍙樺寲鍐嶆洿鏂扮晫闈� - var updataObj = allLocalFuntion.Find((obj) => obj.sid == updateTemp.sid); - if (updataObj != null) + var localFunction = allLocalFuntion.Find((obj) => obj.sid == updateTemp.sid); + if (localFunction != null) { - foreach (var attr in updateTemp.status) - { - foreach (var locatAttr in updataObj.attributes) - { - if (attr.key == locatAttr.key) - { - if (locatAttr.curValue.ToString() == attr.value) - { - continue; - } - locatAttr.curValue = attr.value; - //hadChange = true; - } - } - } - //2020-12-13 濡傛灉鎺у埗鏃讹紝绔嬪嵆鏇存柊鐣岄潰鍗崇姸鎬侊紝鏀跺埌鏁版嵁涓嶇敤鍦ㄥ鐞嗭紝鐩墠鍙慨鏀硅澶囩姸鎬侊紝鐣岄潰娌℃湁鏇存柊锛岃繕鏄渶瑕佹帴鏀舵暟鎹洿鏂� - //if (!hadChange)//鐘舵�佹湁鍙樺寲鍐嶆洿鏂扮晫闈� + //var updateInfoString = $"鏇存柊璁惧:{localFunction.name}"; + //foreach (var attr in updateTemp.status) //{ - // continue; + // updateInfoString += $" key:{attr.key};value:{attr.value}"; //} + //MainPage.Log(updateInfoString); + + //鏇存柊鐣岄潰鐘舵�� - switch (updataObj.spk) + Function localObj = null; + switch (localFunction.spk) { case SPK.LightSwitch: - RelayPage.UpdataState(updataObj as Light); + 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 = updataObj as Light; - dimming.lastState = Language.StringByID(StringId.Brightness) + " : " + dimming.brightness + "%"; - DimmerPage.UpdataStates(dimming); + 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 = updataObj as Fan; - fan.lastState = Language.StringByID(StringId.Level) + " : " + fan.openLevel; - FanPage.UpdataState(fan); + 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 = updataObj as Light; - rgb.lastState = Language.StringByID(StringId.Brightness) + " : " + rgb.brightness + "%"; - RGBPage.UpdataStates(rgb); + 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: - case SPK.LightCCT: + 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 = updataObj as Curtain; - curtain.lastState = curtain.trait_on_off.curValue.ToString() == "on" ? Language.StringByID(StringId.Open) : Language.StringByID(StringId.Close); - CurtainModulePage.UpdataState(curtain); + 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 = updataObj as Curtain; - trietex.lastState = Language.StringByID(StringId.Open) + trietex.percent + "%"; - MotorCurtainPage.UpdataState(trietex); + 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 = updataObj as Curtain; - roller.lastState = Language.StringByID(StringId.Open) + roller.percent + "%"; - RollingShutterPage.UpdataState(roller); + 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 = updataObj as AC; - ac.lastState = ""; - switch (ac.trait_mode.curValue.ToString()) + var ac = FunctionList.List.aCs.Find((obj) => obj.sid == updateTemp.sid); + if (ac != null) { - 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; + 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); } - 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 = updataObj as FloorHeating; - switch (fh.trait_mode.curValue) + var fh = FunctionList.List.floorHeatings.Find((obj) => obj.sid == updateTemp.sid); + if (fh != null) { - 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; + 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); } - 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 = updataObj as Sensor; - EnvironmentalSciencePage.LoadEvent_UpdataStatus(sensor); + 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(updataObj); - RoomPage.UpdataStates(updataObj); - FunctionPage.UpdataStates(updataObj); - ClassificationPage.UpdataInfo(updataObj); + HomePage.UpdataFunctionStates(localObj); + RoomPage.UpdataStates(localObj); + FunctionPage.UpdataStates(localObj); + ClassificationPage.UpdataInfo(localObj); } } catch (Exception ex) -- Gitblit v1.8.0