mac
2024-07-25 3f6685c77beeb12baf840733fb890860f4c26e7c
HDL_ON/DAL/DriverLayer/Control.cs
@@ -536,7 +536,7 @@
                        var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ControlFunctionTopic, functionControlDataJson);
                        new Control_Udp().SendLocalHdlLinkData(sendBytes, functionControlDataObj.id, resend);
                        MainPage.Log($"本地通讯 发送HDL-Link数据:{functionControlDataJson}");
                            Ins.myTcpClient.SendMessage(sendBytes);
                            //Ins.myTcpClient.SendMessage(sendBytes);
                    }
                }
                //远程通讯
@@ -626,6 +626,10 @@
            {
                foreach (var temp in functions)
                {
                    if((temp.trait_on_off.state.ToString() ==  "on" && open)|| temp.trait_on_off.state.ToString() == "off"&& !open)
                    {
                        continue;
                    }
                    var apiControlData = temp.GetApiControlData(d);
                    actionObjs.Add(apiControlData);
                    count++;
@@ -637,7 +641,10 @@
                        System.Threading.Thread.Sleep(100);
                    }
                }
                var pack = pm.ControlDevice(actionObjs);
                if (actionObjs.Count > 0)
                {
                    var pack = pm.ControlDevice(actionObjs);
                }
            }
        }
@@ -725,8 +732,18 @@
                }
                else
                {
                    var pm = new DAL.Server.HttpServerRequest();
                    var pack = pm.RefreshDeviceStatus(new List<string>() { function.deviceId });
                    var pm = new HttpServerRequest();
                    try
                    {
                        pm.RefreshDeviceStatus(new List<string>() { function.deviceId });
                    }catch(Exception ex)
                    {
                        MainPage.Log($"远程读取设备状态异常:{ex.Message}");
                    }
                    finally
                    {
                        pm = null;
                    }
                }
            }
        }
@@ -863,7 +880,7 @@
                        },
                    time_stamp = Utlis.GetTimestamp()
                };
                var aLinkJson = Newtonsoft.Json.JsonConvert.SerializeObject(aLinkData);
                var aLinkJson = JsonConvert.SerializeObject(aLinkData);
                var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ControlScene, aLinkJson);
                new Control_Udp().SendLocalHdlLinkData(sendBytes, aLinkData.id, 0);
            }
@@ -1012,7 +1029,7 @@
                if (receiveObj.Topic == CommunicationTopic.ct.HeartBeat + "_reply")
                {
                    Ins.myTcpClient.ClearHeartBeatLog();
                    //Ins.myTcpClient.ClearHeartBeatLog();
                    MainPage.Log("tcp心跳回复");
                    return null;
                }
