rodtoll / homebridge-isy-js

Homebridge platform plugin for the ISY series of home controllers from Universal Devices.
MIT License
22 stars 27 forks source link

Feature Request: Ability to specify a Scene as Dimmable #21

Closed Chioti closed 7 years ago

Chioti commented 8 years ago

Currently if a scene is exposed by the plug-in it appears as as simple on/off device. If a scene in ISY is created and includes only devices which are dimmable (e.g. 3 way switches) then the scene itself is dimmable.

The reason this would be nice to have is that if I tell Siri right now to turn on the Living Room Lights (a single device) then the 3 way switch for the Living Room Lights does not respond and show the proper level. If however you control it through a scene then all responders are updated. The drawback is that the scene is not dimmable and therefore the lights can no longer be dimmed through homelink.

Doughboy68 commented 8 years ago

On ISY Administrative Consoe I cannot set a specific brightness on an entire scene but I can brighten and dim with my ISY994i using buttons within the scene. I don't think it is possible to set a specific brightness level for an entire scene (I could not find it even experimenting with programs - all I could find was adjust scene on a specific device within the scene).

Chioti commented 8 years ago

That is correct. So, since you can dim and brighten the scene but cannot set a dim level per se on the entire scene, does this preclude exposing the scene as a "dimmable" light?

PaulWieland commented 8 years ago

@rodtoll and I have discussed this in some detail in another thread. As @Doughboy68 pointed out, you cannot set scene brightness in Insteon - however, you can find all of the devices in a scene and set their individual brightnesses in a loop. The idea is to enable dimmable scenes by putting the logic in ISY-JS, which would benefit everyone who has a virtual three way dimmer switch scene.

It gets tricky because you have to figure out what to do when:

rodtoll commented 8 years ago

@fahrvergnuugen has hit on some of the key issues and described our discussion to date.

Another key issue here is how all of this would be represented in HomeBridge. For example, does the dimness represent the target dimness level you have set or the value it currently is? It would have to be the target brightness otherwise as soon as you change it the value would jump and change as individual lights were adjusted. Once you arrive at the brightness being the target brightness you have to decide when do you break this model -- i.e. what happens when a user adjusts an individual light does it break the sequence? Probably, but this is complex to track as well.

Then you get to the problem where the brightness doesn't actually represent the brightness of all the devices, just the dimmable ones. So how do you handle on/off lights? You could leave them out, but folks do have non-dimmable lights in their scenes and you want them to be controlled.

This is a rambling way of saying yes, I can do something here, I just haven't found the right combination which gives people the right control. I may need to switch to users being able to select the control they want on individual scenes -- i.e. make dimmable if they want.

Still thinking about the right approach here but something I do want to land.

Chioti commented 8 years ago

@rodtoll - I can certainly see how trying to do this for any type of scene can become extremely complicated and I am not sure there is one right answer.

The use case I'm asking for is specifically for 3-way or multi-way lights. In other words a single light which is controlled by multiple Insteon switches. Right now in my config I have filtered out the 3-way switches and kept only the main (i.e. the switch with the load). This does work in terms of turning them on/off and dimming. However when doing it this way the 3-way switches do not show the correct status on them as they are completely unaffected by the ISY control of the main.

One solution is to take all the switches for a single light and create a scene. Controlling the light using the scene does work and provides dimming capabilities where all the switches show the correct status and dim level.

It is for these specific scenes where being able to set them as dimmable scenes would be beneficial. Maybe in the short term the solution would be as you suggested to allow users to "set specific scenes as dimmable" in the config.json. I know it is not ideal, but would solve this use case.

PaulWieland commented 8 years ago

@SteliosMakrinos This is the exact same use case I have. I have a lot of virtual three way switches in my insteon network.

I also have keypads where one of the buttons is part of the virtual circuit. This complicates things because the backlight of the key is on when the scene is on and off when the scene is off, but it isn't a dimmable device.

Anyway, I agree with you that the primary use for dimmable scenes is for virtual 3 way+ circuits.

rodtoll commented 8 years ago

This is a much more manageable case. Ok, I'll focus on fixing the n-way switch problem with an update to the scene behavior. Could even handle it as a different type of virtual device -- an n-way switch. You could then specify the scene which represents it and I could make it do the right thing.

I'll also do some research see if there is a different command I can send to a light switch that will trigger corresponding scene changes. Right now, as you observed, commands to an individual switch don't change the other switches. I don't think one exists, but I'll look.

Chioti commented 8 years ago

@rodtoll that sounds like a plan. It may be nice in the config to specify a scene and then the devices which that scene represents so they are automatically filtered out.

Chioti commented 8 years ago

@rodtoll any update on this?

PaulWieland commented 8 years ago

+1 would really like to have this, even if its half baked. I think having anything would be much better than nothing and would let us test real world scenarios.

I have two scenarios in my house that I want to address:

  1. Straight up virtual 3 way dimmer switches where all switches should be the same dim level
  2. Dimmer outlets that are controlled by both a dedicated dimmer switch and a button on a keypad (on/off for the keypad backlight).
