From 6e580804d74d7a6fb118b6ba381e88aa81f267c7 Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期一, 15 三月 2021 15:30:23 +0800
Subject: [PATCH] Merge branch 'temp-wxr' into dev-tzy

---
 HDL_ON/DAL/DriverLayer/Control.cs |  459 +++++++++++++++++++++------------------------------------
 1 files changed, 169 insertions(+), 290 deletions(-)

diff --git a/HDL_ON/DAL/DriverLayer/Control.cs b/HDL_ON/DAL/DriverLayer/Control.cs
index 5b3309f..0d84d74 100644
--- a/HDL_ON/DAL/DriverLayer/Control.cs
+++ b/HDL_ON/DAL/DriverLayer/Control.cs
@@ -50,15 +50,15 @@
                 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>
         /// 鏄惁鎼滅储鏈湴缃戝叧鎴愬姛
@@ -605,6 +605,7 @@
                 MainPage.Log($"灞�鍩熺綉淇℃伅: {receiveObj.Topic}");
                 MainPage.Log($"鍐呭: {res[1]}");
 
+
                 //楠岃瘉鏈夋晥鏁版嵁闀垮害
                 //if (res[1].Length != receiveObj.Length)
                 //{
@@ -620,10 +621,11 @@
                     {
                         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))
@@ -679,311 +681,188 @@
                     try
                     {
                         var localFunction = allLocalFuntion.Find((obj) => obj.sid == updateTemp.sid);
+                        if (localFunction == null)
+                        {
+                            continue;
+                        }
                         if (Ins.GatewayOnline_Local && isCloudData)//鏈湴閾炬帴锛岄櫎浜嗘秱楦﹁澶囨暟鎹箣澶栫殑浜戠鏁版嵁涓嶅鐞�
                         {
-                            if(!SPK.Get3tySpk(SPK.BrandType.All3tyBrand).Contains(localFunction.spk))
+                            if (!SPK.Get3tySpk(SPK.BrandType.All3tyBrand).Contains(localFunction.spk))
                             {
                                 //MainPage.Log($"A鍗忚鏇存柊鐘舵��:鏈湴閾炬帴锛岄櫎浜嗘秱楦﹁澶囨暟鎹箣澶栫殑浜戠鏁版嵁涓嶅鐞�........");
                                 return;
                             }
                         }
-                        //MainPage.Log($"A鍗忚鏇存柊鐘舵��:{revString}");
+                        MainPage.Log($"A鍗忚鏇存柊鐘舵��:{revString}");
                         foreach (var attr in updateTemp.status)
                         {
-                            localFunction.SetAttrState(attr.key,attr.value);
+                            localFunction.time_stamp = temp.time_stamp;
+                            localFunction.SetAttrState(attr.key, attr.value);
                         }
 
-                        if (localFunction != null)
+                        //鏇存柊鐣岄潰鐘舵��
+                        Function localObj = null;
+                        switch (localFunction.spk)
                         {
-                            //鏇存柊鐣岄潰鐘舵��
-                            Function localObj = null;
-                            switch (localFunction.spk)
-                            {
-                                case SPK.LightSwitch:
-                                    var localSwitch = FunctionList.List.lights.Find((obj) => obj.sid == updateTemp.sid);
-                                    if (localSwitch != null)
+                            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))
                                     {
-                                        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;
-                                            }
-                                        }
-                                        RelayPage.UpdataState(localSwitch);
+                                        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;
                                     }
-                                    break;
-                                case SPK.LightDimming:
-                                    var dimming = FunctionList.List.lights.Find((obj) => obj.sid == updateTemp.sid);
-                                    if (dimming != null)
+                                    switch (localFunction.GetAttrState(FunctionAttributeKey.FanSpeed))
                                     {
-                                        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);
+                                        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;
                                     }
-                                    break;
-                                case SPK.ElectricFan:
-                                    var fan = FunctionList.List.fans.Find((obj) => obj.sid == updateTemp.sid);
-                                    if (fan != null)
+                                    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)
                                     {
-                                        localObj = fan;
-                                        foreach (var attr in updateTemp.status)
+                                        var localAttr = sensor.attributes.Find((obj) => obj.key == attr.key);
+                                        if (localAttr != null)
                                         {
-                                            var localAttr = fan.attributes.Find((obj) => obj.key == attr.key);
-                                            if (localAttr != null)
-                                            {
-                                                localAttr.curValue = attr.value;
-                                            }
+                                            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)
+                                    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)
                                     {
-                                        localObj = rgb;
-                                        foreach (var attr in updateTemp.status)
+                                        var localAttr = es.attributes.Find((obj) => obj.key == attr.key);
+                                        if (localAttr != null)
                                         {
-                                            var localAttr = rgb.attributes.Find((obj) => obj.key == attr.key);
-                                            if (localAttr != null)
-                                            {
-                                                localAttr.curValue = attr.value;
-                                            }
+                                            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.GetAttrState(FunctionAttributeKey.Mode))
-                                        {
-                                            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.GetAttrState(FunctionAttributeKey.FanSpeed))
-                                        {
-                                            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.GetAttrState(FunctionAttributeKey.SetTemp) + 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:
-                                case SPK.IrAC:
-                                    //璁惧鐘舵�佹帹閫�
-                                    Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid,updateTemp.status);
-                                    break;
-                            }
-                            if (localObj != null)
-                            {
-                                HomePage.UpdataFunctionStates(localObj);
-                                RoomPage.UpdataStates(localObj);
-                                FunctionPage.UpdataStates(localObj);
-                                ClassificationPage.UpdataInfo(localObj);
-                            }
+                                    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