wei
2021-02-22 abf4a98837e43e542701c60b7ec6a088cd5236da
HDL_ON/DAL/DriverLayer/Control.cs
@@ -207,9 +207,9 @@
            }
            else if (MainPage.InternetStatus == 1)
            {
                if (!Ins.IsRemote)
                //if (!Ins.IsRemote)
                {
                    Ins.IsRemote = true;
                    //Ins.IsRemote = true;
                    DAL.Mqtt.MqttClient.InitState();
                }
            }
@@ -279,8 +279,9 @@
        /// </summary>
        /// <param name="commandString"></param>
        /// <param name="function"></param>
        /// <param name="useRemote">是否直接使用远程发送</param>
        /// <returns></returns>
        public void SendWriteCommand(Function function, Dictionary<string, string> commandDictionary)
        public void SendWriteCommand(Function function, Dictionary<string, string> commandDictionary, bool useRemote = false)
        {
            function.controlCounter++;
            function.refreshTime = DateTime.Now;
@@ -309,8 +310,19 @@
            MainPage.Log($"发送数据:{Newtonsoft.Json.JsonConvert.SerializeObject(commandDictionary)}");
            ///第三方涂鸦设备统一使用远程控制
            switch(function.spk)
            {
                case SPK.ElectricTuyaAirCleaner:
                case SPK.ElectricTuyaFan:
                case SPK.ElectricTuyaWaterValve:
                case SPK.ElectricTuyaWeepRobot:
                    useRemote = true;
                    break;
            }
            //远程通讯
            if (Ins.IsRemote)
            if (Ins.IsRemote || useRemote == true)
            {
                DAL.Server.HttpServerRequest httpServer = new DAL.Server.HttpServerRequest();
                //ALink控制、Bus控制使用同一个接口控制,由云端负责解析
@@ -341,7 +353,7 @@
                    var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(functionControlDataObj);
                    var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ControlFunctionTopic, functionControlDataJson);
                    new Control_Udp().SendLocalHdlLinkData(sendBytes, functionControlDataObj.id);
                    MainPage.Log($"发送HDL-Link数据:{functionControlDataJson}");
                    MainPage.Log($"本地通讯 发送HDL-Link数据:{functionControlDataJson}");
                }
            }
        }
@@ -379,6 +391,34 @@
        {
            var pm = new DAL.Server.HttpServerRequest();
            var pack = pm.RefreshDeviceStatus(functionIds);
        }
        /// <summary>
        /// 读取功能详细数据
        /// </summary>
        /// <param name="functionIds"></param>
        public void ReadFunctionsInfo(List<string> functionIds)
        {
            var pm = new DAL.Server.HttpServerRequest();
            var pack = pm.GetDeviceInfoList(functionIds);
            if(pack!= null&& pack.Data!=null)
            {
                var ddd = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Function>>(pack.Data.ToString());
                if(ddd!= null)
                {
                    foreach(var function in ddd)
                    {
                        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);
                            }
                        }
                    }
                }
            }
        }
        /// <summary>
@@ -422,7 +462,7 @@
                    };
                    var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(readDataObj);
                    var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ReadStatus, functionControlDataJson);
                    MainPage.Log($"发送HDL-Link数据:{functionControlDataJson}");
                    MainPage.Log($"本地通讯 发送HDL-Link数据:{functionControlDataJson}");
                    new Control_Udp().SendLocalHdlLinkData(sendBytes, readDataObj.id);
                }
            }
@@ -875,14 +915,28 @@
                                    }
                                    break;
                                case SPK.ElectricTV:
                                    break;
                                case SPK.ElectricTuyaAirCleaner:
                                case SPK.ElectricTuyaFan:
                                case SPK.ElectricTuyaWeepRobot:
                                case SPK.ElectricTuyaWaterValve:
                                    //设备状态推送
                                    var myDevice = Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid,updateTemp.status);
                                    if (myDevice != null)
                                    {
                                        localObj = myDevice;
                                    }
                                    break;
                                default:
                                    break;
                            }
                            HomePage.UpdataFunctionStates(localObj);
                            RoomPage.UpdataStates(localObj);
                            FunctionPage.UpdataStates(localObj);
                            ClassificationPage.UpdataInfo(localObj);
                            if (localObj != null)
                            {
                                HomePage.UpdataFunctionStates(localObj);
                                RoomPage.UpdataStates(localObj);
                                FunctionPage.UpdataStates(localObj);
                                ClassificationPage.UpdataInfo(localObj);
                            }
                        }
                    }
                    catch (Exception ex)