wei
2020-12-24 eb3a71699bcf371db801165e3af65951b1292706
HDL_ON/DAL/DriverLayer/Control.cs
@@ -82,11 +82,23 @@
            {
                if (_gatewayOnline != value)
                {
                    _gatewayOnline = value;
                    //修改主页连接状态
                    UI.HomePage.LoadEvent_CheckLinkStatus();
                    if (value)
                    if(value)
                    {
                        if (IsRemote)//如果是远程
                        {
                            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(() =>
                        {
@@ -94,6 +106,12 @@
                            FunctionList.List.ReadAllFunctionStatus();
                        })
                        { IsBackground = true, Priority = System.Threading.ThreadPriority.AboveNormal }.Start();
                    }
                    else
                    {
                        _gatewayOnline = value;
                        //修改主页连接状态
                        HomePage.LoadEvent_CheckLinkStatus();
                    }
                }
            }
@@ -103,23 +121,10 @@
        /// </summary>
        public string GatewayId = "";
        bool _isRemote = false;
        /// <summary>
        /// 是否为远程连接
        /// </summary>
        public bool IsRemote
        {
            get
            {
                return _isRemote;
            }
            set
            {
                _isRemote = value;
                //修改主页连接状态
                HomePage.LoadEvent_CheckLinkStatus();
            }
        }
        public bool IsRemote = false;
        /// <summary>
        /// 通讯地址IP
        /// </summary>
@@ -183,7 +188,9 @@
        /// </summary>
        public void SearchLoaclGateway()
        {
            MainPage.Log($"搜索本地网关列表,网关类型:{DB_ResidenceData.Instance.GatewayType}");
            var ggg = DB_ResidenceData.Instance.GatewayType == 0 ? "一端口" : "A网关";
            var ggg1 = MainPage.InternetStatus == 1 ? "4G" : "wifi";
            MainPage.Log($"搜索网关列表,网关类型:{ggg};网络类型:{ggg1}");
            if (MainPage.InternetStatus == 0)
            {
                Ins.GatewayOnline = false;
@@ -328,6 +335,35 @@
                    MainPage.Log($"发送HDL-Link数据:{functionControlDataJson}");
                }
            }
        }
        /// <summary>
        /// 全开全关功能
        /// </summary>
        public void SwtichFunctions(bool open,List<Function> functions)
        {
            var count = 0;
            var logString = open ? "打开" : "关闭";
            List<ApiAlinkControlActionObj> actionObjs = new List<ApiAlinkControlActionObj>();
            Dictionary<string, string> d = new Dictionary<string, string>();
            d.Add(FunctionAttributeKey.OnOff, open ? "on" : "off");
            var pm = new DAL.Server.HttpServerRequest();
            foreach (var temp in functions)
            {
                logString += temp.spk + ":" + temp.sid;
                var apiControlData = temp.GetApiControlData(d);
                actionObjs.Add(apiControlData);
                count++;
                if (count > 9)
                {
                    var result = pm.ControlDevice(actionObjs);
                    actionObjs = new List<ApiAlinkControlActionObj>();
                    count = 0;
                    MainPage.Log(logString);
                    logString = "";
                }
            }
            var pack = pm.ControlDevice(actionObjs);
            MainPage.Log(logString);
        }
        public void SendApiReadCommand(List<string> functionIds)
@@ -500,7 +536,7 @@
                    var device = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceModule>(bodyJObj.objects.ToString());
                    if (device.device_mac == DB_ResidenceData.Instance.residenceGatewayMAC)
                    {
                        //本地搜索网关成功
                        MainPage.Log("本地搜索网关成功");
                        Control.Ins.IsSearchLocalGatewaySuccessful = true;
                        Ins.GatewayOnline = true;
                        if (!string.IsNullOrEmpty(device.gatewayId))