public EnOceanDeviceBase(IHSApplication Hs, EnOceanController Ctrl, String deviceId, JObject config) { HS = Hs; DeviceId = deviceId; deviceConfig = config; Controller = Ctrl; deviceType = (EDeviceTypes)(int)config["device_type"]; GetHSDevice(); // Fetch or allocate new hs device }
public void Initialize() { Dictionary <int, Scheduler.Classes.DeviceClass> device_map = new Dictionary <int, Scheduler.Classes.DeviceClass>(); Dictionary <int, bool> processed = new Dictionary <int, bool>(); Scheduler.Classes.clsDeviceEnumeration devenum = HS.GetDeviceEnumerator() as Scheduler.Classes.clsDeviceEnumeration; while (!devenum.Finished) { Scheduler.Classes.DeviceClass dev = devenum.GetNext(); if (dev.get_Interface(null) != Constants.PLUGIN_STRING_NAME) { continue; // Not ours! } var extraData = dev.get_PlugExtraData_Get(HS); if (extraData == null) { extraData = new PlugExtraData.clsPlugExtraData(); } var typeStr = (string)extraData.GetNamed("EnOcean Type"); if (typeStr == null) { continue; // No type - continue } if (typeStr != "Controller") { continue; // Not a controller } var dataStr = (string)extraData.GetNamed("EnOcean Cfg"); if (dataStr == null) { Console.WriteLine("No json data on device - skipping"); // extraData.AddNamed("EnOcean Cfg", config.ToString()); // rootDev.set_PlugExtraData_Set(HS, extraData); continue; // Skip interface } else { var config = JObject.Parse(dataStr); Console.WriteLine("Loaded config: {0}", config.ToString()); var ctrlInstance = new EnOceanController(HS, HSCB, hspiInst, config); ctrlInstance.Initialize(); AddInterface(ctrlInstance); } } }
static public IEnOceanDevice CreateDeviceInstance(IHSApplication HS, EnOceanController Controller, String deviceId, String deviceType, JObject config) { EDeviceTypes DeviceType; if (Enum.TryParse <EDeviceTypes>(deviceType, out DeviceType)) { config["device_type"] = (int)DeviceType; switch (DeviceType) { case EDeviceTypes.PUSHBUTTON_4x: { Console.WriteLine("BUTTON THING"); var newDev = new EnOceanButtonDevice(HS, Controller, deviceId, config); Controller.RegisterDevice(newDev); } break; case EDeviceTypes.DOORCONTACT: { Console.WriteLine("DOOR THING"); var newDev = new EnOceanDoorContactDevice(HS, Controller, deviceId, config); Controller.RegisterDevice(newDev); } break; case EDeviceTypes.TEMPERATURE_SENSOR: { Console.WriteLine("TEMPERATURE THING"); var newDev = new EnOceanTempSensorDevice(HS, Controller, deviceId, config); Controller.RegisterDevice(newDev); } break; } } else { Console.WriteLine("Error getting type: {0}", deviceType); } return(null); }
public static IEnOceanDevice CreateDeviceInstance(IHSApplication HS, EnOceanController Controller, String deviceId, String deviceType, JObject config) { EDeviceTypes DeviceType; if (Enum.TryParse<EDeviceTypes>(deviceType, out DeviceType)) { config["device_type"] = (int)DeviceType; switch (DeviceType) { case EDeviceTypes.PUSHBUTTON_4x: { Console.WriteLine("BUTTON THING"); var newDev = new EnOceanButtonDevice(HS, Controller, deviceId, config); Controller.RegisterDevice(newDev); } break; case EDeviceTypes.DOORCONTACT: { Console.WriteLine("DOOR THING"); var newDev = new EnOceanDoorContactDevice(HS, Controller, deviceId, config); Controller.RegisterDevice(newDev); } break; case EDeviceTypes.TEMPERATURE_SENSOR: { Console.WriteLine("TEMPERATURE THING"); var newDev = new EnOceanTempSensorDevice(HS, Controller, deviceId, config); Controller.RegisterDevice(newDev); } break; } } else { Console.WriteLine("Error getting type: {0}", deviceType); } return null; }
public EnOceanButtonDevice(IHSApplication HS, EnOceanController Ctrl, String deviceId, JObject config) : base(HS, Ctrl, deviceId, config) { Console.WriteLine("Init of EnOceanButtonDevice : {0}", deviceId); }
public void AddInterface(EnOceanController newInterface) { interfaceList.Add(newInterface.ControllerId, newInterface); }
public PageReturn PostHandler_HS3_EnOcean_Interfaces(String pPageName, String pCleanName, NameValueCollection pArgs) { var stb = new StringBuilder(); if (pArgs.Get("add_interface") != null) { String port = pArgs.Get("com_selector"); Console.WriteLine("Adding interface: " + port); var ifList = mCore.GetInterfaces(); foreach (var i in ifList) { if (i.getPortName() == port) return new PageReturn("ERROR - port exist"); } var initCfg = new JObject(); initCfg.Add("portname", port); var newCtrl = new EnOceanController(hsHost, hsHostCB, pluginInstance, initCfg); if (newCtrl.Initialize()) { newCtrl.SaveConfiguration(); mCore.AddInterface(newCtrl); } else { Console.WriteLine("Error adding interface: could not get id"); newCtrl.Close(); } } return new PageReturn("<script>window.location='" + pPageName + "';</script>\n", true); }
public void Initialize() { Dictionary<int, Scheduler.Classes.DeviceClass> device_map = new Dictionary<int, Scheduler.Classes.DeviceClass>(); Dictionary<int, bool> processed = new Dictionary<int, bool>(); Scheduler.Classes.clsDeviceEnumeration devenum = HS.GetDeviceEnumerator() as Scheduler.Classes.clsDeviceEnumeration; while (!devenum.Finished) { Scheduler.Classes.DeviceClass dev = devenum.GetNext(); if (dev.get_Interface(null) != Constants.PLUGIN_STRING_NAME) continue; // Not ours! var extraData = dev.get_PlugExtraData_Get(HS); if (extraData == null) extraData = new PlugExtraData.clsPlugExtraData(); var typeStr = (string)extraData.GetNamed("EnOcean Type"); if (typeStr == null) continue; // No type - continue if (typeStr != "Controller") continue; // Not a controller var dataStr = (string)extraData.GetNamed("EnOcean Cfg"); if (dataStr == null) { Console.WriteLine("No json data on device - skipping"); // extraData.AddNamed("EnOcean Cfg", config.ToString()); // rootDev.set_PlugExtraData_Set(HS, extraData); continue; // Skip interface } else { var config = JObject.Parse(dataStr); Console.WriteLine("Loaded config: {0}", config.ToString()); var ctrlInstance = new EnOceanController(HS, HSCB, hspiInst, config); ctrlInstance.Initialize(); AddInterface(ctrlInstance); } } }
public EnOceanTempSensorDevice(IHSApplication HS, EnOceanController Ctrl, String deviceId, JObject config) : base(HS, Ctrl, deviceId, config) { Console.WriteLine("Init of EnOceanTempSensorDevice : {0}", deviceId); }