moat-link


Namemoat-link JSON
Version 0.2.14 PyPI version JSON
download
home_pageNone
SummaryMessage exchange between MoaT instances
upload_time2025-07-25 15:44:44
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseNone
keywords moat
VCS
bugtrack_url
requirements anyio anyio_serial trio asyncclick asyncscope git msgpack simpleeval ruyaml cffi packaging pymodbus tomlkit
Travis-CI No Travis.
coveralls test coverage No coveralls.
            +++++++++
MoaT Link
+++++++++

Moat-Link is a library that distributes messages between several possible
back-ends, channel arrangements or encodings.

The associated server links these backends into one coherent system,
provide message history, documentation, and whatnot.

Rationale
+++++++++

Often, services have differing ideas how to encode "their" messages.
For instance, Home Assistant likes JSON, except for boolean content which
is encoded as "ON" and "OFF". On the other hand, encodings like msgpack_ or
CBOR_ replace the overhead of textual analysis and repeated division by ten
with typed binary data.


.. _aiomqtt: https://github.com/sbtinstruments/aiomqtt
.. _CBOR: https://cbor.io/
.. _msgpack: https://msgpack.org.

MoaT-KV supported this usecase via its own MQTT server, which is based on
hbmqtt. Unfortunately hbmqtt is unsupported, high-overhead, and doesn't
support MQTT 5. MoaT-KV adds its own overhead and doesn't support
non-retained messages.

Structure
+++++++++

MoaT-Link consists of a couple of related services.

Server
------

The main server records messages in its history, affords redundancy,
can re-supply the MQTT server with retained state, and so on.

Translator
----------

Translators send and receive messages from other channels or topics.

For instance, Home Assistant's default of device state/cmd/control in one
single hierarchy doesn't always mesh well with other systems' ideas.

Errors
------

MoaT-Link supports error handling and recovery.

Web view
--------

Last but not least, we want a HTML front-end for introspection and
debugging.


Message Encoding
++++++++++++++++

MoaT-Link supports various encodings, most notably CBOR and msgpack. Its
native default is CBOR because, unlike msgpack, CBOR's extensions are
simply normal (but tagged) data structures and thus are introspectable.


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "moat-link",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "MoaT",
    "author": null,
    "author_email": "Matthias Urlichs <matthias@urlichs.de>",
    "download_url": "https://files.pythonhosted.org/packages/da/38/b383b78dd35a4e1d0a7cf354ceb3e19a455c0620c2a9d2dc85d03b813169/moat_link-0.2.14.tar.gz",
    "platform": null,
    "description": "+++++++++\nMoaT Link\n+++++++++\n\nMoat-Link is a library that distributes messages between several possible\nback-ends, channel arrangements or encodings.\n\nThe associated server links these backends into one coherent system,\nprovide message history, documentation, and whatnot.\n\nRationale\n+++++++++\n\nOften, services have differing ideas how to encode \"their\" messages.\nFor instance, Home Assistant likes JSON, except for boolean content which\nis encoded as \"ON\" and \"OFF\". On the other hand, encodings like msgpack_ or\nCBOR_ replace the overhead of textual analysis and repeated division by ten\nwith typed binary data.\n\n\n.. _aiomqtt: https://github.com/sbtinstruments/aiomqtt\n.. _CBOR: https://cbor.io/\n.. _msgpack: https://msgpack.org.\n\nMoaT-KV supported this usecase via its own MQTT server, which is based on\nhbmqtt. Unfortunately hbmqtt is unsupported, high-overhead, and doesn't\nsupport MQTT 5. MoaT-KV adds its own overhead and doesn't support\nnon-retained messages.\n\nStructure\n+++++++++\n\nMoaT-Link consists of a couple of related services.\n\nServer\n------\n\nThe main server records messages in its history, affords redundancy,\ncan re-supply the MQTT server with retained state, and so on.\n\nTranslator\n----------\n\nTranslators send and receive messages from other channels or topics.\n\nFor instance, Home Assistant's default of device state/cmd/control in one\nsingle hierarchy doesn't always mesh well with other systems' ideas.\n\nErrors\n------\n\nMoaT-Link supports error handling and recovery.\n\nWeb view\n--------\n\nLast but not least, we want a HTML front-end for introspection and\ndebugging.\n\n\nMessage Encoding\n++++++++++++++++\n\nMoaT-Link supports various encodings, most notably CBOR and msgpack. Its\nnative default is CBOR because, unlike msgpack, CBOR's extensions are\nsimply normal (but tagged) data structures and thus are introspectable.\n\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Message exchange between MoaT instances",
    "version": "0.2.14",
    "project_urls": {
        "homepage": "https://m-o-a-t.org",
        "repository": "https://github.com/M-o-a-T/moat"
    },
    "split_keywords": [
        "moat"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7a38bf8886ae245c024af6e2bbdecbb5870eea8ce3d19acaf3a71c882e4ab859",
                "md5": "b34944ce1bff472477b6a6ba635f38e6",
                "sha256": "de4e375c4399017b5fd00856085ca16574c319f7255181e532a642b96701ddb8"
            },
            "downloads": -1,
            "filename": "moat_link-0.2.14-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "b34944ce1bff472477b6a6ba635f38e6",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 52046,
            "upload_time": "2025-07-25T15:44:43",
            "upload_time_iso_8601": "2025-07-25T15:44:43.281262Z",
            "url": "https://files.pythonhosted.org/packages/7a/38/bf8886ae245c024af6e2bbdecbb5870eea8ce3d19acaf3a71c882e4ab859/moat_link-0.2.14-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "da38b383b78dd35a4e1d0a7cf354ceb3e19a455c0620c2a9d2dc85d03b813169",
                "md5": "cae7260d3908e919f55eccbc560f01ae",
                "sha256": "1c959543e1a8eecca9305e58af547878e145ffc3fb505b16e17def223e0201a4"
            },
            "downloads": -1,
            "filename": "moat_link-0.2.14.tar.gz",
            "has_sig": false,
            "md5_digest": "cae7260d3908e919f55eccbc560f01ae",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 44203,
            "upload_time": "2025-07-25T15:44:44",
            "upload_time_iso_8601": "2025-07-25T15:44:44.848696Z",
            "url": "https://files.pythonhosted.org/packages/da/38/b383b78dd35a4e1d0a7cf354ceb3e19a455c0620c2a9d2dc85d03b813169/moat_link-0.2.14.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-25 15:44:44",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "M-o-a-T",
    "github_project": "moat",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "anyio",
            "specs": []
        },
        {
            "name": "anyio_serial",
            "specs": []
        },
        {
            "name": "trio",
            "specs": []
        },
        {
            "name": "asyncclick",
            "specs": []
        },
        {
            "name": "asyncscope",
            "specs": []
        },
        {
            "name": "git",
            "specs": []
        },
        {
            "name": "msgpack",
            "specs": []
        },
        {
            "name": "simpleeval",
            "specs": []
        },
        {
            "name": "ruyaml",
            "specs": []
        },
        {
            "name": "cffi",
            "specs": []
        },
        {
            "name": "packaging",
            "specs": []
        },
        {
            "name": "pymodbus",
            "specs": []
        },
        {
            "name": "tomlkit",
            "specs": []
        }
    ],
    "lcname": "moat-link"
}
        
Elapsed time: 1.01674s