VeniceNerd commented 7 years ago

I would like to also add my support for this! I have multiple 6-Button keypads throughput my house. Each button is connected to one Scene and each scene controls one light (a DIN module in the attic). Problem is if I control the DIN module directly the keypad stays out of the loop and is not in sync. The light itself may be on but the keypad button isn't lit up. You'll need to press it twice to physically turn off the light.

If I add the Scene itself into my Homebridge, though, I should be able to keep the device and keypad button in sync but I seem to lose the ability to tell Siri "Set the kitchen light to 35% brightness".

It would be incredible if this could be solved!

rodtoll commented 7 years ago

Short version: Agreed it's useful, but it's complex enough that my available cycles haven't been sufficient to address it.

Longer version: Agreed that this would be a useful feature. The complexity comes from the architecture needed to support this within the homebridge architecture is non-trivial. To execute this you end up needing to send dimming commands to each device in the scene and then lie to the higher level homebridge layers about state of the scene. Then you need to track the progress of all of the executions until you reach the desired state. Then you need to deal with interruptions caused by people commanding one of the lights independently either through homebridge or manually. Then you need to deal with it being a long enough process that the user might send a conflicting command. Then you need to deal with large scenes -- like "My Lighting" which have enough devices that you would have to throttle the number of commands being sent to prevent the ISY from being overwhelmed.

On Wed, Jan 18, 2017 at 6:53 PM VeniceNerd notifications@github.com wrote:

I would like to also add my support for this! I have multiple 6-Button keypads throughput my house. Each button is connected to one Scene and each scene controls one light (a DIN module in the attic). Problem is if I control the DIN module directly the keypad stays out of the loop and is not in sync. The light itself may be on but the keypad button isn't lit up. You'll need to press it twice to physically turn off the light.

If I add the Scene itself into my Homebridge, though, I should be able to keep the device and keypad button in sync but I seem to lose the ability to tell Siri "Set the kitchen light to 35% brightness".

It would be incredible if this could be solved!

— You are receiving this because you were mentioned.

Reply to this email directly, view it on GitHub https://github.com/rodtoll/homebridge-isy-js/issues/21#issuecomment-273668231, or mute the thread https://github.com/notifications/unsubscribe-auth/ADyYQ_8bCUk_wm0NMiP91ckEAJBDf3QPks5rTtAYgaJpZM4HjRJA .

Doughboy68 commented 7 years ago

It is simple to synchronize the keypadlinc LEDs or switchlinc slaves that are in insteon scenes. I think I posted somewhere how to do this but I will go over some detailed instructions and post later. Basically I have a bunch of programs and scenes (like 20 of them) which the programs turn a particular scene on/off depending if triggered. Each scene only contains one device (eg. a slave, or an individual switchlinc switch like KLB). So if a program detects a device has turned on, it turns on the scene else turns off. Sure there are a lot of programs and scenes to setup but I have been running this for months without issues.

rodtoll commented 7 years ago

The feature being suggested here is that without special setup you can, through home bridge, dim any given scene that has dimmable lights. Without any additional setup beyond creating the scene and including the lights. This is what makes it complex.

You can absolutely use combinations of programs and scenes to get the behavior you want. I.e. Add one dimmable light to homebridge and then write a program which matches the brightness of the other lights you want to dim with it with the main light. If that is the desired behavior then there is no work for homebridge here.

The true right solution is that isy just enables a new capability which lets you create a scene that can be dimmed. It has all the state and signals it needs to do this right.

On Sat, Jan 21, 2017 at 2:58 PM Doughboy68 notifications@github.com wrote:

It is simple to synchronize the keypadlinc LEDs or switchlinc slaves that are in insteon scenes. I think I posted somewhere how to do this but I will go over some detailed instructions and post later. Basically I have a bunch of programs and scenes (like 20 of them) which the programs turn a particular scene on/off depending if triggered. Each scene only contains one device (eg. a slave, or an individual switchlinc switch like KLB). So if a program detects a device has turned on, it turns on the scene else turns off. Sure there are a lot of programs and scenes to setup but I have been running this for months without issues.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/rodtoll/homebridge-isy-js/issues/21#issuecomment-274293809, or mute the thread https://github.com/notifications/unsubscribe-auth/ADyYQ4z4zUBh01H75Z8Twvy-ZrIjVdWRks5rUo0jgaJpZM4HjRJA .

PaulWieland commented 7 years ago

I suggested what rodtoll said to UDI on their forums a while ago and basically got told I was a moron who doesn't know how it works. Got similar treatment when I requested that they support HomeKit natively.

Was such an annoying experience I almost sent my ISY back out of spite, but unfortunate it seems to be the best device there is for insteon.

rodtoll commented 7 years ago

Closing all feature requests as part of discontinuing support for the plugin. Thank you all for your interest. (And for your help along the way @fahrvergnuugen and others).