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;
}
}
}