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()
|
{
|
}
|
/// <summary>
|
/// 当前温度模式
|
/// 0:摄氏度
|
/// 1:华氏度
|
/// </summary>
|
[Newtonsoft.Json.JsonIgnore]
|
public int curTempType = 0;
|
|
/// <summary>
|
/// 当前空调模式
|
/// </summary>
|
[Newtonsoft.Json.JsonIgnore]
|
public string curMode = "cool";
|
|
/// <summary>
|
/// 当前模式索引
|
/// bus控制命令使用
|
/// </summary>
|
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;
|
|
}
|
}
|
}
|
/// <summary>
|
/// 当前风速索引
|
/// bus控制命令使用
|
/// </summary>
|
[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;
|
}
|
}
|
}
|
|
/// <summary>
|
/// 空调模式
|
/// </summary>
|
[Newtonsoft.Json.JsonIgnore]
|
public List<string> mode
|
{
|
get
|
{
|
try
|
{
|
//#if DEBUG
|
// return new List<string> { "cool", "heat", "dry", "fan", "auto"};
|
//#endif
|
string b = "";
|
dicPropert.TryGetValue("mode", out b);
|
if (b == "")
|
{
|
return new List<string> { "auto", "cool", "heat", "dry", "fan" };
|
}
|
return new List<string>(b.Split(","));
|
}
|
catch (Exception ex)
|
{
|
MainPage.Log($"ac get mode error : {ex.Message}");
|
return new List<string> { "auto", "cool", "heat", "dry", "fan" };
|
}
|
}
|
set
|
{
|
try
|
{
|
dicPropert["mode"] = value.ToString();
|
}
|
catch
|
{
|
MainPage.Log("mode 数据刷新失败.");
|
}
|
}
|
}
|
|
/// <summary>
|
/// 当前空调风速
|
/// </summary>
|
[Newtonsoft.Json.JsonIgnore]
|
public string curFan = "high";
|
|
/// <summary>
|
/// 空调风速模式
|
/// </summary>
|
[Newtonsoft.Json.JsonIgnore]
|
public List<string> fan
|
{
|
get
|
{
|
try
|
{
|
//#if DEBUG
|
// return new List<string> { "high", "medium", "low", "auto" };
|
//#endif
|
string b = "";
|
dicPropert.TryGetValue("fan", out b);
|
if (b == "")
|
{
|
return new List<string> { "high", "medium", "low", "auto" };
|
}
|
return new List<string>(b.Split(","));
|
}
|
catch (Exception ex)
|
{
|
MainPage.Log($"ac get fan error : {ex.Message}");
|
return new List<string> { "high", "medium", "low", "auto" };
|
}
|
}
|
}
|
/// <summary>
|
/// 当前空调温度
|
/// </summary>
|
[Newtonsoft.Json.JsonIgnore]
|
public int curTemp = 20;
|
// temperature up, down, value
|
// swing up/down/left/right
|
[Newtonsoft.Json.JsonIgnore]
|
public string curSwting;
|
/// <summary>
|
/// 空调扫风模式
|
/// </summary>
|
[Newtonsoft.Json.JsonIgnore]
|
public List<string> swting
|
{
|
get
|
{
|
try
|
{
|
#if DEBUG
|
return new List<string> { "up", "down", "left", "right" };
|
#endif
|
string b = "";
|
dicPropert.TryGetValue("swting", out b);
|
if (b == "")
|
{
|
return new List<string> { "up", "down", "left", "right" };
|
}
|
return new List<string>(b.Split(","));
|
}
|
catch (Exception ex)
|
{
|
MainPage.Log($"ac get swting error : {ex.Message}");
|
return new List<string> { "up", "down", "left", "right" };
|
}
|
}
|
}
|
/// <summary>
|
/// 室内温度
|
/// </summary>
|
[Newtonsoft.Json.JsonIgnore]
|
public int indoorTemp = 20;
|
|
/// <summary>
|
/// 当前模式的icon路径
|
/// </summary>
|
[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";
|
}
|
}
|
}
|
/// <summary>
|
/// 当前风速的icon路径
|
/// </summary>
|
[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";
|
}
|
}
|
}
|
/// <summary>
|
/// 拼接、获取A协议操作数据
|
/// </summary>
|
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;
|
}
|
|
|
|
}
|
}
|