@@ -1120,6 +1137,7 @@
                    receiveObj.Topic.Contains(CommunicationTopic.ct.GatewayUpSortTopic))
                {
                    //TODO 暂时不传正确的数据上去,如果后面要优化前面这些代码
                    //Console.WriteLine($"{receiveObj.Topic}\r\n{receiveObj.BodyDataString}");
                    UpdataFunctionStatus(receiveObj.BodyDataString, null);
                }
                else if (receiveObj.Topic == CommunicationTopic.ct.ControlSeurity + "_reply"
@@ -1229,7 +1247,7 @@
                        {
                            continue;
                        }
                        MainPage.Log($"收到数据:{revString}");
                        MainPage.Log($"收到群控数据:{revString}");
                        foreach (var attr in updateTemp.status)
                        {
                            localFunction.time_stamp = temp.time_stamp;
@@ -1305,16 +1323,6 @@
                        }
                        MainPage.Log(localFunction.name);
                        if (Ins.GatewayOnline_Local && isCloudData)//本地链接,除了涂鸦设备数据之外的云端数据不处理
                        {
                            if (!SPK.Get3tySpk(SPK.BrandType.All3tyBrand).Contains(localFunction.spk) && !SPK.MusicSpkList().Contains(localFunction.spk))
                            {
                                //MainPage.Log($"A协议更新状态:本地链接,除了涂鸦设备数据之外的云端数据不处理........");
                                return;
                            }
                        }
                        //if (SPK.MusicSpkList().Contains(localFunction.spk))
                        //{
                        //    if (updateTemp.status.Count < 3)
@@ -1335,6 +1343,11 @@
                        {
                            localFunction.online = updateTemp.online;
                        }
                        if (SPK.LightSpkList().Contains(localFunction.spk))
                        {
                            localFunction.updateTime = DateTime.Now;
                        }
                        //更新界面状态
                        switch (localFunction.spk)
@@ -1479,11 +1492,13 @@
                                FloorHeatingPage.UpdataStates(localFunction);
                                break;
                            case SPK.SensorPm25:
                            case SPK.SensorPm10:
                            case SPK.SensorCO2:
                            case SPK.SensorTVOC:
                            case SPK.SensorTemperature:
                            case SPK.SensorHumidity:
                            case SPK.SensorHcho:
                            case SPK.SensorLight:
                                if (localFunction.spk == SPK.SensorTemperature)
                                {
                                    HomePage.LoadEvent_RefreshEnvirIndoorTemp();
@@ -1524,7 +1539,6 @@
                            case SPK.ElectricTuyaWeepRobot2:
                            case SPK.ElectricTuyaWaterValve:
                            case SPK.ElectricTuyaWaterValve2:
                            case SPK.SensorPir:
                            case SPK.SensorDoorWindow:
                            case SPK.SensorSmoke:
                            case SPK.SensorWater:
@@ -1539,6 +1553,22 @@
                                //状态更新
                                Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid, updateTemp.status);
                                break;
                            case SPK.SensorPir:
                            case SPK.SensorPirHold:
                                var tempPirStatus = localFunction.attributes.Find((sta) => sta.key == "people_status");
                                if (tempPirStatus != null)
                                {
                                    if(tempPirStatus.state == "true")
                                    {
                                        localFunction.lastState = Language.StringByID(StringId.Someone);
                                    }
                                    else
                                    {
                                        localFunction.lastState = Language.StringByID(StringId.wuren);
                                    }
                                }
                                Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid, updateTemp.status);
                                break;
                            case SPK.SenesorMegahealth:
                            case SPK.SenesorMegahealth2:
                            case SPK.SensorMmvPose:
@@ -1550,7 +1580,7 @@
                                    switch (tempStatus.state)
                                    {//0空,1走,2跑,3坐,4跌倒,5站
                                        case "0":
                                            localFunction.lastState = Language.StringByID(StringId.SensorNormalState);
                                            localFunction.lastState = Language.StringByID(StringId.wuren);
                                            break;
                                        case "1":
                                            localFunction.lastState = Language.StringByID(StringId.SomeoneIn);
@@ -1587,6 +1617,17 @@
                            case SPK.MusicStandard:
                                //UI.Music.MusicMain.mMusicMain.RefreshView(updateTemp);
                                Console.WriteLine("音乐播放器显示状态=======" + revString);
                                foreach (var music in UI.Music.A31MusicModel.A31MusicModelList)//每次收到数据都要更新一下时间
                                {
                                    if (music.functionMusic.sid == localFunction.sid)
                                    {
                                        music.LastDateTime = DateTime.Now;
                                    }
                                }
                                if (UI.Music.A31MusicModel.Current != null)
                                {
                                    UI.Music.A31MusicModel.Current.LastDateTime = DateTime.Now;
                                }
                                //wjc
                                break;
                            case SPK.Inverter:
@@ -1599,6 +1640,7 @@
                                break;
                        }
                        HomePage.UpdataFunctionStates(localFunction);
                        RoomPage.UpdataStates(localFunction);
                        FunctionPage.UpdataStates(localFunction);