INDI is a protocol designed to support control, automation, data acquisition, and exchange among hardware devices and software frontends. INDI stands for the Instrument-Neutral-Distributed-Interface, and was developed by Elwood C. Downey of ClearSky Institute.
Control systems are often written for a specific device or range of devices. When one or more of the device parameters change, the software needs to be modified to accommodate the change. That is, the software frontend and hardware backend are tightly coupled.
INDI Control Protocol INDI resolves this problem by providing a framework that decouples low level hardware drivers from high level front end clients. That is, clients that use the device drivers are completely unaware of the device capabilities. In run time, clients communicate with the device drivers and build a completely dynamical GUI based on the services provided by the device.
The core of INDI is the idea that all information is captured in Properties.
The main key concept in INDI is that devices have the ability to describe themselves. In INDI, all devices may contain one or more properties. Any property may contain one or more elements. A property in the INDI paradigm describes a specific function of the device. There are five types of INDI properties: