wei
2020-12-17 bb6ad792b598927a5459a5fb6f6c27fb1aa9e94e
HDL_ON/Entity/Function/AC.cs
@@ -6,12 +6,12 @@
    public class AC : Function
    {
        /*
         * 空调:trait: [switch, mode, fan, temperature, swing, lock]
         * 空调:trait: [switch, mode, fan, set_temp, swing, lock]
         * 属性   描述
         * on_off   on/off
         * mode   mode: auto, cool, heat, dry, fan
         * fan   high, medium, low, auto
         * temperature   up,down,value
         * set_temp   up,down,value
         * swing   up/down/left/right
         * lock   boolean (Lock锁定控制)
         */
@@ -55,7 +55,7 @@
                try
                {
                    byte index = 0;
                    switch (trait_mode.value.ToString())
                    switch (trait_mode.curValue.ToString())
                    {
                        case "auto":
                            index = 3;
@@ -89,22 +89,22 @@
                switch (value)
                {
                    case 0:
                        trait_mode.value = "cool";
                        trait_mode.curValue = "cool";
                        break;
                    case 1:
                        trait_mode.value = "heat";
                        trait_mode.curValue = "heat";
                        break;
                    case 2:
                        trait_mode.value = "fan";
                        trait_mode.curValue = "fan";
                        break;
                    case 3:
                        trait_mode.value = "auto";
                        trait_mode.curValue = "auto";
                        break;
                    case 4:
                        trait_mode.value = "dry";
                        trait_mode.curValue = "dry";
                        break;
                    default:
                        trait_mode.value = "cool";
                        trait_mode.curValue = "cool";
                        break;
                }
@@ -122,7 +122,7 @@
                try
                {
                    byte index = 0;
                    switch (trait_fan.value.ToString())
                    switch (trait_fan.curValue.ToString())
                    {
                        case "high":
                            index = 1;
@@ -153,129 +153,139 @@
                switch (value)
                {
                    case 0:
                        trait_fan.value = "auto";
                        trait_fan.curValue = "auto";
                        break;
                    case 1:
                        trait_fan.value = "high";
                        trait_fan.curValue = "high";
                        break;
                    case 2:
                        trait_fan.value = "medium";
                        trait_fan.curValue = "medium";
                        break;
                    case 3:
                        trait_fan.value = "low";
                        trait_fan.curValue = "low";
                        break;
                    default:
                        trait_fan.value = "high";
                        trait_fan.curValue = "high";
                        break;
                }
            }
        }
        Trait _trait_mode;
        FunctionAttributes _trait_mode;
        /// <summary>
        /// 模式属性
        /// </summary>
        [Newtonsoft.Json.JsonIgnore]
        public Trait trait_mode
        public FunctionAttributes trait_mode
        {
            get
            {
                if (_trait_mode == null)
                {
                    _trait_mode = function.Find((obj) => obj.name == "mode");
                    _trait_mode = attributes.Find((obj) => obj.key == "mode");
                    //找不到属性需要声明一个,防止报错闪退
                    if (_trait_mode == null)
                    {
                        _trait_mode = new Trait()
                        _trait_mode = new FunctionAttributes()
                        {
                            name = "mode",
                            value_key = new List<string> { "auto", "cool", "heat", "dry", "fan" },
                            key = "mode",
                            value = new List<string> { "auto", "cool", "heat", "dry", "fan" },
                            max = 4,
                            min = 0,
                        };
                    }
                    _trait_mode.value = _trait_mode.value_key.Count > 0 ? _trait_mode.value_key[0] : "";
                    if (_trait_mode.curValue.ToString() == "{}")
                        _trait_mode.curValue = "cool";
                }
                return _trait_mode;
            }
        }
        Trait _trait_fan;
        FunctionAttributes _trait_fan;
        [Newtonsoft.Json.JsonIgnore]
        public Trait trait_fan
        public FunctionAttributes trait_fan
        {
            get
            {
                if (_trait_fan == null)
                {
                    _trait_fan = function.Find((obj) => obj.name == "fan");
                    _trait_fan = attributes.Find((obj) => obj.key == "fan");
                    //找不到属性需要声明一个,防止报错闪退
                    if (_trait_fan == null)
                    {
                        _trait_fan = new Trait()
                        _trait_fan = new FunctionAttributes()
                        {
                            name = "fan",
                            value_key = new List<string> { "high", "medium", "low", "auto" },
                            key = "fan",
                            value = new List<string> { "high", "medium", "low", "auto" },
                            max = 3,
                            min = 0,
                            curValue = "high"
                        };
                    }
                    _trait_fan.value = _trait_fan.value_key.Count > 0 ? _trait_fan.value_key[0] : "";
                    if (_trait_fan.curValue.ToString() == "{}")
                        _trait_fan.curValue = "high";
                }
                return _trait_fan;
            }
        }
        Trait _trait_temp;
        FunctionAttributes _trait_temp;
        /// <summary>
        /// 当前空调温度
        /// </summary>
        [Newtonsoft.Json.JsonIgnore]
        public Trait trait_temp
        public FunctionAttributes trait_temp
        {
            get
            {
                if (_trait_temp == null)
                {
                    _trait_temp = function.Find((obj) => obj.name == "temperature");
                    _trait_temp = attributes.Find((obj) => obj.key == "set_temp");
                    //找不到属性需要声明一个,防止报错闪退
                    if (_trait_temp == null)
                    {
                        _trait_temp = new Trait()
                        _trait_temp = new FunctionAttributes()
                        {
                            name = "temperature",
                            value_key = new List<string> { },
                            key = "set_temp",
                            value = new List<string> { },
                            max = 32,
                            min = 16,
                        };
                    }
                    _trait_temp.value = 16;
                    if (_trait_temp.curValue.ToString() == "{}")
                        _trait_temp.curValue = 16;
                }
                //if (_trait_temp.curValue.ToString().Length > 3)
                {
                    var vv = Convert.ToDouble(_trait_temp.curValue);
                    _trait_temp.curValue = Convert.ToInt32(vv);
                }
                return _trait_temp;
            }
        }
        Trait _trait_swting;
        FunctionAttributes _trait_swting;
        [Newtonsoft.Json.JsonIgnore]
        public Trait trait_swting
        public FunctionAttributes trait_swting
        {
            get
            {
                if (_trait_swting == null)
                {
                    _trait_swting = function.Find((obj) => obj.name == "swting");
                    _trait_swting = attributes.Find((obj) => obj.key == "swting");
                    //找不到属性需要声明一个,防止报错闪退
                    if (_trait_swting == null)
                    {
                        _trait_swting = new Trait()
                        _trait_swting = new FunctionAttributes()
                        {
                            name = "swting",
                            value_key = new List<string> { "up", "down", "left", "right" },
                            key = "swting",
                            value = new List<string> { "up", "down", "left", "right" },
                            max = 3,
                            min = 0,
                        };
                    }
                    _trait_swting.value = _trait_swting.value_key.Count > 0 ? _trait_swting.value_key[trait_mode.min] : "";
                    if (_trait_swting.curValue.ToString() == "{}")
                        _trait_swting.curValue = "up";
                }
                return _trait_swting;
            }
@@ -290,7 +300,7 @@
            {
                try
                {
                    return trait_swting.value_key;
                    return trait_swting.value;
                }
                catch (Exception ex)
                {
@@ -299,11 +309,40 @@
                }
            }
        }
        FunctionAttributes _trait_IndoorTemp;
        /// <summary>
        /// 室内温度
        /// </summary>
        [Newtonsoft.Json.JsonIgnore]
        public int indoorTemp = 20;
        public FunctionAttributes trait_IndoorTemp
        {
            get
            {
                if (_trait_IndoorTemp == null)
                {
                    _trait_IndoorTemp = attributes.Find((obj) => obj.key == FunctionAttributeKey.IndoorTemp);
                    //找不到属性需要声明一个,防止报错闪退
                    if (_trait_IndoorTemp == null)
                    {
                        _trait_IndoorTemp = new FunctionAttributes()
                        {
                            key = FunctionAttributeKey.IndoorTemp,
                            value = new List<string> { },
                            max = 30,
                            min = 0,
                        };
                    }
                    if (_trait_IndoorTemp.curValue.ToString() == "{}")
                        _trait_IndoorTemp.curValue = 0;
                }
                //if (_trait_IndoorTemp.curValue.ToString().Length > 3)
                {
                    var vv = Convert.ToDouble(_trait_IndoorTemp.curValue);
                    _trait_IndoorTemp.curValue = Convert.ToInt32(vv);
                }
                return _trait_IndoorTemp;
            }
        }
        /// <summary>
        /// 当前模式的icon路径
@@ -316,7 +355,7 @@
                try
                {
                    var imagePath = "FunctionIcon/AC/CoolIcon.png";
                    switch (trait_mode.value.ToString())
                    switch (trait_mode.curValue.ToString())
                    {
                        case "auto":
                            imagePath = "FunctionIcon/AC/AutoIcon.png";
@@ -357,7 +396,7 @@
                try
                {
                    var imagePath = "FunctionIcon/AC/WindHighIcon.png";
                    switch (trait_fan.value.ToString())
                    switch (trait_fan.curValue.ToString())
                    {
                        case "high":
                            imagePath = "FunctionIcon/AC/WindHighIcon.png";