Getting started with the INDIGO agents based backyard astrophotography application suite
About eight years ago we started to develop a software with the idea to make Apple macOS and iOS the first class platforms for backyard astrophotography.
At the beginning, the most important task was to add as many hardware drivers as possible. So we used the existing INDI framework. Later we focused on the performance and reliability and transferred the whole development to INDIGO framework.
In the latest generation we made so far the most radical change. We left the traditional client server approach and switched to multi-tier agent based architecture allowing even higher performance and reliability.
Core and utility applications of astrophotography suite
Unlike the other similar systems, our suite is not a single monolithic application, we use standalone loosely coupled applications instead. This approach has some advantages and some drawbacks. The major advantage is that you can select just tools you really need and use them only when you really need. The disadvantage is that you need to understand how the applications work to configure them to talk to each other properly.
There are five core applications and a couple of utility applications in our suite. The core applications are:
- AstroImager, the application for controlling the main camera and the associated filter wheels, focusers and the front end for "Imager Agent",
- AstroDSLR, a very similar application, but intended specifically for tethering DSLRs and another front end for "Imager Agent",
- AstroTelescope, the application for controlling the dome and the mount and the front end for "Mount Agent",
- AstroGuider, the application for controlling the guider camera and guider port of the mount and the front end for "Guider Agent" and
- INDIGO A1 or INDIGO D1, all in one application containing AstroImager or AstroDSLR, AstroGuider and AstroTelescope in a single bundle with a single embeded server.
The utility applications are:
- INDIGO Server, the standalone server for building distributed systems,
- INDIGO Control Panel, the standalone control panel,
- INDIGO Script Editor, the standalone INDIGO script editor,
- INDIGO Dashboard, the highly configurable dashboard for low level server control,
- FITS Preview, the fast previewer for FITS, XISF and INDIGO RAW formats and
- Astrometry, the macOS port of substantial part of Astrometry.net project.
Please note, that every core application contains an embedded server, control panel and script editor. The standalone versions are intended for advanced use and are not necessary in the most cases.
About INDIGO and INDIGO agents
INDIGO is a system of standards and frameworks for multiplatform and distributed astronomy software development.
You can consider it as a next generation of INDI, based on layered architecture and software bus. INDIGO uses the same astronomical hardware abstraction as INDI, but removes some of its design limitations, dramatically improves its performance in some typical scenarios and overcomes license restrictions to allow both non-commercial and commercial use.
If you don't want to, you don't need to care about INDIGO complexity and its distributed nature. Each application contains embedded INDIGO Server together will all necessary drivers. You can just use it.
Although INDIGO was always well prepared for a distributed computing, for many situations the traditional client/server is not the best approach. The most important driver for the change was implementation of webGUI on INDIGO server. The thin client running in a browser needs a much smarter backend than INDIGO server itself, it needs a server side application logic. We use term INDIGO agent for this code, acting on the server side and controlling the local devices on behalf of the client.
Such an agent is independent of the connection to the client. The client can configure it, disconnect and keep it running, doing its job and connect later to monitor the status or to take the results. The communication between the driver and the agent is also not limited by network bandwidth as far as they both live in the same INDIGO server and can communicate to each other over the software bus on a procedure call speed.
And last but not least, as far as agent code contains the vast majority of application logic for typical operations supported by the applications for amateur astronomy. Implementation of the client is in this case just implementation of native GUI for a given operating system. It is faster, easier and possible bugs can be fixed on one place.
To learn more about INDIGO or INDIGO agents or to ask a question, visit FAQ section of our users forum.
What's new in the version 4.5
- INDIGO framework version 2.0.177.
- The first public release based on AstroDSLR, AstroGuider and AstroTelescope code.
INDIGO D1 overview
INDIGO D1 is a front end for imaging, guiding, mount and auxiliary devices INDIGO agents. Its purpose is to control main imaging camera, filter wheel, focuser and rotator, to allow proper framing, focusing and capturing from a single batch of images to quite complicated series of images with different parameters and settings, to control the guiding camera, its guider port and/or the connected mount and it is a simple planetarium and telescope control application.
It can control many devices supported by built-in INDIGO drivers or it can use any 3rd party remote INDIGO or INDI driver. Out-of-the-box it contains INDIGO drivers for the following devices:
- CCD, focuser, wheel, rotator, mount, gps and dome simulator drivers,
- Atik CCD and wheel drivers (Intel only),
- ZWO ASI CCD, wheel, focuser and guider drivers (doesn't work with non-S ASI120MM/MC, Intel only),
- IIDC CCD driver (both USB and FireWire cameras),
- QHY CCD and filter wheel drivers (Intel only),
- SBIG CCD and filter wheel driver (Intel only),
- Meade DSI CCD driver,
- Orion SSAG/QHY5 CCD driver,
- StarlightXpress CCD, wheel and AO drivers,
- Moravian Instruments CCD and wheel driver,
- ToupTek CCD driver (Intel only),
- AltairAstro CCD driver (Intel only),
- SVBONY CCD driver (Intel only),
- UVC (USB Video Class, e.g. SVBONY SV205) CCD driver,
- PTP-over-USB CCD driver for Canon, Nikon and Sony Alpha cameras,
- Trutek (TruTech) wheel driver (untested),
- Brightstar Quantum wheel driver (untested),
- Xagyl wheel driver (untested),
- Optec wheel driver (untested),
- QHY CFW wheel driver added,
- Manual filter wheel driver,
- EQMac guider driver (obsoleted on macOS Mojave),
- CG-USB-ST4 driver,
- Shoestring GPUSB, FCUSB and DSUSB drivers,
- Focuser USB v3 driver,
- WeMacro Rail USB driver,
- MJKZZ macro rail USB driver,
- PegasusAstro DMFC, UPB, PPB and FlatMaster drivers,
- RigelSys nSTEP and nFOCUS drives,
- MoonLite focuser driver,
- Optec focuser driver (untested),
- LakesideAstro focuser driver (untested),
- Deep Sky Dad AF1, AF2 and AF3 focuser driver,
- Baader Planetarium SteelDrive II focuser and Classic dome drivers,
- AstroGadget FocusDreamPro focuser driver,
- RoboFocus focuser driver,
- MyPro2 focuser driver,
- ASTROMECHANICS ASCOM Canon EF Lens Controller focuser driver,
- Lunatico Limpet/Armadillo/Platypus Focuser/Rotator/Powerbox drivers,
- Optec Pyxis Rotator driver,
- PlaneWave/Celestron focuser driver,
- LX200 mount driver (supports Meade, AvalonGo, Losmandy Gemini, 10micron, EQMac, Astro-Physics GTO and OnStep dialects),
- NexStar mount driver (supports Celestron and Skywatcher dialects),
- Takahashi Temma mount driver,
- iOptron Mount driver,
- SynScan/EQDir mount driver,
- ExploreScientific PCM8 mount controller driver,
- RainbowAstro mount driver,
- NexStarAUX mount driver (WiFi only),
- Generic NMEA 0183 GPS driver,
- GPS Service Daemon (GPSD) client driver,
- HID Joystick driver,
- RTS-on-COM shutter driver,
- Unihedron SQM sky quality meter driver,
- ASTROMECHANICS PLM aux driver,
- Artesky flatbox driver,
- Lacerta Flat Box Controller driver,
- Optec Flip-Flat driver,
- Geoptik flat driver,
- USB_Dewpoint V1 and V2 driver,
- Lunatico AAG CloudWatcher driver,
- Lunatico Astronomia Dragonfly Dome and Relay controller drivers,
- Astromi.ch MGBox v1/v2, MBox, MGPBox and PBox driver,
- NexDome Dome driver (based on G.Rozema's firmware),
- NexDome Dome driver (requires firmware v.3.0.0 or newer),
- Beaver dome driver,
- Interactive Astronomy SkyRoof and SkyAlert drivers,
- Modernised 2-m Class Zeiss Telescope Systems (ASCOL).
INDIGO D1 graphical user interface
INDIGO D1 integrates GUIs of AstroDSLR, AstroGuider and AstroTelescope together with console panel and menu bar icon with a menu shortcuts for showing a different windows or access freqently needed features.
The console panel contains the messages from both INDIGO D1 and remote INDIGO servers and drivers.
The safest way how to get familiar with different INDIGO D1 functions is to select simulator devices and play with them a little bit.
INDIGO D1 preferences
In INDIGO D1 preferences you can set various settings for agent GUIs and for the embedded INDIGO client.
On the first pane you can configure the common features of the user interface.
On the imager pane you can configure the settings for imager agent. The only option which is not quite straightforward is output format. FITS, XISF, TIFF and JPEG options are formats requested from CCD drivers for batch capture when you want to save individual image files. JPEG & AVI and RAW & SER options select JPEG or RAW capture format and subsequently encode the frames into a single video stream file. Note, that RAW is INDIGO RAW format, not DSLR RAW format like NEF or CR2.
On the guider pane you can configure the user interface and some common parameters for star detection and for the calibration algorighm. Unless you know what you are doing, keep the default values.
On the mount pane you can set the number of visible stars, refreshing interval (for the star map rotation) and some visual preferences. You can also set field-of-view indicator size and orientation. It will be set automatically during plate solve.
On the INDIGO pane you can configure the port number, service name and type for built-in INDIGO server. Access token is a password used to access protected remote INDIGO services.
Log level is logging verbosity for GUI and built-in INDIGO server. Read this post to learn how to make a debug or trace log.
Configuration profile is the profile used to save and load persistent state of the INDIGO server and drivers. Don't change it unless you know what you are doing.
On the drivers pane you can enable or disable different INDIGO drivers. Don't enable drivers you don't need, all loaded drivers consume resources of your computer and some of them are mutually exclusive. Check this page to learn more about individual INDIGO drivers.
On the services pane you can see automatically detected INDIGO services and also to configure some of them manually, e.g. legacy INDI servers or services running outside your local network.
On the ports pane you can configure a serial port for those drivers which need it. Note, that these settings supersede the saved value of PORT property of the driver.
INDIGO D1 menu icon
From INDIGO D1 menu icon you can access all the windows and commonly used features.
You can show the main agent GUIs, open the preferences panel, open the mount and the imager agent setup panels, stop the mount movement, start and stop imager batch or sequence execution, start and stop guider calibration or guiding.
You can also access INDIGO control panel, script editor and AUX devices control panels.
Agent specific GUI
To learn more about imager, guider or mount GUI, look at the relevant parts of AstroImager, AstroGuider or AstroTelescope documentation or video tutorials.
Manage AUX devices with INIDGO A1
Aux panel controls up to four AUX devices controlled by the selected agent.
The devices may be power boxes, weather stations, light boxes or any other devices reporting values through INFO property.
Further configuration of such devices, e.g. renaming their outlets or ports, is possible with the build-in control panel. Remember to save the device configuration each time you change the outlet or port names.
Scripting INDIGO D1
INDIGO Script is a built-in scripting language based on ECMA Script with binding to the INDIGO objects and functions. Scripts may be executed manually, on agent load or unload or registered as event handlers and triggered by any INDIGO events.
Scripts are executed by Duktape engine wrapped into a scripting agent. To learn more about the language, visit Duktape site.
To learn more about INDIGO bindings, read scripting agent README.
To see some real world scripts look at INDIGO Script subforum.
Low level INDIGO control with INDIGO D1
In control panel you can manage all properties of all devices hosted by local INDIGO bus.
To change a property, navigate in device / Group / Property tree, enter new values of the items (changed values became orange) and click Set.
If you want INDIGO D1 to use changed values on the next start, save configuration in "Configuration control" property in "Main" group of the device. You can also set particular profile in "Profile selection" property first. Remember, that not all properties are actually persistent, values of some of them can't be saved, e.g. for security reasons.
INDIGO D1 device represents INDIGO D1 itself and can be used by scripting tools etc.
Please note, that embedded control panel can be used only to control local devices. To access remote devices you need full featured INDIGO Control panel.
Please contact us at firstname.lastname@example.org or bb.cloudmakers.eu.