コード例 #1
0
ファイル: Util.cs プロジェクト: spudwebb/ECOBEESIID_Plugin
        static internal DeviceClass GenericHomeSeerDevice(DeviceClass dv, string dvName, string dvName_long, string device_id)
        {
            int dvRef;

            Log("Creating Device: " + dvName_long + " " + dvName, LogType.LOG_TYPE_INFO);
            var DT = new DeviceTypeInfo_m.DeviceTypeInfo();

            DT.Device_API = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Plug_In;
            if (dvName.Contains("Root"))
            {
                DT.Device_Type = 99;
            }
            hs.NewDeviceRef(dvName_long + " " + dvName);
            dvRef = hs.GetDeviceRefByName(dvName_long + " " + dvName);
            dv    = (DeviceClass)hs.GetDeviceByRef(dvRef);
            dv.set_Address(hs, "");
            SetDeviceKeys(dv, device_id, dvName);
            //dv.set_Code(hs, device_id + "-" + dvName_long + "-" + dvName);
            dv.set_Location(hs, "Thermostat");
            dv.set_Location2(hs, "Ecobee");
            dv.set_Interface(hs, IFACE_NAME);
            dv.set_Status_Support(hs, true);
            dv.set_Can_Dim(hs, false);
            dv.MISC_Set(hs, Enums.dvMISC.NO_LOG);
            dv.set_DeviceType_Set(hs, DT);
            dv.set_Relationship(hs, Enums.eRelationship.Child);
            return(dv);
        }
コード例 #2
0
        /// <summary>
        /// Creates the HS device.
        /// </summary>
        /// <param name="parent">The data for parent of device.</param>
        /// <param name="rootDeviceData">The root device data.</param>
        /// <param name="deviceData">The device data.</param>
        /// <returns>New Device</returns>
        private DeviceClass CreateDevice([AllowNull] DeviceClass parent, [AllowNull] RootDeviceData rootDeviceData, DeviceDataBase deviceData)
        {
            if (rootDeviceData != null)
            {
                LogDebug(Invariant($"Creating {deviceData.Name} under {rootDeviceData.Name}"));
            }
            else
            {
                LogDebug(Invariant($"Creating Root {deviceData.Name}"));
            }

            DeviceClass device = null;
            int         refId  = HS.NewDeviceRef(rootDeviceData != null ? Invariant($"{rootDeviceData.Name} {deviceData.Name}") : deviceData.Name);

            if (refId > 0)
            {
                device = (DeviceClass)HS.GetDeviceByRef(refId);
                string address = rootDeviceData != null?CreateChildAddress(rootDeviceData.Name, deviceData.Name) : deviceData.Name;

                device.set_Address(HS, address);
                device.set_Device_Type_String(HS, deviceData.HSDeviceTypeString);
                var deviceType = new DeviceTypeInfo_m.DeviceTypeInfo();
                deviceType.Device_API  = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Plug_In;
                deviceType.Device_Type = deviceData.HSDeviceType;

                device.set_DeviceType_Set(HS, deviceType);
                device.set_Interface(HS, Name);
                device.set_InterfaceInstance(HS, string.Empty);
                device.set_Last_Change(HS, DateTime.Now);
                device.set_Location(HS, Name);
                var pairs = deviceData.StatusPairs;
                foreach (var pair in pairs)
                {
                    HS.DeviceVSP_AddPair(refId, pair);
                }

                var gPairs = deviceData.GraphicsPairs;
                foreach (var gpair in gPairs)
                {
                    HS.DeviceVGP_AddPair(refId, gpair);
                }

                device.MISC_Set(HS, Enums.dvMISC.STATUS_ONLY);
                device.MISC_Set(HS, Enums.dvMISC.SHOW_VALUES);
                device.MISC_Clear(HS, Enums.dvMISC.AUTO_VOICE_COMMAND);
                device.MISC_Clear(HS, Enums.dvMISC.SET_DOES_NOT_CHANGE_LAST_CHANGE);
                device.set_Status_Support(HS, false);

                if (parent != null)
                {
                    parent.set_Relationship(HS, Enums.eRelationship.Parent_Root);
                    device.set_Relationship(HS, Enums.eRelationship.Child);
                    device.AssociatedDevice_Add(HS, parent.get_Ref(HS));
                    parent.AssociatedDevice_Add(HS, device.get_Ref(HS));
                }
                deviceData.SetInitialData(HS, device);
            }

            return(device);
        }
