Skip to content
View in the app

A better way to browse. Learn more.

Universal Devices Forum

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

One KeyPadLinc Button to Rule Them All?

Featured Replies

Hello All (long post - sorry),

In a bit of a quandary related to the best way to approach a process - so looking for advice. I will describe below the situation - and then what I "think" is the best way to do this (then ask for guidance related to the specifics).

Situation:

I have a Rec Room in my basement that has three banks of lights. Each bank of lights is controlled independently from both sides of the large room (so each bank is set up as a two way). In this case I have an I3 Paddle connected to each "load" and then on the far side of the room there is a 2477S for each circuit. Each I3 Paddle and 2477S is set up in a scene to act as the two way - with both objects as controllers. Works perfectly fine.

At the top of the basement stairs I have installed a 6 button keypad linc - and one of the buttons on this keypadlinc I want to use to either turn on or off all three banks of lights (so one keypad linc button to rule them all).

I can (and have) created a scene where the keypad linc button is the controller - and each of the other objects are responders (lets call this the "Ruling Scene") - so when I use the button at the top of the stairs this has an immediate response from everything else (either quickly on or quickly off).

This issue is when someone turns one of the banks of lights on or off directly from the I3 Paddles or 2477S switches - I need the keypad linc button to stay "in-sync" with the status of the lights in the basement. Basically if anything is on - or partially on as the lights are dimmable - then the keypad linc button should be either turned on/lit or should stay on (if it was already lit), and vice versa - if someone in the basement turns off the last light from either a 2477S or a I3 paddle then the keypad linc button light should get extinguished.

I thought that the best way would be as follows:

  1. Create a scene with the keypad linc button as a responder (to use in a program) - lets call this the "Master LED" Scene (using a scene as not sure about the effectiveness of directly addressing a keypad linc button in a program).

  2. Create a program that is initiated when ANY action is performed on ANY of the switches in the basement (any of the I3 paddles or 2477S switches) - this ties in to a previous post I made about trying to find any easy way to determine if any action has been performed on a switch) - in this program if anything has "happened" then check the state of any of the basement switches (are any on, or partially on - and if so then set the "Master LED" scene to on - otherwise set the "Master LED" scene to off).

  3. Just in case the above sometimes flakes out and maybe a signal gets dropped create another program that schedules itself at regular intervals (say 5 minutes?) that polls the state of the I3 Paddles or 2477S switches - and again - if any are on/off then set the "Master LED" scene on or off respectively - then wait 5 minutes and initiate the polling program (i.e. call itself) once again

Does anyone have a different or better approach to do this?

One thing I am not sure about - if the program sends an "on" to the "Master LED" scene due to ONE of the banks of lights being turned on in the basement - will this then trigger the "Ruling Scene" thereby turning on all the lights in the basement (which I do not want to occur - I want to just light the LED on the keypad linc so it can then be used to turn anything off that is "on' in the basement if someone leaves the basement via the stairs and uses the button at the top of the stairs)?

Any help/guidance (and best practices for the programs) would be most welcome.

3 hours ago, SMonk said:

Hello All (long post - sorry),

In a bit of a quandary related to the best way to approach a process - so looking for advice. I will describe below the situation - and then what I "think" is the best way to do this (then ask for guidance related to the specifics).

Situation:

I have a Rec Room in my basement that has three banks of lights. Each bank of lights is controlled independently from both sides of the large room (so each bank is set up as a two way). In this case I have an I3 Paddle connected to each "load" and then on the far side of the room there is a 2477S for each circuit. Each I3 Paddle and 2477S is set up in a scene to act as the two way - with both objects as controllers. Works perfectly fine.

At the top of the basement stairs I have installed a 6 button keypad linc - and one of the buttons on this keypadlinc I want to use to either turn on or off all three banks of lights (so one keypad linc button to rule them all).

I can (and have) created a scene where the keypad linc button is the controller - and each of the other objects are responders (lets call this the "Ruling Scene") - so when I use the button at the top of the stairs this has an immediate response from everything else (either quickly on or quickly off).

This issue is when someone turns one of the banks of lights on or off directly from the I3 Paddles or 2477S switches - I need the keypad linc button to stay "in-sync" with the status of the lights in the basement. Basically if anything is on - or partially on as the lights are dimmable - then the keypad linc button should be either turned on/lit or should stay on (if it was already lit), and vice versa - if someone in the basement turns off the last light from either a 2477S or a I3 paddle then the keypad linc button light should get extinguished.

I thought that the best way would be as follows:

  1. Create a scene with the keypad linc button as a responder (to use in a program) - lets call this the "Master LED" Scene (using a scene as not sure about the effectiveness of directly addressing a keypad linc button in a program).

  2. Create a program that is initiated when ANY action is performed on ANY of the switches in the basement (any of the I3 paddles or 2477S switches) - this ties in to a previous post I made about trying to find any easy way to determine if any action has been performed on a switch) - in this program if anything has "happened" then check the state of any of the basement switches (are any on, or partially on - and if so then set the "Master LED" scene to on - otherwise set the "Master LED" scene to off).

  3. Just in case the above sometimes flakes out and maybe a signal gets dropped create another program that schedules itself at regular intervals (say 5 minutes?) that polls the state of the I3 Paddles or 2477S switches - and again - if any are on/off then set the "Master LED" scene on or off respectively - then wait 5 minutes and initiate the polling program (i.e. call itself) once again

