Jump to content

ISY Garage Open and Close Programs


TrojanHorse

Recommended Posts

Posted (edited)

I'd like to post the programs I use to open and close my garage door.  Full kimono - programs and comments below for critique and/or copy.  I know these could be cleaned up so I would appreciate any suggestions, but ultimately this seems to work, finally...  

I open my door using an ELK relay and an RF transmitter.  This is effectively a toggle that mimics pressing a standard visor clipped opener / closer toggle button.  So, I tried to program specific up and down operations as well as a "time-out" or wait if an open or close program was triggered and the door is moving (would ultimately like to incorporate a potentiometer here?)

 

I run this from Moblinc, where I can see the door on my camera and run it from the app.

This works well for me, although if I run the program without letting Mobilinc fully boot up, it sometimes will fail. It almost seems like the app sees the conditions differently and results in the elk relay not being triggered (but lights still turn on, oddly).  In any event, I like having the delay since I find it possible to "fat finger" the app and either hit the wrong button or hit it twice (so prevent the toggle...)

 

All of these programs except the first one are disabled, and I trigger the IF path of the Open or Close programs from Mobilinc camera screen.  

 

It's 7 programs but hopefully easy to follow.  Any questions, comments, kicks-in-the-teeth, etc. appreciated!

 
-----------------------------------------------------------------------------------
A_Status_of_Door - [ID 0091][Parent 0087]
 
If
        Elk Zone 'Garage Overhead' is Normal
 
Then
        $garage.is.open.s  = 0
 
Else
        $garage.is.open.s  = 1
 
 
 
 
-----------------------------------------------------------------------------------
Close_Garage - [ID 008C][Parent 0087][Not Enabled]
 
If
        $garage.is.open.s is 1
    And $garage.closing.s is 0
    And $garage.opening.s is 0
 
Then
        Set Elk Output 'GDO Control' On for 3 Seconds
        Run Program 'y.wait.after.closing' (Then Path)
        Run Program 'Open_Garage' (Else Path)
 
Else
   - No Actions - (To add one, press 'Action')
 
Intended to be triggered from Mobilinc, disabled in ISY to prevent autorun
checks garage sensor variable and that the open or close program has not been recently run.
GDO Control is an ELK output that triggers a garage door remote 
    and has a rule in the ELK M1 that keeps the output on for 3 sec. 
 
-----------------------------------------------------------------------------------
Open_Garage - [ID 008E][Parent 0087][Not Enabled]
 
If
        $garage.is.open.s is 0
    And $garage.closing.s is 0
    And $garage.opening.s is 0
 
Then
        Set Elk Output 'GDO Control' On for 3 Seconds
        Set Scene 'Scns / Existing_Circuits / Garage / z_Garage.All.Lights' On
        Run Program 'y.wait.after.opening' (Then Path)
        Run Program 'Close_Garage' (Else Path)
 
Else
   - No Actions - (To add one, press 'Action')
 
Intended to be triggered from Mobilinc, disabled in ISY to prevent autorun
checks garage sensor variable and that the open or close program has not been recently run.
GDO Control is an ELK output that triggers a garage door remote and has a rule in the ELK M1 that keeps the output on for 3 sec.
The OPEN program also turns on the lights.  
Assumes that the other program that monitors the garage motion sensor will turn off lights after [10] minutes
 
 
 
-----------------------------------------------------------------------------------
y.wait.after.closing - [ID 008D][Parent 0087][Not Enabled]
 
If
   - No Conditions - (To add one, press 'Schedule' or 'Condition')
 
Then
        $garage.closing.s  = 1
        Wait  25 seconds
        Run Program 'z-garage.check.after.closing' (If)
 
Else
   - No Actions - (To add one, press 'Action')
 
 
 
 
-----------------------------------------------------------------------------------
y.wait.after.opening - [ID 0095][Parent 0087][Not Enabled]
 
If
   - No Conditions - (To add one, press 'Schedule' or 'Condition')
 
Then
        $garage.opening.s  = 1
        Wait  25 seconds
        Run Program 'z-garage.check.after.opening' (If)
 
Else
   - No Actions - (To add one, press 'Action')
 
 
 
 
-----------------------------------------------------------------------------------
z-garage.check.after.closing - [ID 0092][Parent 0087][Not Enabled]
 
If
        $garage.is.open.s is 0
 
Then
        $garage.closing.s  = 0
        $garage.opening.s  = 0
 
Else
        Send Notification to 'Erik_Text' content 'garage.failed.closing'
        $garage.closing.s  = 0
        $garage.opening.s  = 0
 
checks if status has changed
if so, resets the integer variables to 0 that indicate whether programs are running
if else, send notification but also reset the variables so that the program can be attempted to be run again
 
 
-----------------------------------------------------------------------------------
z-garage.check.after.opening - [ID 0093][Parent 0087][Not Enabled]
 
If
        $garage.is.open.s is 1
 
Then
        $garage.closing.s  = 0
        $garage.opening.s  = 0
 
Else
        Send Notification to 'Erik_Text' content 'garage.failed.opening'
        $garage.closing.s  = 0
        $garage.opening.s  = 0
 
checks if status has changed
if so, resets the integer variables to 0 that indicate whether programs are running
if else, send notification but also reset the variables so that the program can be attempted to be run again
 
 
Edited by TrojanHorse
  • Like 1
  • 1 year later...
Posted

This is awesome.  I used this same basic idea to create a bunch of programs to monitor and control my 2 garage doors.  Both doors are wired to elk zones and relays.  Instead of using mobilinc to open/close, I use KPL buttons.  I originally had it working using the elk module to look for "normal" or "violated," but using the variables makes it a lot easier to follow.  I especially like the opening and closing status variables.  Thanks!

Posted

The title doesn't mention that an Elk is required, so, in the event a reader does not have an Elk, here's a simple solution that also allows voice control, but voice is not needed.

This program selects the appropriate program to run. On closes the garage door (the door is On the opening) and Off opens it (the garage door is off the opening).

GG1 Open/Close
If
   - No Conditions - (To add one, press 'Schedule' or 'Condition')
 
Then
        Run Program 'GG1 Close' (If)
 
Else
        Run Program 'GG1 Open' (If)

These programs actually control the garage door. Both programs are disabled. The If statement checks for the state of the garage door, open or closed. The controller is a MimoLite Z-Wave relay. You can just as easily use an I/O Linc.

GG1 Open
If
        Status  'GG / Garage1 Control / GG1 ZW028 Binary Sensor' is On
 
Then
        Set 'GG / Garage1 Control / GG1 ZW028 Binary Switch' On
        Wait  2 seconds
        Set 'GG / Garage1 Control / GG1 ZW028 Binary Switch' Off
 
Else
   - No Actions - (To add one, press 'Action')

GG2 Close
If
        Status  'GG / Garage2 Control / GG2 ZW026 Binary Sensor' is Off
 
Then
        Set 'GG / Garage2 Control / GG2 ZW026 Binary Switch' On
        Wait  2 seconds
        Set 'GG / Garage2 Control / GG2 ZW026 Binary Switch' Off
 
Else
   - No Actions - (To add one, press 'Action')
 

 


 

 

Posted

Glad someone found this useful!
The programs can be modified easily to not require an Elk.
The main purpose of the framework is to prevent hitting a simple GDO toggle two or more times in quick succession which would cause the door to react unexpectedly, and also to alert to a failed command.


Sent from my iPhone using Tapatalk

Guest
This topic is now closed to further replies.

×
×
  • Create New...