{ "info": { "author": "timercrack", "author_email": "timercrack@gmail.com", "bugtrack_url": null, "classifiers": [ "Environment :: Console", "Intended Audience :: Information Technology", "License :: OSI Approved :: Apache Software License", "Natural Language :: Chinese (Simplified)", "Natural Language :: English", "Operating System :: MacOS", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Interface Engine/Protocol Translator" ], "description": "PyDataColl\n==========\n\n.. image:: https://travis-ci.org/timercrack/pydatacoll.svg\n :target: https://travis-ci.org/timercrack/pydatacoll?branch=master\n\n.. image:: https://coveralls.io/repos/timercrack/pydatacoll/badge.svg?branch=master&service=github\n :target: https://coveralls.io/github/timercrack/pydatacoll?branch=master\n\n.. image:: https://readthedocs.org/projects/pydatacoll/badge/?version=latest\n :target: http://pydatacoll.readthedocs.org/en/latest/?badge=latest\n :alt: Documentation Status\n\n.. image:: https://badges.gitter.im/timercrack/pydatacoll.svg\n :alt: Join the chat at https://gitter.im/timercrack/pydatacoll\n :target: https://gitter.im/timercrack/pydatacoll?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge\n\nPyDataColl is a `SCADA `_-like system which use Python as the main language. It\noriginally inspired by an old program I made as for a core part of a large\n`EMS `_.\n\nPyDataColl can be roughly divided into three parts:\n\n* An APIServer provides `RESTful Services `_\n for client to pull/push data from/to devices and perform generic CRUD on devices, terms and items.\n\n* A DeviceManager that manages all devices and terms connected to the system, listens messages send by APIServer\n that perform CRUD on devices and terms. It may be combined with some plugins to perform generic operation such as\n data checking, database saving and formula calculation.\n\n* Many devices and terms under control of DeviceManager operate with coded data over communication channels(TCP/IP)\n so as to provide control of remote equipment(meter or sensor). Each type of Device can communicate with one type of\n meter with specify protocol, such as `Modbus TCP `_,\n `IEC 60870-5-104 `_.\n\nInstallation\n------------\n\n**Prerequisites**: PyDataColl runs on Python 3.5+. In addition to the requirements showed in requirements.txt,\nthe following optional packages may be useful:\n\n* `Redis `_ is heavily used by PyDataColl as NoSQL databases and\n `IPC `_. If you\n deploy PyDataColl in local, make sure you have installed and started the Redis server.\n* `MySQL `_ is used by DbSaver plugin to store device data in real-time. If you\n deploy PyDataColl in local, make sure you have installed and started the MySQL server.\n* `ujson `_ is an ultra fast JSON encoder and decoder written in pure C with\n bindings for Python. This is an alternative json library and PyDataColl will use it automatically if possible.\n* `hiredis `_ is a C library which can provide up to a 10x speed improvement in\n parsing responses from the Redis server. This is an alternative redis client and\n PyDataColl will use it automatically if possible.\n\n1. Download the latest source code `hosted on github `_, open a shell\n (*CMD* in Windows, *Terminal* in Linux and Mac OS X) and go to the source code directory, install required\n package using pip::\n\n pip install -r requirements.txt\n\n2. Then run the following to start PyDataColl server::\n\n python -m pydatacoll.api_server\n\n.. note::\n to stop server, press CTRL+C to exit\n\n3. Congratulations! The server is running now. Visit http://localhost:8080 in browser to see the server information, if\n success, you will find something like this::\n\n PyDataColl is running, available API:\n method: GET URL: http://localhost:8080/\n method: GET URL: http://localhost:8080/api/v1/device_protocols\n method: GET URL: http://localhost:8080/api/v1/devices\n (...more omitted)\n\n4. Now you can send request to server with your favorite http client! check :doc:`restapi` to see the API list.\n\n**Platforms**: PyDataColl should run on any Unix-like platform, although for the best performance and scalability only\nLinux (with ``epoll``) and BSD (with ``kqueue``) are recommended for production deployment (even though Mac OS X is\nderived from BSD and supports kqueue, its networking performance is generally poor so it is recommended only for\ndevelopment use). PyDataColl will also run on Windows, although this configuration is not officially supported and is\nrecommended only for development use.\n\nQuick links\n-----------\n\n* `Source (github) `_\n* `Docs `_\n\nLicense\n-------\n\n``PyDataColl`` is offered under the Apache 2 license.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://pydatacoll.readthedocs.org/", "keywords": "IEC60870 SCADA EMS", "license": "http://www.apache.org/licenses/LICENSE-2.0", "maintainer": null, "maintainer_email": null, "name": "PyDataColl", "package_url": "https://pypi.org/project/PyDataColl/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/PyDataColl/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://pydatacoll.readthedocs.org/" }, "release_url": "https://pypi.org/project/PyDataColl/0.1/", "requires_dist": null, "requires_python": null, "summary": "PyDataColl is a SCADA-like system, originally developed at GDT.", "version": "0.1" }, "last_serial": 1921456, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "71266f7d37ee0d4701fb5f9bcac775aa", "sha256": "1a17af2835ce4e27c1da779a8f6b1eb3ccc33fbab77f9e55473cacac7d3e1f43" }, "downloads": -1, "filename": "PyDataColl-0.1.zip", "has_sig": false, "md5_digest": "71266f7d37ee0d4701fb5f9bcac775aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 82101, "upload_time": "2016-01-25T09:54:08", "url": "https://files.pythonhosted.org/packages/de/56/9c8d7bc956b2f661a36763377a57be6106ec3d05655eb80f3ae65548bbc3/PyDataColl-0.1.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "71266f7d37ee0d4701fb5f9bcac775aa", "sha256": "1a17af2835ce4e27c1da779a8f6b1eb3ccc33fbab77f9e55473cacac7d3e1f43" }, "downloads": -1, "filename": "PyDataColl-0.1.zip", "has_sig": false, "md5_digest": "71266f7d37ee0d4701fb5f9bcac775aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 82101, "upload_time": "2016-01-25T09:54:08", "url": "https://files.pythonhosted.org/packages/de/56/9c8d7bc956b2f661a36763377a57be6106ec3d05655eb80f3ae65548bbc3/PyDataColl-0.1.zip" } ] }