With the release of INDI v2.0.9, a new INDI Universal Roll-Off Roof (ROR) driver was introduced. Up to this point, there was no standanrd implementation for a simple ROR in INDI. Depending on you control your roof, you had to write your own INDI driver to control it in INDI. To facilitate ROR control in INDI, the new Universal ROR driver relies on two additional drivers interfaces:
Using the interfaces above, INDI v2.0.9 introduced a few compatible drivers. We intend to support more observatory-class controllers, relays, and input sensors with upcoming releases:
1. GPIO driver: Uses libgpiod so it can work on multiple boards and not just raspberry pi. Driver utilizes both Input and Output interfaces. Currently driver only controls pins labeled as GPIO by the kernel.
2. Waveshare Relay driver: Controls relays on 8-ch Ethernet Relay Module. Driver utilizes Output interface.
3. Luantico Dragon Controller driver: An observatory-class controller that supports both Input and Output interfaces.
To use the new Universal ROR driver with your own roll-off roof, you need the following:
For my home observatory, two relays are used to opening the roof, and two more to close it. For input sensors, I used 1-Channel AC 220V Optocoupler Module to detect whether the fully closed and opened limit switches are actuated or not. This module is connected to Raspberry PI GPIO, which is running StellarMate OS running both the INDI GPIO, Waveshare Relay, and Universal ROR drivers.
Finally, the ROR driver can be configured to monitor for the INPUT and OUTPUT drivers. In my case, INPUT driver is INDI GPIO, and OUTPUT driver is Waveshare Relay. Next, you specify which digital input our outputs indexes are used for each.
Do not confuse this with GPIO numbering, you specify the DIGTAL_INPUT index as reported in the driver. For a single input/output, you simply put the index. For multiple coils, you add a comma-separated list. All the input and output labels can be customized.