Instrument Neutral Distributed Interface: Difference between revisions

Content deleted Content added
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5
 
(18 intermediate revisions by 15 users not shown)
Line 1:
'''INDI''' (an abbreviation of "'''Instrument Neutral{{Short description|Distributed Interface'''") is a [[Distributed Control System]] protocol to enable control, data acquisition and exchange among hardware devices and software front ends,system with particular focus on astronomical instrumentation.}}
{{Infobox software
| name = INDI
| logo =
| screenshot =
| caption =
| author = [[Elwood Downey]], [[Jasem Mutlaq]]
| developer = The INDI Development Team
| released = {{Start date and age|2003|04|15|df=yes}}
| programming language = [[C (programming language)|C]], [[C++]]
| operating system = [[Linux]], [[macOS]], [[FreeBSD]], [[OpenBSD]]
| platform =
| license = [[GNU Lesser General Public License|GNU LGPL v2.1+]]
| website = {{URL|https://www.indilib.org/}}
| latest release version = 1.8.9
| latest release date = {{Start date and age|2021|02|28|df=yes}}<ref>{{cite web
| url = https://github.com/indilib/indi/releases
| title = Releases · indilib/indi
| website = GitHub.com
| access-date = 2021-04-12
| archive-date = 2021-04-19
| archive-url = https://web.archive.org/web/20210419162720/https://github.com/indilib/indi/releases
| url-status = live
}}</ref>
}}
 
'''Instrument Neutral Distributed Interface''' ('''INDI''') is a [[distributed control system]] (DCS) protocol to enable control, data acquisition and exchange among hardware devices and software front ends, emphasizing astronomical instrumentation.
 
==Introduction==
[[Elwood Downey]] started the INDI Protocol initiative in 2003 to develop a platform and client independent control protocol. INDI is a simple XML-like protocol modeled on Extensible Markup Language ([[XML]]), described for interactive and automated remote control of diverse instrumentationinstruments. It is small, easy to parse, and stateless. In the INDI paradigm, each ''Device'' poses all command and status functions in terms of setting and getting ''Properties''. Each Property is a vector of one or more named members, and has a current value vector; a target value vector; provides information about how it should be sequenced with respect to other Properties to accomplish one coordinated unit of observation; and provides hints as to how it might be displayed for interactive manipulation in a [[graphical user interface]] (GUI). Clients learn the Properties of a particular Device at runtime using introspection.
poses all command and status functions in terms of setting and getting Properties. Each Property is a vector of one or more named members. Each Property has a current value vector; a target value vector; provides information about how it should be sequenced with respect to other Properties to accomplish one coordinated unit of observation; and provides hints as to how it might be displayed for interactive manipulation in a GUI. Clients learn the Properties of a particular Device at runtime using introspection.
 
This decouples Client and Device implementation histories. Devices have completefull authority over whether to accept commands from Clients. INDI accommodates intermediate servers, broadcasting, and connection topologies ranging from one-to-one on aone singletype of system, to many-to-many between systems of different genre. The INDI protocol can be nested within other XML elements such as [[RTMLRemote Telescope Markup Language]] (RTML) to add constraints for automatic scheduling and execution.
 
==Architecture==
The main key concept in INDI is that devices have the ability to describe themselves. This is accomplished by using [[XML]] to describe a generic hierarchy that can represent both canonical and non-canonical devices. 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:
 
*Text property.
*Number property.
*Switch property (Represented– represented in GUI by buttons or check boxes).
*Light property (Represented– represented in GUI by colored LEDs).
*Blob property (Binary– binary data).
 
INDI provides powerful scripting facilities that enablesenable completefull device automation.
 
==INDI Library==
INDI Library is an implementation of the INDI wire protocol for [[Unix-like]] systems. It supports a wide variety of astronomical instruments including telescopes, [[charge-coupled device]]s (CCDs), focusers, filters, and video capture devices. The INDI Library is licensed under the [[LGPLGNU Lesser General Public License]] (LGPL).
 
==INDI Driver==
Line 28 ⟶ 53:
 
[[Image:indicontrolpanel.png|thumb|right|INDI Control Panel in KStars]]
* Generic GUI clients like [[KStars]] or, [[Xephem|XEphem]], AstroImager,<ref>[http://www.cloudmakers.eu/astroimager AstroImager]</ref> or AstroTelescope.<ref>[http://www.cloudmakers.eu/jindiastrotelescope jINDIAstroTelescope].</ref> Such clients generate a dynamic GUI to offer users a control panel to control the device.
* Logger clients to record messages, alarms, and data exchanged between devices and clients.
* Watch dog clients to insureensure safe and proper operation of devices.
* Automated scripts to carry on complex and coordinatescoordinated operations on devices.
 
==INDI Server==
INDI server is the hub that sits between drivers and clients. It reroutes traffic for control and data across distributed networks. Each device or client in the network is a node and may communicate with other nodes whenever desired. The server supports broadcasting, chaining, and marshaling of data.
 
[[Image:indi_serverindi server.png|frame|center|INDI Server Network Topology]]
 
==TCP/UDP port number assignment by IANA==
The [[Internet Assigned Numbers Authority|IANA]] (IANA) has assigned INDITCP/UDP toport 7624 ([[Transmission Control Protocol|TCP]]/ and [[User Datagram Protocol|UDP]]) portfor 7624use by INDI. See [[List_of_TCP_and_UDP_port_numbers|IANAList of TCP and UDP port numbers]].
 
== See also ==
{{Portal|Free and open-source software|Astronomy}}
{{div col begin|colwidth=20em}}
*[[Space flight simulation game]]
**[[List of space flight simulation games]]
*[[Planetarium software]]
*[[List of observatory software]]
{{div col end}}
 
==IANA portReferences ==
{{Reflist}}
[[Internet Assigned Numbers Authority|IANA]] has assigned INDI to [[Transmission Control Protocol|TCP]]/[[User Datagram Protocol|UDP]] port 7624. See [[List_of_TCP_and_UDP_port_numbers|IANA port numbers]].
 
== External links ==
*[https://indilib.org/ INDI Library]
{{Portal|Astronomy}}
*[http://indi.sourceforge.net/ INDI Library project webpage]
*[http://www.clearskyinstitute.com/INDI/INDI.pdf INDI Protocol white paper]
*[http://www.cloudmakers.eu/windixindi wINDIxINDI (INDI based tools for OSX) project page]
*[http://www.cloudmakers.eu/iindi iINDI (INDI control panel for iOS) project page]
*[http://www.cloudmakers.eu/windi wINDI (ASCOM to INDI bridge) project page]
 
[[Category:Free astronomy software]]