コード例 #3
0
        public void Create(string name, bool force)
        {
            string addr = "AK_" + name;

            deviceHS = controller.GetHSDeviceByAddress(addr, out bool created, create: true, name: name);

            RefId = deviceHS.get_Ref(null);

            if (created)
            {
                DeviceTypeInfo_m.DeviceTypeInfo DT = new DeviceTypeInfo_m.DeviceTypeInfo();
                DT.Device_API  = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Security;
                DT.Device_Type = (int)DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Plug_In;
                deviceHS.set_DeviceType_Set(hs, DT);
                deviceHS.set_InterfaceInstance(hs, "");
                deviceHS.set_Status_Support(hs, false);//Set to True if the devices can be polled,  false if not
                deviceHS.MISC_Set(hs, Enums.dvMISC.SHOW_VALUES);
                deviceHS.MISC_Set(hs, Enums.dvMISC.NO_LOG);

                Interface = controller.plugin.Name;
                Type      = "Virtual";
                Address   = addr;

                //Location = "EnOcean";
                //Location2 = "EnOcean";
                //LastChange = DateTime.Now;
            }

            controller.UsedDevices[RefId] = this;
        }
コード例 #4
0
        public string MakeNewRule()
        {
            var dv = Instance.host.NewDeviceRef("R");


            Scheduler.Classes.DeviceClass newDevice = (Scheduler.Classes.DeviceClass)Instance.host.GetDeviceByRef(dv);
            newDevice.set_InterfaceInstance(Instance.host, Instance.name);
            newDevice.set_Name(Instance.host, "Type Meter Calc " + dv);
            //newDevice.set_Location2(Instance.host, "ScratchpadRule");
            newDevice.set_Location(Instance.host, "Utilities");
            newDevice.set_Location2(Instance.host, "Calcs");
            //newDevice.set_Interface(Instance.host, "Modbus Configuration");//Put here the registered name of the page for what we want in the Modbus tab!!!  So easy!
            newDevice.set_Interface(Instance.host, Util.IFACE_NAME); //Needed to link device to plugin, so the tab calls back to the correct hardcoded homeseer function
                                                                     //newDevice.set_InterfaceInstance()''  SET INTERFACE INSTANCE
            newDevice.set_Relationship(Instance.host, Enums.eRelationship.Not_Set);

            newDevice.MISC_Set(Instance.host, Enums.dvMISC.NO_LOG);
            newDevice.MISC_Set(Instance.host, Enums.dvMISC.SHOW_VALUES);
            // newDevice.MISC_Set(Instance.host, Enums.dvMISC.HIDDEN);
            HomeSeerAPI.PlugExtraData.clsPlugExtraData EDO = new PlugExtraData.clsPlugExtraData();

            // EDO = newDevice.get_PlugExtraData_Get(Instance.host);

            string ruleString = makeNewRules();


            string userNote = newDevice.get_UserNote(Instance.host);

            userNote  = userNote.Split("PLUGIN EXTRA DATA:".ToCharArray())[0];
            userNote += "PLUGIN EXTRA DATA:" + ruleString.ToString();
            newDevice.set_UserNote(Instance.host, userNote);

            EDO.AddNamed("SSIDKey", ruleString);
            newDevice.set_PlugExtraData_Set(Instance.host, EDO);

            // newDevice.set_Device_Type_String(Instance.host, makeNewModbusGateway());
            var DevINFO = new DeviceTypeInfo_m.DeviceTypeInfo();

            DevINFO.Device_API = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Plug_In;


            newDevice.set_DeviceType_Set(Instance.host, DevINFO);
            Instance.Devices.Add(new SiidDevice(Instance, newDevice));

            MakeStewardVSP(dv);

            return("refresh");
        }
