wxr
2023-07-06 203c3a3ffde6259413d9743f6a723b95b1e7989c
HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -204,6 +204,12 @@
                        Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/irCodeStudyDone/up",
                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
                    };
                    //App订阅群控状态主题
                    var groupControlStatus = new MqttTopicFilter()
                    {
                        Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/device/group/control/property/send",
                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
                    };
                    #region 数据更新推送主题
@@ -262,6 +268,11 @@
                        topicFilterPush2, topicAlinkStatus ,mqttkeyChange,
                        deviceOnlinePush,
                        securityStatusChange});
                    //订阅群控状态
                    if (DB_ResidenceData.Instance.HomeGateway.isSupportGroupControl)
                    {
                        await RemoteMqttClient.SubscribeAsync(groupControlStatus);
                    }
                    if (result.Items[0].ResultCode == MQTTnet.Client.Subscribing.MqttClientSubscribeResultCode.GrantedQoS0)
                    {
                        isSubscribeSuccess = true;
@@ -323,10 +334,12 @@
        /// </summary>
        public static async Task StartCloudMqtt()
        {
            if (MainPage.InternetStatus == 0)
            //没有网络的状态下尝试一下连接mqtt ,安卓的网络状态变化监听有异常,修改底层麻烦
            if (MainPage.InternetStatus == 0 && MainPage.LinkHdlMqttCount > 1)
            {
                return;
            }
            MainPage.LinkHdlMqttCount++;
            if (!UserInfo.Current.IsLogin)
            {
@@ -361,7 +374,7 @@
                            try
                            {
                                var topic = e.ApplicationMessage.Topic;
                                //MainPage.Log($"收到mqtt主题:{topic}");
                                MainPage.Log($"收到mqtt主题:{topic}");
                                //一端口主题处理
                                if (DB_ResidenceData.Instance.GatewayType == 0 && !DB_ResidenceData.Instance.CheckWhetherGatewayIdIsNull())
                                {
@@ -444,10 +457,10 @@
                                }
                                #region 数据更新推送主题
                                //appHomeRefresh:住宅数据刷新通知
                                else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/appHomeRefresh/up"
                                        || topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/appDeviceRefresh/up")
                                else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/appHomeRefresh/up")
                                {
                                    MainPage.Log("住宅数据刷新通知");
                                    System.Threading.Thread.Sleep(2000);
                                    new HttpServerRequest().GetHomePager();
                                }
                                //appRoomRefresh:房间数据刷新通知
@@ -562,11 +575,18 @@
                                    }
                                }
                                #endregion
                                //群控状态
                                else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/device/group/control/property/send")
                                {
                                    var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey);
                                    var revString = Encoding.UTF8.GetString(bytes);
                                    MainPage.Log($"mqtt 群控状态更新:{revString}");
                                    Control.Ins.UpdataGroupControlStatus(revString, null, true);
                                }
                                //A网关设备状态-包含涂鸦设备
                                //Tag 网络状态解析
                                else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/property/send")
                                {
                                    var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey);
                                    var revString = Encoding.UTF8.GetString(bytes);
                                    MainPage.Log($"mqtt 状态更新:{revString}");
@@ -618,6 +638,10 @@
                        {
                            IfNeedReadAllDeviceStatus = true;
                            Control.Ins.GatewayOnline_Cloud = true;
                            if(MainPage.InternetStatus == 0)
                            {
                                MainPage.InternetStatus = 1;
                            }
                            Utlis.WriteLine($"============>Mqtt远程连接成功");
                            SendPushSignOut();
                        });
@@ -659,7 +683,7 @@
                }
                catch (Exception ex)
                {
                    Utlis.WriteLine($"error:" + ex.Message);
                    Utlis.WriteLine($"mqtt连接异常 error:" + ex.Message);
                    //mqtt连接异常,清空本地mqtt信息,可能需要重新获取:wxr
                    MqttInfoConfig.Current.Refresh();
                }
@@ -847,7 +871,7 @@
        static void ReceiveNotifySqueezeAsync(string mMes)
        {
#if DEBUG
            return;
            //return;
#endif
            if (mMes == PushSignStr) return;//是自己的登录推送不处理//或者当前不是远程链接状态
            //测试账号,不挤下线