indipyserver


Nameindipyserver JSON
Version 0.0.1 PyPI version JSON
download
home_pageNone
SummaryServer for the INDI protocol.
upload_time2025-10-19 14:00:51
maintainerNone
docs_urlNone
authorNone
requires_python>=3.11
licenseNone
keywords indi server astronomy instrument remote control
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # indipyserver
Server for the INDI protocol, written in Python

This package provides an IPyServer class used to serve the INDI protocol on a port.

INDI - Instrument Neutral Distributed Interface.

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

Drivers controlling instrumentation can be written, typically using the IPyDriver class from the associated indipydriver package, this server opens a port to which an INDI client can connect.

You would create a script something like:


    import asyncio
    from indipyserver import IPyServer
    import ... your own modules creating driver1, driver2 ...

    server = IPyServer(driver1, driver2, host="localhost", port=7624, maxconnections=5)
    asyncio.run(server.asyncrun())

A connected client can then control all the drivers. The above illustrates multiple drivers can be served, however it could equally be one or none at all.


## Third party drivers

IPyServer can also run third party INDI drivers created with other languages or tools, using an add_exdriver method to include executable drivers.

For example, using drivers available from indilib:

    import asyncio
    from indipyserver import IPyServer

    server = IPyServer(host="localhost", port=7624, maxconnections=5)

    server.add_exdriver("indi_simulator_telescope")
    server.add_exdriver("indi_simulator_ccd")
    asyncio.run(server.asyncrun())


Please note: The author has no relationship with indilib, these indipyserver and indipydriver packages are independently developed implementations. However they were developed with reference to the INDI version 1.7 specification, and are intended to interwork with other implementations that also meets that spec.


## Networked instruments

IPyServer also has an add_remote method which can be used to add connections to remote servers, creating a tree network of servers:

    import asyncio
    from indipyserver import IPyServer
    import ... your own modules creating DriverA, DriverB ...

    server = IPyServer(DriverA, DriverB, host="localhost", port=7624, maxconnections=5)

    server.add_remote(host="nameofserverB", port=7624, blob_enable=True)
    server.add_remote(host="nameofserverC", port=7624, blob_enable=True)

    asyncio.run(server.asyncrun())


