{ "info": { "author": "Jens Nistler", "author_email": "opensource@jensnistler.de", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Topic :: Home Automation" ], "description": "[![PyPI version](https://badge.fury.io/py/pydigitalstrom.svg)](https://pypi.org/project/pydigitalstrom)\n[![Travis CI build status](https://travis-ci.org/lociii/pydigitalstrom.svg)](https://travis-ci.org/lociii/pydigitalstrom)\n[![Coverage Status](https://coveralls.io/repos/github/lociii/pydigitalstrom/badge.svg?branch=master)](https://coveralls.io/github/lociii/pydigitalstrom?branch=master)\n[![MIT Licence](https://badges.frapsoft.com/os/mit/mit.svg?v=103)](https://opensource.org/licenses/mit-license.php)\n\n# pydigitalstrom\n\nRun bundled docker\n```bash\n$ docker-compose build\n\n$ docker-compose up -d\n\n$ docker-compose exec python bash\n```\n\nRun the tests locally\n```bash\n$ docker-compose run --rm python tox\n```\n\n## Concept\n\nSince digitalSTROM is mainly build on the concept of scenes, this library also only support setting scenes.\n\nCurrently user defined named scenes and generic scenes are supported.\n\n## Example usage\n\n```python\nimport asyncio\n\nfrom pydigitalstrom.apptokenhandler import DSAppTokenHandler\nfrom pydigitalstrom.client import DSClient\n\n\nasync def test():\n # get activated app token\n apptokenhandler = DSAppTokenHandler(\n host=\"https://dss.local:8080\",\n username=\"dssadmin\",\n password=\"mySuperSecretPassword\",\n )\n apptoken = await apptokenhandler.request_apptoken()\n\n # connect the client and initialize the scenes cache\n client = DSClient(\n host=\"https://dss.local:8080\", apptoken=apptoken, apartment_name=\"Apartment\"\n )\n await client.initialize()\n\n # list and turn on all scenes\n scenes = client.get_scenes()\n for scene in scenes.values():\n print(scene.unique_id)\n print(scene.name)\n # await scene.turn_on()\n\n\nloop = asyncio.get_event_loop()\nloop.run_until_complete(test())\n```\n\n## Event listener\n\nRun an event listener to get scene call updates from digitalSTROM\n\n```python\nimport asyncio\n\nfrom pydigitalstrom.apptokenhandler import DSAppTokenHandler\nfrom pydigitalstrom.client import DSClient\nfrom pydigitalstrom.listener import DSEventListener\n\n\nasync def callback(event):\n print(\"callback called\")\n print(event)\n\n\n# disable certificate warnings - dss uses self signed\nasync def test(loop):\n # get activated app token\n apptokenhandler = DSAppTokenHandler(\n host=\"https://dss.local:8080\",\n username=\"dssadmin\",\n password=\"mySuperSecretPassword\",\n )\n apptoken = await apptokenhandler.request_apptoken()\n\n # connect listener and print all events coming in\n client = DSClient(\n host=\"https://dss.local:8080\", apptoken=apptoken, apartment_name=\"Apartment\"\n )\n listener = DSEventListener(\n client=client, event_id=1, event_name=\"callScene\", timeout=1, loop=loop\n )\n await listener.start()\n listener.register(callback=callback)\n while True:\n await asyncio.sleep(1)\n\n\nloop = asyncio.get_event_loop()\nloop.run_until_complete(test(loop=loop))\n```\n\n\n# Changelog\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)\nand this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).\n\n## [0.6.1] - 2019-09-01\n### Changed\n- change the way ssl certificate validation is disabled\n\n## [0.6.0] - 2019-09-01\n### Changed\n- BREAKING - app token will not be stored in a file anymore\n- BREAKING - DSClient splitted into multiple classes, app token retrieval standalone\n- updated python versions and dependencies\n- format source code using black\n\n## [0.5.0] - 2019-02-09\n### Changed\n- BREAKING - changed device unique_id to be underscore separated instead of dot separated\n- updated python versions and dependencies\n\n## [0.4.1] - 2018-10-01\n### Changed\n- Registering callbacks on the DSEventListener should not be async\n\n## [0.4.0] - 2018-10-01\n### Changed\n- BREAKING - this library will only support scenes from now on since device actions suck on digitalSTROM!\n- BREAKING - the DSEventListener will now forward event data to the callback instead of updating states on it's own\n\n## [0.3.4] - 2018-09-30\n### Added\n- Update AreaBlind state from DSListener\n\n## [0.3.3] - 2018-09-29\n### Added\n- Support for AreaBlind, basically converted scenes 0-9 to proper blind devices for the area\n\n## [0.3.2] - 2018-09-16\n### Changed\n- Allow passing an asyncio loop to the DSListener\n\n## [0.3.1] - 2018-09-16\n### Added\n- Support update callbacks on AreaLight\n\n## [0.3.0] - 2018-09-16\n### Added\n- Support for AreaLight, basically converted scenes 0-9 to proper light devices for the area\n- Event listener that can update the AreaLight status\n### Changed\n- BREAKING - devices etc are now initialized by DSClient.initialize() and DSClient getter functions are not async anymore\n\n## [0.2.0] - 2018-09-11\n### Added\n- Test coverage increased\n### Changed\n- BREAKING - All things async\n- Use aiohttp to make calls and provide api-using functions as async\n- Comply with PEP8 formatting rules\n- BREAKING merged DSTerminal and DSDevice into DSDevice\n- BREAKING minimum required Python version is now 3.5.3\n- Multi version Docker environment to run full tox suite\n\n## [0.1.2] - 2018-09-10\n### Fixed\n- Some API calls should not expect a result node in response\n### Changed\n- Added more gitignores for docker env and app config\n\n## [0.1.1] - 2018-09-10\n### Added\n- Tests for blind, light, meter and scene\n- Add move_up, move_down and stop to blind\n### Changed\n- DSDevice and DSTerminal signature of request now allows for responses without result node\n\n## [0.1.0] - 2018-09-09\n### Changed\n- Complete rewrite\n\n### Added\n- (yellow) Support for GE-KL200, GE-KM200\n- (grey) Support for GR-KL200\n- (black) Support for SW-ZW200-F, SW-TKM200\n- (meter) Support for dSM12\n- (server) Support for dSS IP\n- Support for scenes\n\n## [0.0.1] - 2016-11-23\n### Added\n- Initial release", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/lociii/pydigitalstrom", "keywords": "digitalstrom,dss,ds", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pydigitalstrom", "package_url": "https://pypi.org/project/pydigitalstrom/", "platform": "", "project_url": "https://pypi.org/project/pydigitalstrom/", "project_urls": { "Homepage": "https://github.com/lociii/pydigitalstrom" }, "release_url": "https://pypi.org/project/pydigitalstrom/0.6.1/", "requires_dist": null, "requires_python": ">=3.6.0", "summary": "python api client for digitalSTROM", "version": "0.6.1" }, "last_serial": 5768049, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "6183a5690783569cbcc306759008175c", "sha256": "61274f9a13dc46114b853f683e21f85d51dfce04effb794fb4d9454aa39358a1" }, "downloads": -1, "filename": "pydigitalstrom-0.1.0.tar.gz", "has_sig": false, "md5_digest": "6183a5690783569cbcc306759008175c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 8693, "upload_time": "2018-09-09T16:20:30", "url": "https://files.pythonhosted.org/packages/de/c6/ddc57033dd94aa0a55a673eb6b5e71602c259fb44df2cf54d9be3060bb09/pydigitalstrom-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "3abc0f7ab25e599963f544426a6c73f8", "sha256": "7d0cfb18d5e97c196ee79d79572ba406650db935c5cccc987a927cc404450ee4" }, "downloads": -1, "filename": "pydigitalstrom-0.1.1.tar.gz", "has_sig": false, "md5_digest": "3abc0f7ab25e599963f544426a6c73f8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 11340, "upload_time": "2018-09-10T20:56:06", "url": "https://files.pythonhosted.org/packages/44/cd/79d2256ef103c3e209149db96f93033b602c61679352d58f487f3580d54b/pydigitalstrom-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "4357923903670a1a32a397fd4de55027", "sha256": "65485615343bdda056ec4e716269068ceef24627aa5fc453ab99d818a2811765" }, "downloads": -1, "filename": "pydigitalstrom-0.1.2.tar.gz", "has_sig": false, "md5_digest": "4357923903670a1a32a397fd4de55027", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 11483, "upload_time": "2018-09-10T21:34:04", "url": "https://files.pythonhosted.org/packages/19/c0/be26795d9cb05c3fda9cf4b3b3876910ae46d9b177e9967b8ed0e9855857/pydigitalstrom-0.1.2.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "cbca550d68b1952385cc9acc36aee67b", "sha256": "63de4b7dea681800f31d210d6bb711fb59412602b2ee7a6f1a59f80e86750f2b" }, "downloads": -1, "filename": "pydigitalstrom-0.2.0.tar.gz", "has_sig": false, "md5_digest": "cbca550d68b1952385cc9acc36aee67b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.3", "size": 15011, "upload_time": "2018-09-11T20:43:31", "url": "https://files.pythonhosted.org/packages/44/e0/6ad798c013ba55085931380cc4b933479ee7aefd4f5d790c8a222dc319c4/pydigitalstrom-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "32649bcfe4299eadf0007cacae84932c", "sha256": "ab410ee752910967a087fdb270545d4e232971c445ae41996e3d5b8a15545e2b" }, "downloads": -1, "filename": "pydigitalstrom-0.3.0.tar.gz", "has_sig": false, "md5_digest": "32649bcfe4299eadf0007cacae84932c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.3", "size": 17682, "upload_time": "2018-09-16T17:07:59", "url": "https://files.pythonhosted.org/packages/4c/b1/8f636a352ba62d422c3b9eb4840aefa77d6f51ffaa71be190d21c00714b9/pydigitalstrom-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "5f180f2928ecee09f69d82016d0c741c", "sha256": "727f76defd87b0048ab7b1b239b86384bdf39de4cbbb21a63a6e5d42eedf80be" }, "downloads": -1, "filename": "pydigitalstrom-0.3.1.tar.gz", "has_sig": false, "md5_digest": "5f180f2928ecee09f69d82016d0c741c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.3", "size": 17782, "upload_time": "2018-09-16T17:58:53", "url": "https://files.pythonhosted.org/packages/b2/dc/9446210235ede2289c18ba85d54802a2a9da4168ee8d9360df4fd8e0be4c/pydigitalstrom-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "0e863d1465651a789ac6205454715e38", "sha256": "2e33fcd34bcb70df13e806cfdc335fcf2696257a356268d97196304354e8f1a8" }, "downloads": -1, "filename": "pydigitalstrom-0.3.2.tar.gz", "has_sig": false, "md5_digest": "0e863d1465651a789ac6205454715e38", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.3", "size": 17863, "upload_time": "2018-09-16T18:46:31", "url": "https://files.pythonhosted.org/packages/7e/83/3da0903238f81a4a5edba7a97a9cef140d2df9881f42d3b7bc6047a2e277/pydigitalstrom-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "1a05b1731c6da395f9994c199f028f16", "sha256": "4e251dd86b2f1e92708c2dcb5b012422f05de411876c6356a6b58e36492fc732" }, "downloads": -1, "filename": "pydigitalstrom-0.3.3.tar.gz", "has_sig": false, "md5_digest": "1a05b1731c6da395f9994c199f028f16", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.3", "size": 18226, "upload_time": "2018-09-29T19:25:46", "url": "https://files.pythonhosted.org/packages/57/e8/aed4186890b9e4d0c27c435e7deaec2cbbe8f5b1596e5f37e9f18d839919/pydigitalstrom-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "0594bfe23fed7ece653ca80c8097e5d8", "sha256": "ab543c5ccd9b9532109f1aaf5b453967ccb563f5fd7d99a2b712c76537b9a698" }, "downloads": -1, "filename": "pydigitalstrom-0.3.4.tar.gz", "has_sig": false, "md5_digest": "0594bfe23fed7ece653ca80c8097e5d8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.3", "size": 18302, "upload_time": "2018-09-30T10:20:15", "url": "https://files.pythonhosted.org/packages/fe/37/7ed3131632339c0200578e39e5dde2c51d8e82fcec7dfdc08fdb053df9f7/pydigitalstrom-0.3.4.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "d74649eb1062ef14fe3fadc4cf1a2d78", "sha256": "09c40bd0528d9dbf07ae642764d525e1779c700bcd1b143d2283bfb27f6e7929" }, "downloads": -1, "filename": "pydigitalstrom-0.4.0.tar.gz", "has_sig": false, "md5_digest": "d74649eb1062ef14fe3fadc4cf1a2d78", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.3", "size": 11560, "upload_time": "2018-10-01T15:21:43", "url": "https://files.pythonhosted.org/packages/4b/72/477531d187d44865b41935ccc968fdb888e6411d1f445e89ea27977792fa/pydigitalstrom-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "426db5abf33defe9a7aa61862a08c782", "sha256": "09ab3d7ab70aa5fef12e9680ca55f02f27e28067e475bab2d5550264b9559358" }, "downloads": -1, "filename": "pydigitalstrom-0.4.1.tar.gz", "has_sig": false, "md5_digest": "426db5abf33defe9a7aa61862a08c782", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.3", "size": 12104, "upload_time": "2018-10-01T16:27:53", "url": "https://files.pythonhosted.org/packages/62/c5/47781c080c09d1a95368793a3bd904a9d5a95cb06c8a90789c474476d1bb/pydigitalstrom-0.4.1.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "6ddd75cfd39c8650123ebe4a3a98d811", "sha256": "2d0c866c90940379e69f16c13d818b5a16b7b2ca9e871d05e01771426c04c843" }, "downloads": -1, "filename": "pydigitalstrom-0.5.0.tar.gz", "has_sig": false, "md5_digest": "6ddd75cfd39c8650123ebe4a3a98d811", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.3", "size": 12298, "upload_time": "2019-02-09T14:47:05", "url": "https://files.pythonhosted.org/packages/0a/5a/ac785c8b9e5811f422c4afff19c82781c38f89ab54b0768e5ba4137103c5/pydigitalstrom-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "116400e4c31b94f4e1b1cd044cd63afc", "sha256": "1ead80ff2ef567d08f0104103cee3ff4886a11504b59f4e6cd2fe1f1866a2ce9" }, "downloads": -1, "filename": "pydigitalstrom-0.6.0.tar.gz", "has_sig": false, "md5_digest": "116400e4c31b94f4e1b1cd044cd63afc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 10471, "upload_time": "2019-09-01T18:52:31", "url": "https://files.pythonhosted.org/packages/53/a3/6632659e243da884467f1e71c01d6f3da681e2d346516880d4a5a36c96cd/pydigitalstrom-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "01db14385286fef410f0fb34e89b3207", "sha256": "b1d5ddc73c007bd98e23c19503e02bccc62537a4d9d8aa6cf8c1cede8995945c" }, "downloads": -1, "filename": "pydigitalstrom-0.6.1.tar.gz", "has_sig": false, "md5_digest": "01db14385286fef410f0fb34e89b3207", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 10489, "upload_time": "2019-09-01T21:04:04", "url": "https://files.pythonhosted.org/packages/97/8d/d8311e47b07334ce2ef7a1528d3ebb6d75c5674df5381d5ee39d1dc7bb95/pydigitalstrom-0.6.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "01db14385286fef410f0fb34e89b3207", "sha256": "b1d5ddc73c007bd98e23c19503e02bccc62537a4d9d8aa6cf8c1cede8995945c" }, "downloads": -1, "filename": "pydigitalstrom-0.6.1.tar.gz", "has_sig": false, "md5_digest": "01db14385286fef410f0fb34e89b3207", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 10489, "upload_time": "2019-09-01T21:04:04", "url": "https://files.pythonhosted.org/packages/97/8d/d8311e47b07334ce2ef7a1528d3ebb6d75c5674df5381d5ee39d1dc7bb95/pydigitalstrom-0.6.1.tar.gz" } ] }