using System; using System.Collections; using System.Collections.Generic; using Newtonsoft.Json.Linq; namespace HDL_ON.Entity { public class AC : Function { /* * 空调:trait: [switch, mode, fan, temperature, swing, lock] * 属性 描述 * on_off on/off * mode mode: auto, cool, heat, dry, fan * fan high, medium, low, auto * temperature up,down,value * swing up/down/left/right * lock boolean (Lock锁定控制) */ public AC() { } /// /// 当前温度模式 /// 0:摄氏度 /// 1:华氏度 /// [Newtonsoft.Json.JsonIgnore] public int curTempType = 0; /// /// 当前空调模式 /// [Newtonsoft.Json.JsonIgnore] public string curMode = "cool"; /// /// 当前模式索引 /// bus控制命令使用 /// public byte curModeIndex { get { try { byte index = 0; switch (curMode) { 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: curMode = "cool"; break; case 1: curMode = "heat"; break; case 2: curMode = "fan"; break; case 3: curMode = "auto"; break; case 4: curMode = "dry"; break; default: curMode = "cool"; break; } } } /// /// 当前风速索引 /// bus控制命令使用 /// [Newtonsoft.Json.JsonIgnore] public byte curFanIndex { get { try { byte index = 0; switch (curFan) { 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: curFan = "auto"; break; case 1: curFan = "high"; break; case 2: curFan = "medium"; break; case 3: curFan = "low"; break; default: curFan = "high"; break; } } } /// /// 空调模式 /// [Newtonsoft.Json.JsonIgnore] public List mode { get { try { //#if DEBUG // return new List { "cool", "heat", "dry", "fan", "auto"}; //#endif string b = ""; dicPropert.TryGetValue("mode", out b); if (b == "") { return new List { "auto", "cool", "heat", "dry", "fan" }; } return new List(b.Split(",")); } catch (Exception ex) { MainPage.Log($"ac get mode error : {ex.Message}"); return new List { "auto", "cool", "heat", "dry", "fan" }; } } set { try { dicPropert["mode"] = value.ToString(); } catch { MainPage.Log("mode 数据刷新失败."); } } } /// /// 当前空调风速 /// [Newtonsoft.Json.JsonIgnore] public string curFan = "high"; /// /// 空调风速模式 /// [Newtonsoft.Json.JsonIgnore] public List fan { get { try { //#if DEBUG // return new List { "high", "medium", "low", "auto" }; //#endif string b = ""; dicPropert.TryGetValue("fan", out b); if (b == "") { return new List { "high", "medium", "low", "auto" }; } return new List(b.Split(",")); } catch (Exception ex) { MainPage.Log($"ac get fan error : {ex.Message}"); return new List { "high", "medium", "low", "auto" }; } } } /// /// 当前空调温度 /// [Newtonsoft.Json.JsonIgnore] public int curTemp = 20; // temperature up, down, value // swing up/down/left/right [Newtonsoft.Json.JsonIgnore] public string curSwting; /// /// 空调扫风模式 /// [Newtonsoft.Json.JsonIgnore] public List swting { get { try { #if DEBUG return new List { "up", "down", "left", "right" }; #endif string b = ""; dicPropert.TryGetValue("swting", out b); if (b == "") { return new List { "up", "down", "left", "right" }; } return new List(b.Split(",")); } catch (Exception ex) { MainPage.Log($"ac get swting error : {ex.Message}"); return new List { "up", "down", "left", "right" }; } } } /// /// 室内温度 /// [Newtonsoft.Json.JsonIgnore] public int indoorTemp = 20; /// /// 当前模式的icon路径 /// [Newtonsoft.Json.JsonIgnore] public string curModeImage { get { try { var imagePath = "FunctionIcon/AC/CoolIcon.png"; switch (curMode) { 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 (curFan) { 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"; } } } /// /// 拼接、获取A协议操作数据 /// public override JObject GetSendJObject(CommandType_A command) { var sendJob = new JObject(); if (command == CommandType_A.write) { sendJob = new JObject { { "Namespace", vendor_code }, { "Command", command.ToString() }, { "Type", "device" } }; JObject data = new JObject { { "openLevel", dicPropert["openLevel"] }, { "sid", sid } }; sendJob.Add("objects", data); } else if (command == CommandType_A.read) { sendJob = new JObject { { "Namespace", vendor_code }, { "Command", command.ToString() }, { "Type", "device" } }; var data = new JObject { { "sid", sid } }; sendJob.Add("objects", data); } return sendJob; } } }