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