{ "info": { "author": "Anton Sarukhanov", "author_email": "code@ant.sr", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 3.5", "Topic :: Home Automation" ], "description": "# TurnTouch Python library\n\nThis library provides support for the [Turn Touch](https://shop.turntouch.com/)\nbluetooth smart home remote.\n\nIt is written in Python 3, originally for use with [Home Assistant](https://www.home-assistant.io/).\n\n# Usage\n\nInstall this library from PyPI:\n\n```\npip install TurnTouch\n```\n\n## Scanning for Turn Touch devices\n\n**Note:** Scanning requires root privileges on Linux. To avoid this, skip\nto the next section and connect to the device without scanning.\n\n```python\nimport turntouch\n\n# Example 1: Find all devices\ndevices = turntouch.scan()\n\n# Example 2: Find just one device\ndevice = turntouch.scan(only_one=True)[0]\n\n# Example 3: Extend scan timeout to 60 seconds (default is 10)\ndevices = turntouch.scan(timeout=60)\n```\n\n`turntouch.scan()` returns a list of `turntouch.TurnTouch` objects. A connection\nis automatically opened to each device, so it is ready to use.\n\n`turntouch.TurnTouch` is a subclass of\n[`bluepy.btle.Peripheral`](http://ianharvey.github.io/bluepy-doc/peripheral.html).\n\n## Interacting with a Turn Touch device\n\n```python\nimport turntouch\n\n# Connect to a device by MAC address\ntt = turntouch.TurnTouch('c0:ff:ee:c0:ff:ee')\n\n# Read the device nickname and battery percentage\nprint(\"Name: {}\\nBattery: {}\".format(tt.name, tt.battery))\n\n# Update the device nickname (max. 32 characters)\ntt.name = 'Living Room Remote'\n```\n\n## Listening for button presses\n\n```python\nfrom turntouch import TurnTouch, DefaultActionHandler\n\nclass MyHandler(DefaultActionHandler):\n def action_north(self):\n print(\"Up button pressed.\")\n def action_east_double_tap(self):\n print(\"Right button double-tapped.\")\n def action_south_hold(self):\n print(\"Down button held.\")\n\ntt = TurnTouch('c0:ff:ee:c0:ff:ee')\ntt.handler = MyHandler()\ntt.listen_forever()\n\n# One-liner alternative (same as listen_forever)\nTurnTouch('c0:ff:ee:c0:ff:ee', handler=MyHandler(), listen=True)\n```\n\nSee the **Actions** section for a full list of actions.\n\n## More advanced usage\n\nHere's a more complex example, triggering some existing functions.\n\n```python\nimport turntouch\n\n# Define a handler\nclass MyFancyHandler(turntouch.DefaultActionHandler):\n\n def __init__(some_object, other_function):\n \"\"\"Use the __init__ method to pass references to parts of your code,\n such as objects, methods, or variables.\"\"\"\n self.thing_1 = some_object\n self.other_func = other_function\n\n def action_any(action):\n \"\"\"Special handler which is fired for ALL actions.\n `action` is an instance of turntouch.Action.\"\"\"\n if action.name == \"North\":\n self.thing_1.some_method()\n elif action.name in [\"South\", \"East\", \"West\"]:\n self.thing_1.other_method()\n else:\n self.other_func()\n\n def action_south_hold():\n print(\"You can combine per-button handlers with action_any!\")\n\n\n# Instantiate the handler, passing some application data into it\nmy_handler = MyFancyHandler(some_object_from_my_application, a_function)\n\n# Scan until we find a device\ndevices = []\nwhile not devices:\n devices = turntouch.scan(only_one=True)\ntt = devices[0]\n\n# Assign the handler to your device.\ntt.handler = my_handler\n\ntt.listen_forever()\n```\n\n## Listening for just one button press\n\nIf you don't want the listener to run forever, do this:\n\n```python\ntt = TurnTouch('c0:ff:ee:c0:ff:ee', handler=SomeHandler)\ntt.listen() # Will return as soon as one action occurs.\n```\n\n## Error handling\n\nConnection failures will raise `turntouch.TurnTouchException`. You may want to\ncatch and ignore this exception to retry connecting.\n\n## Actions\n\n- `action_any`\n- `action_off`\n- `action_north`\n- `action_north_double_tap`\n- `action_north_hold`\n- `action_east`\n- `action_east_double_tap`\n- `action_east_hold`\n- `action_west`\n- `action_west_double_tap`\n- `action_west_hold`\n- `action_south`\n- `action_south_double_tap`\n- `action_south_hold`\n- `action_multi_north_east`\n- `action_multi_north_west`\n- `action_multi_north_south`\n- `action_multi_east_west`\n- `action_multi_east_south`\n- `action_multi_west_south`\n- `action_multi_north_east_west`\n- `action_multi_north_east_south`\n- `action_multi_north_west_south`\n- `action_multi_east_west_south`\n- `action_multi_north_east_west_south`\n\n\n", "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/antsar/python-turntouch", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "TurnTouch", "package_url": "https://pypi.org/project/TurnTouch/", "platform": "", "project_url": "https://pypi.org/project/TurnTouch/", "project_urls": { "Homepage": "https://github.com/antsar/python-turntouch" }, "release_url": "https://pypi.org/project/TurnTouch/0.4.3/", "requires_dist": [ "bluepy (==1.1.4)" ], "requires_python": "", "summary": "Python library for the Turn Touch smart home remote", "version": "0.4.3" }, "last_serial": 4104803, "releases": { "0.3": [ { "comment_text": "", "digests": { "md5": "6baf341446991e48799a7fd88e55a17f", "sha256": "190063aa238d024d20961c3cbdac737f7cc62e73dfe9e9a2facf536b315372ba" }, "downloads": -1, "filename": "TurnTouch-0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "6baf341446991e48799a7fd88e55a17f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8134, "upload_time": "2018-06-12T03:47:58", "url": "https://files.pythonhosted.org/packages/7f/ee/81e1572adcbac61f198b97bd11cb9b986a803bb16ae1c542f1af66e35774/TurnTouch-0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d943065c66a7863d89aa0672929fb483", "sha256": "16ddfb3f38c9f4b1abd5ffff9a011a499b7d5b38cbe6d250179aa07c6783b3b5" }, "downloads": -1, "filename": "TurnTouch-0.3.tar.gz", "has_sig": false, "md5_digest": "d943065c66a7863d89aa0672929fb483", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8466, "upload_time": "2018-06-12T03:47:59", "url": "https://files.pythonhosted.org/packages/cf/69/cc9604094dd8b3d5643627b9705902f80649ee70d3824c0ce6a924b38fbb/TurnTouch-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "0968f92e384f6d0950502c0cec97f31e", "sha256": "6a1b576c0bee62bca38894515745a08cb4c5c7611b7858b4c2ecb5db8937fc42" }, "downloads": -1, "filename": "TurnTouch-0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "0968f92e384f6d0950502c0cec97f31e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8309, "upload_time": "2018-06-14T03:45:26", "url": "https://files.pythonhosted.org/packages/96/52/2ecc5ea961f482cf2e7c764539ebe27c9fce71779a9bb6eeb7ba9d314a59/TurnTouch-0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b5f60adf659abd61a26639f819d3a394", "sha256": "3ef1174b135db22793dba9aee126cb111000567dcfdce4f71d57b5b3fdb02ba4" }, "downloads": -1, "filename": "TurnTouch-0.4.tar.gz", "has_sig": false, "md5_digest": "b5f60adf659abd61a26639f819d3a394", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8901, "upload_time": "2018-06-14T03:45:27", "url": "https://files.pythonhosted.org/packages/17/2e/f4c1939cb2f9e87362fe61ca2771e1ef6e2f18e751bc39c86ebe655e8966/TurnTouch-0.4.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "37dfc8e3ecc7a05da9aa89f26d465b49", "sha256": "9b534d1ac757c197012baaa71a726e319087273237510ab61ff60abcee7a37cf" }, "downloads": -1, "filename": "TurnTouch-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "37dfc8e3ecc7a05da9aa89f26d465b49", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8362, "upload_time": "2018-06-14T04:08:53", "url": "https://files.pythonhosted.org/packages/45/04/2f608c5f9d22fd635cd387bac7f082988824397c26284fef913b705dfb3c/TurnTouch-0.4.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e3d2ee2b83435541e9c3f7c52a93b01c", "sha256": "b272c4e2e696e3d34996203ad560527a30bfd3b97e5580182510fb79c2c5a483" }, "downloads": -1, "filename": "TurnTouch-0.4.1.tar.gz", "has_sig": false, "md5_digest": "e3d2ee2b83435541e9c3f7c52a93b01c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8928, "upload_time": "2018-06-14T04:08:54", "url": "https://files.pythonhosted.org/packages/12/71/52fdd1ea99ac274a53c247959b512709e867d4c7063eda063ea5fe0eb90b/TurnTouch-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "a75e00a5f4f64135ee97790b2d48a7af", "sha256": "1eb8d20b90a2c87ec4cd7d7dfa183d58ff876a223b80e8b7ef91209469f6b9e3" }, "downloads": -1, "filename": "TurnTouch-0.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "a75e00a5f4f64135ee97790b2d48a7af", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8802, "upload_time": "2018-06-15T20:18:26", "url": "https://files.pythonhosted.org/packages/38/0f/e6b7fa7cbb7b9d9e528b785da66348c0a971ef9b2e9847096cda08f6f398/TurnTouch-0.4.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b7a3e2c76c54a580dd5d4d52eee72b8a", "sha256": "d74ac7d65d39f71f2d7d9617ac6259e347dd83afc5ca3f157d722108139bb064" }, "downloads": -1, "filename": "TurnTouch-0.4.2.tar.gz", "has_sig": false, "md5_digest": "b7a3e2c76c54a580dd5d4d52eee72b8a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9358, "upload_time": "2018-06-15T20:18:26", "url": "https://files.pythonhosted.org/packages/58/56/9d221f221ca543ac6533599a16bb15fe5be14ebae58cf7bb9fa9f700b25e/TurnTouch-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "cbe0e56774757e2532d60bbcbc98fde3", "sha256": "c1e56b2b917bdfbe46dc37ca64c15d822f6b7859d99d2cbcb67896b6e627696e" }, "downloads": -1, "filename": "TurnTouch-0.4.3-py3-none-any.whl", "has_sig": false, "md5_digest": "cbe0e56774757e2532d60bbcbc98fde3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8842, "upload_time": "2018-07-26T14:47:54", "url": "https://files.pythonhosted.org/packages/26/63/1fe833bf1a41280c529c4519587a8c6893f60e096372c0c8cafb8f340798/TurnTouch-0.4.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "29240cd050a91070f7183f192975ba25", "sha256": "540ba6253cbe04b8bbac10663e1e9d80a043d823a8073de96637decffede59b1" }, "downloads": -1, "filename": "TurnTouch-0.4.3.tar.gz", "has_sig": false, "md5_digest": "29240cd050a91070f7183f192975ba25", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9408, "upload_time": "2018-07-26T14:47:56", "url": "https://files.pythonhosted.org/packages/11/8c/548fbe44abecd92f53ada6a00fba71488442a0996efee6219cdbc59d640a/TurnTouch-0.4.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "cbe0e56774757e2532d60bbcbc98fde3", "sha256": "c1e56b2b917bdfbe46dc37ca64c15d822f6b7859d99d2cbcb67896b6e627696e" }, "downloads": -1, "filename": "TurnTouch-0.4.3-py3-none-any.whl", "has_sig": false, "md5_digest": "cbe0e56774757e2532d60bbcbc98fde3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8842, "upload_time": "2018-07-26T14:47:54", "url": "https://files.pythonhosted.org/packages/26/63/1fe833bf1a41280c529c4519587a8c6893f60e096372c0c8cafb8f340798/TurnTouch-0.4.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "29240cd050a91070f7183f192975ba25", "sha256": "540ba6253cbe04b8bbac10663e1e9d80a043d823a8073de96637decffede59b1" }, "downloads": -1, "filename": "TurnTouch-0.4.3.tar.gz", "has_sig": false, "md5_digest": "29240cd050a91070f7183f192975ba25", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9408, "upload_time": "2018-07-26T14:47:56", "url": "https://files.pythonhosted.org/packages/11/8c/548fbe44abecd92f53ada6a00fba71488442a0996efee6219cdbc59d640a/TurnTouch-0.4.3.tar.gz" } ] }