public override void AddOrUpdateHSDeviceProperties() { Console.WriteLine("FIXME: Adding HS Device control status"); // hsDevice.MISC_Set(HS, Enums.dvMISC.NO_LOG); hsDevice.MISC_Set(HS, Enums.dvMISC.SHOW_VALUES); hsDevice.set_Relationship(HS, Enums.eRelationship.Standalone); // Clear existing VSP HS.DeviceVSP_ClearAll(hsDevice.get_Ref(null), true); VSVGPairs.VSPair v = new VSVGPairs.VSPair(ePairStatusControl.Status); v.PairType = VSVGPairs.VSVGPairType.SingleValue; v.Value = 0; v.Status = "Closed"; v.Render = Enums.CAPIControlType.Button; v.Render_Location.Row = 1; v.Render_Location.Column = 1; v.ControlUse = ePairControlUse._Off; HS.DeviceVSP_AddPair(hsDevice.get_Ref(null), v); VSVGPairs.VSPair v2 = new VSVGPairs.VSPair(ePairStatusControl.Status); v2.PairType = VSVGPairs.VSVGPairType.SingleValue; v2.Value = 1; v2.Status = "Open"; v2.Render = Enums.CAPIControlType.Button; v2.Render_Location.Row = 1; v2.Render_Location.Column = 2; v2.ControlUse = ePairControlUse._On; HS.DeviceVSP_AddPair(hsDevice.get_Ref(null), v2); SaveConfiguration(); }
private void _createColor(string label) { if (Color != 0) { return; } IHSApplication hs = _plugin.hs; int hsRef = hs.NewDeviceRef(label + " Color"); DeviceClass device = (DeviceClass)hs.GetDeviceByRef(hsRef); device.set_Address(hs, GetSubDeviceAddress(SubDeviceType.Color)); device.set_Interface(hs, _plugin.Name); device.set_InterfaceInstance(hs, _plugin.InstanceFriendlyName()); device.set_Device_Type_String(hs, "LIFX Device Color"); device.set_DeviceType_Set(hs, new DeviceTypeInfo_m.DeviceTypeInfo { Device_API = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Plug_In }); // Create the buttons and slider VSVGPairs.VSPair colorPicker = new VSVGPairs.VSPair(ePairStatusControl.Both); colorPicker.PairType = VSVGPairs.VSVGPairType.SingleValue; colorPicker.Render = Enums.CAPIControlType.Color_Picker; colorPicker.ControlUse = ePairControlUse._ColorControl; hs.DeviceVSP_AddPair(hsRef, colorPicker); device.MISC_Set(hs, Enums.dvMISC.SHOW_VALUES); hs.SetDeviceString(hsRef, "ffffff", false); Color = hsRef; }
public Device AddButton(double value, string status, string graphicsPath = null, int renderLocationRow = 0, int renderLocationColumn = 0) { var renderLocation = new Enums.CAPIControlLocation() { Column = 0, Row = 0, ColumnSpan = 0 }; if (renderLocationRow > 0) { renderLocation.Row = renderLocationRow; renderLocation.Column = renderLocationColumn; } var vsPair = new VSVGPairs.VSPair(ePairStatusControl.Both) { PairType = VSVGPairs.VSVGPairType.SingleValue, Value = value, Status = status, Render_Location = renderLocation, Render = Enums.CAPIControlType.Button, IncludeValues = true }; _hs.DeviceVSP_AddPair(Id, vsPair); if (graphicsPath != null) { AddStatusGraphicField((int)value, -1, graphicsPath); } return(this); }
public override void AddOrUpdateHSDeviceProperties() { Console.WriteLine("FIXME: Adding HS Device control status"); // hsDevice.MISC_Set(HS, Enums.dvMISC.NO_LOG); hsDevice.MISC_Set(HS, Enums.dvMISC.SHOW_VALUES); hsDevice.set_Relationship(HS, Enums.eRelationship.Standalone); // Clear existing VSP HS.DeviceVSP_ClearAll(hsDevice.get_Ref(null), true); VSVGPairs.VSPair v = new VSVGPairs.VSPair(ePairStatusControl.Status); v.PairType = VSVGPairs.VSVGPairType.Range; var vg = new HomeSeerAPI.VSVGPairs.VGPair(); vg.PairType = VSVGPairs.VSVGPairType.Range; //v.ControlStatus = ePairStatusControl.Status; //v.ControlUse = ePairControlUse. v.RangeStatusSuffix = " C"; v.RangeStart = -50; v.RangeEnd = 100; v.RangeStatusDecimals = 2; vg.RangeStart = -50; vg.RangeEnd = 100; vg.Graphic = "/images/HomeSeer/status/Thermometer-50.png"; v.Render = Enums.CAPIControlType.ValuesRange; hsDevice.MISC_Clear(HS, Enums.dvMISC.SHOW_VALUES); // Should be set or not ? HS.DeviceVSP_AddPair(hsDevice.get_Ref(null), v); HS.DeviceVGP_AddPair(hsDevice.get_Ref(null), vg); /* * VSVGPairs.VSPair v = new VSVGPairs.VSPair(ePairStatusControl.Status); * v.PairType = VSVGPairs.VSVGPairType.SingleValue; * v.Value = 0; * v.Status = "Closed"; * v.Render = Enums.CAPIControlType.Button; * v.Render_Location.Row = 1; * v.Render_Location.Column = 1; * v.ControlUse = ePairControlUse._Off; * HS.DeviceVSP_AddPair(hsDevice.get_Ref(null), v); * * VSVGPairs.VSPair v2 = new VSVGPairs.VSPair(ePairStatusControl.Status); * v2.PairType = VSVGPairs.VSVGPairType.SingleValue; * v2.Value = 1; * v2.Status = "Open"; * v2.Render = Enums.CAPIControlType.Button; * v2.Render_Location.Row = 1; * v2.Render_Location.Column = 2; * v2.ControlUse = ePairControlUse._On; * HS.DeviceVSP_AddPair(hsDevice.get_Ref(null), v2); */ SaveConfiguration(); }
public void MakeStewardVSP(int deviceID) { var Control = new VSVGPairs.VSPair(ePairStatusControl.Both); Control.PairType = VSVGPairs.VSVGPairType.Range; Control.RangeStart = -100000; Control.RangeEnd = 100000; Control.Render = Enums.CAPIControlType.TextBox_Number; var IS = Instance.host.DeviceVSP_AddPair(deviceID, Control); }
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); }
public Device AddStatusControlSingleField(double value, string status, string graphicsPath = null, bool button = false) { var vsPair = new VSVGPairs.VSPair(ePairStatusControl.Both) { PairType = VSVGPairs.VSVGPairType.SingleValue, Value = value, Status = status, }; _hs.DeviceVSP_AddPair(Id, vsPair); return(this); }
/// <summary> /// Create a new device and set the names for the status display. /// </summary> /// <param name="refId">The device reference identifier for HomeSeer.</param> /// <param name="name">The name for the device.</param> /// <returns>Scheduler.Classes.DeviceClass.</returns> private Scheduler.Classes.DeviceClass CreateDevice(out int refId, string name = "HikVision Camera") { Scheduler.Classes.DeviceClass dv = null; refId = hs.NewDeviceRef(name); if (refId > 0) { dv = (Scheduler.Classes.DeviceClass)hs.GetDeviceByRef(refId); dv.set_Address(hs, "Camera" + refId); dv.set_Device_Type_String(hs, "HikVision Camera Alarm"); DeviceTypeInfo_m.DeviceTypeInfo DT = new DeviceTypeInfo_m.DeviceTypeInfo(); DT.Device_API = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Security; DT.Device_Type = (int)DeviceTypeInfo_m.DeviceTypeInfo.eDeviceType_Security.Zone_Interior; dv.set_DeviceType_Set(hs, DT); dv.set_Interface(hs, IFACE_NAME); dv.set_InterfaceInstance(hs, ""); dv.set_Last_Change(hs, DateTime.Now); dv.set_Location(hs, "Camera"); // room dv.set_Location2(hs, "HikVision"); // floor VSVGPairs.VSPair Pair = new VSVGPairs.VSPair(HomeSeerAPI.ePairStatusControl.Status); Pair.PairType = VSVGPairs.VSVGPairType.SingleValue; Pair.Value = -1; Pair.Status = "Unknown"; Default_VS_Pairs_AddUpdateUtil(refId, Pair); Pair = new VSVGPairs.VSPair(HomeSeerAPI.ePairStatusControl.Status); Pair.PairType = VSVGPairs.VSVGPairType.SingleValue; Pair.Value = 0; Pair.Status = "No Motion"; Default_VS_Pairs_AddUpdateUtil(refId, Pair); Pair = new VSVGPairs.VSPair(HomeSeerAPI.ePairStatusControl.Status); Pair.PairType = VSVGPairs.VSVGPairType.SingleValue; Pair.Value = 1; Pair.Status = "Motion"; Default_VS_Pairs_AddUpdateUtil(refId, Pair); dv.MISC_Set(hs, Enums.dvMISC.STATUS_ONLY); dv.MISC_Set(hs, Enums.dvMISC.SHOW_VALUES); dv.set_Status_Support(hs, true); } return(dv); }
public bool SetButtonState(int button, Boolean pressed) { String btnDeviceId = DeviceId + ":" + button; // Console.WriteLine("Button {0} pressed: {1}", button, pressed); var btnDevice = Controller.getHSDevice(EnOceanController.EnOceanDeviceType.ChildDevice, btnDeviceId); buttonState[button] = pressed; if (btnDevice == null) { Console.WriteLine("No button device for btn {0} - creating"); btnDevice = Controller.createHSDevice(hsDevice.get_Name(null) + " Button " + button, EnOceanController.EnOceanDeviceType.ChildDevice, btnDeviceId); btnDevice.set_Device_Type_String(HS, "EnOcean " + EnOceanController.EnOceanDeviceType.ChildDevice.ToString()); btnDevice.set_Relationship(HS, Enums.eRelationship.Child); btnDevice.AssociatedDevice_Add(HS, hsDevice.get_Ref(null)); hsDevice.AssociatedDevice_Add(HS, btnDevice.get_Ref(null)); VSVGPairs.VSPair v = new VSVGPairs.VSPair(ePairStatusControl.Status); v.PairType = VSVGPairs.VSVGPairType.SingleValue; v.Value = 0; v.Status = "Released"; v.Render = Enums.CAPIControlType.Button; v.Render_Location.Row = 1; v.Render_Location.Column = 1; v.ControlUse = ePairControlUse._Off; HS.DeviceVSP_AddPair(btnDevice.get_Ref(null), v); VSVGPairs.VSPair v2 = new VSVGPairs.VSPair(ePairStatusControl.Status); v2.PairType = VSVGPairs.VSVGPairType.SingleValue; v2.Value = 1; v2.Status = "Pressed"; v2.Render = Enums.CAPIControlType.Button; v2.Render_Location.Row = 1; v2.Render_Location.Column = 2; v2.ControlUse = ePairControlUse._On; HS.DeviceVSP_AddPair(btnDevice.get_Ref(null), v2); // btnDevice.MISC_Set(HS, Enums.dvMISC.NO_LOG); btnDevice.MISC_Set(HS, Enums.dvMISC.SHOW_VALUES); Controller.SaveConfiguration(); } HS.SetDeviceValueByRef(btnDevice.get_Ref(null), pressed ? 1 : 0, true); return(true); }
public Device AddStatusControlRangeField(int startValue, int endValue, string suffix, bool includeValues = true, string graphicsPath = null) { var vsPair = new VSVGPairs.VSPair(ePairStatusControl.Both) { PairType = VSVGPairs.VSVGPairType.Range, RangeStart = startValue, RangeEnd = endValue, RangeStatusSuffix = suffix, IncludeValues = includeValues, }; _hs.DeviceVSP_AddPair(Id, vsPair); if (graphicsPath != null) { AddStatusGraphicField(startValue, endValue, graphicsPath); } return(this); }
public Device AddDropdown(int startValue, int endValue, string suffix, string graphicsPath = null) { var vsPair = new VSVGPairs.VSPair(ePairStatusControl.Both) { PairType = VSVGPairs.VSVGPairType.Range, RangeStart = startValue, RangeEnd = endValue, RangeStatusSuffix = suffix, Render = Enums.CAPIControlType.ValuesRange }; _hs.DeviceVSP_AddPair(Id, vsPair); if (graphicsPath != null) { AddStatusGraphicField(startValue, endValue, graphicsPath); } return(this); }
public Device AddButton(double value, string status, string graphicsPath = null) { var vsPair = new VSVGPairs.VSPair(ePairStatusControl.Both) { PairType = VSVGPairs.VSVGPairType.SingleValue, Value = value, Status = status, Render = Enums.CAPIControlType.Button }; _hs.DeviceVSP_AddPair(Id, vsPair); if (graphicsPath != null) { AddStatusGraphicField((int)value, -1, graphicsPath); } return(this); }
private void _createTemperature(string label) { if (Temperature != 0) { return; } IHSApplication hs = _plugin.hs; int hsRef = hs.NewDeviceRef(label + " Color Temperature"); DeviceClass device = (DeviceClass)hs.GetDeviceByRef(hsRef); device.set_Address(hs, GetSubDeviceAddress(SubDeviceType.Temperature)); device.set_Interface(hs, _plugin.Name); device.set_InterfaceInstance(hs, _plugin.InstanceFriendlyName()); device.set_Device_Type_String(hs, "LIFX Device Color Temperature"); device.set_DeviceType_Set(hs, new DeviceTypeInfo_m.DeviceTypeInfo { Device_API = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Plug_In }); VSVGPairs.VSPair temp = new VSVGPairs.VSPair(ePairStatusControl.Both); temp.PairType = VSVGPairs.VSVGPairType.Range; temp.Render = Enums.CAPIControlType.ValuesRangeSlider; temp.RangeStart = 2500; temp.RangeEnd = 9000; temp.RangeStatusSuffix = " K"; hs.DeviceVSP_AddPair(hsRef, temp); device.MISC_Set(hs, Enums.dvMISC.SHOW_VALUES); _plugin.IgnoreNextDeviceControl(hsRef); hs.SetDeviceValueByRef(hsRef, 3200, false); Temperature = hsRef; }
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); }
private static void Default_VS_Pairs_AddUpdateUtil(int dvRef, VSVGPairs.VSPair Pair) { if (Pair == null) { return; } if (dvRef < 1) { return; } if (!hs.DeviceExistsRef(dvRef)) { return; } VSVGPairs.VSPair Existing = null; // The purpose of this procedure is to add the protected, default VS/VG pairs WITHOUT overwriting any user added // pairs unless absolutely necessary (because they conflict). try { Existing = hs.DeviceVSP_Get(dvRef, Pair.Value, Pair.ControlStatus); //VSPairs.GetPairByValue(Pair.Value, Pair.ControlStatus) if (Existing != null) { // This is unprotected, so it is a user's value/Status pair. if (Existing.ControlStatus == HomeSeerAPI.ePairStatusControl.Both & Pair.ControlStatus != HomeSeerAPI.ePairStatusControl.Both) { // The existing one is for BOTH, so try changing it to the opposite of what we are adding and then add it. if (Pair.ControlStatus == HomeSeerAPI.ePairStatusControl.Status) { if (!hs.DeviceVSP_ChangePair(dvRef, Existing, HomeSeerAPI.ePairStatusControl.Control)) { hs.DeviceVSP_ClearBoth(dvRef, Pair.Value); hs.DeviceVSP_AddPair(dvRef, Pair); } else { hs.DeviceVSP_AddPair(dvRef, Pair); } } else { if (!hs.DeviceVSP_ChangePair(dvRef, Existing, HomeSeerAPI.ePairStatusControl.Status)) { hs.DeviceVSP_ClearBoth(dvRef, Pair.Value); hs.DeviceVSP_AddPair(dvRef, Pair); } else { hs.DeviceVSP_AddPair(dvRef, Pair); } } } else if (Existing.ControlStatus == HomeSeerAPI.ePairStatusControl.Control) { // There is an existing one that is STATUS or CONTROL - remove it if ours is protected. hs.DeviceVSP_ClearControl(dvRef, Pair.Value); hs.DeviceVSP_AddPair(dvRef, Pair); } else if (Existing.ControlStatus == HomeSeerAPI.ePairStatusControl.Status) { // There is an existing one that is STATUS or CONTROL - remove it if ours is protected. hs.DeviceVSP_ClearStatus(dvRef, Pair.Value); hs.DeviceVSP_AddPair(dvRef, Pair); } } else { // There is not a pair existing, so just add it. hs.DeviceVSP_AddPair(dvRef, Pair); } } catch (Exception) { } }
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); }
public bool SetButtonState(int button, Boolean pressed) { String btnDeviceId = DeviceId + ":" + button; // Console.WriteLine("Button {0} pressed: {1}", button, pressed); var btnDevice = Controller.getHSDevice(EnOceanController.EnOceanDeviceType.ChildDevice, btnDeviceId); buttonState[button] = pressed; if (btnDevice == null) { Console.WriteLine("No button device for btn {0} - creating"); btnDevice = Controller.createHSDevice(hsDevice.get_Name(null) + " Button " + button, EnOceanController.EnOceanDeviceType.ChildDevice, btnDeviceId); btnDevice.set_Device_Type_String(HS, "EnOcean " + EnOceanController.EnOceanDeviceType.ChildDevice.ToString()); btnDevice.set_Relationship(HS, Enums.eRelationship.Child); btnDevice.AssociatedDevice_Add(HS, hsDevice.get_Ref(null)); hsDevice.AssociatedDevice_Add(HS, btnDevice.get_Ref(null)); VSVGPairs.VSPair v = new VSVGPairs.VSPair(ePairStatusControl.Status); v.PairType = VSVGPairs.VSVGPairType.SingleValue; v.Value = 0; v.Status = "Released"; v.Render = Enums.CAPIControlType.Button; v.Render_Location.Row = 1; v.Render_Location.Column = 1; v.ControlUse = ePairControlUse._Off; HS.DeviceVSP_AddPair(btnDevice.get_Ref(null), v); VSVGPairs.VSPair v2 = new VSVGPairs.VSPair(ePairStatusControl.Status); v2.PairType = VSVGPairs.VSVGPairType.SingleValue; v2.Value = 1; v2.Status = "Pressed"; v2.Render = Enums.CAPIControlType.Button; v2.Render_Location.Row = 1; v2.Render_Location.Column = 2; v2.ControlUse = ePairControlUse._On; HS.DeviceVSP_AddPair(btnDevice.get_Ref(null), v2); // btnDevice.MISC_Set(HS, Enums.dvMISC.NO_LOG); btnDevice.MISC_Set(HS, Enums.dvMISC.SHOW_VALUES); Controller.SaveConfiguration(); } HS.SetDeviceValueByRef(btnDevice.get_Ref(null), pressed ? 1 : 0, true); 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); }
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); }
public override void AddOrUpdateHSDeviceProperties() { Console.WriteLine("FIXME: Adding HS Device control status"); // hsDevice.MISC_Set(HS, Enums.dvMISC.NO_LOG); hsDevice.MISC_Set(HS, Enums.dvMISC.SHOW_VALUES); hsDevice.set_Relationship(HS, Enums.eRelationship.Standalone); // Clear existing VSP HS.DeviceVSP_ClearAll(hsDevice.get_Ref(null), true); VSVGPairs.VSPair v = new VSVGPairs.VSPair(ePairStatusControl.Status); v.PairType = VSVGPairs.VSVGPairType.Range; var vg = new HomeSeerAPI.VSVGPairs.VGPair(); vg.PairType = VSVGPairs.VSVGPairType.Range; //v.ControlStatus = ePairStatusControl.Status; //v.ControlUse = ePairControlUse. v.RangeStatusSuffix = " C"; v.RangeStart = -50; v.RangeEnd = 100; v.RangeStatusDecimals = 2; vg.RangeStart = -50; vg.RangeEnd = 100; vg.Graphic = "/images/HomeSeer/status/Thermometer-50.png"; v.Render = Enums.CAPIControlType.ValuesRange; hsDevice.MISC_Clear(HS, Enums.dvMISC.SHOW_VALUES); // Should be set or not ? HS.DeviceVSP_AddPair(hsDevice.get_Ref(null), v); HS.DeviceVGP_AddPair(hsDevice.get_Ref(null), vg); /* VSVGPairs.VSPair v = new VSVGPairs.VSPair(ePairStatusControl.Status); v.PairType = VSVGPairs.VSVGPairType.SingleValue; v.Value = 0; v.Status = "Closed"; v.Render = Enums.CAPIControlType.Button; v.Render_Location.Row = 1; v.Render_Location.Column = 1; v.ControlUse = ePairControlUse._Off; HS.DeviceVSP_AddPair(hsDevice.get_Ref(null), v); VSVGPairs.VSPair v2 = new VSVGPairs.VSPair(ePairStatusControl.Status); v2.PairType = VSVGPairs.VSVGPairType.SingleValue; v2.Value = 1; v2.Status = "Open"; v2.Render = Enums.CAPIControlType.Button; v2.Render_Location.Row = 1; v2.Render_Location.Column = 2; v2.ControlUse = ePairControlUse._On; HS.DeviceVSP_AddPair(hsDevice.get_Ref(null), v2); */ SaveConfiguration(); }
private void _createBrightness(string label) { if (Brightness != 0) { return; } IHSApplication hs = _plugin.hs; int hsRef = hs.NewDeviceRef(label + " Brightness"); DeviceClass device = (DeviceClass)hs.GetDeviceByRef(hsRef); device.set_Address(hs, GetSubDeviceAddress(SubDeviceType.Brightness)); device.set_Interface(hs, _plugin.Name); device.set_InterfaceInstance(hs, _plugin.InstanceFriendlyName()); device.set_Device_Type_String(hs, "LIFX Device Brightness"); device.set_DeviceType_Set(hs, new DeviceTypeInfo_m.DeviceTypeInfo { Device_API = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Plug_In }); // Create the buttons and slider VSVGPairs.VSPair offBtn = new VSVGPairs.VSPair(ePairStatusControl.Both); offBtn.PairType = VSVGPairs.VSVGPairType.SingleValue; offBtn.Render = Enums.CAPIControlType.Button; offBtn.Status = "Off"; offBtn.ControlUse = ePairControlUse._Off; offBtn.Value = 0; offBtn.Render_Location = new Enums.CAPIControlLocation { Column = 1, Row = 1, }; VSVGPairs.VSPair onBtn = new VSVGPairs.VSPair(ePairStatusControl.Both); onBtn.PairType = VSVGPairs.VSVGPairType.SingleValue; onBtn.Render = Enums.CAPIControlType.Button; onBtn.Status = "On"; onBtn.ControlUse = ePairControlUse._On; onBtn.Value = 99; onBtn.Render_Location = new Enums.CAPIControlLocation { Column = 2, Row = 1, }; VSVGPairs.VSPair lastBtn = new VSVGPairs.VSPair(ePairStatusControl.Control); lastBtn.PairType = VSVGPairs.VSVGPairType.SingleValue; lastBtn.Render = Enums.CAPIControlType.Button; lastBtn.Status = "Last"; lastBtn.ControlUse = ePairControlUse._On_Alternate; lastBtn.Value = 255; lastBtn.Render_Location = new Enums.CAPIControlLocation { Column = 4, Row = 1, }; VSVGPairs.VSPair dim = new VSVGPairs.VSPair(ePairStatusControl.Both); dim.PairType = VSVGPairs.VSVGPairType.Range; dim.Render = Enums.CAPIControlType.ValuesRangeSlider; dim.RangeStart = 1; dim.RangeEnd = 98; dim.RangeStatusPrefix = "Dim "; dim.RangeStatusSuffix = "%"; dim.ControlUse = ePairControlUse._Dim; dim.Render_Location = new Enums.CAPIControlLocation { Column = 1, Row = 2, ColumnSpan = 3, }; hs.DeviceVSP_AddPair(hsRef, offBtn); hs.DeviceVSP_AddPair(hsRef, onBtn); hs.DeviceVSP_AddPair(hsRef, lastBtn); hs.DeviceVSP_AddPair(hsRef, dim); device.MISC_Set(hs, Enums.dvMISC.SHOW_VALUES); device.MISC_Set(hs, Enums.dvMISC.IS_LIGHT); _plugin.IgnoreNextDeviceControl(hsRef); hs.SetDeviceValueByRef(hsRef, 0, false); Brightness = hsRef; }
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 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); }
/// <summary> /// Add the protected, default VS/VG pairs WITHOUT overwriting any user added pairs unless absolutely necessary (because they conflict). /// </summary> /// <param name="refId">The device reference identifier for HomeSeer.</param> /// <param name="Pair">The value/status pair.</param> private void Default_VS_Pairs_AddUpdateUtil(int refId, VSVGPairs.VSPair Pair) { if ((Pair == null) || (refId < 1) || (!hs.DeviceExistsRef(refId))) { return; } try { VSVGPairs.VSPair Existing = hs.DeviceVSP_Get(refId, Pair.Value, Pair.ControlStatus); if (Existing != null) { // This is unprotected, so it is a user's value/ status pair. if ((Existing.ControlStatus == HomeSeerAPI.ePairStatusControl.Both) && (Pair.ControlStatus != HomeSeerAPI.ePairStatusControl.Both)) { // The existing one is for BOTH, so try changing it to the opposite of what we are adding and then add it. if (Pair.ControlStatus == HomeSeerAPI.ePairStatusControl.Status) { if (!hs.DeviceVSP_ChangePair(refId, Existing, HomeSeerAPI.ePairStatusControl.Control)) { hs.DeviceVSP_ClearBoth(refId, Pair.Value); hs.DeviceVSP_AddPair(refId, Pair); } else { hs.DeviceVSP_AddPair(refId, Pair); } } else { if (!hs.DeviceVSP_ChangePair(refId, Existing, HomeSeerAPI.ePairStatusControl.Status)) { hs.DeviceVSP_ClearBoth(refId, Pair.Value); hs.DeviceVSP_AddPair(refId, Pair); } else { hs.DeviceVSP_AddPair(refId, Pair); } } } else if (Existing.ControlStatus == HomeSeerAPI.ePairStatusControl.Control) { // There is an existing one that is STATUS or CONTROL - remove it if ours is protected. hs.DeviceVSP_ClearControl(refId, Pair.Value); hs.DeviceVSP_AddPair(refId, Pair); } else if (Existing.ControlStatus == HomeSeerAPI.ePairStatusControl.Status) { // There is an existing one that is STATUS or CONTROL - remove it if ours is protected. hs.DeviceVSP_ClearStatus(refId, Pair.Value); hs.DeviceVSP_AddPair(refId, Pair); } } else { // There is not a pair existing, so just add it. hs.DeviceVSP_AddPair(refId, Pair); } } catch (Exception) { } }