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