コード例 #5
0
        public bool Create(string name,
                           bool force,
                           string type                       = "Virtual",
                           eDeviceAPI Device_API             = eDeviceAPI.Plug_In,
                           int Device_Type                   = (int)eDeviceAPI.Plug_In,
                           int Device_SubType                = 0,
                           string Device_SubType_Description = ""
                           )
        {
            string addr = ADDR_PREFIX + name;

            deviceHS = controller.GetHSDeviceByAddress(addr, out bool created, create: true, name: name);

            RefId = deviceHS.get_Ref(null);

            if (created)
            {
                DeviceTypeInfo_m.DeviceTypeInfo DT = new DeviceTypeInfo_m.DeviceTypeInfo()
                {
                    Device_API                 = Device_API,
                    Device_Type                = Device_Type,
                    Device_SubType             = Device_SubType,
                    Device_SubType_Description = Device_SubType_Description
                };
                deviceHS.set_DeviceType_Set(hs, DT);

                deviceHS.set_InterfaceInstance(hs, "");
                deviceHS.set_Status_Support(hs, false);//Set to True if the devices can be polled,  false if not
                deviceHS.MISC_Set(hs, Enums.dvMISC.SHOW_VALUES | Enums.dvMISC.NO_LOG);
                deviceHS.MISC_Clear(hs, Enums.dvMISC.AUTO_VOICE_COMMAND);

                Interface = controller.plugin.Name;
                Type      = type;
                Address   = addr;

                //Location = "EnOcean";
                //Location2 = "EnOcean";
                //LastChange = DateTime.Now;
            }

            controller.UsedDevices[RefId] = this;

            return(created);
        }
コード例 #6
0
        /// <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);
        }
コード例 #7
0
ファイル: Enocean.cs プロジェクト: lulzzz/HS3_EnOcean_Plugin
        public Scheduler.Classes.DeviceClass createHSDevice(String Name, EnOceanDeviceType type, String id = "")
        {
            var devRefId = HS.NewDeviceRef(Name);
            var newDev   = (Scheduler.Classes.DeviceClass)HS.GetDeviceByRef(devRefId);

            var DT = new DeviceTypeInfo_m.DeviceTypeInfo();

            DT.Device_API     = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Plug_In;
            DT.Device_Type    = 33;
            DT.Device_SubType = (int)type;
            newDev.set_DeviceType_Set(HS, DT);
            newDev.set_Address(HS, id);
            newDev.set_Interface(HS, Constants.PLUGIN_STRING_NAME);
            newDev.set_InterfaceInstance(HS, "");
            newDev.set_Last_Change(HS, DateTime.Now);
            newDev.set_Location(HS, "EnOcean");
            newDev.set_Location2(HS, "EnOcean");
            return(newDev);
        }
コード例 #8
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);
        }
コード例 #9
0
        public Scheduler.Classes.DeviceClass createHSDevice(String Name, EnOceanDeviceType type, String id = "")
        {
            var devRefId = HS.NewDeviceRef(Name);
            var newDev = (Scheduler.Classes.DeviceClass)HS.GetDeviceByRef(devRefId);

            var DT = new DeviceTypeInfo_m.DeviceTypeInfo();
            DT.Device_API = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Plug_In;
            DT.Device_Type = 33;
            DT.Device_SubType = (int)type;
            newDev.set_DeviceType_Set(HS, DT);
            newDev.set_Address(HS, id);
            newDev.set_Interface(HS, Constants.PLUGIN_STRING_NAME);
            newDev.set_InterfaceInstance(HS, "");
            newDev.set_Last_Change(HS, DateTime.Now);
            newDev.set_Location(HS, "EnOcean");
            newDev.set_Location2(HS, "EnOcean");
            return newDev;
        }
