Beispiel #1
0
        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;
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// Do any device updates based on this update.
        /// </summary>
        /// <param name="update">The update to apply</param>
        public void UpdateDevice(FroggyPlugin.Events.DeviceUpdate update)
        {
            DeviceId   id = new DeviceId(update.Device.Address.Address);
            DeviceBase device;

            if (insteon.FindDevice(id, out device))
            {
                switch (update.Type)
                {
                case FroggyPlugin.Events.DeviceUpdate.UpdateType.State:
                    if (device is DimmingLight)
                    {
                        DimmingLight      dimmer       = (DimmingLight)device;
                        DeviceState <int> percentLevel = (DeviceState <int>)update.State;
                        dimmer.OnLevel = (percentLevel.Value * 255 / 100);
                    }
                    else if (device is OnOffDevice)
                    {
                        OnOffDevice        onOffdevice = (OnOffDevice)device;
                        DeviceState <bool> boolUpdate  = (DeviceState <bool>)update.State;
                        onOffdevice.OnLevel = boolUpdate.Value ? 255 : 0;
                    }
                    break;
                }
            }
        }
Beispiel #3
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);
                }
            }
        }
Beispiel #4
0
        static void Main(string[] args)
        {
            // remote -> invoker
            // light -> receiver
            // LightOn -> command

            // Example: pre-instanced commands
            Remote r     = new Remote();
            Light  light = new Light();

            r.SetCommand('A', new LightOn(light));
            r.SetCommand('L', new LightOff(light));
            r.Press('A');
            Console.WriteLine(light.State);
            r.Press('L');
            Console.WriteLine(light.State);

            // Example: pass value to command
            DimmingLight     dimLight = new DimmingLight();
            RemoteWithSlider rw       = new RemoteWithSlider();

            rw.SetCommand('A', new DimLight(dimLight));
            rw.Press('A', 6f);
            Console.WriteLine(dimLight);

            // Ecample: create new instance per invocation
            OnDemandRemote onDemandRemote = new OnDemandRemote();

            onDemandRemote.Press('A', new DimLight(dimLight, 10));
            Console.WriteLine(dimLight);
            onDemandRemote.Press('A', new DimLight(dimLight, 0));
            Console.WriteLine(dimLight);

            Console.ReadLine();
        }
Beispiel #5
0
 public DimLight(DimmingLight light, float power) : this(light)
 {
     this.power = power;
 }
Beispiel #6
0
 public DimLight(DimmingLight light)
 {
     this.light = light;
 }