using System; using System.Collections.Generic; namespace HDL_ON.Entity { public class FloorHeating : Function { /* *地热:trait: [switch, mode, temperature, lock] *属性 描述 *switch on/off *mode day, night,away, vacation, timer *temperature value(只读) *lock boolean(Lock锁定控制) *set_ point up,down,value */ public FloorHeating() { } /// /// 当前温度模式 /// 0:摄氏度 /// 1:华氏度 /// [Newtonsoft.Json.JsonIgnore] public int curTempType = 0; /// /// 工作模式 /// 0:地热模式;1:地冷模式; /// 2:地热功率模式;3:地冷功率模式; /// public int workMode = 0; /// /// 当前温度模式字符 /// public string tempUnitString { get { if (curTempType == 0) { return "°C"; } else { return "°F"; } } } Trait _trait_mode; /// /// 模式属性 /// [Newtonsoft.Json.JsonIgnore] public Trait trait_mode { get { if (_trait_mode == null) { _trait_mode = function.Find((obj) => obj.name == "mode"); //找不到属性需要声明一个,防止报错闪退 if (_trait_mode == null) { _trait_mode = new Trait() { name = "mode", value_key = new List { "day", "night", "away", "vacation", "timer" }, max = 4, min = 0, }; } _trait_mode.value = _trait_mode.value_key.Count > 0 ? _trait_mode.value_key[0] : ""; } return _trait_mode; } } /// /// 工作模式对应的工作温度 /// [Newtonsoft.Json.JsonIgnore] public Dictionary modeTemp = new Dictionary(); /// /// 当前模式索引 /// bus控制命令使用 /// [Newtonsoft.Json.JsonIgnore] public byte curModeIndex { get { try { byte index = 0; switch (trait_mode.value.ToString()) { case "day": index = 2; break; case "night": index = 3; break; case "away": index = 4; break; case "normal": index = 1; break; case "timer": index = 5; break; default: index = 0; break; } return index; } catch (Exception ex) { MainPage.Log($"get curModeIndex error : {ex.Message}"); return 0; } } set { switch (value) { case 5: trait_mode.value = "timer"; break; case 1: trait_mode.value = "normal"; break; case 2: trait_mode.value = "day"; break; case 3: trait_mode.value = "night"; break; case 4: trait_mode.value = "away"; break; default: trait_mode.value = "cool"; break; } } } /// /// 时间标记 /// 0:白天;1:夜晚 /// public byte timeFlag = 0; /// /// 室内温度 /// [Newtonsoft.Json.JsonIgnore] public int indoorTemp = 20; Trait _trait_temperature; /// /// 当前温度 /// [Newtonsoft.Json.JsonIgnore] public double curTemp { get { try { if (_trait_temperature == null) { _trait_temperature = function.Find((obj) => obj.name == "temperature"); //找不到属性需要声明一个,防止报错闪退 if (_trait_temperature == null) { _trait_temperature = new Trait() { name = "temperature", value_key = new List(), max = 32, min = 5, }; } _trait_temperature.value = 5; } return 5; } catch (Exception ex) { MainPage.Log($"ac get temp error : {ex.Message}"); return 5; } } set { if (_trait_temperature == null) { _trait_temperature = function.Find((obj) => obj.name == "temperature"); //找不到属性需要声明一个,防止报错闪退 if (_trait_temperature == null) { _trait_temperature = new Trait() { name = "temperature", value_key = new List(), max = 4, min = 0, }; } _trait_temperature.value = _trait_temperature.value_key[_trait_temperature.min]; } _trait_temperature.value = value; } } /// /// 当前模式的icon路径 /// [Newtonsoft.Json.JsonIgnore] public string curModeImage { get { try { var imagePath = "FunctionIcon/AC/HeatingIcon.png"; switch (trait_mode.value) { case "day": imagePath = "FunctionIcon/AC/HeatingIcon.png"; break; case "night": imagePath = "FunctionIcon/FloorHeating/NightIcon.png"; break; case "away": imagePath = "FunctionIcon/FloorHeating/AwayIcon.png"; break; case "timer": imagePath = "FunctionIcon/AC/AutoIcon.png"; break; case "normal": imagePath = "FunctionIcon/FloorHeating/OrdinaryIcon.png"; break; default: imagePath = "FunctionIcon/AC/HeatingIcon.png"; break; } return imagePath; } catch (Exception ex) { MainPage.Log($"ac ge curModeImage error : {ex.Message}"); return "FunctionIcon/AC/CoolIcon.png"; } } } } }