using System;
using Shared.SimpleControl;
namespace Shared
{
public class Thermostat : Common
{
public Thermostat ()
{
this.Type = DeviceType.Thermostat;
DeviceTextID = 527; //SimpleControl.R.MyInternationalizationString.CapillaryAC;
}
///
/// 主机号
///
public byte HostID = 1;
///
/// 分机号
///
public byte ExtensionID = 1;
///
/// 开/关机 0--关 1--开
///
public byte Power = 0;
///
/// 主机属性
/// 当前模式
/// 1-制冷,2-制热,3-通风,4-除湿,5-制热除湿
///
public byte CurrentMode = 0;
public string CurrentModeString {
get {
string str = "";
switch (CurrentMode) {
case 1:
str = "Cooling";
break;
case 2:
str = "Heating";
break;
case 3:
str = "Aeration";
break;
case 4:
str = "Dehumidification";
break;
case 5:
str = "HeatingAndDehumidification";
break;
}
return str;
}
}
///
/// 主机属性
/// 当前场景
/// 1-在家,2-离家,3-睡眠
///
public byte CurrentScene = 0;
public string CurrentSceneString {
get {
var str = "";
switch (CurrentScene) {
case 1:
str = "atHome";
break;
case 2:
str = "awayHome";
break;
case 3:
str = "sleep";
break;
}
return str;
}
}
///
/// 主机属性
/// 湿度等级
/// 1-低,2-中,3-高(只在制热模式下可以设置)
///
public byte HumidityLevel = 0;
///
/// 主机属性
/// 滤网(%)
///
public byte StrainerState = 100;
///
/// 主机属性
/// 分机总数
///
public byte ExtensionCount = 32;
///
/// 主机属性
/// 故障信息1
///
public int FaultInformation1 = 0;
///
/// 主机属性
/// 故障信息2
///
public int FaultInformation2 = 0;
///
/// 主机属性
/// 故障信息3
///
public int FaultInformation3 = 0;
///
/// 主机属性
/// 故障信息4
///
public int FaultInformation4 = 0;
///
/// 主机属性
/// 故障信息5
///
public int FaultInformation5 = 0;
///
/// 主机属性
/// 故障信息6
///
public int FaultInformation6 = 0;
///
/// 模拟量激活位 从低位开始 如bit0对应温控器环境温度值
///
public byte AnalogActivationByte = 0;
public byte AnalogActivationByte2 = 0;
public bool Temperature_Enable {
get { return Convert.ToString (AnalogActivationByte, 2) [0] == 0; }
}
///
/// 设置的环境温度值
///
public float Setting_Temperature_Values {
get {
//int data = Setting_Temperature_Values1 << 24 | Setting_Temperature_Values2 << 16 | Setting_Temperature_Values3 << 8 | Setting_Temperature_Values4;
//int nSign;
//if ((data & 0x80000000) > 0) {
// nSign = -1;
//} else {
// nSign = 1;
//}
//int nExp = data & (0x7F800000);
//nExp = nExp >> 23;
//float nMantissa = data & (0x7FFFFF);
//if (nMantissa != 0)
// nMantissa = 1 + nMantissa / 8388608;
//float value = nSign * nMantissa * (2 << (nExp - 128));
//return value;
//return CommonPage.floatChange (Setting_Temperature_Values4, Setting_Temperature_Values3, Setting_Temperature_Values2, Setting_Temperature_Values1);
try {
return CommonPage.floatChange (Setting_Temperature_Values1, Setting_Temperature_Values2, Setting_Temperature_Values3, Setting_Temperature_Values4);
} catch {
return 0;
}
}
}
public byte Setting_Temperature_Values1 = 0;
public byte Setting_Temperature_Values2 = 0;
public byte Setting_Temperature_Values3 = 0;
public byte Setting_Temperature_Values4 = 0;
///
/// 设置的环境湿度值
///
public float Setting_Humidity_Values {
//get {return CommonPage.floatChange (Setting_Humidity_Values4, Setting_Humidity_Values3, Setting_Humidity_Values2, Setting_Humidity_Values1); }
get {
try {
return CommonPage.floatChange (Setting_Humidity_Values1, Setting_Humidity_Values2, Setting_Humidity_Values3, Setting_Humidity_Values4);
} catch {
return 0;
}
}
}
public byte Setting_Humidity_Values1 = 0;
public byte Setting_Humidity_Values2 = 0;
public byte Setting_Humidity_Values3 = 0;
public byte Setting_Humidity_Values4 = 0;
///
/// 室内温度
///
public float Indoor_Temperature_Values {
//get { return CommonPage.floatChange (Indoor_Temperature_Values4, Indoor_Temperature_Values3, Indoor_Temperature_Values2, Indoor_Temperature_Values1); }
get {
try {
return CommonPage.floatChange (Indoor_Temperature_Values1, Indoor_Temperature_Values2, Indoor_Temperature_Values3, Indoor_Temperature_Values4);
} catch {
return 0;
}
//set {
// //Float
// Indoor_Temperature_Values = value;
//}
}
}
public byte Indoor_Temperature_Values1 = 0;
public byte Indoor_Temperature_Values2 = 0;
public byte Indoor_Temperature_Values3 = 0;
public byte Indoor_Temperature_Values4 = 0;
///
/// 室外温度
///
public float Outdoor_Temperature_Values {
//get { return CommonPage.floatChange (Outdoor_Temperature_Values4, Outdoor_Temperature_Values3, Outdoor_Temperature_Values2, Outdoor_Temperature_Values1); }
get {
try {
return CommonPage.floatChange (Outdoor_Temperature_Values1, Outdoor_Temperature_Values2, Outdoor_Temperature_Values3, Outdoor_Temperature_Values4);
} catch {
return 0;
}
}
}
public byte Outdoor_Temperature_Values1 = 0;
public byte Outdoor_Temperature_Values2 = 0;
public byte Outdoor_Temperature_Values3 = 0;
public byte Outdoor_Temperature_Values4 = 0;
///
/// 室内湿度
///
public float Indoor_Humidity_Values {
//get { return CommonPage.floatChange (Outdoor_Humidity_Values4, Outdoor_Humidity_Values3, Outdoor_Humidity_Values2, Outdoor_Humidity_Values1); }
get {
try {
return CommonPage.floatChange (Indoor_Humidity_Values1, Indoor_Humidity_Values2, Indoor_Humidity_Values3, Indoor_Humidity_Values4);
} catch {
return 0;
}
}
}
public byte Indoor_Humidity_Values1 = 0;
public byte Indoor_Humidity_Values2 = 0;
public byte Indoor_Humidity_Values3 = 0;
public byte Indoor_Humidity_Values4 = 0;
///
/// 室外湿度
///
public float Outdoor_Humidity_Values {
//get { return CommonPage.floatChange (Outdoor_Humidity_Values4, Outdoor_Humidity_Values3, Outdoor_Humidity_Values2, Outdoor_Humidity_Values1); }
get {
try {
return CommonPage.floatChange (Outdoor_Humidity_Values1, Outdoor_Humidity_Values2, Outdoor_Humidity_Values3, Outdoor_Humidity_Values4);
} catch {
return 0;
}
}
}
public byte Outdoor_Humidity_Values1 = 0;
public byte Outdoor_Humidity_Values2 = 0;
public byte Outdoor_Humidity_Values3 = 0;
public byte Outdoor_Humidity_Values4 = 0;
///
/// 室内PM25
///
public float Indoor_PM25_Values {
//get { return CommonPage.floatChange (Indoor_PM25_Values4, Indoor_PM25_Values3, Indoor_PM25_Values2, Indoor_PM25_Values1); }
get {
try {
return CommonPage.floatChange (Indoor_PM25_Values1, Indoor_PM25_Values2, Indoor_PM25_Values3, Indoor_PM25_Values4);
} catch {
return 0;
}
}
}
public byte Indoor_PM25_Values1 = 0;
public byte Indoor_PM25_Values2 = 0;
public byte Indoor_PM25_Values3 = 0;
public byte Indoor_PM25_Values4 = 0;
///
/// 室外PM25
///
public float Outdoor_PM25_Values {
get {
try {
return CommonPage.floatChange (Outdoor_PM25_Values1, Outdoor_PM25_Values2, Outdoor_PM25_Values3, Outdoor_PM25_Values4);
} catch {
return 0;
}
}
//get { return CommonPage.floatChange (Outdoor_PM25_Values4, Outdoor_PM25_Values3, Outdoor_PM25_Values2, Outdoor_PM25_Values1); }
}
public byte Outdoor_PM25_Values1 = 0;
public byte Outdoor_PM25_Values2 = 0;
public byte Outdoor_PM25_Values3 = 0;
public byte Outdoor_PM25_Values4 = 0;
///
/// 室内二氧化碳
///
public float Indoor_CO2_Values {
get {
try {
return CommonPage.floatChange (Indoor_CO2_Values1, Indoor_CO2_Values2, Indoor_CO2_Values3, Indoor_CO2_Values4);
} catch {
return 0;
}
}
//get { return CommonPage.floatChange (Indoor_CO2_Values4, Indoor_CO2_Values3, Indoor_CO2_Values2, Indoor_CO2_Values1); }
}
public byte Indoor_CO2_Values1 = 0;
public byte Indoor_CO2_Values2 = 0;
public byte Indoor_CO2_Values3 = 0;
public byte Indoor_CO2_Values4 = 0;
///
/// 室内TVOC
///
public float Indoor_TVOC_Values {
get {
try {
return CommonPage.floatChange (Indoor_TVOC_Values1, Indoor_TVOC_Values2, Indoor_TVOC_Values3, Indoor_TVOC_Values4);
} catch {
return 0;
}
}
}
public byte Indoor_TVOC_Values1 = 0;
public byte Indoor_TVOC_Values2 = 0;
public byte Indoor_TVOC_Values3 = 0;
public byte Indoor_TVOC_Values4 = 0;
///
/// 设置温控器属性
///
public byte [] SetExtension ()
{
///
/// 控制温控器分机指令
/// 发送
/// 1 通道号 1-255
/// 2 温控器分机开/关机 0-关机,1-开机
/// 3 模拟量激活位 从低位开始 如bit0对应温控器环境温度值
/// 4-7 温控器分机设置温度值 浮点型数据 ℃ IEEE 754浮点数
/// 8-11 温控器分机湿度值 浮点型数据 % IEEE 754浮点数
/// 回复
/// 1 通道号 1-255
/// 2 温控器开/关机 0-关机,1-开机
/// 3 模拟量激活位 从低位开始 如bit0对应温控器环境温度值
/// 4-7 温控器环境温度值 浮点型数据 ℃ IEEE 754浮点数
/// 8-11 温控器设置温度值 浮点型数据 ℃ IEEE 754浮点数
/// 12-15 温控器环境湿度值 浮点型数据 % IEEE 754浮点数
/// 16-19 温控器设置湿度值 浮点型数据 % IEEE 754浮点数
///
var setRecBytes = Control.ControlBytesSendHasReturn (Command.SetThermostatExtension, SubnetID, DeviceID, new byte [] {this.ExtensionID,this.Power,this.AnalogActivationByte,
this.Setting_Temperature_Values1,this.Setting_Temperature_Values2,this.Setting_Temperature_Values3,this.Setting_Temperature_Values4,
this.Setting_Humidity_Values1,this.Setting_Humidity_Values2,this.Setting_Humidity_Values3,this.Setting_Humidity_Values4 });
return setRecBytes;
}
public byte[] SetHost()
{
///
/// 控制温控器主机指令
/// 发送
/// 1 通道号
/// 2 开/关机 0--关 1--开
/// 3 运行模式 1-制冷,2-制热,3-通风,4-除湿,5-制热除湿
/// 4 运行场景 1-在家,2-离家,3-睡眠
/// 5 湿度档位 1-低,2-中,3-高(只在制热模式下可以设置)
/// 回复
/// 1 通道号
/// 2 开/关机 0--关 1--开
/// 3 运行模式 1-制冷,2-制热,3-通风,4-除湿,5-制热除湿
/// 4 运行场景 1-在家,2-离家,3-睡眠
/// 5 湿度档位 1-低,2-中,3-高(只在制热模式下可以设置)
/// 6 滤网百分比 %
/// 7 温控器分机数量 1-32
/// 8-9 故障信息1
/// 10-11 故障信息2
/// 12-13 故障信息3
/// 14-15 故障信息4
/// 16-17 故障信息5
/// 18-19 故障信息6
/// 20-21 模拟量激活位 从低位开始,如enable[0] 的bit0--->室内温度
/// 22-25 模拟量1(bit0)室内温度 浮点型数据 IEEE 754浮点数
/// 26-29 模拟量2(bit1)室内湿度 浮点型数据 0-100 % IEEE 754浮点数
/// 30-33 模拟量3(bit2)室内CO2 浮点型数据 PPM IEEE 754浮点数
/// 34-37 模拟量4(bit3)室内TVOC 浮点型数据 级 IEEE 754浮点数
/// 38-41 模拟量5(bit4)室内PM2.5 浮点型数据 PPM IEEE 754浮点数
/// 42-45 模拟量6(bit5)室外温度 浮点型数据 IEEE 754浮点数
/// 46-49 模拟量7(bit6)室外湿度 浮点型数据 0-100 % IEEE 754浮点数
/// 50-53 模拟量8(bit7)室外PM2.5 浮点型数据 PPM IEEE 754浮点数
///
var setRecBytes = Control.ControlBytesSendHasReturn (Command.SetThermostatHost, SubnetID, DeviceID, new byte [] { this.HostID, this.Power, this.CurrentMode, this.CurrentScene, this.HumidityLevel});
return setRecBytes;
}
}
}