indipyclient


Nameindipyclient JSON
Version 0.8.2 PyPI version JSON
download
home_pageNone
SummaryPure python package, providing a set of classes which can be used to create scripts or clients to control remote instruments using the INDI protocol.
upload_time2025-07-08 21:21:05
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseNone
keywords indi client astronomy instrument
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # indipyclient

You may have Python programs implementing some form of data collection or control and wish to remotely operate such an instrument.

This indipyclient package provides a set of classes which can be used to create scripts to control or display the remote instrument. In particular your script can import and create an instance of the 'IPyClient' class.

An associated package 'indipydriver' can be used to take your data, organise it into a data structure defined by the INDI protocol, and serve it on a port, ready for this client to connect to.

INDI - Instrument Neutral Distributed Interface.

See https://en.wikipedia.org/wiki/Instrument_Neutral_Distributed_Interface

INDI is often used with astronomical instruments, but is a general purpose protocol which can be used for any instrument control.

The INDI protocol defines the format of the data sent, such as light, number, text, switch or BLOB (Binary Large Object). The client takes the format of switches, numbers etc., from the protocol.

The IPyClient object has an asyncrun() coroutine method which needs to be awaited, typically gathered with your own tasks. The client transmits a 'getProperties' request (this indipyclient package does this for you on connecting).

The server replies with definition packets (defSwitchVector, defLightVector, .. ) that define the format of the instrument data.

The indipyclient package reads these, and its IPyClient instance becomes a mapping of the devices, vectors and members.

For example, if ipyclient is your instance of IPyClient:

ipyclient[devicename][vectorname][membername] will be the value of a particular parameter.

Multiple devices can be served, a 'vector' is a collection of members, so a switch vector may have one or more switches in it.

As the instrument produces changing values, the server sends 'set' packets, such as setSwitchVector, setLightVector ..., these contain new values, which update the ipyclient values. They also cause the ipyclient.rxevent(event) method to be called, which you could overwrite to take any actions you prefer.

To transmit a new value you could call the ipyclient.send_newVector coroutine method.

Indipyclient can be installed from Pypi with:

    pip install indipyclient

Further documentation is available at:

https://indipyclient.readthedocs.io

The package can be installed from:

https://pypi.org/project/indipyclient

and indipydriver is available at:

https://pypi.org/project/indipydriver

https://github.com/bernie-skipole/indipydriver

A terminal client 'indipyterm' is available, which itself calls on indipyclient to do the heavy lifting, and uses the textual package to present terminal characters, this is available at:

https://pypi.org/project/indipyterm

