pradeepmouli / homebridge-isy-js

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

Multi-Way Circuit with Dimmers #15

Open TheSwartz opened 4 years ago

TheSwartz commented 4 years ago

Using: ISY 994i/IR PRO v5.0.16c Node.js Version v12.16.3 Npm Version v6.14.4 Homebridge Server Version 1.0.4 homebridge-isy v0.5.0-beta.27 homebridge-config-ui-x v4.19.0

Maybe this is working as intended, or maybe I'm setting something up incorrectly?

I started a thread on the ISY forum related to this. I believe I'm creating scenes correctly, and ISY behavior is as intended.

For a 3 way switch using 2 dimmers (i.e. Insteon 2477). Creating a scene within ISY links the switches, so "on the physical switches" they behave correctly (turning one on/off is reflected in the paired switch, and dimming one dims the other, etc.). Then, within ISY, it is able to turn the scene on, off, brighten, dim.

However, behavior of the scene "within homebridge-isy" is not what I expect. It becomes a simple ON/OFF switch and loses the dimming capability.

Furthermore, when interacting with the functional switch within the 3-way, it behaves like within ISY, which is it only turns on, or off, or dims THAT switch, and not the linked (non-functional) switch.

An example of my config.json adding the scene created and ignoring any devices starting with "X " (which I use to label the non-functioning switches in my 3 and 4 way circuits in ISY) as well as the "hot" switch controlling the circuit.

        {
            "name": "ISY",
            "host": "xxx.xxx.xxx.xxx",
            "useHttps": true,
            "username": "name",
            "password": "password",
            "includeAllScenes": false,
            "includedScenes": [
                "12345",
            ],
            "ignoreDevices": [
                {
                    "nameContains": "X ",
                    "address": "A1 B1 Z1 1"
                }
            ],
            "platform": "ISY"
        },

Should I be setting this up differently?

Is this something that can be added/changed within homebridge-isy?

THANKS for keeping this project going !!!!!!!!!!!!!!!!!!!!

dxdc commented 4 years ago

+1 for this type of handling.

@TheSwartz from some research I've done, I don't think this is directly possible due to how Insteon switches work.

Essentially, "Scenes" do not have a property that allows you to change the brightness. A key point is this:

"There is no such thing in Insteon as a "Scene's current brightness level". There are Scene Responder On Levels and Scene Responder Ramp Rates, all of which can be specified when the Scene is defined and can be changed dynamically with Adjust Scene Program statements. The Scenes current brightness as you have defined cannot be changed as it does not exist today."

There are some ideas at the end of the first link (using some ISY programs) that may be worth looking into as you can add just the load side of the multi-way switch to HomeKit -- which does work to control brightness -- and potentially sync the LED's using an ISY program.

dxdc commented 4 years ago

I can confirm the instructions at the end of this article work great:

https://community.home-assistant.io/t/handling-dimming-for-isy-scenes-and-devices/6783/19

I can control my multiway switches now with dimmers/HK.

pradeepmouli commented 4 years ago

Not familiar with HA… what is your setup? I will try to do something similar on the backend in isy-nodejs. E.g. when a request to set the brightness level to xxx comes in, it looks through all the linked devices in the scene and sets the value to the same.

On May 22, 2020, at 10:49 AM, dxdc notifications@github.com wrote:

I can confirm the instructions at the end of this article work great:

https://community.home-assistant.io/t/handling-dimming-for-isy-scenes-and-devices/6783/19 https://community.home-assistant.io/t/handling-dimming-for-isy-scenes-and-devices/6783/19 I can control my multiway switches now with dimmers/HK.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/pradeepmouli/homebridge-isy-js/issues/15#issuecomment-632731330, or unsubscribe https://github.com/notifications/unsubscribe-auth/AD5XAFN3LVGR4UELCQ6HNATRS2GGFANCNFSM4NBT6JFA.

dxdc commented 4 years ago

