wei
2021-03-04 2ae36ddb40d28c62b64a2fdd4c3033e7d65d5cfb
HDL_ON/DAL/DriverLayer/Control_Udp.cs
@@ -156,35 +156,7 @@
        /// </summary>
        public void ControlBusScenes(Scene scene)
        {
            if (Control.Ins.IsRemote)
            {
                foreach (var f in scene.functions)
                {
                    var count = 0;
                    List<ApiAlinkControlActionObj> actionObjs = new List<ApiAlinkControlActionObj>();
                    Dictionary<string, string> d = new Dictionary<string, string>();
                    var pm = new DAL.Server.HttpServerRequest();
                    foreach (var temp in f.status)
                    {
                        if (f.localFunction == null)
                        {
                            continue;
                        }
                        d.Add(temp.key, temp.value);
                        var apiControlData = f.localFunction.GetApiControlData(d);
                        actionObjs.Add(apiControlData);
                        count++;
                        if (count > 9)
                        {
                            var result = pm.ControlDevice(actionObjs);
                            actionObjs = new List<ApiAlinkControlActionObj>();
                            count = 0;
                        }
                    }
                    var pack = pm.ControlDevice(actionObjs);
                }
            }
            else
            if(Control.Ins.GatewayOnline_Local)
            {
                foreach (var f in scene.functions)
                {
@@ -226,14 +198,14 @@
                                        tempAc.trait_on_off.curValue = attr.value;
                                        break;
                                    case FunctionAttributeKey.Mode:
                                        tempAc.trait_mode.curValue = attr.value;
                                        tempAc.SetAttrState(FunctionAttributeKey.Mode, attr.value);
                                        break;
                                    case FunctionAttributeKey.FanSpeed:
                                        tempAc.trait_fan.curValue = attr.value;
                                        tempAc.SetAttrState(FunctionAttributeKey.FanSpeed, attr.value);
                                        break;
                                    case FunctionAttributeKey.SetTemp:
                                        tempAc.trait_temp.curValue = attr.value;
                                        switch (tempAc.curModeIndex)
                                        tempAc.SetAttrState(FunctionAttributeKey.SetTemp, attr.value);
                                        switch (tempAc.curModeIndex())
                                        {
                                            case 3:
                                                modeKey = 8;
@@ -254,9 +226,9 @@
                                        break;
                                }
                                ControlBytesSend(Command.InstructionPanelKey, f.localFunction.bus.SubnetID, f.localFunction.bus.DeviceID, new byte[] { 3, tempAc.trait_on_off.curValue.ToString() == "on" ? (byte)1 : (byte)0, f.localFunction.bus.LoopId });
                                ControlBytesSend(Command.InstructionPanelKey, f.localFunction.bus.SubnetID, f.localFunction.bus.DeviceID, new byte[] { 6, tempAc.curModeIndex, f.localFunction.bus.LoopId });
                                ControlBytesSend(Command.InstructionPanelKey, f.localFunction.bus.SubnetID, f.localFunction.bus.DeviceID, new byte[] { 5, tempAc.curFanIndex, f.localFunction.bus.LoopId });
                                ControlBytesSend(Command.InstructionPanelKey, f.localFunction.bus.SubnetID, f.localFunction.bus.DeviceID, new byte[] { modeKey, Convert.ToByte(tempAc.trait_temp.curValue), f.localFunction.bus.LoopId });
                                ControlBytesSend(Command.InstructionPanelKey, f.localFunction.bus.SubnetID, f.localFunction.bus.DeviceID, new byte[] { 6, tempAc.curModeIndex(), f.localFunction.bus.LoopId });
                                ControlBytesSend(Command.InstructionPanelKey, f.localFunction.bus.SubnetID, f.localFunction.bus.DeviceID, new byte[] { 5, tempAc.curFanIndex(), f.localFunction.bus.LoopId });
                                ControlBytesSend(Command.InstructionPanelKey, f.localFunction.bus.SubnetID, f.localFunction.bus.DeviceID, new byte[] { modeKey, Convert.ToByte(tempAc.GetAttrState(FunctionAttributeKey.SetTemp)), f.localFunction.bus.LoopId });
                            }
                            break;
                        case SPK.LightSwitch:
@@ -330,6 +302,34 @@
                            }
                            break;
                    }
                }
            }
            else
            {
                foreach (var f in scene.functions)
                {
                    var count = 0;
                    List<ApiAlinkControlActionObj> actionObjs = new List<ApiAlinkControlActionObj>();
                    Dictionary<string, string> d = new Dictionary<string, string>();
                    var pm = new DAL.Server.HttpServerRequest();
                    foreach (var temp in f.status)
                    {
                        if (f.localFunction == null)
                        {
                            continue;
                        }
                        d.Add(temp.key, temp.value);
                        var apiControlData = f.localFunction.GetApiControlData(d);
                        actionObjs.Add(apiControlData);
                        count++;
                        if (count > 9)
                        {
                            var result = pm.ControlDevice(actionObjs);
                            actionObjs = new List<ApiAlinkControlActionObj>();
                            count = 0;
                        }
                    }
                    var pack = pm.ControlDevice(actionObjs);
                }
            }
        }
