INDI for Java is a set of libraries (written in the Java programming language) to implement Clients (graphical and not graphical ones), Drivers and Servers that follow the INDI distributed control protocol, a protocol designed to operate astronomical instrumentation.
Note: The INDI for Java library is currently ready to be used in Android devices (version 8 and higher).
- September 27, 2014: A new developer has been included in the INDI for Java Project. Richard van Nieuwenhoven contacted Zerjillo some months ago providing very helpful advice and suggestions and since then he has been collaboration with the implementation of some new features, bug correction and important refactoring issues. We hope to publish a new version of the library soon. Stay tuned.
- July 22, 2014: Version 1.38 of the libraries has been released. Some important bugs corrected (thanks to Romain Fafet) and some small additions (thanks to Gerrit Viola). Check the Downloads!
- January 11, 2014: Version 1.37 of the libraries has been released. Some minor corrections in the Driver library. A new driver for the Sky Quality Meter - LU added. Check the Downloads!
- November 23, 2013: Version 1.36 of the libraries has been released. Some important bug corrected in the Client Library. Improved the Client UI library for Switch Properties with One of Many Rule. And a new driver for the Raspberry Pi GPIO ports! Check the Downloads!
- November 10, 2013: Version 1.34 of the libraries has been released. Added a new Focuser class to deal with focusers. Improved the subdriver mechanism. Now it really works :-P. Added a Driver for the Seletek (only its focusing capabilities). Te mechanism to autosave properties in the server has been greatly improved. And many, many bugs corrected. Check the Downloads!
- October 6, 2013: Version 1.33 of the libraries has been released. Bugs corrected, the Filter Wheel Driver class has been updated to conform to the INDILib standard properties. In adition, the QHY Filter Wheel Driver has been improved to add new configuration options. Check the Downloads!
- July 25, 2013: Version 1.32 of the libraries has been released. Bugs corrected, new Filter Wheel class to ease the development of filter wheels drivers, and a new driver for the QHY Filter Wheel. Check the Downloads!
- April 10, 2012: Version 1.3 of the libraries has been released. The main addition is the new generic Android UI for clients. Although it is not very nice, it is working fine. Thus, creating a graphical INDI Client in Android is now quite easy!. Check the Downloads!
- April 4, 2012: Version 1.21 of the libraries has been released. Some new functionality added to the Server Library. Some general refactoring to prepare the libraries to be used in Android devices. The Client library divided in two different ones: the proper Client one and the Client UI. Check the Downloads!
- April 2, 2012: Version 1.2 of the libraries has been released. The main change is the addition of the Server library. At this point it is possible to create INDI Clients, Drivers and Servers with Java!. Check the Downloads!
The provided libraries are focused on the development of Drivers, Clients and Servers using the INDI protocol in the Java programming language. If you are a regular software user or if you are looking for a simple program to control your astronomical devices and you don't know anything about drivers, programming and Java probably this page is not for you. Try looking at INDI Clients for a list of programs that may be useful for your purposes.
However, if you are a programmer and you want to start your own astronomical control program or you want to program a driver for a particular astronomical device, this might be your starting point.
Please note that this libraries do not pretend to substitute or even replace the original INDI libraries which are still used and actively developed. Moreover, this project does not pretend to mimic every single option that the original libraries offer and, in fact, the programming ideas behind this library differ in some points to the original ones: particularly, INDI for Java tries to provide a truly object oriented approach in the development of INDI compatible software.
Where do I start?
If you are interested in the project, you might want to check the Downloads available for the project. In those downloads you have all the necessary tools to begin developing you're own INDI Clients and Drivers: You'll find the source code for the library, the compiled libraries (in
.jar format), all the Java Docs for the libraries and even some example files to start experimenting.
It is also recommended that you check the original INDI Library web page in which you will find lots of information about the INDI protocol, the original INDI libraries (written in C and C++) and many more resources (including a developers mailing list) that might help you start developing your own INDI related projects.
INDI for Java APIs
In the Downloads section you can find all the Java Docs for the INDI for Java libraries along with the source code. However, you can also check it only in the following links:
- INDI for Java Base API
- INDI for Java Client API
- INDI for Java Client UI API
- INDI for Java Android UI API
- INDI for Java Driver API
- INDI for Java Server API
- INDI for Java QHY Filter Wheel Driver
- INDI for Java Seletek Driver
- INDI for Java Raspberry PI GPIO Driver
- INDI for Java Sky Quality Meter - LU Driver
The INDI for Java library is currently ready to be used in Android devices (version 8 and higher).
- To create a working Android INDI Server is just a matter of a few lines of code: just define the port to listen and add the Drivers to launch.
- An Android INDI Driver is created in the exact same way as usual INDI for Java Drivers. You will just have to deal with communicating with your controlled device.
- An Android INDI Client can be constructed in the same way as a usual Java one. At this momento I do not recomend to use the Android UI library. It needs a complete redesign that I hope that in the near future will be accomplished. However, with the addition of the INDI for Java Android UI library, creating working Android interfaces for devices, properties and elements is quite easy. However, the Java Android UI Library can be greatly improved as at this moment no user friendly / aesthetic concerns have been taken into account. By the way, if you are an expert Android UI designer / programmer, any help with this issue would be greatly appreciated.
The INDI for Java Server library implements a basic but completely functional INDI Server. This server is able to load INDI Java Drivers, Native Drivers and connect to other INDI Servers. If you want to use it, you can check the Basic INDI Server Manual.
Some simple tutorials on the basic usage of these libraries are provided in the following links:
Some screen shots of applications developed with the INDI for Java Libraries:
Astronomy Control Center
A generic application to Control Astronomical devices
Android Basic Client + Server (with Drivers)
A snapshot of an Android device running a basic INDI Client, a basic INDI Server executing a Driver to control a telescope connected to the device via Bluetooth. Courtesy of Alexander Tuschen. You can check his project in [Android INDI Server].
Who is who?
The INDI for Java libraries are being developed mainly by Zerjillo (zerjioi AT ugr DOT es). However, some other people is collaborating:
- Richard van Nieuwenhoven: Programming, refactoring and a full bunch of new ideas.
- Antonio Román: Testing. Check his Astronomy web page La Azotea (in collaboration with Zerjillo).
- Alexander Tuschen: Testing and bug reporting. He is also developing some INDI Drivers to control some telescopes directly from any Android device with bluetooth.