![INDI Network](https://github.com/bernie-skipole/indipyserver/raw/main/docs/source/usage/images/rem2.png)

With such a layout, the client can control all the instruments.

Drivers made with indipydriver, third party executable drivers and remote connections can all be served together.

Further documentation can be found at:

https://indipyserver.readthedocs.io/en/latest/index.html

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "indipyserver",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.11",
    "maintainer_email": null,
    "keywords": "indi, server, astronomy, instrument, remote, control",
    "author": null,
    "author_email": "Bernard Czenkusz <bernie@skipole.co.uk>",
    "download_url": "https://files.pythonhosted.org/packages/aa/11/3b3e8b61cd37b919f14ccad4388872eb21c4c9926441aa5c24e83661fc0b/indipyserver-0.0.1.tar.gz",
    "platform": null,
    "description": "# indipyserver\nServer for the INDI protocol, written in Python\n\nThis package provides an IPyServer class used to serve the INDI protocol on a port.\n\nINDI - Instrument Neutral Distributed Interface.\n\nSee https://en.wikipedia.org/wiki/Instrument_Neutral_Distributed_Interface\n\nDrivers controlling instrumentation can be written, typically using the IPyDriver class from the associated indipydriver package, this server opens a port to which an INDI client can connect.\n\nYou would create a script something like:\n\n\n    import asyncio\n    from indipyserver import IPyServer\n    import ... your own modules creating driver1, driver2 ...\n\n    server = IPyServer(driver1, driver2, host=\"localhost\", port=7624, maxconnections=5)\n    asyncio.run(server.asyncrun())\n\nA connected client can then control all the drivers. The above illustrates multiple drivers can be served, however it could equally be one or none at all.\n\n\n## Third party drivers\n\nIPyServer can also run third party INDI drivers created with other languages or tools, using an add_exdriver method to include executable drivers.\n\nFor example, using drivers available from indilib:\n\n    import asyncio\n    from indipyserver import IPyServer\n\n    server = IPyServer(host=\"localhost\", port=7624, maxconnections=5)\n\n    server.add_exdriver(\"indi_simulator_telescope\")\n    server.add_exdriver(\"indi_simulator_ccd\")\n    asyncio.run(server.asyncrun())\n\n\nPlease note: The author has no relationship with indilib, these indipyserver and indipydriver packages are independently developed implementations. However they were developed with reference to the INDI version 1.7 specification, and are intended to interwork with other implementations that also meets that spec.\n\n\n## Networked instruments\n\nIPyServer also has an add_remote method which can be used to add connections to remote servers, creating a tree network of servers:\n\n    import asyncio\n    from indipyserver import IPyServer\n    import ... your own modules creating DriverA, DriverB ...\n\n    server = IPyServer(DriverA, DriverB, host=\"localhost\", port=7624, maxconnections=5)\n\n    server.add_remote(host=\"nameofserverB\", port=7624, blob_enable=True)\n    server.add_remote(host=\"nameofserverC\", port=7624, blob_enable=True)\n\n    asyncio.run(server.asyncrun())\n\n\n![INDI Network](https://github.com/bernie-skipole/indipyserver/raw/main/docs/source/usage/images/rem2.png)\n\nWith such a layout, the client can control all the instruments.\n\nDrivers made with indipydriver, third party executable drivers and remote connections can all be served together.\n\nFurther documentation can be found at:\n\nhttps://indipyserver.readthedocs.io/en/latest/index.html\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Server for the INDI protocol.",
    "version": "0.0.1",
    "project_urls": {
        "Documentation": "https://indipyserver.readthedocs.io",
        "Source": "https://github.com/bernie-skipole/indipyserver"
    },
    "split_keywords": [
        "indi",
        " server",
        " astronomy",
        " instrument",
        " remote",
        " control"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "871f21bee1c6c46f0462bb6302f277c45fbe1ce420efd888f3ddf96f3c825f2a",
                "md5": "dc4e3ac92de6f3c66f2f323376bb89cc",
                "sha256": "afe1ee19abf1a1183952992d4f5576094f4a93fff3ed0b8cd547dbfedc4baf6b"
            },
            "downloads": -1,
            "filename": "indipyserver-0.0.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "dc4e3ac92de6f3c66f2f323376bb89cc",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.11",
            "size": 17185,
            "upload_time": "2025-10-19T14:00:49",
            "upload_time_iso_8601": "2025-10-19T14:00:49.575695Z",
            "url": "https://files.pythonhosted.org/packages/87/1f/21bee1c6c46f0462bb6302f277c45fbe1ce420efd888f3ddf96f3c825f2a/indipyserver-0.0.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "aa113b3e8b61cd37b919f14ccad4388872eb21c4c9926441aa5c24e83661fc0b",
                "md5": "ad7f459a4427aaaeaf664f03da9936a5",
                "sha256": "9132a3355a4bb91670036d6fe000df1757edc57c4eb3569be81b68f7e5f2cbb1"
            },
            "downloads": -1,
            "filename": "indipyserver-0.0.1.tar.gz",
            "has_sig": false,
            "md5_digest": "ad7f459a4427aaaeaf664f03da9936a5",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.11",
            "size": 13830,
            "upload_time": "2025-10-19T14:00:51",
            "upload_time_iso_8601": "2025-10-19T14:00:51.341240Z",
            "url": "https://files.pythonhosted.org/packages/aa/11/3b3e8b61cd37b919f14ccad4388872eb21c4c9926441aa5c24e83661fc0b/indipyserver-0.0.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-19 14:00:51",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "bernie-skipole",
    "github_project": "indipyserver",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "indipyserver"
}
        
Elapsed time: 2.54178s