using System;
|
using Shared.SimpleControl;
|
|
namespace Shared
|
{
|
public class Thermostat : Common
|
{
|
public Thermostat ()
|
{
|
this.Type = DeviceType.Thermostat;
|
DeviceTextID = 527; //SimpleControl.R.MyInternationalizationString.CapillaryAC;
|
|
}
|
/// <summary>
|
/// 主机号
|
/// </summary>
|
public byte HostID = 1;
|
|
/// <summary>
|
/// 分机号
|
/// </summary>
|
public byte ExtensionID = 1;
|
|
/// <summary>
|
/// 开/关机 0--关 1--开
|
/// </summary>
|
public byte Power = 0;
|
|
/// <summary>
|
/// 主机属性
|
/// 当前模式
|
/// 1-制冷,2-制热,3-通风,4-除湿,5-制热除湿
|
/// </summary>
|
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;
|
}
|
}
|
|
/// <summary>
|
/// 主机属性
|
/// 当前场景
|
/// 1-在家,2-离家,3-睡眠
|
/// </summary>
|
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;
|
}
|
}
|
|
/// <summary>
|
/// 主机属性
|
/// 湿度等级
|
/// 1-低,2-中,3-高(只在制热模式下可以设置)
|
/// </summary>
|
public byte HumidityLevel = 0;
|
|
/// <summary>
|
/// 主机属性
|
/// 滤网(%)
|
/// </summary>
|
public byte StrainerState = 100;
|
|
/// <summary>
|
/// 主机属性
|
/// 分机总数
|
/// </summary>
|
public byte ExtensionCount = 32;
|
|
/// <summary>
|
/// 主机属性
|
/// 故障信息1
|
/// </summary>
|
public int FaultInformation1 = 0;
|
/// <summary>
|
/// 主机属性
|
/// 故障信息2
|
/// </summary>
|
public int FaultInformation2 = 0;
|
/// <summary>
|
/// 主机属性
|
/// 故障信息3
|
/// </summary>
|
public int FaultInformation3 = 0;
|
/// <summary>
|
/// 主机属性
|
/// 故障信息4
|
/// </summary>
|
public int FaultInformation4 = 0;
|
/// <summary>
|
/// 主机属性
|
/// 故障信息5
|
/// </summary>
|
public int FaultInformation5 = 0;
|
/// <summary>
|
/// 主机属性
|
/// 故障信息6
|
/// </summary>
|
public int FaultInformation6 = 0;
|
|
/// <summary>
|
/// 模拟量激活位 从低位开始 如bit0对应温控器环境温度值
|
/// </summary>
|
public byte AnalogActivationByte = 0;
|
public byte AnalogActivationByte2 = 0;
|
|
public bool Temperature_Enable {
|
get { return Convert.ToString (AnalogActivationByte, 2) [0] == 0; }
|
}
|
|
/// <summary>
|
/// 设置的环境温度值
|
/// </summary>
|
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;
|
/// <summary>
|
/// 设置的环境湿度值
|
/// </summary>
|
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;
|
|
|
/// <summary>
|
/// 室内温度
|
/// </summary>
|
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;
|
/// <summary>
|
/// 室外温度
|
/// </summary>
|
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;
|
|
|
/// <summary>
|
/// 室内湿度
|
/// </summary>
|
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;
|
/// <summary>
|
/// 室外湿度
|
/// </summary>
|
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;
|
|
|
/// <summary>
|
/// 室内PM25
|
/// </summary>
|
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;
|
/// <summary>
|
/// 室外PM25
|
/// </summary>
|
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;
|
|
|
|
/// <summary>
|
/// 室内二氧化碳
|
/// </summary>
|
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;
|
|
/// <summary>
|
/// 室内TVOC
|
/// </summary>
|
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;
|
|
|
/// <summary>
|
/// 设置温控器属性
|
/// </summary>
|
public byte [] SetExtension ()
|
{
|
/// <summary>
|
/// 控制温控器分机指令
|
/// 发送
|
/// 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浮点数
|
/// </summary>
|
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()
|
{
|
/// <summary>
|
/// 控制温控器主机指令
|
/// 发送
|
/// 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浮点数
|
/// </summary>
|
var setRecBytes = Control.ControlBytesSendHasReturn (Command.SetThermostatHost, SubnetID, DeviceID, new byte [] { this.HostID, this.Power, this.CurrentMode, this.CurrentScene, this.HumidityLevel});
|
return setRecBytes;
|
|
}
|
|
}
|
}
|