Not using HA, that's just the thread. Read to the end of that post it can just be done with ISY programs. This post:: https://community.home-assistant.io/t/handling-dimming-for-isy-scenes-and-devices/6783/21

TheSwartz commented 4 years ago

I can confirm the instructions at the end of this article work great:

https://community.home-assistant.io/t/handling-dimming-for-isy-scenes-and-devices/6783/19

I can control my multiway switches now with dimmers/HK.

Excellent, this one I think I understand (sorry, I'm a newb, the other links are a little over my head!)

However, I'm not really sure what I'm not getting, but I couldn't quite get this to work. For me, I set the variable, then set the program to update that variable based on the "Master" switch. But for the "Slave" (sorry, I don't know a PC term to use here) switches, the second program doesn't run. It does if I manually right click -> Run (If) within the admin panel, but it doesn't want to run on its own 2 seconds after the variable state change.

But, I tweaked it and this is how I am getting it to work:

Create a State Variable s_Dim_Level

Program to Constantly Assign the state of the "Master" switch to the variable AND Run the (if) portion of the second program below:

If
'Master_Switch' Status is not '$s_Dim_Level %'

Then
$s_Dim_Level = 'Master_Switch' Status
Run Program 'Switch_Sync' (if)

Program to Assign the state of the "Slave" switch to the variable 2 seconds after the "Master" switch changes state:

If
'Slave_Switch' Status is not '$s_Dim_Level %'

Then
Wait 2 seconds
set 'Slave_Switch' Status On '$s_Dim_Level %'

Then, in Homebridge config, I ignore the "Slave" switch. And in HomeKit, I use the "Master" switch as the controller for the whole scene.

