{ "info": { "author": "Joachim Lusiardi", "author_email": "pypi@lusiardi.de", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: Apache Software License", "Topic :: Home Automation" ], "description": "# HomeKit Python [![Build Status](https://travis-ci.org/jlusiardi/homekit_python.svg?branch=master)](https://travis-ci.org/jlusiardi/homekit_python) [![Coverage Status](https://coveralls.io/repos/github/jlusiardi/homekit_python/badge.svg?branch=master)](https://coveralls.io/github/jlusiardi/homekit_python?branch=master) [![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/homekit_python/community)\n\nWith this code it is possible to implement either a HomeKit Accessory or simulate a\nHomeKit Controller.\n\nThe code presented in this repository was created based on release R1 from 2017-06-07.\n\n# Contributors\n\n * [jc2k](https://github.com/Jc2k) [Commits](https://github.com/jlusiardi/homekit_python/commits/master?author=jc2k)\n * [quarcko](https://github.com/quarcko) [Commits](https://github.com/jlusiardi/homekit_python/commits/master?author=quarcko)\n * [mjg59](https://github.com/mjg59) [Commits](https://github.com/jlusiardi/homekit_python/commits/master?author=mjg59)\n * [mrstegeman](https://github.com/mrstegeman) [Commits](https://github.com/jlusiardi/homekit_python/commits/master?author=mrstegeman)\n * [netmanchris](https://github.com/netmanchris) [Commits](https://github.com/jlusiardi/homekit_python/commits/master?author=netmanchris)\n * [limkevinkuan](https://github.com/limkevinkuan) [Commits](https://github.com/jlusiardi/homekit_python/commits/master?author=limkevinkuan)\n\n(The contributors are not listed in any particular order!)\n\n# Installation\n\n## Installation for IP based accessories\n\nSimply use **pip3** to install the package:\n\n```bash\npip3 install --user homekit[IP]\n```\n\nThis installation only for IP based accessories can be done without any operating system level installations and should \nalso work on operating systems other than linux (Mac OS X, Windows, ...). \n\n## Installation for Bluetooth LE based accessories\n\nThis variant requires some packages on operating systems for the access onto Bluetooth LE via dbus. These can be \ninstalled on Debian based operating systems via:\n\n```bash\napt install -y libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev gir1.2-gtk-3.0 libdbus-1-dev\n```\n\nAfter that, using **pip3** is sufficient again:\n\n```bash\npip3 install --user homekit[BLE]\n```\n\n## Installation for both type of accessories\n\nIn this case, install the packages for your operating system and afterwards use **pip3**:\n\n```bash\npip3 install --user homekit[IP,BLE]\n```\n\n# HomeKit Accessory\nThis package helps in creating a custom HomeKit Accessory.\n\nThe demonstration uses this JSON in `~/.homekit/demoserver.json`: \n```json\n{\n \"name\": \"DemoAccessory\",\n \"host_ip\": \"$YOUR IP\",\n \"host_port\": 8080,\n \"accessory_pairing_id\": \"12:00:00:00:00:00\",\n \"accessory_pin\": \"031-45-154\",\n \"peers\": {},\n \"unsuccessful_tries\": 0,\n \"c#\": 0,\n \"category\": \"Lightbulb\"\n\n}\n```\n\nNow let's spawn a simple light bulb accessory as demonstration:\n\n```python\n#!/usr/bin/env python3\n\nimport os.path\n\nfrom homekit import HomeKitServer\nfrom homekit.model import Accessory, LightBulbService\n\n\nif __name__ == '__main__':\n try:\n httpd = HomeKitServer(os.path.expanduser('~/.homekit/demoserver.json'))\n\n accessory = Accessory('Licht')\n lightService = LightBulbService()\n accessory.services.append(lightService)\n httpd.accessories.add_accessory(accessory)\n\n httpd.publish_device()\n print('published device and start serving')\n httpd.serve_forever()\n except KeyboardInterrupt:\n print('unpublish device')\n httpd.unpublish_device()\n```\n\nIf everything went properly, you should be able to add this accessory to your home on your iOS device.\n\n# HomeKit Controller\n\nThe following tools help to access HomeKit Accessories.\n\n## init_controller_storage\n\nThis tool initializes the HomeKit controller's storage file.\n\nUsage:\n```bash\npython3 -m homekit.init_controller_storage -f ${PAIRINGDATAFILE}\n```\n\nThe option `-f` specifies the name of the file to contain the controller's data.\n\n## discover\n\nThis tool will list all available HomeKit IP Accessories within the local network.\n\nUsage:\n```bash\npython3 -m homekit.discover [-t ${TIMEOUT}] [-u] [--log ${LOGLEVEL}]\n```\n\nThe option `-t` specifies the timeout for the inquiry. This is optional and 10s are the default.\n\nThe option `-u` activates a filter to show only unpaired devices. This is optional and deactivated by default.\n\nThe option `--log` specifies the log level for the command. This is optional. Use `DEBUG` to get more output.\n\nOutput:\n```\nName: smarthomebridge3._hap._tcp.local.\nUrl: http://192.168.178.21:51827\nConfiguration number (c#): 2\nFeature Flags (ff): Paired (Flag: 0)\nDevice ID (id): 12:34:56:78:90:05\nModel Name (md): Bridge\nProtocol Version (pv): 1.0\nState Number (s#): 1\nStatus Flags (sf): 0\nCategory Identifier (ci): Other (Id: 1)\n```\nHints:\n\n * Some devices like the Koogeek P1EU Plug need bluetooth to set up wireless (e.g. join the wireless network) before. \n Use your phone or the proper app to perform this\n * paired devices should not show up\n\n## discover_ble\n\nThis tool will list all available HomeKit BLE Accessories within range of the Bluetooth LE device.\n\nUsage:\n```bash\npython3 -m homekit.discover_ble [-t ${TIMEOUT}] [-u] [--adapter ${ADAPTER}] [--log ${LOGLEVEL}]\n```\n\nThe option `-t` specifies the timeout for the inquiry. This is optional and 10s are the default.\n\nThe option `-u` activates a filter to show only unpaired devices. This is optional and deactivated by default.\n\nThe option `--adapter` specifies which Bluetooth device to use. This is optional and `hci0` is the default.\n\nThe option `--log` specifies the log level for the command. This is optional. Use `DEBUG` to get more output.\n\nOutput:\n```\nName: Koogeek-DW1-8ca86c\nMAC: c6:cc:4d:a7:7c:5e\nConfiguration number (cn): 1\nDevice ID (id): B8:D1:29:61:A1:B0\nCompatible Version (cv): 2\nGlobal State Number (s#): 2\nStatus Flags (sf): The accessory has been paired with a controllers. (Flag: 0)\nCategory Identifier (ci): Sensor (Id: 10)\n```\n\n## identify\n\nThis tool will use the Identify Routine of a HomeKit Accessory. It has 3 modes of operation.\n\n### identify unpaired Homekit IP Accessory\n\nUsage:\n```bash\npython3 -m homekit.identify -d ${DEVICEID} [--log ${LOGLEVEL}]\n```\n\nThe option `-d` specifies the device id of the accessory to identify. Can be obtained via *discovery*.\n\nThe option `--log` specifies the log level for the command. This is optional. Use `DEBUG` to get more output.\n\n\n### identify unpaired Homekit BLE Accessory\n\nUsage:\n```bash\npython3 -m homekit.identify -m ${MACADDRESS} [--adapter ${ADAPTER}] [--log ${LOGLEVEL}]\n```\n\nThe option `-m` specifies the Bluetooth LE mac id of the accessory to identify. Can be obtained via *discovery_ble*.\n\nThe option `--adapter` specifies which Bluetooth device to use. This is optional and `hci0` is the default.\n\nThe option `--log` specifies the log level for the command. This is optional. Use `DEBUG` to get more output.\n\n### identify paired Homekit Accessory\n\nUsage:\n```bash\npython3 -m homekit.identify -f ${PAIRINGDATAFILE} -a ${ALIAS} [--adapter ${ADAPTER}] [--log ${LOGLEVEL}]\n```\n\nThe option `-f` specifies the file that contains the pairing data.\n\nThe option `-a` specifies the alias for the device.\n\nThe option `--adapter` specifies which Bluetooth device to use. This is optional and `hci0` is the default and is only \nused if the paired device is using Bluetooth LE.\n\nThe option `--log` specifies the log level for the command. This is optional. Use `DEBUG` to get more output.\n\n## pair\n\nThis tool will perform a pairing to a new IP accessory.\n\nUsage:\n```bash\npython3 -m homekit.pair -d ${DEVICEID} -p ${SETUPCODE} -f ${PAIRINGDATAFILE} -a ${ALIAS} [--log ${LOGLEVEL}]\n```\n\nThe option `-d` specifies the device id of the accessory to pair. Can be obtained via discovery.\n\nThe option `-p` specifies the HomeKit Setup Code. Can be obtained from the accessory. This must look like `XXX-XX-XXX` \n(X is a single digit and the dashes are important).\n\nThe option `-f` specifies the file that contains the pairing data.\n\nThe option `-a` specifies the alias for the device.\n\nThe option `--log` specifies the log level for the command. This is optional. Use `DEBUG` to get more output.\n\nThe file with the pairing data will be required to send any additional commands to the accessory.\n\n## pair_ble\n\nThis tool will perform a pairing to a new Bluetooth LE accessory.\n\nUsage:\n```bash\npython3 -m homekit.pair -m ${MACADDRESS} -p ${SETUPCODE} -f ${PAIRINGDATAFILE} -a ${ALIAS} [--adapter ${ADAPTER}] [--log ${LOGLEVEL}]\n```\n\nThe option `-m` specifies the device id of the accessory to pair. Can be obtained via discovery.\n\nThe option `-p` specifies the HomeKit Setup Code. Can be obtained from the accessory.\n\nThe option `-f` specifies the file that contains the pairing data.\n\nThe option `-a` specifies the alias for the device.\n\nThe option `--adapter` specifies which Bluetooth device to use. This is optional and `hci0` is the default and is only \nused if the paired device is using Bluetooth LE.\n\nThe option `--log` specifies the log level for the command. This is optional. Use `DEBUG` to get more output.\n\nThe file with the pairing data will be required to send any additional commands to the accessory.\n\n## list_pairings\n\nThis tool will perform a query to list all pairings of an accessory. The\ncontroller that performs the query must be registered as `Admin`. If this is\nnot the case, no pairings are listed.\n\nUsage:\n```bash\npython3 -m homekit.list_pairings -f ${PAIRINGDATAFILE} -a ${ALIAS} [--adapter ${ADAPTER}] [--log ${LOGLEVEL}]\n```\n\nThe option `-f` specifies the file that contains the pairing data.\n\nThe option `-a` specifies the alias for the device.\n\nThe option `--adapter` specifies which Bluetooth device to use. This is optional and `hci0` is the default and is only \nused if the paired device is using Bluetooth LE.\n\nThe option `--log` specifies the log level for the command. This is optional. Use `DEBUG` to get more output.\n\nThis will print information for each controller that is paired with the accessory:\n\n```\nPairing Id: 3d65d692-90bb-41c2-9bd0-2cb7a3a5dd18\n Public Key: 0xed93c78f80e7bc8bce4fb548f1a6681284f952d37ffcb439d21f7a96c87defaf\n Permissions: 1 (admin user)\n```\n\nThe information contains the pairing id, the public key of the device and permissions of the controller.\n\n## prepare_add_remote_pairing\n\nThis tool will prepare data required for the `add_additional_pairing` command.\n\nUsage:\n```bash\npython3 -m homekit.prepare_add_remote_pairing -f ${PAIRINGDATAFILE} -a ${ALIAS} \\\n [--log ${LOGLEVEL}]\n```\n\nThe option `-f` specifies the file that contains the pairing data.\n\nThe option `-a` specifies the alias for the device to be added.\n\nThe option `--log` specifies the log level for the command. This is optional. \nUse `DEBUG` to get more output.\n\nThis will print information to be fed into `homekit.add_additional_pairing` \n(via a second channel):\n\n```\nPlease add this to homekit.add_additional_pairing:\n -i cec11edd-7363-42c4-8d13-aeb06b608ffc -k 0cbfd3abc377f6c3bfd3b4c119c1c5ff0c840ef1f9530e0f99c68b1f531dd66a\n```\n\n## add_additional_pairing\n\nThis tool is used to tell a HomeKit Accessory accept a new pairing for an \nadditional controller.\n \nUsage:\n```bash\npython3 -m homekit.add_additional_pairing -f ${PAIRINGDATAFILE} -a ${ALIAS} \\\n -i ${PAIRINGID} -k ${PUBLIC_KEY} -p ${LEVEL} [--log ${LOGLEVEL}]\n```\n\nThe option `-f` specifies the file that contains the pairing data.\n\nThe option `-a` specifies the alias for the device to be added.\n\nThe option `-i` specifies the additional controller's pairing id.\n\nThe option `-k` specifies the additional controller's public key.\n\nThe option `-p` specifies the additional controller's access privileges, this can be `User` or `Admin` for a pairing\nwith higher privileges.\n\nThe option `--log` specifies the log level for the command. This is optional. \nUse `DEBUG` to get more output.\n\nThis will print information to be fed into `homekit.finish_add_remote_pairing` (via a second channel):\n\n```\nPlease add this to homekit.finish_add_remote_pairing:\n -c BLE -i D0:CA:1E:56:13:AA -m cb:e0:b0:c9:e8:72 -k a07c471e12682b161034b91c0d016201516eb51d9bf1071b6dcf0e3be71e9269\n```\n\n## finish_add_remote_pairing.py\n\nThis tool finalizes the addition of a pairing to a HomeKit Accessory.\n\nUsage:\n```bash\npython3 -m homekit.finish_add_remote_pairing -f ${PAIRINGDATAFILE} -a ${ALIAS} \\\n -c ${CONNECTIONTYPE} -i ${DEVICEID} -k ${DEVICEPUBLICKEY} \\\n [-m ${MACADDRESS}] [--log ${LOGLEVEL}]\n```\n\nThe option `-f` specifies the file that contains the pairing data.\n\nThe option `-a` specifies the alias for the device to be added.\n\nThe option `-c` specifies the type of connection for the accessory (values are\nIP and BLE).\n\nThe option `-i` specifies the accessory's device id.\n\nThe option `-k` specifies the accessory's public key.\n\nThe option `-m` specifies the accessory's mac address for Bluetooth Low Energy \naccessories. This is not required for IP accessories. \n\nThe option `--log` specifies the log level for the command. This is optional. \nUse `DEBUG` to get more output.\n\n## remove_pairing\n\nThis tool will remove a pairing from an accessory.\n\nUsage:\n```bash\npython -m homekit.remove_pairing -f ${PAIRINGDATAFILE} -a ${ALIAS} [-i ${PAIRINGID}] [--adapter ${ADAPTER}] [--log ${LOGLEVEL}]\n```\n\nThe option `-f` specifies the file that contains the pairing data.\n\nThe option `-a` specifies the alias for the device.\n\nThe option `-i` specifies the controller pairing id to remove.\n\nThe option `--adapter` specifies which Bluetooth device to use. This is optional and `hci0` is the default and is only \nused if the paired device is using Bluetooth LE.\n\nThe option `--log` specifies the log level for the command. This is optional. Use `DEBUG` to get more output.\n\n## get_accessories\n\nThis tool will read the accessory attribute database.\n\nUsage:\n```bash\npython3 -m homekit.get_accessories -f ${PAIRINGDATAFILE} -a ${ALIAS} [-o {json,compact}] [--adapter ${ADAPTER}] [--log ${LOGLEVEL}]\n```\n\nThe option `-f` specifies the file that contains the pairing data.\n\nThe option `-a` specifies the alias for the device.\n\nThe option `-o` specifies the format of the output:\n * `json` displays the result as pretty printed JSON\n * `compact` reformats the output to get more on one screen\n\nThe option `--adapter` specifies which Bluetooth device to use. This is optional and `hci0` is the default and is only \nused if the paired device is using Bluetooth LE.\n\nThe option `--log` specifies the log level for the command. This is optional. Use `DEBUG` to get more output.\n\nUsing the `compact` output the result will look like:\n```\n1.1: >accessory-information<\n 1.2: Koogeek-P1-770D90 () >name< [pr]\n 1.3: Koogeek () >manufacturer< [pr]\n 1.4: P1EU () >model< [pr]\n 1.5: EUCP031715001435 () >serial-number< [pr]\n 1.6: () >identify< [pw]\n 1.37: 1.2.9 () >firmware.revision< [pr]\n1.7: >outlet<\n 1.8: False () >on< [pr,pw,ev]\n 1.9: True () >outlet-in-use< [pr,ev]\n 1.10: Outlet () >name< [pr]\n```\n\n## get_characteristic\nThis tool will read values from one or more characteristics.\n\nUsage:\n```bash\npython3 -m homekit.get_characteristic -f ${PAIRINGDATAFILE} -a ${ALIAS} -c ${CHARACTERISTICS} [-m] [-p] [-t] [-e] \\\n [--adapter ${ADAPTER}] [--log ${LOGLEVEL}]\n```\n\nThe option `-f` specifies the file that contains the pairing data.\n\nThe option `-a` specifies the alias for the device.\n\nThe option `-c` specifies the characteristics to read. The format is `.`. This option can be repeated to \nretrieve multiple characteristics with one call (e.g. `-c 1.9 -c 1.8`). \n \nThe option `-m` specifies if the meta data should be read as well.\n\nThe option `-p` specifies if the permissions should be read as well.\n\nThe option `-t` specifies if the type information should be read as well.\n\nThe option `-e` specifies if the event data should be read as well.\n\nThe option `--adapter` specifies which Bluetooth device to use. This is optional and `hci0` is the default and is only \nused if the paired device is using Bluetooth LE.\n\nThe option `--log` specifies the log level for the command. This is optional. Use `DEBUG` to get more output.\n\nFor example, this command reads 2 characteristics of a Koogeek P1EU Plug:\n```\npython3 -m homekit.get_characteristic -f koogeek.json -a koogeek -c 1.8 -c 1.9\n```\n\nThe result will be a json with data for each requested characteristic:\n```json\n{\n \"1.8\": {\n \"value\": false\n },\n \"1.9\": {\n \"value\": true\n }\n}\n```\n\n## put_characteristic\nThis tool will write values to one or more characteristics.\n\nUsage:\n```bash\npython3 -m homekit.put_characteristic -f ${PAIRINGDATAFILE} -a ${ALIAS} -c ${Characteristics} ${value} \\\n [--adapter ${ADAPTER}] [--log ${LOGLEVEL}]\n```\n\nThe option `-f` specifies the file that contains the pairing data.\n\nThe option `-a` specifies the alias for the device.\n\nThe option `-c` specifies the characteristics to change. The format is `. `. This option can be \nrepeated to change multiple characteristics with one call (e.g. `-c 1.9 On -c 1.8 22.3`) . \n \nThe option `--adapter` specifies which Bluetooth device to use. This is optional and `hci0` is the default and is only \nused if the paired device is using Bluetooth LE.\n \nThe option `--log` specifies the log level for the command. This is optional. Use `DEBUG` to get more output.\n\nFor example, this command turns of a Koogeek P1EU Plug:\n```\npython3 -m homekit.put_characteristic -f koogeek.json -a koogeek -c 1.8 false\n```\n\nNo output is given on successful operation or a error message is displayed.\n\n## get_events\n\n**!!Not yet implemented for Bluetooth LE Accessories!!**\n\nThis tool will register with an accessory and listen to the events send back from it.\n\nUsage\n```bash\npython3 -m homekit.get_events -f ${PAIRINGDATAFILE} -a ${ALIAS} -c ${Characteristics} \\\n [--adapter ${ADAPTER}] [--log ${LOGLEVEL}]\n```\n\nThe option `-f` specifies the file that contains the pairing data.\n\nThe option `-a` specifies the alias for the device.\n\nThe option `-c` specifies the characteristics to change. The format is `.`. This \noption can be repeated to listen to multiple characteristics with one call.\n\nThe option `--adapter` specifies which Bluetooth device to use. This is optional and `hci0` is the default and is \nonly used if the paired device is using Bluetooth LE.\n \nThe option `--log` specifies the log level for the command. This is optional. Use `DEBUG` to get more output.\n\nFor example, you can listen to characteristics 1.8 (on characteristic), 1.22 (1 REALTIME_ENERGY) and \n1.23 (2 CURRENT_HOUR_DATA) of the Koogeek P1EU Plug with:\n```bash\npython3 -m homekit.get_events -f koogeek.json -a koogeek -c 1.8 -c 1.22 -c 1.23\n```\nThis results in\n```\nevent for 1.8: True\nevent for 1.22: 6.0\nevent for 1.23: 0.01666\nevent for 1.22: 17.0\nevent for 1.23: 0.06388\nevent for 1.23: 0.11111\nevent for 1.22: 18.0\nevent for 1.23: 0.16111\nevent for 1.8: False\n```\n\n# HomeKit Accessory\n\n# Devices Reported to work\n\nThe code was tested with the following devices by the author:\n\n * Koogeek P1EU Plug (IP) ([Vendor](https://www.koogeek.com/smart-home-2418/p-p1eu.html))\n * Koogeek DW1 (BLE) ([Vendor](https://www.koogeek.com/p-dw1.html))\n * OSRAM SMART+ Classic E27 Multicolor (BLE) ([Vendor](https://smartplus.ledvance.de/produkte/innenbeleuchtung/index.jsp#_m507__2_9_col___image__video___rest_col___text_20))\n\nUsers have tried (and succeeded, not checked by the author) to use the following devices:\n\n * Ikea TR\u00c5DFRI (IP) ([Issue #13](https://github.com/jlusiardi/homekit_python/issues/13))\n * Philips Hue (IP) ([Issue #13](https://github.com/jlusiardi/homekit_python/issues/13))\n * Leviton DH6HD-1BZ (IP) ([Issue #16](https://github.com/jlusiardi/homekit_python/issues/16))\n * Lutron Caseta (IP) (Smart Bridge 2 / [Issue #17](https://github.com/jlusiardi/homekit_python/issues/17))\n * iHome iSP5 (IP) ([Issue #18](https://github.com/jlusiardi/homekit_python/issues/18))\n * Xiaomi Mi Bedside Lamp 2 (IP) ([Issue #116](https://github.com/jlusiardi/homekit_python/issues/116))", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/jlusiardi/homekit_python/archive/0.15.0.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/jlusiardi/homekit_python", "keywords": "HomeKit", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "homekit", "package_url": "https://pypi.org/project/homekit/", "platform": "", "project_url": "https://pypi.org/project/homekit/", "project_urls": { "Download": "https://github.com/jlusiardi/homekit_python/archive/0.15.0.tar.gz", "Homepage": "https://github.com/jlusiardi/homekit_python" }, "release_url": "https://pypi.org/project/homekit/0.15.0/", "requires_dist": null, "requires_python": "", "summary": "Python code to interface HomeKit Accessories and Controllers", "version": "0.15.0" }, "last_serial": 5544043, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "b87221457efad73dc3faea007e5c07bb", "sha256": "f5525eaf2d149c1e15b6df0cf262a5efe1f51ebb48a69f976991838c21048fa8" }, "downloads": -1, "filename": "homekit-0.1.tar.gz", "has_sig": false, "md5_digest": "b87221457efad73dc3faea007e5c07bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29921, "upload_time": "2017-09-06T09:57:33", "url": "https://files.pythonhosted.org/packages/17/d3/53b6bd3dcaad998ef52b5af6f8baf08654491f74d6a13baee12103e77661/homekit-0.1.tar.gz" } ], "0.10": [ { "comment_text": "", "digests": { "md5": "eab93ec8e98e9c7ec2c5c0355585bc7d", "sha256": "bad4b52822c3be7fa8104c9927e447a4c7e1108c177eab38efe817eead039c5a" }, "downloads": -1, "filename": "homekit-0.10.tar.gz", "has_sig": false, "md5_digest": "eab93ec8e98e9c7ec2c5c0355585bc7d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39914, "upload_time": "2018-07-15T14:34:05", "url": "https://files.pythonhosted.org/packages/1c/f8/f77b30cc9b23d55f43e4bcaa410ae7d4e0526282d1d754cf3008e48e5a57/homekit-0.10.tar.gz" } ], "0.11": [ { "comment_text": "", "digests": { "md5": "2dd3794a6cc5d843985e5d1b45ad3f63", "sha256": "9a8481dacea048b01a12fd7493b8b8318bd942f4ae8d3d7d80c21d120e5df776" }, "downloads": -1, "filename": "homekit-0.11.tar.gz", "has_sig": false, "md5_digest": "2dd3794a6cc5d843985e5d1b45ad3f63", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40369, "upload_time": "2018-10-03T09:21:48", "url": "https://files.pythonhosted.org/packages/45/da/f89b075bf4fd69b03a48c2df6f9550239b148cac9e2c91b5415736e25d33/homekit-0.11.tar.gz" } ], "0.12.0": [ { "comment_text": "", "digests": { "md5": "7afcaa5a33f1fe96a8e5a0194d6c3269", "sha256": "a4a49dc040faa90dbf33e62950ba5b856d718084f4fb2daf394c64ababbade79" }, "downloads": -1, "filename": "homekit-0.12.0.tar.gz", "has_sig": false, "md5_digest": "7afcaa5a33f1fe96a8e5a0194d6c3269", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56851, "upload_time": "2018-10-03T15:01:17", "url": "https://files.pythonhosted.org/packages/1d/a5/f7cb393652053ad3a40f503f1b3f444c56b2f30dfcea913beccfcace7220/homekit-0.12.0.tar.gz" } ], "0.12.1": [ { "comment_text": "", "digests": { "md5": "86590c21f1e57fc0b433f249b5e81cc3", "sha256": "0f045d77be09c71355e144eae0c13afabfe06cde1bce4c7375bfa50b8a2b2af1" }, "downloads": -1, "filename": "homekit-0.12.1.tar.gz", "has_sig": false, "md5_digest": "86590c21f1e57fc0b433f249b5e81cc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57389, "upload_time": "2019-01-21T20:49:41", "url": "https://files.pythonhosted.org/packages/40/a4/a11b9cb8c7c7b1dee13215358350c1ded239c226388c645822314c827655/homekit-0.12.1.tar.gz" } ], "0.12.2": [ { "comment_text": "", "digests": { "md5": "12c2aad4a3bdf87d04b62cd69bd6c148", "sha256": "fc49e79ef6867403bd397c02db02128e941e07119b0a5a1775aed38091392dc3" }, "downloads": -1, "filename": "homekit-0.12.2-py3-none-any.whl", "has_sig": false, "md5_digest": "12c2aad4a3bdf87d04b62cd69bd6c148", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 107434, "upload_time": "2019-01-22T05:36:50", "url": "https://files.pythonhosted.org/packages/34/19/31a59d9b2cf9861c5358d6a94a68029ddae46b75e660587c0125b40eb529/homekit-0.12.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d935a48c61bd822485d7c87ab9b24a32", "sha256": "a0673d6b5e046bbf7b0ba70427302c24dd1ff3e4c7a158ac1f1fc0c2d839cf79" }, "downloads": -1, "filename": "homekit-0.12.2.tar.gz", "has_sig": false, "md5_digest": "d935a48c61bd822485d7c87ab9b24a32", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57390, "upload_time": "2019-01-22T05:36:52", "url": "https://files.pythonhosted.org/packages/78/9e/b894b13415fcc487bc7d01ffd6d1e53e8dcfa96f904595ea885e32e654d9/homekit-0.12.2.tar.gz" } ], "0.12.3": [ { "comment_text": "", "digests": { "md5": "cb9fe52357cd13e18d4d5d4ad2ffe0f0", "sha256": "fc1e3268767496649aa3cf9148f7397325855d4ef93f2c604ed92c38ea364a48" }, "downloads": -1, "filename": "homekit-0.12.3-py3-none-any.whl", "has_sig": false, "md5_digest": "cb9fe52357cd13e18d4d5d4ad2ffe0f0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 108938, "upload_time": "2019-03-09T11:08:24", "url": "https://files.pythonhosted.org/packages/8d/c0/feeaf88e25c98824f0bd86addf40dc636471f0e3aac6e2525152ce9e80f6/homekit-0.12.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "93ff8c34cd75fddc2b27c8fc9ddb3f87", "sha256": "f57c0875ed26ecb324cc8f8c97bfbe8bb123fe31bf6e6190e529d5b015f19090" }, "downloads": -1, "filename": "homekit-0.12.3.tar.gz", "has_sig": false, "md5_digest": "93ff8c34cd75fddc2b27c8fc9ddb3f87", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58597, "upload_time": "2019-03-09T11:08:27", "url": "https://files.pythonhosted.org/packages/d5/97/1dd955dce2cd57e6f4785e5565e50dbcd87fd3adf1e7112b496477cc353b/homekit-0.12.3.tar.gz" } ], "0.13.0": [ { "comment_text": "", "digests": { "md5": "a1306782f4e8792729be690c8f3856c1", "sha256": "4eac05b6d6449dfc04f4d616563e4d26096cc1529f78ae7db638dcd892b8d39f" }, "downloads": -1, "filename": "homekit-0.13.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a1306782f4e8792729be690c8f3856c1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 149512, "upload_time": "2019-03-11T07:09:27", "url": "https://files.pythonhosted.org/packages/fa/a9/27f8d4c0163fc2db8f08a58674a72450d3f2c40b4160a5f724137dfa97bf/homekit-0.13.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dbc9f5612c89f077f426888fc52a927c", "sha256": "89e66d545002e7e11e87576fc466a0d35072bf1eb513f95f5a97a893dc06a22c" }, "downloads": -1, "filename": "homekit-0.13.0.tar.gz", "has_sig": false, "md5_digest": "dbc9f5612c89f077f426888fc52a927c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 80295, "upload_time": "2019-03-11T07:09:30", "url": "https://files.pythonhosted.org/packages/b5/cc/fd7447cc37686d6518df96839265d16a0aabf41545a94fd6df9cd39ed0c4/homekit-0.13.0.tar.gz" } ], "0.14.0": [ { "comment_text": "", "digests": { "md5": "3ec4be043db7f6af566c46618d8519b0", "sha256": "5b4ca36e250a84406a1f3fb344e59df214e5d4432362f1b95f754e91c8a81066" }, "downloads": -1, "filename": "homekit-0.14.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3ec4be043db7f6af566c46618d8519b0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 150791, "upload_time": "2019-04-29T20:12:34", "url": "https://files.pythonhosted.org/packages/c7/a4/162c35092000d3f971d688b7d8376e34d6cd15458134d8249323880ac392/homekit-0.14.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "874e092c35cf9ff763617abf927f37e9", "sha256": "981df600d91ee932cdb5dd2e89622bbc07e7ddd52b198f072fbee3461ec62b93" }, "downloads": -1, "filename": "homekit-0.14.0.tar.gz", "has_sig": false, "md5_digest": "874e092c35cf9ff763617abf927f37e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 81672, "upload_time": "2019-04-29T20:12:39", "url": "https://files.pythonhosted.org/packages/2c/65/bf0bfc7d7d9a1233142bcfa2ff72a109e02536c8a721f621246fde822dff/homekit-0.14.0.tar.gz" } ], "0.15.0": [ { "comment_text": "", "digests": { "md5": "7d22170da5734080145875705a1b228d", "sha256": "fa9737504f152ca285d867764b25e3ce2d1f6c24687f22681d2d77f24b8ff359" }, "downloads": -1, "filename": "homekit-0.15.0.tar.gz", "has_sig": false, "md5_digest": "7d22170da5734080145875705a1b228d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 86626, "upload_time": "2019-07-17T04:42:48", "url": "https://files.pythonhosted.org/packages/20/a2/cd9de6add789c8778657a3d04a82bfce2879d104dfa09c26d8ea0d0435b8/homekit-0.15.0.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "1c1f25f449f2339a3cbcf75f3c7d117f", "sha256": "26bc6d245417400afe68770ff5cb1705442d618a8f33a9377e54d5aaf5c829a2" }, "downloads": -1, "filename": "homekit-0.2.tar.gz", "has_sig": false, "md5_digest": "1c1f25f449f2339a3cbcf75f3c7d117f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30234, "upload_time": "2017-09-12T08:14:40", "url": "https://files.pythonhosted.org/packages/48/6b/730b98aaec81ebabeab0977264b4a6aba6a63bbf21f2a26c9ff28e267627/homekit-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "619458511d7af7a8269efa6699720805", "sha256": "3f7b3597e3cb6555e847b3375f7e53d457ce7401ee6e8862076df77d99b8f0e2" }, "downloads": -1, "filename": "homekit-0.3.tar.gz", "has_sig": false, "md5_digest": "619458511d7af7a8269efa6699720805", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30376, "upload_time": "2017-10-25T19:42:27", "url": "https://files.pythonhosted.org/packages/e5/00/7caa4247ce2937fb0a14b9073b76ccfa62ea63905ce46973854da8074d56/homekit-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "3f9e99e2ca888af3630640ab9e25903f", "sha256": "a3ac850df0cd9b7beeb9d7d3a79827de3d0bb61d2a87909fcb46d864718098ac" }, "downloads": -1, "filename": "homekit-0.4.tar.gz", "has_sig": false, "md5_digest": "3f9e99e2ca888af3630640ab9e25903f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30639, "upload_time": "2017-10-29T07:24:19", "url": "https://files.pythonhosted.org/packages/ed/2a/7d4c7a5a957558eff8a19743e722ab581b2e2b88c283637c7c76200db698/homekit-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "d85383698e123877a0bd40ccb9510512", "sha256": "b3469e9b797fc4048a84a66e689585111e2719e8942b9829c3f5b2350721a8c1" }, "downloads": -1, "filename": "homekit-0.5.tar.gz", "has_sig": false, "md5_digest": "d85383698e123877a0bd40ccb9510512", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31415, "upload_time": "2018-03-19T05:42:36", "url": "https://files.pythonhosted.org/packages/f6/e8/0d4ff57f2176ea3f091186c08b92d012c628609875cd6be016ec47115786/homekit-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "d9191ac197178da6563e2301d32babd0", "sha256": "d24098976b9bb11e89573a215b134c0bf21cf77d55ebdf62bd0e96c7dd23301d" }, "downloads": -1, "filename": "homekit-0.6.tar.gz", "has_sig": false, "md5_digest": "d9191ac197178da6563e2301d32babd0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32008, "upload_time": "2018-04-17T05:31:39", "url": "https://files.pythonhosted.org/packages/c3/3a/541ee56c5d9a06c82534120785731eb425beaad8cc01afe3b1458bc51854/homekit-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "fdd1fa0c818f8d37c6d79a910ffbd8d2", "sha256": "d0da456f6116d80e6e41adab6900d121d79cddd141d567043387433eb23b8e30" }, "downloads": -1, "filename": "homekit-0.7.tar.gz", "has_sig": false, "md5_digest": "fdd1fa0c818f8d37c6d79a910ffbd8d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32973, "upload_time": "2018-05-06T15:30:25", "url": "https://files.pythonhosted.org/packages/92/4d/472459546a507f7bac2582d99c0248b82a22e13a663782e94498e55c0dc9/homekit-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "0d5883ac8e6b4da6c6f7fcc989018e84", "sha256": "8900832f6dd756a79227c44b0326a538567e7b9b938f4e35ccd1ea0c2f3050bd" }, "downloads": -1, "filename": "homekit-0.8.tar.gz", "has_sig": false, "md5_digest": "0d5883ac8e6b4da6c6f7fcc989018e84", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30485, "upload_time": "2018-05-23T19:51:35", "url": "https://files.pythonhosted.org/packages/b4/88/d4893df00d9a55f8e5c26e44458f375b62e37e122f5fcce3a752d7ca4bef/homekit-0.8.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "85eb261ece97c8b83822e1ac94bc5b9f", "sha256": "af8ce232651c3404cdf1cd5c5ee54fa821b03563cff1daae1dc8835dea2cb997" }, "downloads": -1, "filename": "homekit-0.9.tar.gz", "has_sig": false, "md5_digest": "85eb261ece97c8b83822e1ac94bc5b9f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39233, "upload_time": "2018-05-28T05:27:47", "url": "https://files.pythonhosted.org/packages/03/f4/f497867472a12bd858a6a498c9d22c64caf40a6415fb2b71974947d0468b/homekit-0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7d22170da5734080145875705a1b228d", "sha256": "fa9737504f152ca285d867764b25e3ce2d1f6c24687f22681d2d77f24b8ff359" }, "downloads": -1, "filename": "homekit-0.15.0.tar.gz", "has_sig": false, "md5_digest": "7d22170da5734080145875705a1b228d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 86626, "upload_time": "2019-07-17T04:42:48", "url": "https://files.pythonhosted.org/packages/20/a2/cd9de6add789c8778657a3d04a82bfce2879d104dfa09c26d8ea0d0435b8/homekit-0.15.0.tar.gz" } ] }