Driver Type
Categories
- Recent Updates
- Access Control
- Amplifier
- A/V Receiver
- Climate and Pool Control
- Disc Player / Changer
- Display
- DSP
- DVR
- Irrigation / Sprinklers
- Lighting Control
- Matrix Switch
- Media Server and Player
- Multi-Room A/V
- Networking
- Power and Rack Management
- Security
- Surveillance
- Teleconferencing
- Training
- Tuner
- Utility
- Video Projector
Driver Type
Categories
- Recent Updates
- Access Control
- Amplifier
- A/V Receiver
- Climate and Pool Control
- Disc Player / Changer
- Display
- DSP
- DVR
- Irrigation / Sprinklers
- Lighting Control
- Matrix Switch
- Media Server and Player
- Multi-Room A/V
- Networking
- Power and Rack Management
- Security
- Surveillance
- Teleconferencing
- Training
- Tuner
- Utility
- Video Projector
Dual-Contact Garage Door Monitor
By: Buttonwood Technologies, LLC
Updated: Sept. 18, 2026
Version: 1.6
The Dual-Contact Garage Door Monitor driver provides centralized position, direction, and elapsed-open monitoring for up to four garage doors using separate fully-closed and fully-open Boolean system variables for each door. The driver provides Fully Closed, Fully Open, inferred Opening and Closing, Moving, Partially Open or Stopped, and Sensor Conflict feedback, together with startup-safe cross-driver subscriptions, configurable startup suppression and contact debouncing, silent initial synchronization, reconciliation polling, travel-timeout detection, elapsed-open counters, configurable one-shot Open Too Long alerts, individual and aggregate events, and detailed communication diagnostics. It also provides optional direction-correction commands and a hardware-neutral Trigger Garage Door command that fires a dealer-programmable event for the physical opener or relay command. Physical endpoint contacts remain authoritative, while direction between endpoints is inferred from the last confirmed position and documented accordingly.
Developed & Supported By
Buttonwood Technologies, LLC
rti@buttonwoodtechnologies.com
https://www.buttonwoodtechnologies.com
Product Specific Warning
The fully closed and fully open contacts are authoritative only for their respective endpoints. Opening, Closing, Moving, and Partially Open or Stopped are inferred between endpoints and can be wrong after manual movement, contact failure, wiring failure, reversal, obstruction, missed feedback, or processor interruption. Trigger Garage Door merely fires a dealer-programmed RTI event and does not verify travel direction, obstruction clearance, people, vehicles, or safe operation. This driver is not a safety controller and does not replace the opener's listed obstruction sensors and controls. The dealer must test contact polarity, endpoint feedback, timeout behavior, the external trigger macro, and safe local operation for every door.
Third-Party Driver Notice and Disclaimer
This driver is independently developed by Buttonwood Technologies, LLC and is not developed, endorsed, supported, or certified by the manufacturers or service providers with which it interoperates, unless expressly stated otherwise. The driver is provided “AS IS” and “WITH ALL FAULTS,” without warranties of any kind, express or implied, including warranties of merchantability, fitness for a particular purpose, and noninfringement. To the maximum extent permitted by applicable law, Buttonwood Technologies, LLC shall not be liable for indirect, incidental, special, consequential, exemplary, or punitive damages, loss of data, loss of use, service interruption, or lost profits arising from installation or use of the driver. Nothing in this notice excludes or limits liability that cannot lawfully be excluded or limited.
Dual-Contact Garage Door Monitor
Version v1.6
The Dual-Contact Garage Door Monitor is an RTI XP utility driver for up to four garage doors. Each door uses one Boolean system variable that is active only when fully closed and another that is active only when fully open. The driver provides a synchronized and debounced state model, direction inference, travel timeout, sensor-conflict detection, variables, and events. It does not operate the garage-door motor.
State Model
Closed contact active and open contact inactive: Closed.
Closed contact inactive and open contact active: Open.
Both contacts inactive after leaving Closed: Opening.
Both contacts inactive after leaving Open: Closing.
Both contacts inactive without a known prior endpoint: Partially Open / Stopped.
Both contacts active: Sensor Conflict.
Startup Delay and Silent Synchronization
Startup Delay defaults to 10 seconds. The driver registers its cross-driver subscriptions immediately so RTI can populate the selected values. During the delay, the driver remains Unknown, does not evaluate the contacts, and does not fire garage-door state events. The delay allows Lutron or another upstream driver to restore its feedback after a project upload, processor restart, or power cycle.
After Startup Delay, the driver reads and debounces both contacts. The first stable state is published silently. It does not fire Fully Closed, Fully Open, Opening, Closing, Stopped Partially Open, or Sensor Conflict events for that initial baseline. The door-specific Feedback Synchronized event then fires. When all enabled doors are ready, All Garage Doors Synchronized fires.
Version 1.1 corrects RTI cross-driver subscription timing. Version 1.0 could report System variable has no value even when the selected source variable was valid.
Version 1.2 introduced compatibility with source drivers that temporarily leave Boolean feedback unset. Version 1.5 requires both selected contacts to report explicit values before synchronization. Lutron RadioRA 2 may initialize these variables at different times after a processor load; the driver waits and reconciliation accepts them when both are available.
Version 1.3 uses fixed top-level debounce callbacks for all four garage doors. This prevents XP timer-dispatch failures that could leave valid inputs available while State Text remained Unknown and synchronization could not complete.
Version 1.4 adds an Open Elapsed Seconds counter and optional Open Too Long monitoring for each garage door.
Version 1.5 removes redundant configuration, raw-contact, transition-history, and travel-diagnostic variables. Each enabled door now has an independent variable category named Garage Overhead Door 1 through Garage Overhead Door 4. The dealer-entered friendly name remains in use for events, commands, activity feedback, and logging.
If either selected source variable is null or otherwise unset, Inputs Available remains false, State remains Unknown, and Driver Status remains Synchronizing inputs. Startup Delay is a minimum suppression period, not a deadline. Reconciliation continues reading both variables until each has an explicit value, after which the initial stable baseline is established silently.
Driver Setup
1. Add Dual-Contact Garage Door Monitor to the Integration Designer project.
2. Select Number of Garage Doors from 1 through 4.
3. Leave Startup Delay at 10 seconds unless the upstream input driver requires more time after startup.
4. Leave Contact Debounce Time at 500 milliseconds for normal dry-contact feedback.
5. Set Travel Timeout several seconds longer than the longest measured full travel time.
6. Enter a friendly name for each enabled garage door.
7. Select the Boolean system variable that is true only when the door is fully closed.
8. Select the Boolean system variable that is true only when the door is fully open.
9. Enable an Invert option only when the selected source variable is false at its named endpoint.
10. Optionally enable Open Too Long Event and select the desired warning threshold.
11. Send the project to the processor and wait for Driver Status to report Monitoring and All Garage Doors Synchronized to become true.
System Variables
Each enabled door has its own variable category: Garage Overhead Door 1, Garage Overhead Door 2, Garage Overhead Door 3, or Garage Overhead Door 4. Increasing Number of Garage Doors exposes the corresponding additional categories. Variables are never shared between doors.
Each door provides Inputs Available, State, State Text, Fully Closed, Fully Open, Opening, Closing, Moving, Partially Open / Stopped, Sensor Conflict, Open Elapsed Seconds, Open Too Long, and Last Input Error. The Driver Status category provides operating status, configuration health, monitoring state, overall synchronization, last activity information, and the last driver error. When Driver Status is Monitoring, every enabled door has completed feedback synchronization. Last Activity initializes as No activity since startup and changes only after a real post-startup transition.
Direction Inference
The driver infers Opening when the door leaves the fully closed contact and infers Closing when it leaves the fully open contact. Two endpoint contacts cannot detect a reversal that occurs while the door is between endpoints. If an RTI macro knows the commanded direction, use Set Direction Hint after operating the door. The Opening and Closing hints correct the inferred direction. Stopped / Partially Open identifies an intentionally stopped door.
Direction Hint is not required for normal complete travel between the closed and open endpoints. A hint is rejected while an endpoint contact is active.
Travel Timeout
When Opening or Closing continues beyond Travel Timeout, the driver reports Partially Open / Stopped and fires Travel Timeout. Use this event for a door that failed to reach the expected endpoint. Set the timeout long enough to avoid false alerts during normal travel.
Open Duration and Open Too Long
Open Elapsed Seconds starts when the fully-open endpoint is confirmed. It continues while the door closes or remains between endpoints and resets only when Fully Closed is confirmed. This behavior ensures that a door that starts closing but stops before reaching Fully Closed remains timed as unsecured.
Enable Open Too Long Event separately for each door and select a threshold from 1 minute through 24 hours. At the threshold, the door-specific Open Too Long event and the generic Any Garage Door Open Too Long event fire once. The Open Too Long Boolean remains true and the event remains latched until Fully Closed is confirmed. A processor or project restart cannot reconstruct time accumulated before the restart; if the initial synchronized baseline is Open, timing begins at synchronization.
Sensor Conflict
Sensor Conflict means both endpoint contacts are active simultaneously. This is physically invalid for a normal overhead door. Check source-variable selection, inversion settings, wiring, and sensor alignment. The driver never disguises this state as Closed or Open.
Recommended SMS Events
Use Fully Open to announce that the door reached open.
Use Fully Closed to announce that the door reached closed.
Use Travel Timeout to announce that the door may be stopped or obstructed between endpoints.
Use Open Too Long to announce that a door has not returned to Fully Closed within the selected time.
Avoid sending notifications directly from the selected upstream contacts or generic Opening and Closing states unless those messages are specifically desired.
Utility Commands
Trigger Garage Door signals the selected door's Trigger Requested event. Under Driver Events, place the physical Lutron, relay, or other garage-door control command beneath Trigger Requested for each enabled door. Configure this mapping once, then have GUI buttons and macros call Trigger Garage Door.
Reevaluate Garage Door rereads and debounces one selected door.
Reevaluate All Garage Doors rereads all enabled doors.
Set Direction Hint corrects direction after a known reversal or marks a door stopped between endpoints.
Commissioning
Confirm Closed with only the closed input active. Move away from closed and confirm Opening. Confirm Open with only the open input active. Move away from open and confirm Closing. Stop between endpoints and confirm the Travel Timeout behavior. Finally, resend programming while the door is Closed and verify that no Fully Closed event is generated during initialization.
Packaging and Encryption
Run Package.bat from this source folder on the Windows computer containing PackageDriver.exe. The build uses the PackageDriver -e option to encrypt the processor scripts. The manifest specifies minimum runtime version 24, as required for RTI driver encryption, and loads json2.js before GarageDoor.js.
Diagnostics
Enable Trace reports configuration, synchronization, accepted state transitions, and every change in input readiness. Input messages show both source-variable IDs, explicit or null/unset status, interpreted values after inversion, and whether the pair is usable or blocks synchronization. Verbose Trace additionally reports subscriptions, utility activity, and unchanged reconciliation reads at every polling interval. Leave both disabled during normal operation. Review Inputs Available and Last Input Error when selected source feedback has not initialized.
Developed & Supported By
Buttonwood Technologies, LLC
rti@buttonwoodtechnologies.com
https://www.buttonwoodtechnologies.com
Version History
Version 1.6: Standardized dealer documentation, Buttonwood Technologies support information, third-party driver notice and disclaimer, and physical-movement safety and operational warnings. Runtime monitoring, commands, variables, events, and garage-door behavior are unchanged from version 1.5.
Version 1.5: Initial release.
Product Specific Warning
The fully closed and fully open contacts are authoritative only for their respective endpoints. Opening, Closing, Moving, and Partially Open or Stopped are inferred between endpoints and can be wrong after manual movement, contact failure, wiring failure, reversal, obstruction, missed feedback, or processor interruption. Trigger Garage Door merely fires a dealer-programmed RTI event and does not verify travel direction, obstruction clearance, people, vehicles, or safe operation. This driver is not a safety controller and does not replace the opener's listed obstruction sensors and controls. The dealer must test contact polarity, endpoint feedback, timeout behavior, the external trigger macro, and safe local operation for every door.
Third-Party Driver Notice and Disclaimer
This driver is independently developed by Buttonwood Technologies, LLC and is not developed, endorsed, supported, or certified by the manufacturers or service providers with which it interoperates, unless expressly stated otherwise. The driver is provided “AS IS” and “WITH ALL FAULTS,” without warranties of any kind, express or implied, including warranties of merchantability, fitness for a particular purpose, and noninfringement. To the maximum extent permitted by applicable law, Buttonwood Technologies, LLC shall not be liable for indirect, incidental, special, consequential, exemplary, or punitive damages, loss of data, loss of use, service interruption, or lost profits arising from installation or use of the driver. Nothing in this notice excludes or limits liability that cannot lawfully be excluded or limited.