From 4a83749337096aae6dd5ec4f44f16653fbc7268a Mon Sep 17 00:00:00 2001 From: JLChen <551775569@qq.com> Date: 星期三, 10 三月 2021 16:19:52 +0800 Subject: [PATCH] 2021-03-10 1.合并 --- HDL_ON/DAL/DriverLayer/Control.cs | 607 +++++++++++++++++++------------------------------------ 1 files changed, 210 insertions(+), 397 deletions(-) diff --git a/HDL_ON/DAL/DriverLayer/Control.cs b/HDL_ON/DAL/DriverLayer/Control.cs index 58821fd..2dcc7ee 100644 --- a/HDL_ON/DAL/DriverLayer/Control.cs +++ b/HDL_ON/DAL/DriverLayer/Control.cs @@ -50,78 +50,21 @@ return _msg_id++; } } - /// <summary> - /// 鑾峰彇13浣嶆椂闂存埑 - /// </summary> - /// <returns></returns> - public string Get_TimeStamp() - { - long t = DateTime.Now.Ticks / 10000; - return t.ToString(); - } + ///// <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 _gatewayOnline1 = false; - ///// <summary> - ///// 缃戝叧鏄惁鍦ㄧ嚎 - ///// </summary> - //public bool GatewayOnline1 - //{ - // get - // { - // return _gatewayOnline; - // } - // set - // { - // if (_gatewayOnline != 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(() => - // { - // System.Threading.Thread.Sleep(1000); - // FunctionList.List.ReadAllFunctionStatus(); - // }) - // { IsBackground = true, Priority = System.Threading.ThreadPriority.AboveNormal }.Start(); - // } - // else - // { - // _gatewayOnline = value; - // //淇敼涓婚〉杩炴帴鐘舵�� - // HomePage.LoadEvent_CheckLinkStatus(); - // } - // } - // } - //} - - bool _GatewayOnline_Local = false; /// <summary> /// 缃戝叧鍦ㄧ嚎-灞�鍩熺綉 @@ -511,7 +454,8 @@ var pack = pm.GetDeviceInfoList(functionIds); if(pack!= null&& pack.Data!=null) { - var ddd = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Function>>(pack.Data.ToString()); + //寰呮祴璇�2021-03-04 + var ddd = Newtonsoft.Json.JsonConvert.DeserializeObject<List<AlinkStatusData>>(pack.Data.ToString()); if(ddd!= null) { foreach(var function in ddd) @@ -519,10 +463,9 @@ var temp = FunctionList.List.GetDeviceFunctionList().Find((obj) => obj.deviceId == function.deviceId); if(temp!= null) { - temp = function; if (SPK.Get3tySpk(SPK.BrandType.Tuya).Contains(temp.spk)) { - Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(temp.sid, temp.status); + Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(temp.sid, function.status); } } } @@ -577,21 +520,6 @@ var pack = pm.RefreshDeviceStatus(new List<string>() { function.deviceId }); } } - ///// <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鍗忚鎺у埗鍦烘櫙 @@ -601,16 +529,8 @@ { if (!Ins.GatewayOnline_Local)//缃戝叧鏈湴涓嶅湪绾� { - //浜戠鍋氬鐞嗗彂閫佷竴绔彛鍦烘櫙 - //if (DB_ResidenceData.Instance.GatewayType == 0) - //{ - // new Control_Udp().ControlBusScenes(scene); - //} - //else - { - var pm = new DAL.Server.HttpServerRequest(); - var result = pm.ExecuteScene(scene.userSceneId); - } + var pm = new DAL.Server.HttpServerRequest(); + var result = pm.ExecuteScene(scene.userSceneId); } else { @@ -682,7 +602,7 @@ } } - MainPage.Log($"灞�鍩熺綉淇℃伅: {receiveObj.Topic}"); + //MainPage.Log($"灞�鍩熺綉淇℃伅: {receiveObj.Topic}"); //楠岃瘉鏈夋晥鏁版嵁闀垮害 @@ -693,17 +613,18 @@ //} receiveObj.BodyDataString = res[1]; - var bodyJObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack>(res[1]); - if (bodyJObj == null) - { - return receiveObj; - } if (receiveObj.Topic == CommunicationTopic.SearchLoaclGatewayReply) { + var bodyJObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack>(res[1]); + if (bodyJObj == null) + { + return receiveObj; + } + var device = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceModule>(bodyJObj.objects.ToString()); if (device.device_mac == DB_ResidenceData.Instance.residenceGatewayMAC) { - MainPage.Log("鏈湴鎼滅储缃戝叧鎴愬姛"); + //MainPage.Log("鏈湴鎼滅储缃戝叧鎴愬姛"); Ins.IsSearchLocalGatewaySuccessful = true; Ins.GatewayOnline_Local = true; if (!string.IsNullOrEmpty(device.gatewayId)) @@ -733,9 +654,17 @@ /// A鍗忚鏁版嵁 /// </summary> /// <param name="updateBytes"></param> - public void UpdataFunctionStatus(string revString, byte[] usefulBytes) + public void UpdataFunctionStatus(string revString, byte[] usefulBytes,bool isCloudData = false) { - MainPage.Log($"A鍗忚鏇存柊鐘舵��:{revString}"); + + if (Ins.GatewayOnline_Local && isCloudData)//鏈湴閾炬帴锛岄櫎浜嗘秱楦﹁澶囨暟鎹箣澶栫殑浜戠鏁版嵁涓嶅鐞� + { + if (FunctionList.List.GetDeviceFunctionList(SPK.BrandType.Tuya).Count == 0) + { + //MainPage.Log($"A鍗忚鏇存柊鐘舵��:鏈湴閾炬帴锛岄櫎浜嗘秱楦﹁澶囨暟鎹箣澶栫殑浜戠鏁版嵁涓嶅鐞�..."); + return; + } + } var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<AlinkFunctionStatusObj>(revString); if (temp != null) { @@ -745,305 +674,189 @@ { try { - //bool hadChange = false;//鐘舵�佹湁鍙樺寲鍐嶆洿鏂扮晫闈� var localFunction = allLocalFuntion.Find((obj) => obj.sid == updateTemp.sid); - if (localFunction != null) + if (localFunction == null) { - //鏇存柊鐣岄潰鐘舵�� - Function localObj = null; - switch (localFunction.spk) + continue; + } + if (Ins.GatewayOnline_Local && isCloudData)//鏈湴閾炬帴锛岄櫎浜嗘秱楦﹁澶囨暟鎹箣澶栫殑浜戠鏁版嵁涓嶅鐞� + { + if (!SPK.Get3tySpk(SPK.BrandType.All3tyBrand).Contains(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; - case SPK.ElectricTuyaAirCleaner: - case SPK.ElectricTuyaFan: - case SPK.ElectricTuyaWeepRobot: - case SPK.ElectricTuyaWaterValve: - case SPK.SensorPir: - case SPK.SensorDoorWindow: - case SPK.SensorSmoke: - case SPK.SensorWater: - case SPK.ClothesHanger: - //璁惧鐘舵�佹帹閫� - var myDevice = Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid,updateTemp.status); - if (myDevice != null) - { - localObj = myDevice; - } - break; - default: - break; - } - if (localObj != null) - { - HomePage.UpdataFunctionStates(localObj); - RoomPage.UpdataStates(localObj); - FunctionPage.UpdataStates(localObj); - ClassificationPage.UpdataInfo(localObj); + //MainPage.Log($"A鍗忚鏇存柊鐘舵��:鏈湴閾炬帴锛岄櫎浜嗘秱楦﹁澶囨暟鎹箣澶栫殑浜戠鏁版嵁涓嶅鐞�........"); + return; } } + MainPage.Log($"A鍗忚鏇存柊鐘舵��:{revString}"); + foreach (var attr in updateTemp.status) + { + localFunction.time_stamp = temp.time_stamp; + localFunction.SetAttrState(attr.key, attr.value); + } + + //鏇存柊鐣岄潰鐘舵�� + Function localObj = null; + switch (localFunction.spk) + { + case SPK.LightSwitch: + RelayPage.UpdataState(localFunction); + break; + case SPK.LightDimming: + localFunction.lastState = Language.StringByID(StringId.Brightness) + " : " + + localFunction.GetAttrState(FunctionAttributeKey.Brightness) + "%"; + DimmerPage.UpdataStates(localFunction); + break; + case SPK.ElectricFan: + localFunction.lastState = Language.StringByID(StringId.Level) + " : " + + localFunction.GetAttrState(FunctionAttributeKey.OpenLevel); + FanPage.UpdataState(localFunction); + break; + case SPK.LightRGB: + localFunction.lastState = Language.StringByID(StringId.Brightness) + " : " + localFunction.GetAttrState(FunctionAttributeKey.Brightness) + "%"; + RGBPage.UpdataStates(localFunction); + break; + case SPK.LightRGBW: + break; + case SPK.LightCCT: + localFunction.lastState = Language.StringByID(StringId.Brightness) + " : " + localFunction.GetAttrState(FunctionAttributeKey.Brightness) + "%"; + ColorTureLampPage.UpdataStatus(localFunction); + break; + case SPK.CurtainSwitch: + localFunction.lastState = localFunction.trait_on_off.curValue.ToString() == "on" ? Language.StringByID(StringId.Open) : Language.StringByID(StringId.Close); + CurtainModulePage.UpdataState(localFunction); + break; + case SPK.CurtainTrietex: + localFunction.lastState = Language.StringByID(StringId.Open) + localFunction.GetAttrState(FunctionAttributeKey.Percent) + "%"; + MotorCurtainPage.UpdataState(localFunction); + break; + case SPK.CurtainRoller: + localFunction.lastState = Language.StringByID(StringId.Open) + localFunction.GetAttrState(FunctionAttributeKey.Percent) + "%"; + RollingShutterPage.UpdataState(localFunction); + break; + case SPK.CurtainShades: + break; + case SPK.AcStandard: + Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid, updateTemp.status); + if (localFunction != null) + { + localFunction.lastState = ""; + switch (localFunction.GetAttrState(FunctionAttributeKey.Mode)) + { + case "cool": + localFunction.lastState = Language.StringByID(StringId.Cool); + break; + case "heat": + localFunction.lastState = Language.StringByID(StringId.Heat); + break; + case "dry": + localFunction.lastState = Language.StringByID(StringId.Dry); + break; + case "auto": + localFunction.lastState = Language.StringByID(StringId.Auto); + break; + case "fan": + localFunction.lastState = Language.StringByID(StringId.AirSupply); + break; + } + switch (localFunction.GetAttrState(FunctionAttributeKey.FanSpeed)) + { + case "high": + localFunction.lastState += " " + Language.StringByID(StringId.HighWindSpeed); + break; + case "medium": + localFunction.lastState += " " + Language.StringByID(StringId.MiddleWindSpeed); + break; + case "low": + localFunction.lastState += " " + Language.StringByID(StringId.LowWindSpeed); + break; + case "auto": + localFunction.lastState += " " + Language.StringByID(StringId.Auto); + break; + } + localFunction.lastState += " " + localFunction.GetAttrState(FunctionAttributeKey.SetTemp) + new AC().GetTempUnitString(localFunction); + ACPage.UpdataStates(localFunction); + } + break; + case SPK.FloorHeatStandard: + switch (localFunction.GetAttrState(FunctionAttributeKey.Mode)) + { + case "normal": + localFunction.lastState = Language.StringByID(StringId.Normal); + break; + case "day": + localFunction.lastState = Language.StringByID(StringId.Day); + break; + case "night": + localFunction.lastState = Language.StringByID(StringId.Night); + break; + case "timer": + localFunction.lastState = Language.StringByID(StringId.Auto); + break; + case "away": + localFunction.lastState = Language.StringByID(StringId.Away); + break; + } + localFunction.lastState += " " + localFunction.GetAttrState(FunctionAttributeKey.SetTemp) + new FloorHeating().GetTempUnitString(localFunction); + FloorHeatingPage.UpdataStates(localFunction); + break; + case SPK.SensorPm25: + case SPK.SensorCO2: + case SPK.SensorTVOC: + case SPK.SensorTemperature: + case SPK.SensorHumidity: + var sensor = FunctionList.List.GetEnvirSensorsList().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.GetElectricSocketList().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; + case SPK.ElectricTuyaAirCleaner: + case SPK.ElectricTuyaFan: + case SPK.ElectricTuyaWeepRobot: + case SPK.ElectricTuyaWaterValve: + case SPK.SensorPir: + case SPK.SensorDoorWindow: + case SPK.SensorSmoke: + case SPK.SensorWater: + case SPK.ClothesHanger: + case SPK.IrAC: + //璁惧鐘舵�佹帹閫� + Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid, updateTemp.status); + break; + } + + HomePage.UpdataFunctionStates(localFunction); + RoomPage.UpdataStates(localFunction); + FunctionPage.UpdataStates(localFunction); + ClassificationPage.UpdataInfo(localFunction); + } catch (Exception ex) { -- Gitblit v1.8.0