Eric2XU Posted August 9, 2011 Posted August 9, 2011 Hey all, I have the ISY99, I/O Linc (with Sensor), and a KeypadLinc. How can I get it to set the button to lit when the I/O link sensor is off and on not lit when the sensor is on. Additionally on the same button have it trigger the motor to open and close the door when pressed. The KeypadLinc is very confusing to me with its own toggle states and backlighting control. Any help would be awesome. j
LeeG Posted August 9, 2011 Posted August 9, 2011 jay5 To reverse the On/Off commands sent by the I/O Linc Sensor click on the Sensor node in the My Lighting tree and click Set Options. Check Trigger Reverse. Normally when the Sensor turns On it sends an On command and visa versa. Trigger Reverse reverses that. When the Sensor turns On it will send an Off command and visa versa. Not that Trigger Reverse only reverses the commands sent. If the I/O Linc is Queried the true On/Off status of the Sensor is returned. I do not like the idea of sharing a KeypadLinc button between indicating the door is open/closed and controlling the door open/close. It can be done and generally centers around using the KPL button in non toggle Off mode. I'm sure someone can explain the process but there is always a combination where the door did not move and the button shows the wrong status. If you have the space on the KPL I suggest using separate buttons for controlling door open/close versus door open/close status. Lee
andyf0 Posted August 9, 2011 Posted August 9, 2011 I'll post this here too: I have exactly the setup you are wanting to use along with other controllers to open and close the garage door along with the actual garage door button. One problem I encountered was the double button push when the door was closing left the door half open when I went to sleep, not good. I'll try to detail here what I did. SETUP ------- Sensor to IOLinc connected via Black and Green wires - sensor reports OFF when the door is open and ON when the door is closed. IOLinc set to Momentary 'C' - IOLinc programmed (using the SET button) so it will ignore ON commands when the sensor is OFF and ignore OFF commands when the sensor is ON. Momentary Time is 5/10 secs. ISY is running 3.1.5 firmware (needed to use variables). SCENES --------- In order to control the secondary buttons on the KeypadLinc you need to add them to a scene. I have a scene called HW (KP- and just added the button 'B' to it. To control the IOLinc it also must be in a scene. I have a scene called GD (Control) and just added the IOLinc 'Relay' node to it. ISY PROGRAMS ------------------ Given that the KeypadLinc button lights up when you turn it on and turns off when you turn it off it is easy for the button to get out of sync when you use some other method to open or close the garage door (like the garage door button). So the first program here syncs the button to the sensor. If the sensor goes ON (garage door closed) the button is turned off. If the sensor goes OFF (garage door opening) the button goes ON. I'm also sending the relevant ON or OFF to the IOLinc relay which does nothing since the door is already closed or opening, it just syncs up the display in the ISY for the relay to the correct state. Notice the $iGD_Busy variable, this is used when the door is starting to open becasue the sensor goes OFF immediately. I want to prevent any other garage door controls that I have to interrupt the door opening until it is fully open. My door takes approximately 15 seconds to open, yours may be different. This is not needed when the door is closed becasue when the sensor goes ON then the door is completely closed. Since this program triggers on the door opening and closing it should be 'Enabled' in the ISY. Program GD (Sync): If Control 'DEVICES / GARAGE DOOR / GD (Sensor)' is switched On And Control 'DEVICES / GARAGE DOOR / GD (Sensor)' is not switched Off Then Set Scene 'SCENES / SWITCHES / HW (KP- (Garage Door)' Off Set Scene 'SCENES / GARAGE DOOR / GD (Control)' Off Else $iGD_Busy = 1 Set Scene 'SCENES / SWITCHES / HW (KP- (Garage Door)' On Set Scene 'SCENES / GARAGE DOOR / GD (Control)' On Wait 15 seconds $iGD_Busy = 0 Comments: Make sure the HW (KP- switch and GD (Control) is sync'd with the GD sensor regardless of how the door was opened/closed. If the sensor comes on (Closed) 1. Turn OFF HW (KP- button 2. Set GD (Control) OFF If the sensor goes off (Open) 1. Show door is busy 2. Turn ON HW (KP- button 3. Set GD (Control) ON 4. Wait 15 secs 5. Show door is idle Here are the program to open and close the door. Notice the use of iGD_Busy variable again when closing the door. This prevents any more button pushes while the door is closing. The side effect of pushing the button more than once within the 15 seconds is it extends the length of time before a button push will actually do anything. You can see in both of these programs that I 'Run' another program. That program is shown at the end and it serves the purpose of syncing the state of the button to that of the sensor so the button is still lit while it is closing until it is actually closed when the button will turn off. You can actually tell from this whether the command to close or open the door actually worked. For some reason on rare occasions I push the button and the IOLinc misses the command. This is the program to open the door GD (Open): If $iGD_Busy is 0 Then $iGD_Busy = 1 Run Program 'GD (Sync_HW (KP-)' (If) Set Scene 'SCENES / GARAGE DOOR / GD (Control)' On Wait 15 seconds $iGD_Busy = 0 Else Run Program 'GD (Sync_HW (KP-)' (If) Wait 15 seconds $iGD_Busy = 0 iGD_Busy reflects whether the door is busy. If the door is idle: 1. Show door is busy by setting iGD_Busy 2. Set HW (KP- to it's correct state based on the sensor 3. Send command to open the door and wait 15 secs 4. Show door is idle by clearing iGD_Busy NOTE. HW (KP- will stay OFF if command failed If the door is busy: 1. Set HW (KP- to it's correct state based on the sensor 2. Wait for it to go idle 3. Show door is idle by clearing iGD_Busy This is the program to close the door GD (Close): If $iGD_Busy is 0 Then $iGD_Busy = 1 Run Program 'GD (Sync_HW (KP-)' (If) Set Scene 'SCENES / GARAGE DOOR / GD (Control)' Off Wait 15 seconds $iGD_Busy = 0 Else Run Program 'GD (Sync_HW (KP-)' (If) Wait 15 seconds $iGD_Busy = 0 iGD_Busy reflects whether the door is busy. If the door is idle: 1. Show door is busy by setting iGD_Busy 2. Set HW (KP- to it's correct state based on the sensor 3. Send command to close the door and wait 15 secs 4. Show door is idle by clearing iGD_Busy NOTE. HW (KP- will remain ON if command failed If the door is busy: 1. Set HW (KP- to it's correct state based on the sensor 2. Wait for it to go idle 3. Show door is idle by clearing iGD_Busy Now due to the fact the button light comes on and off when you press it, I needed to override that to make sure the button reflected the state of the door. So here's the program that is called from the button push program that re-syncs the button state to the sensor state. Since this program is only going to be called and is not event triggered good practice says that this program should be 'Disabled' but it doesn't matter if it's not. Program 'GD (Sync_HW (KP-)': If Status 'DEVICES / GARAGE DOOR / GD (Sensor)' is On And Status 'DEVICES / GARAGE DOOR / GD (Sensor)' is not Off Then Set Scene 'SCENES / SWITCHES / HW (KP- (Garage Door)' Off Else Set Scene 'SCENES / SWITCHES / HW (KP- (Garage Door)' On Comment: Sets the state of HW (KP- based on the GD (Sensor) Finally, this is the program that triggers when you push the button on the KeypadLinc: Program HW (KP- (Garage Door): If Control 'DEVICES / SWITCHES / HW (KP-B)' is switched On And Control 'DEVICES / SWITCHES / HW (KP-B)' is not switched Off Then Run Program 'GD (Open)' (If) Else Run Program 'GD (Close)' (If) Define action when HW (KP- is pushed ON or OFF - Open or Close Garage Door If switched on 1. Run the program GD (Open)(If) - (This will open the door if it is idle or ignore if it is busy) If switched off 1. Run the program GD (Close)(If) - (This will close the door if it is idle or ignore if it is busy) VISUALLY WHAT HAPPENS ------------------------------- If the door is closed and you push the button the light on the button comes on and will then turn off briefly because the door is closed. Then the door will start opening and the button light will turn on indicating the door is opening. If the door is open and you push the button the button light will turn off briefly, then it will turn on because the door is still open. The door will start to close and when it is completely closed the button light will turn off. Maybe an overkill? Probably
oberkc Posted August 10, 2011 Posted August 10, 2011 here is the link to the wiki instructions: http://www.universal-devices.com/mwiki/index.php?title=ISY-99i/ISY-26_INSTEON:Garage_Door_Kit This assumes you want the KPL button illuminated if the door is open, and off if the door is closed. The keypad button must be in non-toggle "ON" (not "off"). I'm sure someone can explain the process but there is always a combination where the door did not move and the button shows the wrong status. I have not found this to be an inherent problem with the wiki approach (barring communication errors), but perhaps there is this possibility out there lurking that I have just not experienced. Maybe this could happen if the door was open a couple of inches, and you press the button, and the sensor sends an "off" signal while the keypad button is flashing? Who knows? With this approach, the only way a keypad button can be "off" (door closed) is for the sensor to have commanded it to be so. Given this, there is high confidence in the "off" status, with any ambiguity only possible with a lit button.
Hurting2Ride Posted August 21, 2011 Posted August 21, 2011 perhaps there is this possibility out there lurking that I have just not experienced. Maybe this could happen if the door was open a couple of inches, and you press the button, and the sensor sends an "off" signal while the keypad button is flashing? Who knows? Actually the Wiki recommended process has you placing the key in "toggle on" only mode so that's not an issue, either. With the wiki process the button light is still linked to and controlled by the sensor. In one sense the Wiki process has less chance at comm failures since it has "less moving parts". My $.02 - The only real reasons I can see for not using the recommended approach are if [*:2s8ht0wr]1) you want to to prevent a single touch of the key from activating the door, i.e. require a double-push to prevent open/close actions done by accident [*:2s8ht0wr]2) you want to disallow the ability to interrupt the open/close process (again, usually preventing this happening accidentally)[*:2s8ht0wr]3) you want to use a different key to open/close than the one you use to indicate status. However, in those cases I would take the wiki method and simply change the control of the garage scene to be set by your program. Leaves you with few programs and very little programming to still accomplish a whole lot.
oberkc Posted August 21, 2011 Posted August 21, 2011 Actually the Wiki recommended process has you placing the key in "toggle on" only mode so that's not an issue, either. Yes. I know. I use the wiki approach and it works well for me. The concern that I have is whether a flashing keypad (non-toggle on) is able to respond to a OFF command from a controlling device WHILE it is flashing. I have simply not tested this situation to confirm or deny.
Hurting2Ride Posted August 22, 2011 Posted August 22, 2011 I have simply not tested this situation to confirm or deny. Aye. On the other hand his code is ignoring events for the 15 seconds the door is in motion so should he run in to this situation, he's got bigger problems
oberkc Posted August 22, 2011 Posted August 22, 2011 On the other hand his code is ignoring events for the 15 seconds the door is in motion so should he run in to this situation, he's got bigger problems I think you and I are in complete agreement here. I like the wiki approach. It has worked well for me. I agree that the original poster has bigger problems than a remote possibility of signal crashing. I think it was LeeG that suggested that there is "always a combination where the door did not move and the button shows the wrong status". I simply wanted to respond to this, saying that I have not found this to be the case, but could think of one theoretical possibility (besides powerline communication errors). Unfortunately, I think Jay5 has moved on.
Recommended Posts