using System; using System.Collections.Generic; namespace HDL_ON.Entity { public class AC : Function { /* * 空调:trait: [switch, mode, fan, set_temp, swing, lock] * 属性 描述 * on_off on/off * mode mode: auto, cool, heat, dry, fan * fan high, medium, low, auto * set_temp up,down,value * swing up/down/left/right * lock boolean (Lock锁定控制) */ public AC() { } /// /// 当前温度模式 /// 0:摄氏度 /// 1:华氏度 /// [Newtonsoft.Json.JsonIgnore] public int curTempType = 0; /// /// 当前温度模式字符 /// public string tempUnitString { get { if (curTempType == 0) { return "°C"; } else { return "°F"; } } } /// /// 当前模式索引 /// bus控制命令使用 /// [Newtonsoft.Json.JsonIgnore] public byte curModeIndex { get { try { byte index = 0; switch (trait_mode.curValue.ToString()) { case "auto": index = 3; break; case "cool": index = 0; break; case "heat": index = 1; break; case "dry": index = 4; break; case "fan": index = 2; break; default: index = 0; break; } return index; } catch (Exception ex) { MainPage.Log($"get curModeIndex error : {ex.Message}"); return 0; } } set { switch (value) { case 0: trait_mode.curValue = "cool"; break; case 1: trait_mode.curValue = "heat"; break; case 2: trait_mode.curValue = "fan"; break; case 3: trait_mode.curValue = "auto"; break; case 4: trait_mode.curValue = "dry"; break; default: trait_mode.curValue = "cool"; break; } } } /// /// 当前风速索引 /// bus控制命令使用 /// [Newtonsoft.Json.JsonIgnore] public byte curFanIndex { get { try { byte index = 0; switch (trait_fan.curValue.ToString()) { case "high": index = 1; break; case "medium": index = 2; break; case "low": index = 3; break; case "auto": index = 0; break; default: index = 0; break; } return index; } catch (Exception ex) { MainPage.Log($"get curFanIndex error : {ex.Message}"); return 0; } } set { switch (value) { case 0: trait_fan.curValue = "auto"; break; case 1: trait_fan.curValue = "high"; break; case 2: trait_fan.curValue = "medium"; break; case 3: trait_fan.curValue = "low"; break; default: trait_fan.curValue = "high"; break; } } } FunctionAttributes _trait_mode; /// /// 模式属性 /// [Newtonsoft.Json.JsonIgnore] public FunctionAttributes trait_mode { get { if (_trait_mode == null) { _trait_mode = attributes.Find((obj) => obj.key == "mode"); //找不到属性需要声明一个,防止报错闪退 if (_trait_mode == null) { _trait_mode = new FunctionAttributes() { key = "mode", value = new List { "auto", "cool", "heat", "dry", "fan" }, max = 4, min = 0, }; } } if (_trait_mode.curValue.ToString() == "{}") _trait_mode.curValue = "cool"; return _trait_mode; } } FunctionAttributes _trait_fan; [Newtonsoft.Json.JsonIgnore] public FunctionAttributes trait_fan { get { if (_trait_fan == null) { _trait_fan = attributes.Find((obj) => obj.key == "fan"); //找不到属性需要声明一个,防止报错闪退 if (_trait_fan == null) { _trait_fan = new FunctionAttributes() { key = "fan", value = new List { "high", "medium", "low", "auto" }, max = 3, min = 0, curValue = "high" }; } } if (_trait_fan.curValue.ToString() == "{}") _trait_fan.curValue = "high"; return _trait_fan; } } FunctionAttributes _trait_temp; /// /// 当前空调温度 /// [Newtonsoft.Json.JsonIgnore] public FunctionAttributes trait_temp { get { if (_trait_temp == null) { _trait_temp = attributes.Find((obj) => obj.key == "set_temp"); //找不到属性需要声明一个,防止报错闪退 if (_trait_temp == null) { _trait_temp = new FunctionAttributes() { key = "set_temp", value = new List { }, max = 32, min = 16, }; } if (_trait_temp.curValue.ToString() == "{}") _trait_temp.curValue = 16; } //if (_trait_temp.curValue.ToString().Length > 3) { double vv = 16; Double.TryParse(_trait_temp.curValue.ToString(),out vv); _trait_temp.curValue = Convert.ToInt32(vv); } return _trait_temp; } } FunctionAttributes _trait_swting; [Newtonsoft.Json.JsonIgnore] public FunctionAttributes trait_swting { get { if (_trait_swting == null) { _trait_swting = attributes.Find((obj) => obj.key == "swting"); //找不到属性需要声明一个,防止报错闪退 if (_trait_swting == null) { _trait_swting = new FunctionAttributes() { key = "swting", value = new List { "up", "down", "left", "right" }, max = 3, min = 0, }; } if (_trait_swting.curValue.ToString() == "{}") _trait_swting.curValue = "up"; } return _trait_swting; } } /// /// 空调扫风模式列表 /// [Newtonsoft.Json.JsonIgnore] public List swting { get { try { return trait_swting.value; } catch (Exception ex) { MainPage.Log($"ac get swting error : {ex.Message}"); return new List { "up", "down", "left", "right" }; } } } FunctionAttributes _trait_IndoorTemp; /// /// 室内温度 /// [Newtonsoft.Json.JsonIgnore] 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 { }, 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; } } /// /// 当前模式的icon路径 /// [Newtonsoft.Json.JsonIgnore] public string curModeImage { get { try { var imagePath = "FunctionIcon/AC/CoolIcon.png"; switch (trait_mode.curValue.ToString()) { case "auto": imagePath = "FunctionIcon/AC/AutoIcon.png"; break; case "cool": imagePath = "FunctionIcon/AC/CoolIcon.png"; break; case "heat": imagePath = "FunctionIcon/AC/HeatingIcon.png"; break; case "dry": imagePath = "FunctionIcon/AC/DehumidificationIcon.png"; break; case "fan": imagePath = "FunctionIcon/AC/AirSupplyIcon.png"; break; default: imagePath = "FunctionIcon/AC/CoolIcon.png"; break; } return imagePath; } catch (Exception ex) { MainPage.Log($"ac ge curModeImage error : {ex.Message}"); return "FunctionIcon/AC/CoolIcon.png"; } } } /// /// 当前风速的icon路径 /// [Newtonsoft.Json.JsonIgnore] public string curFanImage { get { try { var imagePath = "FunctionIcon/AC/WindHighIcon.png"; switch (trait_fan.curValue.ToString()) { case "high": imagePath = "FunctionIcon/AC/WindHighIcon.png"; break; case "medium": imagePath = "FunctionIcon/AC/WindMediumIcon.png"; break; case "low": imagePath = "FunctionIcon/AC/WindLowIcon.png"; break; case "auto": imagePath = "FunctionIcon/AC/AutoIcon.png"; break; default: imagePath = "FunctionIcon/AC/WindHighIcon.png"; break; } return imagePath; }catch (Exception ex) { MainPage.Log($"ac get curFanImage error : {ex.Message}"); return "FunctionIcon/AC/WindHighIcon.png"; } } } } }