HDL Home App 第二版本 旧平台金堂用 正在使用
黄学彪
2020-06-10 dce6c3481a37216292724013ff9d2b75ceb82f86
ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs
@@ -13,7 +13,6 @@
    public static class Application
    {
        public static bool isInited;
        static bool isEncry;
        /// <summary>
        /// 是否正在搜索网关
        /// </summary>
@@ -84,12 +83,12 @@
                                if (paths.Length < 3)
                                    continue;
                                var gateWay = ZbGateway.GateWayList.Find(obj => (obj != null) && (obj.getGatewayBaseInfo != null) && (obj.getGatewayBaseInfo.gwID == paths[2]));
                                var gateWay = ZbGateway.GateWayList.Find(obj => (obj != null) && (obj.GwId == paths[2]));
                                if (gateWay == null)
                                {
                                    gateWay = new ZbGateway { IsVirtual = true };
                                    gateWay.getGatewayBaseInfo.gwID = paths[2];
                                    gateWay.getGatewayBaseInfo.HomeId = Shared.Common.Config.Instance.HomeId;
                                    gateWay.GwId = paths[2];
                                    gateWay.HomeId = Shared.Common.Config.Instance.HomeId;
                                    ZbGateway.GateWayList.Add(gateWay);
                                }
                            }
@@ -144,7 +143,7 @@
                                    //点对点发送(先发一条已有的点播,回复几率高一点)
                                    for (int i = 0; i < gateWayList.Count; i++)
                                    {
                                        FindGateWaySocket.BeginSend(new System.Net.IPEndPoint(System.Net.IPAddress.Parse(gateWayList[i].getGatewayBaseInfo.IpAddress), 7624), broadBytes);
                                        FindGateWaySocket.BeginSend(new System.Net.IPEndPoint(System.Net.IPAddress.Parse(gateWayList[i].GwIP), 7624), broadBytes);
                                    }
                                    //广播发送
                                    if (broadcastIpAddress.ToString() != "0.0.0.0")
@@ -193,19 +192,16 @@
                                    var pubKey = Encoding.UTF8.GetString(bytes, 49 + gwNameLength + 1 + gwIdLength + 2 + 1, pubKeyLength);
                                    var zbGateWay = new ZbGateway
                                    {
                                        getGatewayBaseInfo = new ZbGateway.GatewayBaseInfo
                                        {
                                            IpAddress = ipAddress,
                                            GwName = gwName,
                                            HomeId = homeID,
                                            IsMainGateWay = isMainGateWay,
                                            gwID = id,
                                        },
                                        GwIP = ipAddress,
                                        GwName = gwName,
                                        HomeId = homeID,
                                        IsMainGateWay = isMainGateWay,
                                        GwId = id,
                                        GatewayOnlineFlage = true,
                                        PubKey = pubKey
                                    };
                                    //通讯到网关列表
                                    if (gateWayList.Find(obj => obj.getGatewayBaseInfo.gwID == zbGateWay.getGatewayBaseInfo.gwID) == null)
                                    if (gateWayList.Find(obj => obj.GwId == zbGateWay.GwId) == null)
                                    {
                                        //网关匹配当前住宅中到网关
                                        if (Shared.Common.Config.Instance.HomeId == homeID)
@@ -224,7 +220,7 @@
                                        //}
                                    }
                                    //网关列表存储处理
                                    var gateWay = ZbGateway.GateWayList.Find(obj => obj.getGatewayBaseInfo != null && obj.getGatewayBaseInfo.gwID == zbGateWay.getGatewayBaseInfo.gwID);
                                    var gateWay = ZbGateway.GateWayList.Find(obj => obj.GwId == zbGateWay.GwId);
                                    if (gateWay == null)
                                    {
                                        ZbGateway.GateWayList.Add(zbGateWay);
@@ -236,7 +232,7 @@
                                        gateWay.IsVirtual = false;
                                        //将该网关标识为【可搜索到,即:在线】
                                        gateWay.GatewayOnlineFlage = true;
                                        if (gateWay.getGatewayBaseInfo.IpAddress != ipAddress)
                                        if (gateWay.GwIP != ipAddress)
                                        {
                                            await gateWay.DisConnectLocalMqttClient("2");
                                            ZbGateway.GateWayList.Remove(gateWay);
@@ -247,25 +243,25 @@
                                        else
                                        {
                                            gateWay.PubKey = pubKey;
                                            gateWay.getGatewayBaseInfo.GwName = gwName;
                                            gateWay.getGatewayBaseInfo.HomeId = homeID;
                                            gateWay.GwName = gwName;
                                            gateWay.HomeId = homeID;
                                            await gateWay.StartLocalMqtt(ipAddress);
                                        }
                                        //主网关设置
                                        if (isMainGateWay && oldHomeID == gateWay.getGatewayBaseInfo.HomeId)
                                        if (isMainGateWay && oldHomeID == gateWay.HomeId)
                                        {
                                            for (int i = 0; i < ZbGateway.GateWayList.Count; i++)
                                            {
                                                var gw = ZbGateway.GateWayList[i];
                                                //网关ID不是当前的网关,则把网关列表中其他网关标记为不是主网关
                                                if (gw.getGatewayBaseInfo.gwID != id && oldHomeID == gw.getGatewayBaseInfo.HomeId)
                                                if (gw.GwId != id && oldHomeID == gw.HomeId)
                                                {
                                                    gw.getGatewayBaseInfo.IsMainGateWay = false;
                                                    gw.IsMainGateWay = false;
                                                }
                                            }
                                            //标记当前网关是主网关
                                            gateWay.getGatewayBaseInfo.IsMainGateWay = true;
                                            gateWay.IsMainGateWay = true;
                                        }
                                    }