TrojanHorse Posted December 29, 2016 Posted December 29, 2016 (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 December 29, 2016 by TrojanHorse 1
toflaherty Posted February 18, 2018 Posted February 18, 2018 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!
stusviews Posted February 18, 2018 Posted February 18, 2018 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')
TrojanHorse Posted February 25, 2018 Author Posted February 25, 2018 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
Recommended Posts