コード例 #10
0
        /// <summary>
        /// Creates the HS device.
        /// </summary>
        /// <param name="optionalParentRefId">The optional parent reference identifier.</param>
        /// <param name="name">The name of device</param>
        /// <param name="deviceAddress">The device address.</param>
        /// <param name="deviceData">The device data.</param>
        /// <returns>
        /// New Device
        /// </returns>
        private DeviceClass CreateDevice(int?optionalParentRefId, string name, string deviceAddress, DeviceDataBase deviceData)
        {
            Trace.TraceInformation(Invariant($"Creating Device with Address:{deviceAddress}"));

            DeviceClass device = null;
            int         refId  = HS.NewDeviceRef(name);

            if (refId > 0)
            {
                device = (DeviceClass)HS.GetDeviceByRef(refId);
                string address = deviceAddress;
                device.set_Address(HS, address);
                device.set_Device_Type_String(HS, deviceData.HSDeviceTypeString);
                var deviceType = new DeviceTypeInfo_m.DeviceTypeInfo
                {
                    Device_API  = deviceData.DeviceAPI,
                    Device_Type = deviceData.HSDeviceType
                };

                device.set_DeviceType_Set(HS, deviceType);
                device.set_Interface(HS, PluginData.PlugInName);
                device.set_InterfaceInstance(HS, string.Empty);
                device.set_Last_Change(HS, DateTime.Now);
                device.set_Location(HS, PluginData.PlugInName);

                device.MISC_Set(HS, Enums.dvMISC.SHOW_VALUES);
                if (deviceData.StatusDevice)
                {
                    device.MISC_Set(HS, Enums.dvMISC.STATUS_ONLY);
                    device.MISC_Clear(HS, Enums.dvMISC.AUTO_VOICE_COMMAND);
                    device.MISC_Clear(HS, Enums.dvMISC.SET_DOES_NOT_CHANGE_LAST_CHANGE);
                    device.set_Status_Support(HS, true);
                }
                else
                {
                    device.MISC_Set(HS, Enums.dvMISC.SET_DOES_NOT_CHANGE_LAST_CHANGE);
                    device.MISC_Set(HS, Enums.dvMISC.AUTO_VOICE_COMMAND);
                    device.set_Status_Support(HS, false);
                }

                var pairs = deviceData.StatusPairs;
                foreach (var pair in pairs)
                {
                    HS.DeviceVSP_AddPair(refId, pair);
                }

                var gPairs = deviceData.GraphicsPairs;
                foreach (var gpair in gPairs)
                {
                    HS.DeviceVGP_AddPair(refId, gpair);
                }

                DeviceClass parent = null;
                if (optionalParentRefId.HasValue)
                {
                    parent = (DeviceClass)HS.GetDeviceByRef(optionalParentRefId.Value);
                }

                if (parent != null)
                {
                    parent.set_Relationship(HS, Enums.eRelationship.Parent_Root);
                    device.set_Relationship(HS, Enums.eRelationship.Child);
                    device.AssociatedDevice_Add(HS, parent.get_Ref(HS));
                    parent.AssociatedDevice_Add(HS, device.get_Ref(HS));
                }

                deviceData.SetOnDeviceCreateData(HS, CameraSettings, refId);
            }

            return(device);
        }
コード例 #11
0
ファイル: Util.cs プロジェクト: spudwebb/ECOBEESIID_Plugin
        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);
        }
コード例 #12
0
        private int CreateBasicDevice()
        {
            try
            {
                //Creating a brand new device, and get the actual device from the device reference
                var fullName = Location + GetName() + Location2 + GetName() +
                               Name + Unique;

                var dv = (DeviceClass)_hs.GetDeviceByRef(_hs.NewDeviceRef(fullName));

                var dvRef = dv.get_Ref(_hs);

                //Setting the type to plugin device
                var typeInfo = new DeviceTypeInfo_m.DeviceTypeInfo
                {
                    Device_Type = (int)DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Plug_In,
                    Device_API  = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Plug_In,
                    Device_SubType_Description = Name
                };

                dv.set_DeviceType_Set(_hs, typeInfo);

                var pluginExtraData = new PlugExtraData.clsPlugExtraData();
                //var pluginExtraData = new PlugExtraData.clsPlugExtraData();
                if (PEDStorage.Count > 0)
                {
                    //PED storage got something
                    foreach (KeyValuePair <string, string> pair in PEDStorage)
                    {
                        Console.WriteLine("Found PED");
                        pluginExtraData.AddNamed(pair.Key.ToString(), pair.Value.ToString());
                    }
                }


                dv.set_PlugExtraData_Set(_hs, pluginExtraData);

                dv.set_Interface(_hs, GetName());                      //Don't change this, or the device won't be associated with your plugin
                dv.set_InterfaceInstance(_hs, InstanceFriendlyName()); //Don't change this, or the device won't be associated with that particular instance

                dv.set_Device_Type_String(_hs, Name);
                dv.set_Can_Dim(_hs, false);

                //Setting the name and locations
                dv.set_Name(_hs, Name);
                dv.set_Location(_hs, Location);
                dv.set_Location2(_hs, Location2);

                //Misc options
                dv.set_Status_Support(_hs, true);           //Set to True if the devices can be polled, False if not. (See PollDevice in hspi.vb)
                dv.MISC_Set(_hs, Enums.dvMISC.SHOW_VALUES); //If not set, device control options will not be displayed.
                //dv.MISC_Set(_hs, Enums.dvMISC.NO_LOG); //As default, we don't want to Log every device value change to the Log

                //Committing to the database, clear value-status-pairs and graphic-status pairs
                _hs.SaveEventsDevices();

                _hs.DeviceVSP_ClearAll(dvRef, true);
                _hs.DeviceVGP_ClearAll(dvRef, true);

                Id = dvRef;

                return(dvRef); //Return the reference
            }
            catch (Exception ex)
            {
                throw new Exception("Error creating basic device: " + ex.Message, ex);
            }
        }
