From 86db3175d109ab7d5abfb65058228a496f2492ec Mon Sep 17 00:00:00 2001 From: wei <kaede@kaededeMacBook-Air.local> Date: 星期一, 07 十二月 2020 11:31:41 +0800 Subject: [PATCH] 20201207 --- HDL_ON/DAL/Mqtt/MqttClient.cs | 162 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 157 insertions(+), 5 deletions(-) diff --git a/HDL_ON/DAL/Mqtt/MqttClient.cs b/HDL_ON/DAL/Mqtt/MqttClient.cs index 591e8a2..a4a1695 100644 --- a/HDL_ON/DAL/Mqtt/MqttClient.cs +++ b/HDL_ON/DAL/Mqtt/MqttClient.cs @@ -10,6 +10,7 @@ using System.Security.Cryptography; using HDL_ON.DriverLayer; using HDL_ON.Entity; +using HDL_ON.UI; namespace HDL_ON.DAL.Mqtt { @@ -285,6 +286,161 @@ else { //A鍗忚鏁版嵁澶勭悊 + var revString = System.Text.Encoding.UTF8.GetString(e.ApplicationMessage.Payload); + var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<GatewayAlinkControlObj>(revString); + if (temp != null) + { + var allLocalFuntion = FunctionList.List.GetAllDeviceFunctionList(); + foreach (var updateTemp in temp.objects) + { + bool hadChange = false;//鐘舵�佹湁鍙樺寲鍐嶆洿鏂扮晫闈� + var updataObj = allLocalFuntion.Find((obj) => obj.sid == updateTemp.sid); + if (updataObj != 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; + } + } + } + if(!hadChange)//鐘舵�佹湁鍙樺寲鍐嶆洿鏂扮晫闈� + { + continue; + } + //鏇存柊鐣岄潰鐘舵�� + switch (updataObj.spk) + { + case SPK.LightSwitch: + RelayPage.UpdataState(updataObj as Light); + break; + case SPK.LightDimming: + var dimming = updataObj as Light; + 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); + break; + case SPK.LightRGB: + var rgb = updataObj as Light; + rgb.lastState = Language.StringByID(StringId.Brightness) + " : " + rgb.brightness + "%"; + RGBPage.UpdataStates(rgb); + break; + case SPK.LightRGBW: + case SPK.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); + break; + case SPK.CurtainTrietex: + var trietex = updataObj as Curtain; + 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); + break; + case SPK.CurtainShades: + break; + case SPK.AcStandard: + var ac = updataObj as AC; + 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 = updataObj as FloorHeating; + 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 = updataObj as Sensor; + EnvironmentalSciencePage.LoadEvent_UpdataStatus(sensor); + break; + case SPK.ElectricSocket: + break; + case SPK.ElectricTV: + break; + default: + break; + } + HomePage.UpdataFunctionStates(updataObj); + RoomPage.UpdataStates(updataObj); + FunctionPage.UpdataStates(updataObj); + ClassificationPage.UpdataInfo(updataObj); + } + } + } } } } @@ -308,11 +464,7 @@ IfNeedReadAllDeviceStatus = true; Utlis.WriteLine($"============>Mqtt杩滅▼杩炴帴鎴愬姛"); SendPushSignOut(); - - //if (Control.Ins.IsRemote) { - // //Utlis.ShowAppLinkStatus (AppLinkStatus.CloudLink); - // MainPage.AddTip (Language.StringByID (SimpleControl.R.MyInternationalizationString.LinkSuccess)); - //} + FunctionList.List.ReadAllFunctionStatus(); }); } #endregion -- Gitblit v1.8.0