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