INDIGO Dashboard

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 four core applications and a couple of utility applications in our suite. The core applications are:

The utility applications are:

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.0

INDIGO Dashboard overview

INDIGO Dashboard is a versatile tool for a low level control of embeded or remote INDIGO Servers. It combines the server itself, the control panel and the set of up to eight configurable dashboard workspaces. Each of them can contain any number of property widgets pinned from the control panel and arranged according your need.

It contains all INDIGO drivers available for macOS:

INDIGO Dashboard preferences

In INDIGO Dashboard preferences you can set various settings for the GUI and for the embedded INDIGO server and client.

On the first pane you can configure the user interface. You can assign a labels to the workspaces shown. To add or remove workspace buttons to the toolbar, use View > Customize Toolbar menu item.

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 INDIGO 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 INDIGO 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 INDIGO 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.

Configuring workspaces

To put widgets to a workspace, open the control panel, navigate to the property you want to put to a workspace and click pin icon in a top right corner of a property widget.

Once the property widget is on the workspace, you can use it the same way as in control panel. In addition, you can minimize it, remove it from the workspace or to select it with a mouse and use toolbar buttons to breal a column after the property, to show the information about the property in a log panel, move the widget up or down, remove multiple properties or to change background colour of the widgets.

You can also lock the layout to avoid unwated changes.

If the property widgets are pinned on the workspace, but the related properties are not defined, widgets are in minimized state.

Scripting INDIGO Dashboard

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 Dashboard

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. To pin the property to a dashboard workspace, click pin icon.

If you want INDIGO Dashboard 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.

AstroImager device represents AstroImager 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.

Further questions?

Please contact us at info@cloudmakers.eu or bb.cloudmakers.eu.