wei
2021-06-02 e13a9980ce617db1394a76944186c5d5bd595d5d
HDL_ON/DAL/DriverLayer/Control.cs
@@ -229,7 +229,7 @@
        public void SearchLoaclGateway()
        {
            //2021-01-15 : 住宅没有绑定网关的时候不用搜索,并且不能链接mqtt
            if(DB_ResidenceData.Instance.HomeGateway == null)
            if(DB_ResidenceData.Instance.HomeGateway == null || string.IsNullOrEmpty(DB_ResidenceData.Instance.HomeGateway.gatewayId))
            {
                return;
            }
@@ -336,7 +336,7 @@
                }
            }
            MainPage.Log($"发送数据:{Newtonsoft.Json.JsonConvert.SerializeObject(commandDictionary)}");
            //MainPage.Log($"发送数据:{Newtonsoft.Json.JsonConvert.SerializeObject(commandDictionary)}");
            ///第三方涂鸦设备统一使用远程控制
            switch(function.spk)
@@ -561,7 +561,7 @@
            string sendDataString = topicString + lengthString + bodyDataString;
            byte[] sendDataBytes = Encoding.ASCII.GetBytes(sendDataString);
            //MainPage.Log($"转换HDL-Link数据\r\n{sendDataString}\r\n");
            MainPage.Log($"转换HDL-Link数据\r\n{sendDataString}\r\n");
            return sendDataBytes;
        }
@@ -602,7 +602,7 @@
                    }
                }
                //MainPage.Log($"局域网信息: {receiveObj.Topic}");
                MainPage.Log($"局域网信息: {receiveObj.Topic}  : 内容: {res[1]}");
                //验证有效数据长度
@@ -613,17 +613,18 @@
                //}
                receiveObj.BodyDataString = res[1];
                var bodyJObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack>(res[1]);
                if (bodyJObj == null)
                {
                    return receiveObj;
                }
                if (receiveObj.Topic == CommunicationTopic.SearchLoaclGatewayReply)
                {
                    var device = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceModule>(bodyJObj.objects.ToString());
                    if (device.device_mac == DB_ResidenceData.Instance.residenceGatewayMAC)
                    var bodyJObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack>(res[1]);
                    if (bodyJObj == null)
                    {
                        //MainPage.Log("本地搜索网关成功");
                        return receiveObj;
                    }
                    var device = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceModule>(bodyJObj.objects.ToString());
                    if (device.device_mac.ToUpper() == DB_ResidenceData.Instance.HomeGateway.mac.ToUpper())
                    {
                        MainPage.Log("本地搜索网关成功");
                        Ins.IsSearchLocalGatewaySuccessful = true;
                        Ins.GatewayOnline_Local = true;
                        if (!string.IsNullOrEmpty(device.gatewayId))
@@ -634,7 +635,7 @@
                        {
                            Ins.GatewayId = device.device_mac;
                        }
                        reportIp = "239.0.168.188";// device.ip_address;
                        reportIp = "239.0.168.188";// device.ip_address;//主播地址也能控制设备
                    }
                }
                else if (receiveObj.Topic == CommunicationTopic.ct.ReadStatus + "_reply" ||
@@ -643,6 +644,11 @@
                {
                    //TODO 暂时不传正确的数据上去,如果后面要优化前面这些代码
                    UpdataFunctionStatus(receiveObj.BodyDataString, null);
                }
                else
                {
                    //一些特殊的主题处理(为了执行速度,尽可能的别加耗时的操作)
                    Stan.HdlCloudReceiveLogic.Current.CloudOverallMsgReceiveEx(receiveObj.Topic, receiveObj.BodyDataString);
                }
            }
            return receiveObj;
@@ -697,6 +703,9 @@
                        Function localObj = null;
                        switch (localFunction.spk)
                        {
                            case SPK.ElectricEnergy:
                                EnergyMainPage.UpdataStatus(localFunction);
                                break;
                            case SPK.LightSwitch:
                                RelayPage.UpdataState(localFunction);
                                break;
@@ -803,36 +812,18 @@
                            case SPK.SensorTVOC:
                            case SPK.SensorTemperature:
                            case SPK.SensorHumidity:
                                var sensor = FunctionList.List.GetEnvirSensorsList().Find((obj) => obj.sid == updateTemp.sid);
                                if (sensor != null)
                                if(localFunction.spk == SPK.SensorTemperature)
                                {
                                    localObj = sensor;
                                    foreach (var attr in updateTemp.status)
                                    {
                                        var localAttr = sensor.attributes.Find((obj) => obj.key == attr.key);
                                        if (localAttr != null)
                                        {
                                            localAttr.curValue = attr.value;
                                        }
                                    }
                                    EnvironmentalSciencePage.LoadEvent_UpdataStatus(sensor);
                                    HomePage.LoadEvent_RefreshEnvirIndoorTemp();
                                }
                                else if (localFunction.spk == SPK.SensorHumidity)
                                {
                                    HomePage.LoadEvent_RefreshEnvirIndoorHumi();
                                }
                                EnvironmentalPage.LoadEvent_UpdataStatus(localFunction);
                                break;
                            case SPK.ElectricSocket:
                                var es = FunctionList.List.GetElectricSocketList().Find((obj) => obj.sid == updateTemp.sid);
                                if (es != null)
                                {
                                    localObj = es;
                                    foreach (var attr in updateTemp.status)
                                    {
                                        var localAttr = es.attributes.Find((obj) => obj.key == attr.key);
                                        if (localAttr != null)
                                        {
                                            localAttr.curValue = attr.value;
                                        }
                                    }
                                    SocketPage.UpdataState(es);
                                }
                                SocketPage.UpdataState(localFunction);
                                break;
                            case SPK.ElectricTV:
                                break;
@@ -845,7 +836,7 @@
                            case SPK.SensorSmoke:
                            case SPK.SensorWater:
                            case SPK.ClothesHanger:
                            case SPK.IrAC:
                            case SPK.AcIr:
                                //设备状态推送
                                Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid, updateTemp.status);
                                break;