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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }