I was wondering if anyone has a solution to my issue. I have an 8-button keypadlinc and two of the buttons run X10 lights. I would like to be able to make sure the LED stays in-sync with the state of the light. I created a program to turn the light on and off using X10 commands sent from the ISY when the button is pressed. I do not have the button itself responding to received X10 commands because in the manual it states that can create unwanted reception issues. From the manual:
"If you are no longer going to utilize an X10 address associated with KeypadLinc, it is very important that
you remove its X10 address. Otherwise, KeypadLinc will still listen for X10 commands (somewhat
hindering INSTEON reception) and may respond to spurious X10 “noise” which is unavoidable.
Furthermore, KeypadLinc will transmit an X10 address and command every time the button is tapped."
So, based on that info from the manual I removed the X10 address from the buttons and just use programs based on the insteon signal to send out an X10 signal instead. One issue with this comes when another X10 controller sends out a command and the LED on the Keypadlinc does not turn on indicating the status of the light. So I created a program that would look for an X10 on command received and turn on the LED. I also created one to look for an X10 off command and turn off the LED. Now, when I send an off and then on or vice versa, the ISY receives the signal it sent out and then loops infinitely. I have tried timers, program status, everything I can think of to stop the looping with no success. It seems that once the ISY receives an X10 signal there is no way to stop it from acting on it. Thanks so much in advance for any help.
Here are the programs:
Program that looks for the button to be pressed.
<Cabinet Lights - D>
If
Status 'KP Button - D - Cabinet Light' is 100%
And Status 'KP Button - D - Cabinet Light' is not Off
Then
Run Program 'Cabinet Lights - A15' (Then Path)
Else
Run Program 'Cabinet Lights - A15' (Else Path)
Program that actually turns the light on or off. The resource is to keep the X10 controller in sync for widget use. It also sends out an X10 A15 on or off signal.
<Cabinet Lights - A15>
If
- No Conditions - (To add one, press 'Schedule' or 'Condition')
Then
Send X10 'A15/On (3)'
Wait 1 second
Resource 'Cabinet Lights On'
Else
Send X10 'A15/Off (11)'
Wait 1 second
Resource 'Cabinet Lights Off'
Program that receives the X10 off signal:
<Cabinet Lights Off X10 Signal Received>
If
X10 'A15/Off (11)' is Received
Or X10 'A/All Units Off (13)' is Received
Or X10 'A/All Lights Off (1)' is Received
And (
Status 'KP Button - D - Cabinet Light' is 100%
And Program 'Cabinet Lights On X10 Signal Received' is False
And $KEYPADLINC_D_CABINET_LIGHTS_OFF_TIMER is 0
)
Then
Stop program 'Cabinet Lights On X10 Signal Received'
Set Scene 'Scenes / KeypadLinc / KeypadLinc LEDs / KeypadLinc LED - D' Off
$KEYPADLINC_D_CABINET_LIGHTS_OFF_TIMER = 1
Else
- No Actions - (To add one, press 'Action')
Program that receives the X10 On signal.
<Cabinet Lights On X10 Signal Received>
If
X10 'A15/On (3)' is Received
Or X10 'A/All Lights On (5)' is Received
And (
Status 'KP Button - D - Cabinet Light' is Off
And $KEYPADLINC_D_CABINET_LIGHTS_ON_TIMER is 0
And Program 'Cabinet Lights Off X10 Signal Received' is False
)
Then
Set Scene 'Scenes / KeypadLinc / KeypadLinc LEDs / KeypadLinc LED - D' On
$KEYPADLINC_D_CABINET_LIGHTS_ON_TIMER = 1
Stop program 'Cabinet Lights Off X10 Signal Received'
Else
- No Actions - (To add one, press 'Action')
Program that resets the timer for off.
<Keypadlinc_D_Cabinet_Lights_Off_Timer_Reset>
If
$KEYPADLINC_D_CABINET_LIGHTS_OFF_TIMER is 1
Then
Wait 4 seconds
$KEYPADLINC_D_CABINET_LIGHTS_OFF_TIMER = 0
Else
- No Actions - (To add one, press 'Action')
Program that resets the timer for on.
<Keypadlinc_D_Cabinet_Lights_On_Timer_Reset>
If
$KEYPADLINC_D_CABINET_LIGHTS_ON_TIMER is 1
Then
Wait 4 seconds
$KEYPADLINC_D_CABINET_LIGHTS_ON_TIMER = 0
Else
- No Actions - (To add one, press 'Action')