Does anyone have a different or better approach to do this?

One thing I am not sure about - if the program sends an "on" to the "Master LED" scene due to ONE of the banks of lights being turned on in the basement - will this then trigger the "Ruling Scene" thereby turning on all the lights in the basement (which I do not want to occur - I want to just light the LED on the keypad linc so it can then be used to turn anything off that is "on' in the basement if someone leaves the basement via the stairs and uses the button at the top of the stairs)?

Any help/guidance (and best practices for the programs) would be most welcome.

@SMonk ,

I've used "master" KPL buttons for years to indicate/control the status of different scenes in my home. I typically use things like 1st Floor, 2nd Floor, Basement, and outside. The setup is very similar to what you described. I typically use the KPL buttons in non-toggle-off mode since I only use them to turn things off, but the concept is the same. Your query program is adding a failsafe that I never implemented.

My one comment would be that this does become a maintenance item when you add/delete things from your Rec Room scenes. You will need to update your programs the monitor the device(s) status accordingly. This has tripped me up frequently over the years.

If you happen to be a Home Assistant user, there is an easier solution to the programming.

I think the keypadlinc really exists for this kind of thing. The ability to set a button's backlight on or off remotely (and set it's next sent command as on or off based on this, when set to toggle mode) provides the versatility you're looking for. I have one keypadlinc near my exit door with one button indicating whether any basement light is on. And that includes Hue bulbs in lamps, etc. That's the nice thing about using a program. So if anything;s status is On, the button gets lit by the program. That's a whole bunch of Or statements. Conversely, if everything is Off, the button backlight gets turned off. That's a whole bunch of And statements. These are two programs that are just left to run continuously, not triggered to run by any switch actions. There is always a short (about 2 second) delay between a status condition that warrants turning the key backlight on or off, but it's been very reliable.

  • Author
1 hour ago, IndyMike said:

@SMonk ,

I've used "master" KPL buttons for years to indicate/control the status of different scenes in my home. I typically use things like 1st Floor, 2nd Floor, Basement, and outside. The setup is very similar to what you described. I typically use the KPL buttons in non-toggle-off mode since I only use them to turn things off, but the concept is the same. Your query program is adding a failsafe that I never implemented.

My one comment would be that this does become a maintenance item when you add/delete things from your Rec Room scenes. You will need to update your programs the monitor the device(s) status accordingly. This has tripped me up frequently over the years.

If you happen to be a Home Assistant user, there is an easier solution to the programming.

Ok - cool thanks. Maintenance is a given of course - though at this time do not anticipate adding anything else to the scenes (famous last words eh?).......

1 minute ago, Guy Lavoie said:

I think the keypadlinc really exists for this kind of thing. The ability to set a button's backlight on or off remotely (and set it's next sent command as on or off based on this, when set to toggle mode) provides the versatility you're looking for. I have one keypadlinc near my exit door with one button indicating whether any basement light is on. And that includes Hue bulbs in lamps, etc. That's the nice thing about using a program. So if anything;s status is On, the button gets lit by the program. That's a whole bunch of Or statements. Conversely, if everything is Off, the button backlight gets turned off. That's a whole bunch of And statements. These are two programs that are just left to run continuously, not triggered to run by any switch actions. There is always a short (about 2 second) delay between a status condition that warrants turning the key backlight on or off, but it's been very reliable.

Thanks - on some tests I did I also noticed a delay - so will take that into account. Cheers!

  • Author

Hello Everyone - as promised I wanted to share the code I wrote so you could see if any better way to approach (a few other posts helped on this too).

Situation: 3 banks of lights in basement Rec Room - each bank is defined as its own two way circuit:

  • Near Bank: KeypadLinc (uses main button for Rec Room Bank) + I3 Paddle (load on I3 Paddle)

  • Mid Bank: 2477S + I3 Paddle (load on I3 Paddle)

  • Far Bank: 2477S + I3 Paddle (load on I3 Paddle)

Each pair is defined to a scene where each is a controller - works fine.

Top of Basement Stairs: KeyPad Linc - button "C" to control each of the three banks (either on or off). One scene defined where the Top of Stairs button is defined as the Controller - and each of the devices in the rec room are defined as responders (to push an all on/all off command).

Additional Scene (Bsmt_StairTop_RecLED) where KeyPad Linc Button is a responder only.

To handle the occasion when the top of stairs button is not use - but individuals turn on or off buttons in the basement rec room - need to keep the top of stairs keypad linc master button "C" in sync (shows lit or not) - I have created three programs as follows:

Program 1 (just waiting for any physical action on any of the basement rec room devices):

1_WatchRecRmDeviceChanges
If
        'Basement / RecRm / Devices / Rec_ByPat_Far I3' is switched On
     Or 'Basement / RecRm / Devices / Rec_ByPat_Far I3' is not switched On
     Or 'Basement / RecRm / Devices / Rec_ByPat_Mid I3' is switched On
     Or 'Basement / RecRm / Devices / Rec_ByPat_Mid I3' is not switched On
     Or 'Basement / RecRm / Devices / Rec_ByPat_Near I3' is switched On
     Or 'Basement / RecRm / Devices / Rec_ByPat_Near I3' is not switched On
     Or 'Basement / RecRm / Devices / Rec_ByStr_Far' is switched On
     Or 'Basement / RecRm / Devices / Rec_ByStr_Far' is not switched On
     Or 'Basement / RecRm / Devices / Rec_ByStr_Mid' is switched On
     Or 'Basement / RecRm / Devices / Rec_ByStr_Mid' is not switched On
     Or 'Basement / RecRm / Devices / Rec_ByStrPad1_Near' is switched On
     Or 'Basement / RecRm / Devices / Rec_ByStrPad1_Near' is not switched On
 
Then
        Wait  2 seconds
        Run Program '2_MasterRecRmStairTopLEDStateCheck' (If)
 
Else
   - No Actions - (To add one, press 'Action')

Program 2 (if any basement device is not off - then turn on stair top master LED - and vice versa):

2_MasterRecRmStairTopLEDStateCheck - [ID 0006][Parent 0007]
If
        'Basement / RecRm / Devices / Rec_ByPat_Far I3' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByPat_Mid I3' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByPat_Near I3' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByStr_Far' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByStr_Mid' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByStrPad1_Near' Status is not Off
 
Then
        Set 'Basement / Stairs / Scenes / Bsmt_StairTop_RecLED' On
 
Else
        Set 'Basement / Stairs / Scenes / Bsmt_StairTop_RecLED' Off

Program 3 (status poll - recursive program - just in case something gets missed in above programs):

3_RecRmLightStatePoll - [ID 0009][Parent 0007][Run At Startup]
If
        'Basement / RecRm / Devices / Rec_ByPat_Far I3' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByPat_Mid I3' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByPat_Near I3' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByStrPad1_Near' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByStr_Mid' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByStr_Far' Status is not Off
 
Then
        Set 'Basement / Stairs / Scenes / Bsmt_StairTop_RecLED' On
        Wait  5 minutes 
        Run Program '3_RecRmLightStatePoll' (If)
 
Else
        Set 'Basement / Stairs / Scenes / Bsmt_StairTop_RecLED' Off
        Wait  5 minutes 
        Run Program '3_RecRmLightStatePoll' (If)
 

Please feel free to comment, correct, suggest improvements - always open to anything to make as efficient and resilient as possible.

I may have missed something in your description, but it seem like you are over thinking this?

Wouldn't just one program that test the status of all the lights in the basement with ORs such that if on, turn on the keypad, if all off then turn keypad off?

This would be your IF:

Basement / RecRm / Devices / Rec_ByPat_Far I3' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByPat_Mid I3' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByPat_Near I3' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByStrPad1_Near' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByStr_Mid' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByStr_Far' Status is not Offf

THEN:

Turn on keypad

ELSE

turn off keypad.

40 minutes ago, dbwarner5 said:

I may have missed something in your description, but it seem like you are over thinking this?

Wouldn't just one program that test the status of all the lights in the basement with ORs such that if on, turn on the keypad, if all off then turn keypad off?

This would be your IF:

Basement / RecRm / Devices / Rec_ByPat_Far I3' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByPat_Mid I3' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByPat_Near I3' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByStrPad1_Near' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByStr_Mid' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByStr_Far' Status is not Offf

THEN:

Turn on keypad

ELSE

turn off keypad.

If ELSE works by executing the command only the first time the statement becomes false, that might work too.

Edited by Guy Lavoie

I believe the solution from @dbwarner5 is the simplest (thus most elegant) solution. The program will be triggered upon chage of status of ANY of the six switches and evaluated based upon the entire program logic. Problem solved.

21 hours ago, dbwarner5 said:

I may have missed something in your description, but it seem like you are over thinking this?

Wouldn't just one program that test the status of all the lights in the basement with ORs such that if on, turn on the keypad, if all off then turn keypad off?

This would be your IF:

Basement / RecRm / Devices / Rec_ByPat_Far I3' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByPat_Mid I3' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByPat_Near I3' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByStrPad1_Near' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByStr_Mid' Status is not Off
     Or 'Basement / RecRm / Devices / Rec_ByStr_Far' Status is not Offf

THEN:

Turn on keypad

ELSE

turn off keypad.

I have to agree that this is a very elegant solution. I had previously used 2 programs to test for "All OFF" in a scene (device1 and device2 and... OFF) along with a "Any On" program (device1 or device2 or .... > 0 ).

I learned something today - that's a good day.

My one comment would be that polling devices is not without merit depending on the communication level and criticality of the system. I would not, however, implement the polling based on a state change. The thinking here is that, if you have marginal communications, you may miss the state change from the device. Better to have a free running program that polls the devices in the scene.

Case in point, my X10 floodlamps. I have a X10 booster near the PLM. Communications from the PLM to the X10 floodlamps are VERY reliable. Communications from the Flood lamps back to the PLM are less than stellar. Because of this I poll the Floodlamps at regular intervals to determine their status. The same issue can result in Insteon systems (less prevalent) depending on local PLM/Device line loading.

I use the following for polling the floodlights during the day. It runs freely during the timeframe note at 15 minute intervals. Make sure "run at startup" is enabled. For Insteon, substitute a "Query scene XX" for the "Send X10 Status Request"

Flood Daytime Poll - [ID 0041][Parent 0002][Not Enabled][Run At Startup]

If
        From    Sunrise +  1 minute
        To      Sunset  - 10 minutes (same day)
    And Time is Last Run Time for 'Flood Daytime Poll' + 15 minutes
 
Then
        Send X10 'F1/Status Request (10)'
        Wait  9 seconds
        Send X10 'F3/Status Request (10)'
        Wait  9 seconds
        Send X10 'F5/Status Request (10)'
  • Author

Hi all,

Thanks for the input and feedback - it is truly appreciated. My programs are working and running very well - but intrigued by the thought of eliminating the first program (i.e. the one that uses the "control" checks) - and just relying on the status aspect (basically my program 2).

The things I had read were that the "status" aspect can be less reliable than the "control" side of the house - hence went with program 1 (to be initiated on any physical change at any switch) - which would always then be "true" - thereby calling program 2 which tests the actual status to then set or not the master LED.

Wonder if there is a way to determine if one is more reliable than the other (control vs status).

Thanks for feedback!!

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.