HDL Home App 第二版本 旧平台金堂用 正在使用
xm
2019-11-29 315e336680efe5c654726c2cdae630146fe5c99c
ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs
old mode 100755 new mode 100644
@@ -3177,7 +3177,7 @@
                       .WithTcpServer(brokerName, 1883)
                       .WithKeepAlivePeriod(TimeSpan.FromSeconds(20))
                       .WithCleanSession()
                        .WithCommunicationTimeout(TimeSpan.FromSeconds(4))
                        //.WithCommunicationTimeout(TimeSpan.FromSeconds(10))
                       .WithCredentials("", "")
                       .Build();
                                    await localMqttClient.ConnectAsync(options, CancellationToken.None);
@@ -3358,7 +3358,7 @@
                            {
                                DebugPrintLog($"远程连接断开");
                                await DisConnectRemoteMqttClient("StartRemoteMqtt.DisconnectedHandler");
                                await StartRemoteMqtt();
                                //await StartRemoteMqtt();
                            });
                        }
                        if (RemoteMqttClient.ConnectedHandler == null)
@@ -3447,7 +3447,7 @@
           .WithCredentials(connEmqUserName, connEmqPwd)
           .WithKeepAlivePeriod(TimeSpan.FromSeconds(20))
           .WithCleanSession()
           .WithCommunicationTimeout(TimeSpan.FromSeconds(6))
           //.WithCommunicationTimeout(TimeSpan.FromSeconds(10))
           .Build();
                                await DisConnectRemoteMqttClient("StartRemoteMqtt");
                                await RemoteMqttClient.ConnectAsync(options, CancellationToken.None);
@@ -3601,9 +3601,7 @@
                        //文件流不用加密
                        if (topic != "FileTransfer/SendFile")
                        {
                            topic = ZigBee.Common.SecuritySet.AesEncrypt(System.Text.Encoding.UTF8.GetBytes(topic), Password);
                            topic = topic.Replace("/", "[[$-MQTT_TILT_SYMBOL_REPLACE-$]]").Replace("+", "[[$-MQTT_PLUS_SYMBOL_REPLACE-$]]");
                            message = System.Text.Encoding.UTF8.GetBytes(SecuritySet.AesEncrypt(message, password));
                            message = SecuritySet.AesEncryptBytes(message, password);
                        }
                    }
                    if (localIsConnected)
@@ -3614,6 +3612,7 @@
                        }
                        catch(Exception e)
                        {
                            DebugPrintLog($"Local主动断开_{e.Message}");
                            await DisConnectLocalMqttClient(e.Message);
                            await StartLocalMqtt("ReConnect");
                            if (localIsConnected)
@@ -3665,7 +3664,6 @@
            try
            {
                var topic = e.ApplicationMessage.Topic.TrimStart('/');
                topic = topic.Replace("[[$-MQTT_TILT_SYMBOL_REPLACE-$]]", "/").Replace("[[$-MQTT_PLUS_SYMBOL_REPLACE-$]]", "+");
                var payload = e.ApplicationMessage.Payload;
                var message = string.Empty;
@@ -3728,38 +3726,35 @@
            try
            {
                var topic = e.ApplicationMessage.Topic;
                topic = topic.Replace("[[$-MQTT_TILT_SYMBOL_REPLACE-$]]", "/").Replace("[[$-MQTT_PLUS_SYMBOL_REPLACE-$]]", "+");
                var message = System.Text.Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
                string payloadString = "";
                if (IsEncry)
                {
                    //主题
                    topic = Common.SecuritySet.AesDecrypt(System.Text.Encoding.UTF8.GetBytes(topic), Password);
                    //下载的字节流不需要解密
                    if (topic.Split('/')[0] + "/" + topic.Split('/')[1] == topic.Split('/')[0] + "/" + "FileTransfer")
                    {
                        if (topic.Split('/')[2] != "DownloadFile")
                        {
                            message = Common.SecuritySet.AesDecrypt(e.ApplicationMessage.Payload, Password);
                            payloadString = System.Text.Encoding.UTF8.GetString(Common.SecuritySet.AesDecryptBytes(e.ApplicationMessage.Payload, Password));
                        }
                    }
                    else if (topic == topic.Split('/')[0] + "/" + "SendAESKey_Respon") { }//回复主题是秘文,数据是明文
                    else
                    {
                        message = Common.SecuritySet.AesDecrypt(e.ApplicationMessage.Payload, Password);
                        payloadString = System.Text.Encoding.UTF8.GetString(Common.SecuritySet.AesDecryptBytes(e.ApplicationMessage.Payload, Password));
                    }
                }
#if DEBUG
                DebugPrintLog($"网关返回的主题:{topic}_网关返回的负载:{message}_{System.DateTime.Now.ToString()}");
#endif
                ReceiveMessage(topic, message, e.ApplicationMessage.Payload);
                else
                {
                    payloadString = System.Text.Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
                }
                DebugPrintLog($"网关返回的主题:{topic}_网关返回的负载:{payloadString}");
                ReceiveMessage(topic, payloadString, e.ApplicationMessage.Payload);
            }
            catch (Exception ex)
            {
#if DEBUG
                DebugPrintLog($"接收网关数据异常:{ex.Message}");
#endif
            }
        }