https://github.com/bernie-skipole/indipyterm

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "indipyclient",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "indi, client, astronomy, instrument",
    "author": null,
    "author_email": "Bernard Czenkusz <bernie@skipole.co.uk>",
    "download_url": "https://files.pythonhosted.org/packages/79/fc/9db7a3806c0c77b1ba64a80822fea5a98c89f5a4918f7eb57fba5d7bc31c/indipyclient-0.8.2.tar.gz",
    "platform": null,
    "description": "# indipyclient\n\nYou may have Python programs implementing some form of data collection or control and wish to remotely operate such an instrument.\n\nThis indipyclient package provides a set of classes which can be used to create scripts to control or display the remote instrument. In particular your script can import and create an instance of the 'IPyClient' class.\n\nAn associated package 'indipydriver' can be used to take your data, organise it into a data structure defined by the INDI protocol, and serve it on a port, ready for this client to connect to.\n\nINDI - Instrument Neutral Distributed Interface.\n\nSee https://en.wikipedia.org/wiki/Instrument_Neutral_Distributed_Interface\n\nINDI is often used with astronomical instruments, but is a general purpose protocol which can be used for any instrument control.\n\nThe INDI protocol defines the format of the data sent, such as light, number, text, switch or BLOB (Binary Large Object). The client takes the format of switches, numbers etc., from the protocol.\n\nThe IPyClient object has an asyncrun() coroutine method which needs to be awaited, typically gathered with your own tasks. The client transmits a 'getProperties' request (this indipyclient package does this for you on connecting).\n\nThe server replies with definition packets (defSwitchVector, defLightVector, .. ) that define the format of the instrument data.\n\nThe indipyclient package reads these, and its IPyClient instance becomes a mapping of the devices, vectors and members.\n\nFor example, if ipyclient is your instance of IPyClient:\n\nipyclient[devicename][vectorname][membername] will be the value of a particular parameter.\n\nMultiple devices can be served, a 'vector' is a collection of members, so a switch vector may have one or more switches in it.\n\nAs the instrument produces changing values, the server sends 'set' packets, such as setSwitchVector, setLightVector ..., these contain new values, which update the ipyclient values. They also cause the ipyclient.rxevent(event) method to be called, which you could overwrite to take any actions you prefer.\n\nTo transmit a new value you could call the ipyclient.send_newVector coroutine method.\n\nIndipyclient can be installed from Pypi with:\n\n    pip install indipyclient\n\nFurther documentation is available at:\n\nhttps://indipyclient.readthedocs.io\n\nThe package can be installed from:\n\nhttps://pypi.org/project/indipyclient\n\nand indipydriver is available at:\n\nhttps://pypi.org/project/indipydriver\n\nhttps://github.com/bernie-skipole/indipydriver\n\nA terminal client 'indipyterm' is available, which itself calls on indipyclient to do the heavy lifting, and uses the textual package to present terminal characters, this is available at:\n\nhttps://pypi.org/project/indipyterm\n\nhttps://github.com/bernie-skipole/indipyterm\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Pure python package, providing a set of classes which can be used to create scripts or clients to control remote instruments using the INDI protocol.",
    "version": "0.8.2",
    "project_urls": {
        "Documentation": "https://indipyclient.readthedocs.io",
        "Source": "https://github.com/bernie-skipole/indipyclient"
    },
    "split_keywords": [
        "indi",
        " client",
        " astronomy",
        " instrument"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7b75e9294ba862cb8ffc7ca1e9f44a9e3f21accc6a9e14e81ef9d60c9a1d7020",
                "md5": "fe99d0faff6a9c2ee1335cfe11a2dcef",
                "sha256": "456e638f8fd4e5c8e759af7aadfad6371febb703e40e944f28a88c51a3765a48"
            },
            "downloads": -1,
            "filename": "indipyclient-0.8.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "fe99d0faff6a9c2ee1335cfe11a2dcef",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 31498,
            "upload_time": "2025-07-08T21:21:03",
            "upload_time_iso_8601": "2025-07-08T21:21:03.932537Z",
            "url": "https://files.pythonhosted.org/packages/7b/75/e9294ba862cb8ffc7ca1e9f44a9e3f21accc6a9e14e81ef9d60c9a1d7020/indipyclient-0.8.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "79fc9db7a3806c0c77b1ba64a80822fea5a98c89f5a4918f7eb57fba5d7bc31c",
                "md5": "d9175c71f27b9e9d64f4aea63cfda650",
                "sha256": "2acd3c67ec73e25dcc8b1fe7067a8f5daa0d3f1a731ca4db6e3311e7d9d358e0"
            },
            "downloads": -1,
            "filename": "indipyclient-0.8.2.tar.gz",
            "has_sig": false,
            "md5_digest": "d9175c71f27b9e9d64f4aea63cfda650",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 28826,
            "upload_time": "2025-07-08T21:21:05",
            "upload_time_iso_8601": "2025-07-08T21:21:05.552499Z",
            "url": "https://files.pythonhosted.org/packages/79/fc/9db7a3806c0c77b1ba64a80822fea5a98c89f5a4918f7eb57fba5d7bc31c/indipyclient-0.8.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-08 21:21:05",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "bernie-skipole",
    "github_project": "indipyclient",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "indipyclient"
}
        
Elapsed time: 0.39834s