void insteon_DeviceChanged(object sender, DeviceChangedEventArgs args) { DeviceId id = args.State.Device.Address; DeviceReference reference = new DeviceReference(id.ToString(), PluginName); BasicDevice device = callbacks.Devices.FindDevice(reference); if (device != null) { InsteonDeviceData deviceData = (InsteonDeviceData)device.AutomationData; if (args.State.Device is DimmingLight) { DimmingLight onOffDevice = (DimmingLight)args.State.Device; FroggyPlugin.Devices.PercentLevelDevice basicDevice = (FroggyPlugin.Devices.PercentLevelDevice)callbacks.Devices.FindDevice(reference); // Update the value, this will automatically propogate events everywhere (even back to this plugin). basicDevice.Level = onOffDevice.OnLevel * 100 / 255; } else if (args.State.Device is OnOffDevice) { OnOffDevice onOffDevice = (OnOffDevice)args.State.Device; FroggyPlugin.Devices.OnOffDevice basicDevice = (FroggyPlugin.Devices.OnOffDevice)callbacks.Devices.FindDevice(reference); basicDevice.On = onOffDevice.OnLevel != 0; } } }
void insteon_DeviceAdded(object sender, DeviceAddedEventArgs args) { DeviceId id = args.Device.Address; DeviceReference reference = new DeviceReference(id.ToString(), PluginName); BasicDevice device = callbacks.Devices.FindDevice(reference); if (device != null) { InsteonDeviceData deviceData = (InsteonDeviceData)device.AutomationData; } else { InsteonDeviceData deviceData = new InsteonDeviceData(args.Device.Category, args.Device.Subcategory); if (args.Device is DimmingLight) { DimmingLight dimmer = (DimmingLight)args.Device; FroggyPlugin.Devices.PercentLevelDevice basic = new FroggyPlugin.Devices.PercentLevelDevice(); basic.Address = reference; basic.Name = args.Device.DeviceName; basic.Level = dimmer.OnLevel * 100 / 255; basic.AutomationData = deviceData; callbacks.Devices.AddDevice(basic); } else if (args.Device is OnOffDevice) { OnOffDevice onOffDevice = (OnOffDevice)args.Device; FroggyPlugin.Devices.OnOffDevice basic = new FroggyPlugin.Devices.OnOffDevice(); basic.Address = reference; basic.Name = args.Device.DeviceName; basic.On = onOffDevice.OnLevel != 0; basic.AutomationData = deviceData; callbacks.Devices.AddDevice(basic); } } }