@@ -468,7 +468,7 @@
                        {
                            case SPK.AcStandard:
                                var aC = function as AC;
                                ControlBytesSend(Command.SetACMode, subnetId, deviceId, new byte[] { aC.bus.LoopId, (byte)aC.curTempType, 32, 32, 32, 32, 32, 0, aC.trait_on_off.curValue.ToString() == "on" ? (byte)1 : (byte)0, aC.curModeIndex, aC.curFanIndex, Convert.ToByte(aC.trait_temp.curValue), 0 });
                                ControlBytesSend(Command.SetACMode, subnetId, deviceId, new byte[] { aC.bus.LoopId, (byte)aC.curTempType, 32, 32, 32, 32, 32, 0, aC.trait_on_off.curValue.ToString() == "on" ? (byte)1 : (byte)0, aC.curModeIndex(), aC.curFanIndex(), Convert.ToByte(aC.GetAttrState(FunctionAttributeKey.SetTemp)), 0 });
                                //ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { 3, aC.on_off == "on" ? (byte)1 : (byte)0, aC.bus_Data.loopId });
                                foreach (var dic in commandDictionary)
                                {
@@ -478,14 +478,14 @@
                                            ControlBytesSend(Command.InstructionPanelKey, aC.bus.SubnetID, aC.bus.DeviceID, new byte[] { 3, aC.trait_on_off.curValue.ToString() == "on" ? (byte)1 : (byte)0, aC.bus.LoopId });
                                            break;
                                        case "mode":
                                            ControlBytesSend(Command.InstructionPanelKey, aC.bus.SubnetID, aC.bus.DeviceID, new byte[] { 6, aC.curModeIndex, aC.bus.LoopId });
                                            ControlBytesSend(Command.InstructionPanelKey, aC.bus.SubnetID, aC.bus.DeviceID, new byte[] { 6, aC.curModeIndex(), aC.bus.LoopId });
                                            break;
                                        case "fan":
                                            ControlBytesSend(Command.InstructionPanelKey, aC.bus.SubnetID, aC.bus.DeviceID, new byte[] { 5, aC.curFanIndex, aC.bus.LoopId });
                                            ControlBytesSend(Command.InstructionPanelKey, aC.bus.SubnetID, aC.bus.DeviceID, new byte[] { 5, aC.curFanIndex(), aC.bus.LoopId });
                                            break;
                                        case "temp":
                                            byte modeKey = 4;
                                            switch (aC.curModeIndex)
                                            switch (aC.curModeIndex())
                                            {
                                                case 3:
                                                    modeKey = 8;
@@ -503,7 +503,7 @@
                                                    modeKey = 2;
                                                    break;
                                            }
                                            ControlBytesSend(Command.InstructionPanelKey, aC.bus.SubnetID, aC.bus.DeviceID, new byte[] { modeKey, Convert.ToByte(aC.trait_temp.curValue), aC.bus.LoopId });
                                            ControlBytesSend(Command.InstructionPanelKey, aC.bus.SubnetID, aC.bus.DeviceID, new byte[] { modeKey, Convert.ToByte(aC.GetAttrState(FunctionAttributeKey.SetTemp)), aC.bus.LoopId });
                                            break;
                                        default:
                                            MainPage.Log($"功能未支持 : {dic.Key}");