{ "info": { "author": "Emmanuel Levijarvi", "author_email": "emansl@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Topic :: Home Automation", "Topic :: Utilities" ], "description": "IoT Relay: Giving Voice to Your Things\n========================================================================\nRelease v1.2.3\n\nIn greater and greater numbers, \"things\" are capable of gathering data\nabout their environment. These things have an interface to retrieve the\nmeasurements being taken but contain no way of pushing this data to the\nInternet. For example, home weather stations often contain only a USB\ninterface and no network capability. Other devices may have network\ncapability, such as ZigBee\u00ae, but still don't have a direct way to send\ndata to Internet connected hosts.\n\nInternet of Things Relay is an application and framework for gathering\ndata from sources and relaying it to destinations. It is somewhat like\npublish/subscribe except that it's geared more toward devices that are\nunable to initiate a connection (they must be polled to get at their\ndata).\n\nIoT Relay provides basic setup and matches data sources with interested\nhandlers. The rest of the work is left to plugins.\n\nInstallation\n------------------------------------------------------------------------\nIoT Relay is available via PyPI.\n\n.. code-block:: bash\n\n $ pip install iotrelay\n\nIt is also necessary to create an (initially empty) ini-style\nfile: ``~/.iotrelay.cfg``.\n\n.. code-block:: ini\n\n [itorelay]\n\nPlugins\n-----------------------------------------------------------------------\nBefore IoT Relay can do anything useful, it needs plugins. There are\nplugin types: source and handler. Source plugins generate data. Handler\nplugins handle or do something with data that source plugins produce.\nThese definitions are intended to be open-ended. Although IoT Relay was\ndeveloped with the intention of relaying time-series type data between\nremote sources and remote destinations, a handler could instead view\neach datum as an event and trigger some action. Likewise, data source\nplugins do not have to simply pass the data they are collecting. They\nmay process the data in some way before making it available to\ninterested handlers.\n\nData Source Sample Plugin\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nA data source definition is a class which provides a ``get_reading()``\nmethod and a constructor which accepts a ``config`` parameter. The\n``get_reading()`` method must return one or more instances of the\n``Reading()`` class or None. In this example, create a file called\n``iotrelay_sample_source.py`` and enter the following code.\n\n.. code-block:: python\n\n # iotrelay_sample_source.py\n\n import random\n from iotrelay import Reading\n\n\n class DataSource(object):\n def __init__(self, config):\n self.config = config\n\n def get_readings(self):\n return Reading('sample', random.randint(1, 100))\n\nIoT Relay uses setuptools to find plugins registered in the\n``iotrelay`` group. Datasources should use the entry-point name\n``source``. In the same directory as ``iotrelay_sample_source.py``,\nthe following code should be placed in ``setup.py``.\n\n.. code-block:: python\n\n # setup.py\n\n from setuptools import setup\n\n\n setup(name='iotrelay-sample-source',\n install_requires=['iotrelay'],\n py_modules=['iotrelay_sample_source'],\n entry_points={\n 'iotrelay': ['source=iotrelay_sample_source:DataSource']\n }\n )\n\nInstall the source plugin by typing:\n\n.. code-block:: bash\n\n $ python setup.py install\n\nData Handler Sample Plugin\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nLike the previous example, create a new directory with two files:\n\n.. code-block:: python\n\n # iotrelay_sample_handler.py\n\n class Handler(object):\n def __init__(self, config):\n self.config = config\n\n def set_reading(self, reading):\n print(reading)\n\n\n # setup.py\n\n from setuptools import setup\n\n\n setup(name='iotrelay-sample-handler',\n install_requires=['iotrelay'],\n py_modules=['iotrelay_sample_handler'],\n entry_points={\n 'iotrelay': ['handler=iotrelay_sample_handler:Handler']\n }\n )\n\nInstall the handler plugin by typing:\n\n.. code-block:: bash\n\n $ python setup.py install\n\nPlugin Configuration\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nThe minimal source plugin used in this example does not require any\nconfiguration. The 'reading types' option in a handler's configuration\nspecifies which reading types a handler will receive. In order to\nreceive readings from the 'iotrelay-sample-source' plugin, the\n'reading type' option in the iotrelay-sample-handler would be 'sample'.\nThis corresponds to the reading_type attribute set by the Reading\nconstructor when get_readings() was called.\n\nThe section names correspond directly to the plugin names, as defined\nin ``setup.py``.\n\n.. code-block:: ini\n\n ; ~/.iotrelay.cfg\n\n [iotrelay]\n\n [iotrelay-sample-source]\n [iotrelay-sample-handler]\n reading types = sample\n\nAny options specified in each plugins section will be passed to that\nplugin's constructor during initialization.\n\nRunning IoT Relay\n------------------------------------------------------------------------\nStart IoT Relay with the following command:\n\n.. code-block:: bash\n\n $ iotrelay\n\nLicense\n-------------------------------------------------------------------------\n\nIoT Relay is licensed under The BSD 2-Clause License.\n\n\nLicense\n===============================================================================\nCopyright \u00a9 2017, Emmanuel Levijarvi\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://iot-relay.readthedocs.org", "keywords": "IoT relay time series", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "iotrelay", "package_url": "https://pypi.org/project/iotrelay/", "platform": "", "project_url": "https://pypi.org/project/iotrelay/", "project_urls": { "Homepage": "http://iot-relay.readthedocs.org" }, "release_url": "https://pypi.org/project/iotrelay/1.2.3/", "requires_dist": null, "requires_python": "", "summary": "IoT Relay - Relay data between data sources and destinations.", "version": "1.2.3" }, "last_serial": 2578277, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "82054dc43e67f7c8535aa7e1e98083de", "sha256": "7522eda777b560035b05c63da99e7b215e9e22ab824f5780754135b7fa5cc550" }, "downloads": -1, "filename": "iotrelay-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "82054dc43e67f7c8535aa7e1e98083de", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 7179, "upload_time": "2014-05-16T22:18:35", "url": "https://files.pythonhosted.org/packages/6c/df/961f3e8916c5d4b8f214ff147e453a1cfa61f8c6975616e6a4986f294837/iotrelay-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "814f418d8835d64f50377b07c8eab502", "sha256": "6daa59b7da8dfad6058f187e4a0239d53f85edf83c25f3837ba67204ffd5b999" }, "downloads": -1, "filename": "iotrelay-1.0.0.tar.gz", "has_sig": false, "md5_digest": "814f418d8835d64f50377b07c8eab502", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4501, "upload_time": "2014-05-16T22:18:22", "url": "https://files.pythonhosted.org/packages/7b/c2/8b274bdd559f08611906e7e48edaeebeab4d1507c0976258402bfc939a5b/iotrelay-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "bbbee39c366554a1c9c5449d74e734ed", "sha256": "dd6099973551ef41ef8e0e20e9615c76e719a295f1ee488500f4be914dd44987" }, "downloads": -1, "filename": "iotrelay-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bbbee39c366554a1c9c5449d74e734ed", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 7182, "upload_time": "2014-05-16T23:16:47", "url": "https://files.pythonhosted.org/packages/f1/c9/c26181f8b555c3a734903f92fe45657311322437f4835741dd68b1f94809/iotrelay-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b4b291172fc4a8f1608ecccb6daef9dc", "sha256": "d34e013e8a02f4951f40dc61bacba8fa484c4b016779ed7fb31c060e81eee7a1" }, "downloads": -1, "filename": "iotrelay-1.0.1.tar.gz", "has_sig": false, "md5_digest": "b4b291172fc4a8f1608ecccb6daef9dc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4704, "upload_time": "2014-05-16T23:16:41", "url": "https://files.pythonhosted.org/packages/ef/96/d0a4b17db94dfd18d65889e64ccf58f41f674e71e54a27e84580abd5b013/iotrelay-1.0.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "f34c22943943a3a17e39fe41f79564ce", "sha256": "ef4e0a4b8285a716a3a8424fdf9691fa552f3601b1bb2f23b80872855982759a" }, "downloads": -1, "filename": "iotrelay-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f34c22943943a3a17e39fe41f79564ce", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 9706, "upload_time": "2016-07-07T07:00:29", "url": "https://files.pythonhosted.org/packages/f2/dc/80fb2a9d203f4ed85f0fb37699a9a45006cdea8c2be64f5829367679f967/iotrelay-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e4215aa8960b23bec736cb4a1d660edb", "sha256": "17350338c0d5e9fbdf850319f90442b2a471ae59595221d19385125e2183f4b6" }, "downloads": -1, "filename": "iotrelay-1.1.0.tar.gz", "has_sig": false, "md5_digest": "e4215aa8960b23bec736cb4a1d660edb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6494, "upload_time": "2016-07-07T07:00:16", "url": "https://files.pythonhosted.org/packages/d4/19/0f72c5455dbefba123eb2568710119fe7cbfa1cb790100079c7c03f96085/iotrelay-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "c29bbf8c80c63dd35fc94e698a9f47d3", "sha256": "8cc03f78053dffda43d70ce3ff592ed87b66262729679ce6bbf9cd5cbccd6db6" }, "downloads": -1, "filename": "iotrelay-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c29bbf8c80c63dd35fc94e698a9f47d3", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 9732, "upload_time": "2016-07-10T19:41:29", "url": "https://files.pythonhosted.org/packages/a8/58/79a29b958276159fc2e93de3995dd1ad4355ee7f0428de988336f912a8f0/iotrelay-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a9aecdf60e19927fd358f405bfd0a741", "sha256": "b88bfd1be86ce255106efafd12b62a14079388a736911e06ebc1383f3a60ecec" }, "downloads": -1, "filename": "iotrelay-1.2.0.tar.gz", "has_sig": false, "md5_digest": "a9aecdf60e19927fd358f405bfd0a741", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6528, "upload_time": "2016-07-10T19:40:53", "url": "https://files.pythonhosted.org/packages/09/e4/43ffec3820de5ea09d271c87d4a45527aa2ddd14800b3f743ce0ac8551b9/iotrelay-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "7c3dc95e47c4eae2b21e652fa632babd", "sha256": "7928ecb7e236a748e32ec3b5a257fd4607b1f85162e01902269d255e9012336c" }, "downloads": -1, "filename": "iotrelay-1.2.1-py3.5.egg", "has_sig": false, "md5_digest": "7c3dc95e47c4eae2b21e652fa632babd", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 9996, "upload_time": "2016-07-11T06:52:03", "url": "https://files.pythonhosted.org/packages/5a/9e/99430ec0036121b134929584438ba1aeebc27fe91a79ab386f79291f65c6/iotrelay-1.2.1-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "c3cc7a3e480ae8e42f167591c4aa90a4", "sha256": "c8a26087a227a6e0a744b5547ac849799f3436362a6443370ae35320f8485394" }, "downloads": -1, "filename": "iotrelay-1.2.1.tar.gz", "has_sig": false, "md5_digest": "c3cc7a3e480ae8e42f167591c4aa90a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6588, "upload_time": "2016-07-11T06:51:53", "url": "https://files.pythonhosted.org/packages/b7/16/051e62e84c6790115afb7d06d9899648007caf7c1d5fd04c4020f9e61b6a/iotrelay-1.2.1.tar.gz" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "4f150e16cfc082e8cb5a98bd55bf836a", "sha256": "075f8886b08059fa07d8f1b89b106fc10d61d4f0f1964e60008e575bc83d3f26" }, "downloads": -1, "filename": "iotrelay-1.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4f150e16cfc082e8cb5a98bd55bf836a", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 9820, "upload_time": "2017-01-16T22:07:34", "url": "https://files.pythonhosted.org/packages/d7/a9/dad34ed9acd3292d3e931a43638661b7f47fd116b1590866ecbd25298c6a/iotrelay-1.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "22fdafbfcb52bac76b257c1e6dddd48c", "sha256": "cf9b2e7b739fbe4f3e580377f9e24f628f3b0d85e55450dcca516604dbc95d6d" }, "downloads": -1, "filename": "iotrelay-1.2.2-py3.5.egg", "has_sig": false, "md5_digest": "22fdafbfcb52bac76b257c1e6dddd48c", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 9998, "upload_time": "2017-01-16T22:08:14", "url": "https://files.pythonhosted.org/packages/60/d4/e7c1843533759e034b76d0f729eaaafadc1e70c9ddb116b634e9a6598340/iotrelay-1.2.2-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "c6363a318c2ca37b29cb598dd84c916a", "sha256": "1afb3350f59cf5ab7faf29641e5fc60ea7d3c52a0f727080d388d1aed099970d" }, "downloads": -1, "filename": "iotrelay-1.2.2.tar.gz", "has_sig": false, "md5_digest": "c6363a318c2ca37b29cb598dd84c916a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6605, "upload_time": "2017-01-16T22:07:14", "url": "https://files.pythonhosted.org/packages/c6/42/512dec0385fd2d5276b136ee8e683a894a9ecfed2cacd3f310492218e0c0/iotrelay-1.2.2.tar.gz" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "f0fc6fcaa0f16fd7fb2fe30454be50c8", "sha256": "6cb0a9dc45892afd8c4915021f606d4b4184e0cb39e399059650a69ac975ad41" }, "downloads": -1, "filename": "iotrelay-1.2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f0fc6fcaa0f16fd7fb2fe30454be50c8", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 9821, "upload_time": "2017-01-16T22:17:11", "url": "https://files.pythonhosted.org/packages/b7/04/8f247099a354a047326e0145c724ab9d9ee3c9314fb74df01d6a7b1a41c4/iotrelay-1.2.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "10f7595d736095a89162ef1c86595ac0", "sha256": "873f0981cdaf3970a84b098d128b9e949c1e9e1894437971f006c42d1a0a1bce" }, "downloads": -1, "filename": "iotrelay-1.2.3-py3.5.egg", "has_sig": false, "md5_digest": "10f7595d736095a89162ef1c86595ac0", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 10000, "upload_time": "2017-01-16T22:18:07", "url": "https://files.pythonhosted.org/packages/f3/6e/03cf137c5bebb73938b2c45d897c27e6781c2829dce1ee4644fbe1250429/iotrelay-1.2.3-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "059c0c2d5ff5e39a17dd739bf8cbd238", "sha256": "91050c87797497d337892f46b9af2005e90c892c0c59ac0d03d642d17a4915a0" }, "downloads": -1, "filename": "iotrelay-1.2.3.tar.gz", "has_sig": false, "md5_digest": "059c0c2d5ff5e39a17dd739bf8cbd238", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6598, "upload_time": "2017-01-16T22:18:16", "url": "https://files.pythonhosted.org/packages/e1/36/efe656921eb1b509c0549e209e15ecff81ab601bfa652fc69e3acb459450/iotrelay-1.2.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f0fc6fcaa0f16fd7fb2fe30454be50c8", "sha256": "6cb0a9dc45892afd8c4915021f606d4b4184e0cb39e399059650a69ac975ad41" }, "downloads": -1, "filename": "iotrelay-1.2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f0fc6fcaa0f16fd7fb2fe30454be50c8", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 9821, "upload_time": "2017-01-16T22:17:11", "url": "https://files.pythonhosted.org/packages/b7/04/8f247099a354a047326e0145c724ab9d9ee3c9314fb74df01d6a7b1a41c4/iotrelay-1.2.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "10f7595d736095a89162ef1c86595ac0", "sha256": "873f0981cdaf3970a84b098d128b9e949c1e9e1894437971f006c42d1a0a1bce" }, "downloads": -1, "filename": "iotrelay-1.2.3-py3.5.egg", "has_sig": false, "md5_digest": "10f7595d736095a89162ef1c86595ac0", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 10000, "upload_time": "2017-01-16T22:18:07", "url": "https://files.pythonhosted.org/packages/f3/6e/03cf137c5bebb73938b2c45d897c27e6781c2829dce1ee4644fbe1250429/iotrelay-1.2.3-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "059c0c2d5ff5e39a17dd739bf8cbd238", "sha256": "91050c87797497d337892f46b9af2005e90c892c0c59ac0d03d642d17a4915a0" }, "downloads": -1, "filename": "iotrelay-1.2.3.tar.gz", "has_sig": false, "md5_digest": "059c0c2d5ff5e39a17dd739bf8cbd238", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6598, "upload_time": "2017-01-16T22:18:16", "url": "https://files.pythonhosted.org/packages/e1/36/efe656921eb1b509c0549e209e15ecff81ab601bfa652fc69e3acb459450/iotrelay-1.2.3.tar.gz" } ] }