public Device AddStatusGraphicField(int startValue, int endValue, string graphicsPath = "") { if (endValue == -1) { //Create single graphic var vgPair = new VSVGPairs.VGPair { PairType = VSVGPairs.VSVGPairType.SingleValue, Set_Value = startValue, Graphic = graphicsPath }; _hs.DeviceVGP_AddPair(Id, vgPair); } else if (endValue > 0) { var vgPair = new VSVGPairs.VGPair { PairType = VSVGPairs.VSVGPairType.Range, RangeStart = startValue, RangeEnd = endValue, Graphic = graphicsPath }; _hs.DeviceVGP_AddPair(Id, vgPair); } return(this); }
static internal bool Structure_Devices(Structures structure, string thermId, List <DeviceDataPoint> deviceList, bool createDevices) { string name; string id; foreach (var ddPoint in deviceList) { id = GetDeviceKeys(ddPoint.device, out name); if (id == thermId && name == "Structure") { Update_StructureDevice(structure, ddPoint); return(false); } } if (!createDevices) { Log("Missing Homeseer device: " + structure.name + " please click on the Create Homeseer devices button on the Nest plugin configuration page", LogType.LOG_TYPE_WARNING); return(false); } var dv = GenericHomeSeerDevice("Structure", structure.name, thermId, false); var dvRef = dv.get_Ref(hs); id = GetDeviceKeys(dv, out name); dv.MISC_Set(hs, Enums.dvMISC.SHOW_VALUES); VSVGPairs.VSPair SPair = default(VSVGPairs.VSPair); SPair = new VSVGPairs.VSPair(ePairStatusControl.Both); SPair.PairType = VSVGPairs.VSVGPairType.SingleValue; SPair.Render = Enums.CAPIControlType.Button; SPair.Value = 0; SPair.Status = "Away"; SPair.Render_Location.Row = 1; SPair.Render_Location.Column = 2; hs.DeviceVSP_AddPair(dvRef, SPair); SPair.Value = 1; SPair.Status = "Home"; SPair.Render_Location.Row = 1; SPair.Render_Location.Column = 2; hs.DeviceVSP_AddPair(dvRef, SPair); VSVGPairs.VGPair GPair = new VSVGPairs.VGPair(); GPair.PairType = VSVGPairs.VSVGPairType.Range; GPair.RangeStart = 0; GPair.RangeEnd = 1; GPair.Graphic = "/images/HomeSeer/contemporary/home.png"; hs.DeviceVGP_AddPair(dvRef, GPair); return(true); }
protected static IList <VSVGPairs.VGPair> GetGraphicsPairsForEnum(Type enumType) { var pairs = new List <VSVGPairs.VGPair>(); foreach (var value in Enum.GetValues(enumType)) { var pair = new VSVGPairs.VGPair() { PairType = VSVGPairs.VSVGPairType.SingleValue, Graphic = Path.Combine(WUWeatherData.ImagesPathRoot, Invariant($"{value.ToString().ToLowerInvariant()}.png")), Set_Value = (int)value, }; pairs.Add(pair); } return(pairs); }
static internal bool Camera_Devices(string cString, Camera camera, List <DeviceDataPoint> deviceList, bool createDevices) { string name; string id; foreach (var ddPoint in deviceList) { id = GetDeviceKeys(ddPoint.device, out name); if (id == camera.device_id && name == cString) { Update_CameraDevice(camera, ddPoint); return(false); } } if (!createDevices) { Log("Missing Homeseer device: " + cString + " please click on the Create Homeseer devices button on the Nest plugin configuration page", LogType.LOG_TYPE_WARNING); return(false); } var dv = GenericHomeSeerDevice(cString, camera.name_long, camera.device_id, cString.Equals("Is Streaming")); var dvRef = dv.get_Ref(hs); id = GetDeviceKeys(dv, out name); switch (name) { case "Is Streaming": { dv.set_Relationship(hs, Enums.eRelationship.Parent_Root); dv.set_Device_Type_String(hs, "Nest Root Camera"); dv.MISC_Set(hs, Enums.dvMISC.SHOW_VALUES); VSVGPairs.VSPair SPair = default(VSVGPairs.VSPair); SPair = new VSVGPairs.VSPair(ePairStatusControl.Both); SPair.PairType = VSVGPairs.VSVGPairType.SingleValue; SPair.Render = Enums.CAPIControlType.Button; SPair.Value = 1; SPair.Status = "On"; SPair.Render_Location.Row = 1; SPair.Render_Location.Column = 1; hs.DeviceVSP_AddPair(dvRef, SPair); SPair.Value = 0; SPair.Status = "Off"; SPair.Render_Location.Row = 1; SPair.Render_Location.Column = 2; hs.DeviceVSP_AddPair(dvRef, SPair); VSVGPairs.VGPair GPair = new VSVGPairs.VGPair(); GPair.PairType = VSVGPairs.VSVGPairType.SingleValue; GPair.Set_Value = 1; GPair.Graphic = "/images/HomeSeer/contemporary/on.gif"; hs.DeviceVGP_AddPair(dvRef, GPair); GPair.Set_Value = 0; GPair.Graphic = "/images/HomeSeer/contemporary/off.gif"; hs.DeviceVGP_AddPair(dvRef, GPair); break; } } //Update_CameraDevice(camera, dv, nest); return(true); }
static internal bool Thermostat_Devices(string tString, Thermostat thermostat, Structures structure, List <DeviceDataPoint> deviceList, bool createDevices) { string name; string id; foreach (var ddPoint in deviceList) { id = GetDeviceKeys(ddPoint.device, out name); if (id == thermostat.device_id && name == tString) { Update_ThermostatDevice(thermostat, structure, ddPoint); return(false); } } if (!createDevices) { Log("Missing Homeseer device: " + tString + " please click on the Create Homeseer devices button on the Nest plugin configuration page", LogType.LOG_TYPE_WARNING); return(false); } var dv = GenericHomeSeerDevice(tString, thermostat.name_long, thermostat.device_id, tString.Equals("Is Online")); var dvRef = dv.get_Ref(hs); id = GetDeviceKeys(dv, out name); switch (name) { case "Is Online": { DeviceTypeInfo_m.DeviceTypeInfo dt = new DeviceTypeInfo_m.DeviceTypeInfo(); dt.Device_API = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Thermostat; dt.Device_Type = (int)DeviceTypeInfo_m.DeviceTypeInfo.eDeviceType_Thermostat.Root; dv.set_DeviceType_Set(hs, dt); dv.set_Relationship(hs, Enums.eRelationship.Parent_Root); dv.set_Device_Type_String(hs, "Nest Root Thermostat"); dv.MISC_Set(hs, Enums.dvMISC.STATUS_ONLY); VSVGPairs.VSPair SPair = default(VSVGPairs.VSPair); SPair = new VSVGPairs.VSPair(ePairStatusControl.Status); SPair.PairType = VSVGPairs.VSVGPairType.SingleValue; SPair.Value = 1; SPair.Status = "Online"; hs.DeviceVSP_AddPair(dvRef, SPair); SPair.Value = 0; SPair.Status = "Offline"; hs.DeviceVSP_AddPair(dvRef, SPair); VSVGPairs.VGPair GPair = new VSVGPairs.VGPair(); GPair.PairType = VSVGPairs.VSVGPairType.SingleValue; GPair.Set_Value = 1; GPair.Graphic = "/images/HomeSeer/contemporary/ok.png"; hs.DeviceVGP_AddPair(dvRef, GPair); GPair.Set_Value = 0; GPair.Graphic = "/images/HomeSeer/contemporary/off.gif"; hs.DeviceVGP_AddPair(dvRef, GPair); break; } case "HVAC Mode": { dv.MISC_Set(hs, Enums.dvMISC.SHOW_VALUES); DeviceTypeInfo_m.DeviceTypeInfo dt = new DeviceTypeInfo_m.DeviceTypeInfo(); dt.Device_API = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Thermostat; dt.Device_Type = (int)DeviceTypeInfo_m.DeviceTypeInfo.eDeviceType_Thermostat.Mode_Set; dt.Device_SubType = 0; dv.set_DeviceType_Set(hs, dt); VSVGPairs.VSPair SPair = default(VSVGPairs.VSPair); SPair = new VSVGPairs.VSPair(ePairStatusControl.Both); SPair.PairType = VSVGPairs.VSVGPairType.SingleValue; SPair.Render = Enums.CAPIControlType.Button; SPair.Value = 0; SPair.Status = "Off"; SPair.Render_Location.Row = 1; SPair.Render_Location.Column = 1; SPair.ControlUse = ePairControlUse._ThermModeOff; hs.DeviceVSP_AddPair(dvRef, SPair); VSVGPairs.VGPair GPair = new VSVGPairs.VGPair(); GPair.PairType = VSVGPairs.VSVGPairType.SingleValue; GPair.Set_Value = 0; GPair.Graphic = "/images/HomeSeer/contemporary/off.gif"; hs.DeviceVGP_AddPair(dvRef, GPair); if (thermostat.can_cool == true && thermostat.can_heat == true) { SPair.Value = 1; SPair.Status = "Auto"; SPair.Render_Location.Row = 1; SPair.Render_Location.Column = 2; SPair.ControlUse = ePairControlUse._ThermModeAuto; hs.DeviceVSP_AddPair(dvRef, SPair); GPair.PairType = VSVGPairs.VSVGPairType.SingleValue; GPair.Set_Value = 1; GPair.Graphic = "/images/HomeSeer/contemporary/auto-mode.png"; hs.DeviceVGP_AddPair(dvRef, GPair); } if (thermostat.can_cool == true) { SPair.Value = 2; SPair.Status = "Cool"; SPair.Render_Location.Row = 1; SPair.Render_Location.Column = 2; SPair.ControlUse = ePairControlUse._ThermModeCool; hs.DeviceVSP_AddPair(dvRef, SPair); GPair.PairType = VSVGPairs.VSVGPairType.SingleValue; GPair.Set_Value = 2; GPair.Graphic = "/images/HomeSeer/contemporary/cooling.png"; hs.DeviceVGP_AddPair(dvRef, GPair); } if (thermostat.can_heat == true) { SPair.Value = 3; SPair.Status = "Heat"; SPair.Render_Location.Row = 1; SPair.Render_Location.Column = 2; SPair.ControlUse = ePairControlUse._ThermModeHeat; hs.DeviceVSP_AddPair(dvRef, SPair); GPair.PairType = VSVGPairs.VSVGPairType.SingleValue; GPair.Set_Value = 3; GPair.Graphic = "/images/HomeSeer/contemporary/heating.png"; hs.DeviceVGP_AddPair(dvRef, GPair); } SPair.Value = 4; SPair.Status = "Eco"; SPair.Render_Location.Row = 1; SPair.Render_Location.Column = 2; SPair.ControlUse = ePairControlUse.Not_Specified; hs.DeviceVSP_AddPair(dvRef, SPair); GPair.PairType = VSVGPairs.VSVGPairType.SingleValue; GPair.Set_Value = 4; GPair.Graphic = "/images/HomeSeer/contemporary/custom-color.png"; hs.DeviceVGP_AddPair(dvRef, GPair); break; } case "Target Temperature": case "Target Temperature High": case "Target Temperature Low": case "Ambient Temperature": { VSVGPairs.VSPair SPair = default(VSVGPairs.VSPair); SPair = new VSVGPairs.VSPair(ePairStatusControl.Status); SPair.PairType = VSVGPairs.VSVGPairType.Range; SPair.RangeStart = -100; SPair.RangeEnd = 150; SPair.RangeStatusSuffix = " °" + VSVGPairs.VSPair.ScaleReplace; SPair.HasScale = true; hs.DeviceVSP_AddPair(dvRef, SPair); if (name.Equals("Target Temperature") || name.Equals("Target Temperature High") || name.Equals("Target Temperature Low")) { dv.MISC_Set(hs, Enums.dvMISC.SHOW_VALUES); SPair = new VSVGPairs.VSPair(HomeSeerAPI.ePairStatusControl.Control); SPair.PairType = VSVGPairs.VSVGPairType.Range; SPair.Render = Enums.CAPIControlType.TextBox_Number; SPair.Render_Location.Row = 1; SPair.Render_Location.Column = 1; SPair.Status = "Enter target:"; SPair.RangeStart = 0; SPair.RangeEnd = 100; if (name.Equals("Target Temperature Low")) { SPair.ControlUse = ePairControlUse._HeatSetPoint; DeviceTypeInfo_m.DeviceTypeInfo dt = new DeviceTypeInfo_m.DeviceTypeInfo(); dt.Device_API = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Thermostat; dt.Device_Type = (int)DeviceTypeInfo_m.DeviceTypeInfo.eDeviceType_Thermostat.Setpoint; dt.Device_SubType = (int)DeviceTypeInfo_m.DeviceTypeInfo.eDeviceSubType_Setpoint.Heating_1; dv.set_DeviceType_Set(hs, dt); } else if (name.Equals("Target Temperature High")) { SPair.ControlUse = ePairControlUse._CoolSetPoint; DeviceTypeInfo_m.DeviceTypeInfo dt = new DeviceTypeInfo_m.DeviceTypeInfo(); dt.Device_API = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Thermostat; dt.Device_Type = (int)DeviceTypeInfo_m.DeviceTypeInfo.eDeviceType_Thermostat.Setpoint; dt.Device_SubType = (int)DeviceTypeInfo_m.DeviceTypeInfo.eDeviceSubType_Setpoint.Cooling_1; dv.set_DeviceType_Set(hs, dt); } hs.DeviceVSP_AddPair(dvRef, SPair); } else if (name.Equals("Ambient Temperature")) { DeviceTypeInfo_m.DeviceTypeInfo dt = new DeviceTypeInfo_m.DeviceTypeInfo(); dt.Device_API = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Thermostat; dt.Device_Type = (int)DeviceTypeInfo_m.DeviceTypeInfo.eDeviceType_Thermostat.Temperature; dv.set_DeviceType_Set(hs, dt); } VSVGPairs.VGPair GPair = new VSVGPairs.VGPair(); GPair.PairType = VSVGPairs.VSVGPairType.Range; GPair.RangeStart = -100; GPair.RangeEnd = 150; GPair.Graphic = "/images/HomeSeer/contemporary/thermometer-70.png"; hs.DeviceVGP_AddPair(dvRef, GPair); break; } case "Status": { VSVGPairs.VGPair GPair = new VSVGPairs.VGPair(); GPair.PairType = VSVGPairs.VSVGPairType.SingleValue; GPair.Graphic = "/images/HomeSeer/contemporary/alarmheartbeat.png"; hs.DeviceVGP_AddPair(dvRef, GPair); break; } case "Humidity": { DeviceTypeInfo_m.DeviceTypeInfo dt = new DeviceTypeInfo_m.DeviceTypeInfo(); dt.Device_API = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Thermostat; dt.Device_Type = (int)DeviceTypeInfo_m.DeviceTypeInfo.eDeviceType_Thermostat.Temperature; dt.Device_SubType = (int)DeviceTypeInfo_m.DeviceTypeInfo.eDeviceSubType_Temperature.Humidity; dv.set_DeviceType_Set(hs, dt); VSVGPairs.VSPair SPair = default(VSVGPairs.VSPair); SPair = new VSVGPairs.VSPair(ePairStatusControl.Status); SPair.PairType = VSVGPairs.VSVGPairType.Range; SPair.RangeStart = 0; SPair.RangeEnd = 100; SPair.RangeStatusSuffix = " %"; hs.DeviceVSP_AddPair(dvRef, SPair); VSVGPairs.VGPair GPair = new VSVGPairs.VGPair(); GPair.PairType = VSVGPairs.VSVGPairType.Range; GPair.RangeStart = 0; GPair.RangeEnd = 100; GPair.Graphic = "/images/HomeSeer/contemporary/water.gif"; hs.DeviceVGP_AddPair(dvRef, GPair); break; } case "Battery Health": { VSVGPairs.VSPair SPair = default(VSVGPairs.VSPair); SPair = new VSVGPairs.VSPair(ePairStatusControl.Status); SPair.PairType = VSVGPairs.VSVGPairType.SingleValue; SPair.Value = 1; SPair.Status = "Ok"; hs.DeviceVSP_AddPair(dvRef, SPair); SPair.Value = 0; SPair.Status = "Battery Low"; hs.DeviceVSP_AddPair(dvRef, SPair); VSVGPairs.VGPair GPair = new VSVGPairs.VGPair(); GPair.PairType = VSVGPairs.VSVGPairType.SingleValue; GPair.Set_Value = 1; GPair.Graphic = "/images/HomeSeer/contemporary/battery_100.png"; hs.DeviceVGP_AddPair(dvRef, GPair); GPair.Set_Value = 0; GPair.Graphic = "/images/HomeSeer/contemporary/battery_25.png"; hs.DeviceVGP_AddPair(dvRef, GPair); break; } } //Update_ThermostatDevice(thermostat, structure, dv, nest); return(true); }
static internal bool Camera_Devices(string cString, Camera camera, List <DeviceDataPoint> deviceList) { string name; string id; foreach (var ddPoint in deviceList) { id = GetDeviceKeys(ddPoint.device, out name); if (id == camera.device_id && name == cString) { Update_CameraDevice(camera, ddPoint); return(false); } } DeviceClass dv = new DeviceClass(); dv = GenericHomeSeerDevice(dv, cString, camera.name_long, camera.device_id, cString.Equals("Is Streaming")); var dvRef = dv.get_Ref(hs); id = GetDeviceKeys(dv, out name); switch (name) { case "Is Streaming": { dv.set_Relationship(hs, Enums.eRelationship.Parent_Root); dv.MISC_Set(hs, Enums.dvMISC.SHOW_VALUES); VSVGPairs.VSPair SPair = default(VSVGPairs.VSPair); SPair = new VSVGPairs.VSPair(ePairStatusControl.Both); SPair.PairType = VSVGPairs.VSVGPairType.SingleValue; SPair.Render = Enums.CAPIControlType.Button; SPair.Value = 1; SPair.Status = "On"; SPair.Render_Location.Row = 1; SPair.Render_Location.Column = 1; hs.DeviceVSP_AddPair(dvRef, SPair); SPair.Value = 0; SPair.Status = "Off"; SPair.Render_Location.Row = 1; SPair.Render_Location.Column = 2; hs.DeviceVSP_AddPair(dvRef, SPair); VSVGPairs.VGPair GPair = new VSVGPairs.VGPair(); GPair.PairType = VSVGPairs.VSVGPairType.SingleValue; GPair.Set_Value = 1; GPair.Graphic = "/images/HomeSeer/contemporary/on.gif"; hs.DeviceVGP_AddPair(dvRef, GPair); GPair.Set_Value = 0; GPair.Graphic = "/images/HomeSeer/contemporary/off.gif"; hs.DeviceVGP_AddPair(dvRef, GPair); break; } } //Update_CameraDevice(camera, dv, nest); return(true); }
static internal bool Structure_Devices(Structures structure, string thermId, List <DeviceDataPoint> deviceList) { string name; string id; foreach (var ddPoint in deviceList) { id = GetDeviceKeys(ddPoint.device, out name); if (id == thermId && name == "Structure") { Update_StructureDevice(structure, ddPoint); return(false); } } DeviceClass dv = new DeviceClass(); dv = GenericHomeSeerDevice(dv, "Structure", structure.name, thermId, false); var dvRef = dv.get_Ref(hs); id = GetDeviceKeys(dv, out name); dv.MISC_Set(hs, Enums.dvMISC.SHOW_VALUES); VSVGPairs.VSPair SPair = default(VSVGPairs.VSPair); SPair = new VSVGPairs.VSPair(ePairStatusControl.Both); SPair.PairType = VSVGPairs.VSVGPairType.SingleValue; SPair.Render = Enums.CAPIControlType.Button; /*SPair.Value = 0; * SPair.Status = "User Program"; * SPair.Render_Location.Row = 1; * SPair.Render_Location.Column = 1; * hs.DeviceVSP_AddPair(dvRef, SPair); * * SPair.Value = 1; * SPair.Status = "Away-Auto"; * SPair.Render_Location.Row = 1; * SPair.Render_Location.Column = 2; * hs.DeviceVSP_AddPair(dvRef, SPair);*/ SPair.Value = 0; SPair.Status = "Away"; SPair.Render_Location.Row = 1; SPair.Render_Location.Column = 2; hs.DeviceVSP_AddPair(dvRef, SPair); SPair.Value = 1; SPair.Status = "Home"; SPair.Render_Location.Row = 1; SPair.Render_Location.Column = 2; hs.DeviceVSP_AddPair(dvRef, SPair); VSVGPairs.VGPair GPair = new VSVGPairs.VGPair(); GPair.PairType = VSVGPairs.VSVGPairType.Range; GPair.RangeStart = 0; GPair.RangeEnd = 1; GPair.Graphic = "/images/HomeSeer/contemporary/home.png"; hs.DeviceVGP_AddPair(dvRef, GPair); return(true); }
static internal bool Remote_Devices(string tString, Thermostat thermostat, RemoteSensors remote, SensorCapabilities capability, List <DeviceDataPoint> deviceList, EcobeeConnection ecobee) { var sensorType = ""; if (capability.type.Equals("temperature")) { sensorType = "Temperature"; } if (capability.type.Equals("occupancy")) { sensorType = "Occupancy"; } string name; string id; foreach (var ddPoint in deviceList) { id = GetDeviceKeys(ddPoint.device, out name); if (id == (thermostat.identifier + remote.code) && name == (sensorType + tString)) { Update_RemoteDevice(thermostat, capability, ddPoint, ecobee); return(false); } } DeviceClass dv = new DeviceClass(); dv = GenericHomeSeerDevice(dv, sensorType + tString, remote.name, thermostat.identifier + remote.code); var dvRef = dv.get_Ref(hs); id = GetDeviceKeys(dv, out name); switch (name) { case "Temperature Sensor": { VSVGPairs.VSPair SPair = default(VSVGPairs.VSPair); SPair = new VSVGPairs.VSPair(ePairStatusControl.Status); SPair.PairType = VSVGPairs.VSVGPairType.Range; SPair.RangeStart = -500; SPair.RangeEnd = 500; SPair.RangeStatusSuffix = " " + getTemperatureUnits(thermostat.settings.useCelsius); hs.DeviceVSP_AddPair(dvRef, SPair); VSVGPairs.VGPair GPair = new VSVGPairs.VGPair(); GPair.PairType = VSVGPairs.VSVGPairType.Range; GPair.RangeStart = -500; GPair.RangeEnd = 500; GPair.Graphic = "/images/HomeSeer/contemporary/Thermometer-70.png"; hs.DeviceVGP_AddPair(dvRef, GPair); break; } case "Occupancy Sensor": { VSVGPairs.VSPair SPair = default(VSVGPairs.VSPair); SPair = new VSVGPairs.VSPair(ePairStatusControl.Status); SPair.PairType = VSVGPairs.VSVGPairType.SingleValue; SPair.Value = 0; SPair.Status = "Unoccupied"; hs.DeviceVSP_AddPair(dvRef, SPair); SPair.Value = 1; SPair.Status = "Occupied"; hs.DeviceVSP_AddPair(dvRef, SPair); VSVGPairs.VGPair GPair = new VSVGPairs.VGPair(); GPair.PairType = VSVGPairs.VSVGPairType.SingleValue; GPair.Set_Value = 0; GPair.Graphic = "/images/HomeSeer/contemporary/away.png"; hs.DeviceVGP_AddPair(dvRef, GPair); GPair.Set_Value = 1; GPair.Graphic = "/images/HomeSeer/contemporary/home.png"; hs.DeviceVGP_AddPair(dvRef, GPair); break; } } return(true); }
static internal bool Thermostat_Devices(string tString, Thermostat thermostat, List <DeviceDataPoint> deviceList, EcobeeConnection ecobee) { string name; string id; foreach (var ddPoint in deviceList) { id = GetDeviceKeys(ddPoint.device, out name); if (id == thermostat.identifier && name == tString) { Update_ThermostatDevice(thermostat, ddPoint, ecobee); return(false); } } DeviceClass dv = new DeviceClass(); dv = GenericHomeSeerDevice(dv, tString, thermostat.name, thermostat.identifier); var dvRef = dv.get_Ref(hs); id = GetDeviceKeys(dv, out name); switch (name) { case "Root": { DeviceTypeInfo_m.DeviceTypeInfo dt = new DeviceTypeInfo_m.DeviceTypeInfo(); dt.Device_API = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Thermostat; dt.Device_Type = (int)DeviceTypeInfo_m.DeviceTypeInfo.eDeviceType_Thermostat.Root; dv.set_DeviceType_Set(hs, dt); dv.set_Relationship(hs, Enums.eRelationship.Parent_Root); dv.MISC_Set(hs, Enums.dvMISC.STATUS_ONLY); VSVGPairs.VSPair SPair = default(VSVGPairs.VSPair); SPair = new VSVGPairs.VSPair(ePairStatusControl.Status); SPair.PairType = VSVGPairs.VSVGPairType.SingleValue; SPair.Value = 0; SPair.Status = "Thermostat Root"; hs.DeviceVSP_AddPair(dvRef, SPair); VSVGPairs.VGPair GPair = new VSVGPairs.VGPair(); GPair.PairType = VSVGPairs.VSVGPairType.SingleValue; GPair.Set_Value = 0; GPair.Graphic = "/images/HomeSeer/contemporary/ok.png"; hs.DeviceVGP_AddPair(dvRef, GPair); break; } case "HVAC Mode": { dv.MISC_Set(hs, Enums.dvMISC.SHOW_VALUES); DeviceTypeInfo_m.DeviceTypeInfo dt = new DeviceTypeInfo_m.DeviceTypeInfo(); dt.Device_API = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Thermostat; dt.Device_Type = (int)DeviceTypeInfo_m.DeviceTypeInfo.eDeviceType_Thermostat.Mode_Set; dt.Device_SubType = 0; dv.set_DeviceType_Set(hs, dt); VSVGPairs.VSPair SPair = default(VSVGPairs.VSPair); SPair = new VSVGPairs.VSPair(ePairStatusControl.Both); SPair.PairType = VSVGPairs.VSVGPairType.SingleValue; SPair.Render = Enums.CAPIControlType.Button; SPair.Value = 0; SPair.Status = "Off"; SPair.Render_Location.Row = 1; SPair.Render_Location.Column = 1; SPair.ControlUse = ePairControlUse._ThermModeOff; hs.DeviceVSP_AddPair(dvRef, SPair); VSVGPairs.VGPair GPair = new VSVGPairs.VGPair(); GPair.PairType = VSVGPairs.VSVGPairType.SingleValue; GPair.Set_Value = 0; GPair.Graphic = "/images/HomeSeer/contemporary/modeoff.png"; hs.DeviceVGP_AddPair(dvRef, GPair); SPair.Value = 1; SPair.Status = "Auto"; SPair.Render_Location.Row = 1; SPair.Render_Location.Column = 2; SPair.ControlUse = ePairControlUse._ThermModeAuto; hs.DeviceVSP_AddPair(dvRef, SPair); GPair.PairType = VSVGPairs.VSVGPairType.SingleValue; GPair.Set_Value = 1; GPair.Graphic = "/images/HomeSeer/contemporary/auto-mode.png"; hs.DeviceVGP_AddPair(dvRef, GPair); SPair.Value = 2; SPair.Status = "Cool"; SPair.Render_Location.Row = 1; SPair.Render_Location.Column = 2; SPair.ControlUse = ePairControlUse._ThermModeCool; hs.DeviceVSP_AddPair(dvRef, SPair); GPair.PairType = VSVGPairs.VSVGPairType.SingleValue; GPair.Set_Value = 2; GPair.Graphic = "/images/HomeSeer/contemporary/cooling.png"; hs.DeviceVGP_AddPair(dvRef, GPair); SPair.Value = 3; SPair.Status = "Heat"; SPair.Render_Location.Row = 1; SPair.Render_Location.Column = 2; SPair.ControlUse = ePairControlUse._ThermModeHeat; hs.DeviceVSP_AddPair(dvRef, SPair); GPair.PairType = VSVGPairs.VSVGPairType.SingleValue; GPair.Set_Value = 3; GPair.Graphic = "/images/HomeSeer/contemporary/heating.png"; hs.DeviceVGP_AddPair(dvRef, GPair); break; } case "Fan Mode": { dv.MISC_Set(hs, Enums.dvMISC.SHOW_VALUES); DeviceTypeInfo_m.DeviceTypeInfo dt = new DeviceTypeInfo_m.DeviceTypeInfo(); dt.Device_API = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Thermostat; dt.Device_Type = (int)DeviceTypeInfo_m.DeviceTypeInfo.eDeviceType_Thermostat.Fan_Mode_Set; dt.Device_SubType = 0; dv.set_DeviceType_Set(hs, dt); VSVGPairs.VSPair SPair = default(VSVGPairs.VSPair); SPair = new VSVGPairs.VSPair(ePairStatusControl.Both); SPair.PairType = VSVGPairs.VSVGPairType.SingleValue; SPair.Render = Enums.CAPIControlType.Button; SPair.Value = 0; SPair.Status = "Off"; SPair.Render_Location.Row = 1; SPair.Render_Location.Column = 1; hs.DeviceVSP_AddPair(dvRef, SPair); VSVGPairs.VGPair GPair = new VSVGPairs.VGPair(); GPair.PairType = VSVGPairs.VSVGPairType.SingleValue; GPair.Set_Value = 0; GPair.Graphic = "/images/HomeSeer/contemporary/fan-state-off.png"; hs.DeviceVGP_AddPair(dvRef, GPair); SPair.Value = 1; SPair.Status = "On"; SPair.Render_Location.Row = 1; SPair.Render_Location.Column = 2; SPair.ControlUse = ePairControlUse._ThermFanOn; hs.DeviceVSP_AddPair(dvRef, SPair); GPair.PairType = VSVGPairs.VSVGPairType.SingleValue; GPair.Set_Value = 1; GPair.Graphic = "/images/HomeSeer/contemporary/fan-on.png"; hs.DeviceVGP_AddPair(dvRef, GPair); SPair.Value = 2; SPair.Status = "Auto"; SPair.Render_Location.Row = 1; SPair.Render_Location.Column = 2; SPair.ControlUse = ePairControlUse._ThermFanAuto; hs.DeviceVSP_AddPair(dvRef, SPair); GPair.PairType = VSVGPairs.VSVGPairType.SingleValue; GPair.Set_Value = 2; GPair.Graphic = "/images/HomeSeer/contemporary/fan-auto.png"; hs.DeviceVGP_AddPair(dvRef, GPair); break; } case "Deadband": case "Target Temperature High": case "Target Temperature Low": case "Ambient Temperature": { VSVGPairs.VSPair SPair = default(VSVGPairs.VSPair); SPair = new VSVGPairs.VSPair(ePairStatusControl.Status); SPair.PairType = VSVGPairs.VSVGPairType.Range; SPair.RangeStart = -150; SPair.RangeEnd = 100; SPair.RangeStatusSuffix = " °" + VSVGPairs.VSPair.ScaleReplace; SPair.HasScale = true; hs.DeviceVSP_AddPair(dvRef, SPair); if (name.Equals("Target Temperature High") || name.Equals("Target Temperature Low")) { dv.MISC_Set(hs, Enums.dvMISC.SHOW_VALUES); SPair = new VSVGPairs.VSPair(HomeSeerAPI.ePairStatusControl.Control); SPair.PairType = VSVGPairs.VSVGPairType.Range; SPair.Render = Enums.CAPIControlType.TextBox_Number; SPair.Render_Location.Row = 1; SPair.Render_Location.Column = 1; SPair.Status = "Enter target:"; SPair.RangeStart = 0; SPair.RangeEnd = 100; if (name.Equals("Target Temperature Low")) { SPair.ControlUse = ePairControlUse._HeatSetPoint; DeviceTypeInfo_m.DeviceTypeInfo dt = new DeviceTypeInfo_m.DeviceTypeInfo(); dt.Device_API = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Thermostat; dt.Device_Type = (int)DeviceTypeInfo_m.DeviceTypeInfo.eDeviceType_Thermostat.Setpoint; dt.Device_SubType = (int)DeviceTypeInfo_m.DeviceTypeInfo.eDeviceSubType_Setpoint.Heating_1; dv.set_DeviceType_Set(hs, dt); } else if (name.Equals("Target Temperature High")) { SPair.ControlUse = ePairControlUse._CoolSetPoint; DeviceTypeInfo_m.DeviceTypeInfo dt = new DeviceTypeInfo_m.DeviceTypeInfo(); dt.Device_API = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Thermostat; dt.Device_Type = (int)DeviceTypeInfo_m.DeviceTypeInfo.eDeviceType_Thermostat.Setpoint; dt.Device_SubType = (int)DeviceTypeInfo_m.DeviceTypeInfo.eDeviceSubType_Setpoint.Cooling_1; dv.set_DeviceType_Set(hs, dt); } hs.DeviceVSP_AddPair(dvRef, SPair); } else if (name.Equals("Ambient Temperature")) { DeviceTypeInfo_m.DeviceTypeInfo dt = new DeviceTypeInfo_m.DeviceTypeInfo(); dt.Device_API = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Thermostat; dt.Device_Type = (int)DeviceTypeInfo_m.DeviceTypeInfo.eDeviceType_Thermostat.Temperature; dv.set_DeviceType_Set(hs, dt); } VSVGPairs.VGPair GPair = new VSVGPairs.VGPair(); GPair.PairType = VSVGPairs.VSVGPairType.Range; GPair.RangeStart = -100; GPair.RangeEnd = 150; GPair.Graphic = "/images/HomeSeer/contemporary/Thermometer-70.png"; hs.DeviceVGP_AddPair(dvRef, GPair); break; } case "Current Program": { dv.MISC_Set(hs, Enums.dvMISC.SHOW_VALUES); VSVGPairs.VSPair SPair = default(VSVGPairs.VSPair); SPair = new VSVGPairs.VSPair(ePairStatusControl.Status); SPair.PairType = VSVGPairs.VSVGPairType.SingleValue; SPair.Value = 0; SPair.Status = "Hold"; hs.DeviceVSP_AddPair(dvRef, SPair); SPair.Value = 1; SPair.Status = "Demand Response"; hs.DeviceVSP_AddPair(dvRef, SPair); SPair.Value = 2; SPair.Status = "Sensor"; hs.DeviceVSP_AddPair(dvRef, SPair); SPair.Value = 3; SPair.Status = "Switch Occupancy"; hs.DeviceVSP_AddPair(dvRef, SPair); SPair.Value = 4; SPair.Status = "Vacation"; hs.DeviceVSP_AddPair(dvRef, SPair); SPair.Value = 5; SPair.Status = "Quick Save"; hs.DeviceVSP_AddPair(dvRef, SPair); SPair.Value = 6; SPair.Status = "Today"; hs.DeviceVSP_AddPair(dvRef, SPair); SPair.Value = 7; SPair.Status = "Template"; hs.DeviceVSP_AddPair(dvRef, SPair); VSVGPairs.VGPair GPair = new VSVGPairs.VGPair(); GPair.PairType = VSVGPairs.VSVGPairType.Range; GPair.RangeStart = 0; GPair.RangeEnd = 4; GPair.Graphic = "/images/HomeSeer/contemporary/home.png"; hs.DeviceVGP_AddPair(dvRef, GPair); break; } case "HVAC Status": case "Fan Status": case "Cool Range": case "Heat Range": { VSVGPairs.VGPair GPair = new VSVGPairs.VGPair(); GPair.PairType = VSVGPairs.VSVGPairType.SingleValue; GPair.Graphic = "/images/HomeSeer/contemporary/alarmheartbeat.png"; hs.DeviceVGP_AddPair(dvRef, GPair); break; } case "Humidity": { DeviceTypeInfo_m.DeviceTypeInfo dt = new DeviceTypeInfo_m.DeviceTypeInfo(); dt.Device_API = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Thermostat; dt.Device_Type = (int)DeviceTypeInfo_m.DeviceTypeInfo.eDeviceType_Thermostat.Temperature; dt.Device_SubType = (int)DeviceTypeInfo_m.DeviceTypeInfo.eDeviceSubType_Temperature.Humidity; dv.set_DeviceType_Set(hs, dt); VSVGPairs.VSPair SPair = default(VSVGPairs.VSPair); SPair = new VSVGPairs.VSPair(ePairStatusControl.Status); SPair.PairType = VSVGPairs.VSVGPairType.Range; SPair.RangeStart = 0; SPair.RangeEnd = 100; SPair.RangeStatusSuffix = " %"; hs.DeviceVSP_AddPair(dvRef, SPair); VSVGPairs.VGPair GPair = new VSVGPairs.VGPair(); GPair.PairType = VSVGPairs.VSVGPairType.Range; GPair.RangeStart = 0; GPair.RangeEnd = 100; GPair.Graphic = "/images/HomeSeer/contemporary/water.gif"; hs.DeviceVGP_AddPair(dvRef, GPair); break; } case "Occupancy": { VSVGPairs.VSPair SPair = default(VSVGPairs.VSPair); SPair = new VSVGPairs.VSPair(ePairStatusControl.Status); SPair.PairType = VSVGPairs.VSVGPairType.SingleValue; SPair.Value = 0; SPair.Status = "Unoccupied"; hs.DeviceVSP_AddPair(dvRef, SPair); SPair.Value = 1; SPair.Status = "Occupied"; hs.DeviceVSP_AddPair(dvRef, SPair); SPair.Value = 2; SPair.Status = "No Event"; hs.DeviceVSP_AddPair(dvRef, SPair); VSVGPairs.VGPair GPair = new VSVGPairs.VGPair(); GPair.PairType = VSVGPairs.VSVGPairType.SingleValue; GPair.Set_Value = 0; GPair.Graphic = "/images/HomeSeer/contemporary/away.png"; hs.DeviceVGP_AddPair(dvRef, GPair); GPair.Set_Value = 1; GPair.Graphic = "/images/HomeSeer/contemporary/home.png"; hs.DeviceVGP_AddPair(dvRef, GPair); GPair.Set_Value = 2; GPair.Graphic = "/images/HomeSeer/contemporary/userclosing.png"; hs.DeviceVGP_AddPair(dvRef, GPair); break; } } return(true); }