JLChen
2021-02-05 1a0a7f736c6d2e7129e7591d40bed67ec7c0f09a
HDL_ON/DAL/DriverLayer/Control.cs
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Text;
using HDL_ON.Entity;
@@ -86,6 +86,10 @@
                    {
                        if (IsRemote)//如果是远程
                        {
                            if(DB_ResidenceData.Instance.HomeGateway == null)
                            {
                                return;
                            }
                            if (!DB_ResidenceData.Instance.HomeGateway.gatewayStatus)//远程情况下,网关未链接服务器不能修改主页网关状态
                            {
                                new System.Threading.Thread(() => {
@@ -188,6 +192,11 @@
        /// </summary>
        public void SearchLoaclGateway()
        {
            //2021-01-15 : 住宅没有绑定网关的时候不用搜索,并且不能链接mqtt
            if(DB_ResidenceData.Instance.HomeGateway == null)
            {
                return;
            }
            var ggg = DB_ResidenceData.Instance.GatewayType == 0 ? "一端口" : "A网关";
            var ggg1 = MainPage.InternetStatus == 1 ? "4G" : "wifi";
            MainPage.Log($"搜索网关列表,网关类型:{ggg};网络类型:{ggg1}");
@@ -270,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;
@@ -300,8 +310,9 @@
            MainPage.Log($"发送数据:{Newtonsoft.Json.JsonConvert.SerializeObject(commandDictionary)}");
            //useRemote = true;
            //远程通讯
            if (Ins.IsRemote)
            if (Ins.IsRemote || useRemote == true)
            {
                DAL.Server.HttpServerRequest httpServer = new DAL.Server.HttpServerRequest();
                //ALink控制、Bus控制使用同一个接口控制,由云端负责解析
@@ -370,6 +381,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>
@@ -866,14 +905,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)