And, another FYI. Actually, the scene I tested this all out on is a 4 way switch (one "Master" and 2 "Slaves"). So, I created two of the second programs for each (and referred Run (If) both of them in the 1st program.

One quirky thing I found. If I manually dim one of the "Slave" switches (i.e. physically on the actual switch). It changes the linked switches within the scene as expected. It updates within ISY admin console as expected. When I ask Siri "at what level is the theater hall light at?" She says "24%" (or whatever it happens to be at). But within HomeKit, on the tile, it still says "Off". When I tap the tile once, it automatically updates to "24%". I notice a few minutes later it updates. I think this is usual behaviour. Just that it's not right away. But good knowing how it behaves.

I hope that helps if anyone else is looking in to this. If I can figure it out... I know you can!

Thanks!!!!!!

pradeepmouli commented 4 years ago

I think the quirk should be all set now...

Sent from my iPhone

On May 29, 2020, at 5:33 PM, TheSwartz notifications@github.com wrote:

 I can confirm the instructions at the end of this article work great:

https://community.home-assistant.io/t/handling-dimming-for-isy-scenes-and-devices/6783/19

I can control my multiway switches now with dimmers/HK.

Excellent, this one I think I understand (sorry, I'm a newb, the other links are a little over my head!)

However, I'm not really sure what I'm not getting, but I couldn't quite get this to work. For me, I set the variable, then set the program to update that variable based on the "Master" switch. But for the "Slave" (sorry, I don't know a PC term to use here) switches, the second program doesn't run. It does if I manually right click -> Run (If) within the admin panel, but it doesn't want to run on its own 2 seconds after the variable state change.

But, I tweaked it and this is how I am getting it to work:

Create a Variable s_Dim_Level

Program to Constantly Assign the state of the "Master" switch to the variable AND Run the (if) portion of the second program below:

If 'Master_Switch' Status is not '$s_Dim_Level %'

Then $s_Dim_Level = 'Master_Switch' Status Run Program 'Switch_Sync' (if) Program to Assign the state of the "Slave" switch to the variable 2 seconds after the "Master" switch changes state:

If 'Slave_Switch' Status is not '$s_Dim_Level %'

Then Wait 2 seconds set 'Slave_Switch' Status On '$s_Dim_Level %' Then, in Homebridge config, I ignore the "Slave" switch. And in HomeKit, I use the "Master" switch as the controller for the whole scene.

And, another FYI. Actually, the scene I tested this all out on is a 4 way switch (one "Master" and 2 "Slaves"). So, I created two of the second programs for each (and referred Run (If) both of them in the 1st program.

One quirky thing I found. If I manually dim one of the "Slave" switches (i.e. physically on the actual switch). It changes the linked switches within the scene as expected. It updates within ISY admin console as expected. When I ask Siri "at what level is the theater hall light at?" She says "24%" (or whatever it happens to be at). But within HomeKit, on the tile, it still says "Off". When I tap the tile once, it automatically updates to "24%".

This is dimming on a slave switch up a couple ticks. Waiting a moment. Tapping the tile in HomeKit. The tile updates. Then tapping the tile again, which turns the scene off.

[5/29/2020, 17:29:13] [isy-nodejs] Theater Room X Theater Hall Lights (Bathro (4E C0 63 1): Command Fade Up (FDUP) triggered. [5/29/2020, 17:29:14] [isy-nodejs] Theater Room X Theater Hall Lights (Bathro (4E C0 63 1): Command Fade Stop (FDSTOP) triggered. [5/29/2020, 17:29:14] [isy-nodejs] Theater Room X Theater Hall Lights (Bathro (4E C0 63 1): Property Status (ST) updated to: 24 (24%) [5/29/2020, 17:29:14] [isy-nodejs] Theater Room X Theater Hall Lights (Bathro (4E C0 63 1): Recalulating House [5/29/2020, 17:29:14] [isy-nodejs] Theater Room X Theater Hall Lights (Bathro (4E C0 63 1): Recalulating Downstairs [5/29/2020, 17:29:14] [isy-nodejs] Theater Room X Theater Hall Lights (Bathro (4E C0 63 1): Recalulating Theater Hall Lights [5/29/2020, 17:29:14] [isy-nodejs] Theater Room Theater Hall Lights (4E C7 7E 1): Property Status (ST) updated to: 24 (24%) [5/29/2020, 17:29:14] [ISY] Incoming update to Status. New Value: 24 (24%) Old Value: 0 [5/29/2020, 17:29:14] [isy-nodejs] Theater Room Theater Hall Lights (4E C7 7E 1): Recalulating House [5/29/2020, 17:29:14] [isy-nodejs] Theater Room Theater Hall Lights (4E C7 7E 1): Recalulating Downstairs [5/29/2020, 17:29:14] [isy-nodejs] Theater Room Theater Hall Lights (4E C7 7E 1): Recalulating Theater Hall Lights [5/29/2020, 17:29:14] [isy-nodejs] Theater Room X Theater Hall Lights (Stairs (4D A5 5D 1): Property Status (ST) updated to: 24 (24%) [5/29/2020, 17:29:14] [isy-nodejs] Theater Room X Theater Hall Lights (Stairs (4D A5 5D 1): Recalulating House [5/29/2020, 17:29:14] [isy-nodejs] Theater Room X Theater Hall Lights (Stairs (4D A5 5D 1): Recalulating Downstairs [5/29/2020, 17:29:14] [isy-nodejs] Theater Room X Theater Hall Lights (Stairs (4D A5 5D 1): Recalulating Theater Hall Lights [5/29/2020, 17:29:16] [isy-nodejs] Unhandled SystemStatusChanged Event: {"seqnum":666,"sid":"uuid:81","control":"_5","action":1,"node":"","eventInfo":""} [5/29/2020, 17:29:16] [isy-nodejs] Unhandled SystemStatusChanged Event: {"seqnum":667,"sid":"uuid:81","control":"_5","action":0,"node":"","eventInfo":""} [5/29/2020, 17:29:16] [isy-nodejs] Unhandled SystemStatusChanged Event: {"seqnum":669,"sid":"uuid:81","control":"_5","action":1,"node":"","eventInfo":""} [5/29/2020, 17:29:16] [isy-nodejs] Unhandled SystemStatusChanged Event: {"seqnum":670,"sid":"uuid:81","control":"_5","action":0,"node":"","eventInfo":""} [5/29/2020, 17:29:16] [isy-nodejs] Theater Room X Theater Hall Lights (Stairs (4D A5 5D 1): Update event triggered, property Status (ST) is unchanged. [5/29/2020, 17:29:16] [isy-nodejs] Theater Room X Theater Hall Lights (Bathro (4E C0 63 1): Update event triggered, property Status (ST) is unchanged. [5/29/2020, 17:29:48] [isy-nodejs] Theater Hall Lights: sending DOF command: nodes/4E C7 7E 1/cmd/DOF [5/29/2020, 17:29:48] [isy-nodejs] Sending request: https://192.168.4.69/rest/nodes/4E C7 7E 1/cmd/DOF/ Calling: https://192.168.4.69/rest/nodes/4E C7 7E 1/cmd/DOF/ [5/29/2020, 17:29:48] [isy-nodejs] Unhandled SystemStatusChanged Event: {"seqnum":680,"sid":"uuid:81","control":"_5","action":1,"node":"","eventInfo":""} [5/29/2020, 17:29:49] [isy-nodejs] Unhandled SystemStatusChanged Event: {"seqnum":681,"sid":"uuid:81","control":"_5","action":0,"node":"","eventInfo":""} [5/29/2020, 17:29:49] [isy-nodejs] Theater Room Theater Hall Lights (4E C7 7E 1): Update event triggered, property Status (ST) is unchanged. [5/29/2020, 17:29:51] [isy-nodejs] Unhandled SystemStatusChanged Event: {"seqnum":689,"sid":"uuid:81","control":"_5","action":1,"node":"","eventInfo":""} [5/29/2020, 17:29:51] [isy-nodejs] Unhandled SystemStatusChanged Event: {"seqnum":690,"sid":"uuid:81","control":"_5","action":0,"node":"","eventInfo":""} [5/29/2020, 17:29:51] [isy-nodejs] Unhandled SystemStatusChanged Event: {"seqnum":692,"sid":"uuid:81","control":"_5","action":1,"node":"","eventInfo":""} [5/29/2020, 17:29:51] [isy-nodejs] Unhandled SystemStatusChanged Event: {"seqnum":693,"sid":"uuid:81","control":"_5","action":0,"node":"","eventInfo":""} [5/29/2020, 17:29:51] [isy-nodejs] Theater Room X Theater Hall Lights (Stairs (4D A5 5D 1): Property Status (ST) updated to: 0 (Off) [5/29/2020, 17:29:51] [isy-nodejs] Theater Room X Theater Hall Lights (Stairs (4D A5 5D 1): Recalulating House [5/29/2020, 17:29:51] [isy-nodejs] Theater Room X Theater Hall Lights (Stairs (4D A5 5D 1): Recalulating Downstairs [5/29/2020, 17:29:51] [isy-nodejs] Theater Room X Theater Hall Lights (Stairs (4D A5 5D 1): Recalulating Theater Hall Lights [5/29/2020, 17:29:52] [isy-nodejs] Theater Room X Theater Hall Lights (Bathro (4E C0 63 1): Property Status (ST) updated to: 0 (Off) [5/29/2020, 17:29:52] [isy-nodejs] Theater Room X Theater Hall Lights (Bathro (4E C0 63 1): Recalulating House [5/29/2020, 17:29:52] [isy-nodejs] Theater Room X Theater Hall Lights (Bathro (4E C0 63 1): Recalulating Downstairs [5/29/2020, 17:29:52] [isy-nodejs] Theater Room X Theater Hall Lights (Bathro (4E C0 63 1): Recalulating Theater Hall Lights This quirk doesn't seem to be a big deal. But good knowing how it behaves.

I hope that helps if anyone else is looking in to this. If I can figure it out... I know you can!

Thanks!!!!!!

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.