コード例 #13
0
        public string addSubrule(string data)
        {
            //Make a new rule, but make it in service to an existing rule:
            var dv = Instance.host.NewDeviceRef("R");


            Scheduler.Classes.DeviceClass newDevice = (Scheduler.Classes.DeviceClass)Instance.host.GetDeviceByRef(dv);
            newDevice.set_InterfaceInstance(Instance.host, Instance.name);
            newDevice.set_Name(Instance.host, "Type Meter Rate" + dv);
            //   newDevice.set_Location2(Instance.host, "ScratchpadSubRule");
            newDevice.set_Location(Instance.host, "Utilities");
            newDevice.set_Location2(Instance.host, "Rates");

            //newDevice.set_Interface(Instance.host, "Modbus Configuration");//Put here the registered name of the page for what we want in the Modbus tab!!!  So easy!
            newDevice.set_Interface(Instance.host, Util.IFACE_NAME); //Needed to link device to plugin, so the tab calls back to the correct hardcoded homeseer function
                                                                     //newDevice.set_InterfaceInstance()''  SET INTERFACE INSTANCE
            newDevice.set_Relationship(Instance.host, Enums.eRelationship.Not_Set);

            newDevice.MISC_Set(Instance.host, Enums.dvMISC.NO_LOG);
            newDevice.MISC_Set(Instance.host, Enums.dvMISC.SHOW_VALUES);
            // newDevice.MISC_Set(Instance.host, Enums.dvMISC.HIDDEN);
            HomeSeerAPI.PlugExtraData.clsPlugExtraData EDO = new PlugExtraData.clsPlugExtraData();

            // EDO = newDevice.get_PlugExtraData_Get(Instance.host);


            string ruleString = makeNewRules();


            string userNote = newDevice.get_UserNote(Instance.host);

            userNote  = userNote.Split("PLUGIN EXTRA DATA:".ToCharArray())[0];
            userNote += "PLUGIN EXTRA DATA:" + ruleString.ToString();
            newDevice.set_UserNote(Instance.host, userNote);

            EDO.AddNamed("SSIDKey", ruleString);
            newDevice.set_PlugExtraData_Set(Instance.host, EDO);

            // newDevice.set_Device_Type_String(Instance.host, makeNewModbusGateway());
            var DevINFO = new DeviceTypeInfo_m.DeviceTypeInfo();

            DevINFO.Device_API = DeviceTypeInfo_m.DeviceTypeInfo.eDeviceAPI.Plug_In;


            newDevice.set_DeviceType_Set(Instance.host, DevINFO);
            Instance.Devices.Add(new SiidDevice(Instance, newDevice));

            MakeStewardVSP(dv);



            StringBuilder stb       = new StringBuilder();
            var           page      = this;
            string        GatewayID = data.Split("_".ToCharArray())[1];


            SiidDevice GateWay = SiidDevice.GetFromListByID(Instance.Devices, Convert.ToInt32(GatewayID));

            Scheduler.Classes.DeviceClass Gateway = GateWay.Device; //Should keep in gateway a list of devices

            Gateway.AssociatedDevice_Add(Instance.host, dv);        //This is totally working actually

            return("refresh");

            stb.Append("<meta http-equiv=\"refresh\" content = \"0; URL='/deviceutility?ref=" + dv + "&edit=1'\" />");
            //    stb.Append("<a id = 'LALA' href='/deviceutility?ref=" + dv + "&edit=1'/><script>LALA.click()</script> ");
            page.AddBody(stb.ToString());
            return(page.BuildPage());
        }