mac
2024-07-25 3f6685c77beeb12baf840733fb890860f4c26e7c
HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -13,6 +13,8 @@
using HDL_ON.UI;
using HDL_ON.DAL.Server;
using HDL_ON;
using Newtonsoft.Json;
using System.Collections.Generic;
namespace HDL_ON.DAL.Mqtt
{
@@ -111,7 +113,7 @@
            {
                MqttInfoConfig.Current.IfGetMqttInfoSuccess = false;
            }
            Control.Ins.GatewayOnline_Cloud = Control.Ins.GatewayOnline_Local = false;
            //Control.Ins.GatewayOnline_Cloud = Control.Ins.GatewayOnline_Local = false;
            await DisConnectRemoteMqttClient(s);
        }
@@ -145,6 +147,7 @@
                        await StartCloudMqtt();
                        await SubscribeTopics();
                    }
                    catch { }
                }
@@ -158,6 +161,7 @@
        public static void InitState()
        {
            IfNeedReadAllDeviceStatus = true;
            Common.ApiUtlis.Ins.hadInternet = true;
            StartCloudMqtt();
        }
@@ -337,7 +341,13 @@
        public static async Task StartCloudMqtt()
        {
            //没有网络的状态下尝试一下连接mqtt ,安卓的网络状态变化监听有异常,修改底层麻烦
            if (MainPage.InternetStatus == 0 && MainPage.LinkHdlMqttCount > 1)
            if (MainPage.InternetStatus == 0 && MainPage.LinkHdlMqttCount > 1 )
            {
                return;
            }
            if (!Common.ApiUtlis.Ins.hadInternet)
            {
                return;
            }
@@ -363,6 +373,26 @@
            await Task.Factory.StartNew((Func<Task>)(async () => {
                try
                {
                    try
                    {
                        //增加3秒云服务器连接检测,连不上服务器的时候不刷新数据
                        var dataList = new List<GlobalRegionListRes>();
                        var requestJson = HttpUtil.GetSignRequestJson(new GetRegionListObj() { regionMark = HttpUtil.RegionMark });
                        var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_GlobalRegionList, requestJson, HttpUtil.GlobalRequestHttpsHost, "", 3);
                        if (revertObj == null || revertObj.Code != StateCode.SUCCESS)
                        {
                            Common.ApiUtlis.Ins.hadInternet = false;
                            return;
                        }
                        else
                        {
                            Common.ApiUtlis.Ins.hadInternet = true;
                        }
                    }
                    catch
                    {
                    }
                    #region 初始化远程Mqtt
                    RemoteMqttIsConnecting = true;
                    RemoteMqttClient = new MqttFactory().CreateMqttClient();
@@ -491,48 +521,6 @@
                                else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/appDeviceRefresh/up")
                                {
                                    MainPage.Log("设备数据刷新通知");
                                    var deviceResult = new HttpServerRequest().GetDeviceList();
                                    if (deviceResult.Code == StateCode.SUCCESS)
                                    {
                                        MainPage.Log($"读取设备信息成功");
                                        var deviceList = Newtonsoft.Json.JsonConvert.DeserializeObject<DevcieApiPack>(deviceResult.Data.ToString());
                                        if (deviceList == null)
                                        {
                                            deviceList = new DevcieApiPack();
                                        }
                                        string delFile = "";
                                        if (FunctionList.List.GetDeviceFunctionList().Count > 0)
                                        {
                                            for (int i = 0; i < FunctionList.List.GetDeviceFunctionList().Count;)
                                            {
                                                var localFunction = FunctionList.List.GetDeviceFunctionList()[i];
                                                if (SPK.MusicSpkList().Contains(localFunction.spk))
                                                {
                                                    i++;
                                                    continue;
                                                }
                                                var newFunction = deviceList.list.Find((obj) => obj.deviceId == localFunction.deviceId);
                                                if (delFile == localFunction.savePath)
                                                {
                                                    i++;
                                                    continue;
                                                }
                                                delFile = localFunction.savePath;
                                                FunctionList.List.DeleteFunction(localFunction);
                                            }
                                        }
                                        //处理剩下的新增功能
                                        foreach (var newFunction in deviceList.list)
                                        {
                                            newFunction.SaveFunctionFile();
                                            FunctionList.List.IniFunctionList(newFunction.savePath);
                                        }
                                    }
                                    else
                                    {
                                        MainPage.Log($"读取云端设备数据失败:Code:{deviceResult.Code};  Msg:{deviceResult.message}");
                                    }
                                }
                                //网关密钥变化
                                else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/custom/mqtt/secret/change")
@@ -591,7 +579,7 @@
                                {
                                    var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey);
                                    var revString = Encoding.UTF8.GetString(bytes);
                                    MainPage.Log($"mqtt 状态更新:{revString}");
                                    //MainPage.Log($"mqtt 状态更新:{revString}");
                                    Control.Ins.UpdataFunctionStatus(revString, null, true);
                                    //Control.Ins.MsgInfoList.Add($"mqtt 状态更新:{revString}");
                                    //Control.Ins.MsgInfoList.Add(revString + "\r\n");
@@ -872,15 +860,11 @@
        /// </summary>
        static void ReceiveNotifySqueezeAsync(string mMes)
        {
#if DEBUG
            //return;
#endif
            if (mMes == PushSignStr) return;//是自己的登录推送不处理//或者当前不是远程链接状态
            //测试账号,不挤下线
            switch (UserInfo.Current.userMobileInfo)
            {
                case "15626203746":
                case "464027401@qq.com":
                    return;
            }
@@ -931,9 +915,7 @@
        static void SendPushSignOut()
        {
            byte[] message = Encoding.UTF8.GetBytes(PushSignStr);
#if DEBUG
            MqttRemoteSend(message, 4);
#endif
        }
        /// <summary>
@@ -1021,7 +1003,7 @@
                MqttInfoConfig.Current.mMqttInfo = mqttInfoRequestResult_Obj;
                await MQTTConnectAsync();
                //await MQTTConnectAsync();
                //1.判断是否绑定了网关,获取网关远程连接的加密KEY
                //if (DB_ResidenceData.Instance.CheckWhetherGatewayIsBound())
                {