{"action":"created","comment":{"url":"https://api.github.com/repos/home-assistant/home-assistant/pulls/comments/153047095","pull_request_review_id":79004280,"id":153047095,"diff_hunk":"@@ -0,0 +1,198 @@\n+\"\"\"\n+Support for deCONZ support.\n+\n+For more details about this component, please refer to the documentation at\n+https://home-assistant.io/components/deconz/\n+\"\"\"\n+\n+import asyncio\n+import os\n+import logging\n+import voluptuous as vol\n+\n+from homeassistant.config import load_yaml_config_file\n+from homeassistant.const import (\n+    CONF_API_KEY, CONF_EVENT, CONF_HOST, CONF_ID, CONF_PASSWORD, CONF_PORT,\n+    CONF_USERNAME, EVENT_HOMEASSISTANT_STOP)\n+from homeassistant.core import callback, EventOrigin\n+from homeassistant.helpers import config_validation as cv\n+from homeassistant.helpers import discovery\n+from homeassistant.util import slugify\n+from homeassistant.util.json import load_json, save_json\n+\n+REQUIREMENTS = ['pydeconz==20']\n+\n+_LOGGER = logging.getLogger(__name__)\n+\n+DOMAIN = 'deconz'\n+\n+DECONZ_DATA = 'deconz_data'\n+CONFIG_FILE = 'deconz.conf'\n+\n+CONF_SWITCH_AS_EVENT = 'switch_as_event'\n+\n+CONFIG_SCHEMA = vol.Schema({\n+    DOMAIN: vol.Schema({\n+        vol.Required(CONF_HOST): cv.string,\n+        vol.Optional(CONF_API_KEY): cv.string,\n+        vol.Optional(CONF_PORT, default=80): cv.port,\n+        vol.Optional(CONF_SWITCH_AS_EVENT, default=True): cv.boolean,\n+        vol.Optional(CONF_USERNAME, default='delight'): cv.string,\n+        vol.Optional(CONF_PASSWORD, default='delight'): cv.string,\n+    })\n+}, extra=vol.ALLOW_EXTRA)\n+\n+ATTR_FW_VERSION = 'firmware_version'\n+ATTR_MANUFACTURER = 'manufacturer'\n+ATTR_MODEL_ID = 'model_number'\n+ATTR_UNIQUE_ID = 'uniqueid'\n+\n+\n+@asyncio.coroutine\n+def async_setup(hass, config):\n+    \"\"\"Setup services for Deconz.\"\"\"\n+    deconz_config = config[DOMAIN]\n+    config_file = load_json(hass.config.path(CONFIG_FILE))\n+    descriptions = load_yaml_config_file(\n+        os.path.join(os.path.dirname(__file__), 'services.yaml'))[DOMAIN]\n+\n+    @callback\n+    def _shutdown(call):  # pylint: disable=unused-argument\n+        \"\"\"Stop the connections to Deconz on shutdown.\"\"\"\n+        if DECONZ_DATA in hass.data:\n+            _LOGGER.info(\"Stopping Deconz session.\")\n+            hass.data[DECONZ_DATA].close()\n+    hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, _shutdown)\n+\n+    @asyncio.coroutine\n+    def _configure(call):\n+        \"\"\"Set attribute of device in Deconz.\n+\n+        Field is a string representing a specific device in Deconz\n+        e.g. field='/lights/1/state'.\n+        Data is a json object with what data you want to alter\n+        e.g. data={'on': true}.\n+        {\n+            \"field\": \"/lights/1/state\",\n+            \"data\": {\"on\": true}\n+        }\n+        See Dresden Elektroniks REST API documentation for details:\n+        http://dresden-elektronik.github.io/deconz-rest-doc/rest/\n+        \"\"\"\n+        deconz = hass.data[DECONZ_DATA]\n+        field = call.data.get('field')\n+        data = call.data.get('data')\n+        yield from deconz.put_state_async(field, data)\n+    hass.services.async_register(\n+        DOMAIN, 'configure', _configure, descriptions['configure'])\n+\n+    if CONF_API_KEY in deconz_config:\n+        pass\n+    elif CONF_API_KEY in config_file:\n+        deconz_config[CONF_API_KEY] = config_file[CONF_API_KEY]\n+    else:\n+        from pydeconz.utils import get_api_key\n+        api_key = yield from get_api_key(hass.loop, **deconz_config)\n+        if api_key:\n+            deconz_config[CONF_API_KEY] = api_key\n+            save_json(hass.config.path(CONFIG_FILE), {CONF_API_KEY: api_key})\n+        else:\n+            hass.async_add_job(\n+                request_configuration, hass, config, deconz_config)\n+            return True\n+    result = yield from _setup_deconz(hass, config, deconz_config)\n+    return result is not False\n+\n+\n+@asyncio.coroutine\n+def _setup_deconz(hass, config, deconz_config):\n+    \"\"\"Setup Deconz session.\n+\n+    Load config data for server information.\n+    Load group data containing which light groups are available.\n+    Load light data containing which lights are available.\n+    Load sensor data containing which sensors are available.\n+    Start websocket for push notification of state changes from Deconz.\n+    \"\"\"\n+    from pydeconz import DeconzSession\n+    deconz = DeconzSession(hass.loop, **deconz_config)\n+    hass.data[DECONZ_DATA] = deconz\n+    result = yield from deconz.load_parameters()\n+    if result is False:\n+        _LOGGER.error('Failed to setup deCONZ component')\n+        return False\n+    hass.async_add_job(discovery.async_load_platform(hass,\n+                                                     'light',\n+                                                     DOMAIN,\n+                                                     {},\n+                                                     config))\n+    hass.async_add_job(discovery.async_load_platform(hass,\n+                                                     'binary_sensor',\n+                                                     DOMAIN,\n+                                                     {},\n+                                                     config))\n+    hass.async_add_job(discovery.async_load_platform(hass,\n+                                                     'scene',\n+                                                     DOMAIN,\n+                                                     {},\n+                                                     config))\n+    hass.async_add_job(discovery.async_load_platform(hass,\n+                                                     'sensor',\n+                                                     DOMAIN,\n+                                                     deconz_config,\n+                                                     config))\n+    deconz.start()\n+    return True\n+\n+\n+def request_configuration(hass, config, deconz_config):\n+    \"\"\"Request configuration steps from the user.\"\"\"\n+    configurator = hass.components.configurator\n+\n+    # pylint: disable=unused-argument\n+    @asyncio.coroutine\n+    def configuration_callback(data):\n+        \"\"\"Set up actions to do when our configuration callback is called.\"\"\"\n+        from pydeconz.utils import get_api_key\n+        api_key = yield from get_api_key(hass.loop, **deconz_config)\n+        if api_key:\n+            deconz_config[CONF_API_KEY] = api_key\n+            result = yield from _setup_deconz(hass, config, deconz_config)\n+            save_json(hass.config.path(CONFIG_FILE), {CONF_API_KEY: api_key})\n+            if result:\n+                hass.async_add_job(configurator.request_done, request_id)\n+                return True\n+        hass.async_add_job(","path":"homeassistant/components/deconz.py","position":null,"original_position":165,"commit_id":"3ae4dea34fe54e733e53f31b3442df64a29470d6","original_commit_id":"a4dcf6acaee56d65d7a601bcaf20d6bcee824cad","user":{"login":"Kane610","id":24575746,"avatar_url":"https://avatars0.githubusercontent.com/u/24575746?v=4","gravatar_id":"","url":"https://api.github.com/users/Kane610","html_url":"https://github.com/Kane610","followers_url":"https://api.github.com/users/Kane610/followers","following_url":"https://api.github.com/users/Kane610/following{/other_user}","gists_url":"https://api.github.com/users/Kane610/gists{/gist_id}","starred_url":"https://api.github.com/users/Kane610/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Kane610/subscriptions","organizations_url":"https://api.github.com/users/Kane610/orgs","repos_url":"https://api.github.com/users/Kane610/repos","events_url":"https://api.github.com/users/Kane610/events{/privacy}","received_events_url":"https://api.github.com/users/Kane610/received_events","type":"User","site_admin":false},"body":"Done","created_at":"2017-11-25T14:36:56Z","updated_at":"2017-11-25T14:36:56Z","html_url":"https://github.com/home-assistant/home-assistant/pull/10321#discussion_r153047095","pull_request_url":"https://api.github.com/repos/home-assistant/home-assistant/pulls/10321","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/home-assistant/home-assistant/pulls/comments/153047095"},"html":{"href":"https://github.com/home-assistant/home-assistant/pull/10321#discussion_r153047095"},"pull_request":{"href":"https://api.github.com/repos/home-assistant/home-assistant/pulls/10321"}},"in_reply_to_id":152882045},"pull_request":{"url":"https://api.github.com/repos/home-assistant/home-assistant/pulls/10321","id":150634318,"html_url":"https://github.com/home-assistant/home-assistant/pull/10321","diff_url":"https://github.com/home-assistant/home-assistant/pull/10321.diff","patch_url":"https://github.com/home-assistant/home-assistant/pull/10321.patch","issue_url":"https://api.github.com/repos/home-assistant/home-assistant/issues/10321","number":10321,"state":"open","locked":false,"title":"deCONZ component","user":{"login":"Kane610","id":24575746,"avatar_url":"https://avatars0.githubusercontent.com/u/24575746?v=4","gravatar_id":"","url":"https://api.github.com/users/Kane610","html_url":"https://github.com/Kane610","followers_url":"https://api.github.com/users/Kane610/followers","following_url":"https://api.github.com/users/Kane610/following{/other_user}","gists_url":"https://api.github.com/users/Kane610/gists{/gist_id}","starred_url":"https://api.github.com/users/Kane610/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Kane610/subscriptions","organizations_url":"https://api.github.com/users/Kane610/orgs","repos_url":"https://api.github.com/users/Kane610/repos","events_url":"https://api.github.com/users/Kane610/events{/privacy}","received_events_url":"https://api.github.com/users/Kane610/received_events","type":"User","site_admin":false},"body":"## Description:\r\nComponent supporting Deconz (lights, sensors) rest API and web sockets for push notification.\r\n\r\nThis is still a work in progress, but this is in a good state to receive feedback. Both in code as well as in practice since my current installation is one light, one switch and one motion detector.\r\n\r\nCurrent implementation supports only dimmable lights, presence detectors and switches. I've only tested with Ikeas wireless dimmer.\r\n\r\nAdded support for Door/window sensors, Humidity sensor, Light level sensor, Temperature sensor and light groups.\r\n\r\n**Pull request in [home-assistant.github.io](https://github.com/home-assistant/home-assistant.github.io) with documentation:** home-assistant/home-assistant.github.io#3967\r\n\r\n## Example entry for `configuration.yaml` (if applicable):\r\n```yaml\r\ndeconz:\r\n  host: 192.168.0.90\r\n  api_key: 1234567890\r\n```\r\n\r\nIf you don't have a API key and want to generate one use this config:\r\n```yaml\r\ndeconz:\r\n  host: 192.168.0.90\r\n  username: your_username (default: delight)\r\n  password: your_password (default: delight)\r\n```\r\nThe component will automatically create an API key and put it into deconz.conf. Default username and password is 'delight', you can provide other username and password with the service.\r\n\r\n## Checklist:\r\n\r\nIf user exposed functionality or configuration variables are added/changed:\r\n  - [x] Documentation added/updated in [home-assistant.github.io](https://github.com/home-assistant/home-assistant.github.io)\r\n\r\nIf the code communicates with devices, web services, or third-party tools:\r\n  - [x] Local tests with `tox` run successfully. **Your PR cannot be merged unless tests pass**\r\n  - [x] New dependencies have been added to the `REQUIREMENTS` variable ([example][ex-requir]).\r\n  - [x] New dependencies are only imported inside functions that use them ([example][ex-import]).\r\n  - [x] New dependencies have been added to `requirements_all.txt` by running `script/gen_requirements_all.py`.\r\n  - [x] New files were added to `.coveragerc`.\r\n\r\n[ex-requir]: https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/keyboard.py#L14\r\n[ex-import]: https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/keyboard.py#L54","created_at":"2017-11-03T21:40:33Z","updated_at":"2017-11-25T14:36:56Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2c793941ea66e1a9d095e185e7b1753d670cea25","assignee":null,"assignees":[],"requested_reviewers":[{"login":"andrey-git","id":5478779,"avatar_url":"https://avatars0.githubusercontent.com/u/5478779?v=4","gravatar_id":"","url":"https://api.github.com/users/andrey-git","html_url":"https://github.com/andrey-git","followers_url":"https://api.github.com/users/andrey-git/followers","following_url":"https://api.github.com/users/andrey-git/following{/other_user}","gists_url":"https://api.github.com/users/andrey-git/gists{/gist_id}","starred_url":"https://api.github.com/users/andrey-git/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andrey-git/subscriptions","organizations_url":"https://api.github.com/users/andrey-git/orgs","repos_url":"https://api.github.com/users/andrey-git/repos","events_url":"https://api.github.com/users/andrey-git/events{/privacy}","received_events_url":"https://api.github.com/users/andrey-git/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/home-assistant/home-assistant/pulls/10321/commits","review_comments_url":"https://api.github.com/repos/home-assistant/home-assistant/pulls/10321/comments","review_comment_url":"https://api.github.com/repos/home-assistant/home-assistant/pulls/comments{/number}","comments_url":"https://api.github.com/repos/home-assistant/home-assistant/issues/10321/comments","statuses_url":"https://api.github.com/repos/home-assistant/home-assistant/statuses/3ae4dea34fe54e733e53f31b3442df64a29470d6","head":{"label":"Kane610:deconz-component","ref":"deconz-component","sha":"3ae4dea34fe54e733e53f31b3442df64a29470d6","user":{"login":"Kane610","id":24575746,"avatar_url":"https://avatars0.githubusercontent.com/u/24575746?v=4","gravatar_id":"","url":"https://api.github.com/users/Kane610","html_url":"https://github.com/Kane610","followers_url":"https://api.github.com/users/Kane610/followers","following_url":"https://api.github.com/users/Kane610/following{/other_user}","gists_url":"https://api.github.com/users/Kane610/gists{/gist_id}","starred_url":"https://api.github.com/users/Kane610/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Kane610/subscriptions","organizations_url":"https://api.github.com/users/Kane610/orgs","repos_url":"https://api.github.com/users/Kane610/repos","events_url":"https://api.github.com/users/Kane610/events{/privacy}","received_events_url":"https://api.github.com/users/Kane610/received_events","type":"User","site_admin":false},"repo":{"id":89581749,"name":"home-assistant","full_name":"Kane610/home-assistant","owner":{"login":"Kane610","id":24575746,"avatar_url":"https://avatars0.githubusercontent.com/u/24575746?v=4","gravatar_id":"","url":"https://api.github.com/users/Kane610","html_url":"https://github.com/Kane610","followers_url":"https://api.github.com/users/Kane610/followers","following_url":"https://api.github.com/users/Kane610/following{/other_user}","gists_url":"https://api.github.com/users/Kane610/gists{/gist_id}","starred_url":"https://api.github.com/users/Kane610/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Kane610/subscriptions","organizations_url":"https://api.github.com/users/Kane610/orgs","repos_url":"https://api.github.com/users/Kane610/repos","events_url":"https://api.github.com/users/Kane610/events{/privacy}","received_events_url":"https://api.github.com/users/Kane610/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Kane610/home-assistant","description":":house_with_garden: Open-source home automation platform running on Python 3","fork":true,"url":"https://api.github.com/repos/Kane610/home-assistant","forks_url":"https://api.github.com/repos/Kane610/home-assistant/forks","keys_url":"https://api.github.com/repos/Kane610/home-assistant/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Kane610/home-assistant/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Kane610/home-assistant/teams","hooks_url":"https://api.github.com/repos/Kane610/home-assistant/hooks","issue_events_url":"https://api.github.com/repos/Kane610/home-assistant/issues/events{/number}","events_url":"https://api.github.com/repos/Kane610/home-assistant/events","assignees_url":"https://api.github.com/repos/Kane610/home-assistant/assignees{/user}","branches_url":"https://api.github.com/repos/Kane610/home-assistant/branches{/branch}","tags_url":"https://api.github.com/repos/Kane610/home-assistant/tags","blobs_url":"https://api.github.com/repos/Kane610/home-assistant/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Kane610/home-assistant/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Kane610/home-assistant/git/refs{/sha}","trees_url":"https://api.github.com/repos/Kane610/home-assistant/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Kane610/home-assistant/statuses/{sha}","languages_url":"https://api.github.com/repos/Kane610/home-assistant/languages","stargazers_url":"https://api.github.com/repos/Kane610/home-assistant/stargazers","contributors_url":"https://api.github.com/repos/Kane610/home-assistant/contributors","subscribers_url":"https://api.github.com/repos/Kane610/home-assistant/subscribers","subscription_url":"https://api.github.com/repos/Kane610/home-assistant/subscription","commits_url":"https://api.github.com/repos/Kane610/home-assistant/commits{/sha}","git_commits_url":"https://api.github.com/repos/Kane610/home-assistant/git/commits{/sha}","comments_url":"https://api.github.com/repos/Kane610/home-assistant/comments{/number}","issue_comment_url":"https://api.github.com/repos/Kane610/home-assistant/issues/comments{/number}","contents_url":"https://api.github.com/repos/Kane610/home-assistant/contents/{+path}","compare_url":"https://api.github.com/repos/Kane610/home-assistant/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Kane610/home-assistant/merges","archive_url":"https://api.github.com/repos/Kane610/home-assistant/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Kane610/home-assistant/downloads","issues_url":"https://api.github.com/repos/Kane610/home-assistant/issues{/number}","pulls_url":"https://api.github.com/repos/Kane610/home-assistant/pulls{/number}","milestones_url":"https://api.github.com/repos/Kane610/home-assistant/milestones{/number}","notifications_url":"https://api.github.com/repos/Kane610/home-assistant/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Kane610/home-assistant/labels{/name}","releases_url":"https://api.github.com/repos/Kane610/home-assistant/releases{/id}","deployments_url":"https://api.github.com/repos/Kane610/home-assistant/deployments","created_at":"2017-04-27T09:42:06Z","updated_at":"2017-11-15T09:56:40Z","pushed_at":"2017-11-25T13:03:07Z","git_url":"git://github.com/Kane610/home-assistant.git","ssh_url":"git@github.com:Kane610/home-assistant.git","clone_url":"https://github.com/Kane610/home-assistant.git","svn_url":"https://github.com/Kane610/home-assistant","homepage":"https://home-assistant.io","size":75985,"stargazers_count":1,"watchers_count":1,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":1,"default_branch":"dev"}},"base":{"label":"home-assistant:dev","ref":"dev","sha":"dbbbe1ceef4e24c356747f21705bc25433ca750f","user":{"login":"home-assistant","id":13844975,"avatar_url":"https://avatars3.githubusercontent.com/u/13844975?v=4","gravatar_id":"","url":"https://api.github.com/users/home-assistant","html_url":"https://github.com/home-assistant","followers_url":"https://api.github.com/users/home-assistant/followers","following_url":"https://api.github.com/users/home-assistant/following{/other_user}","gists_url":"https://api.github.com/users/home-assistant/gists{/gist_id}","starred_url":"https://api.github.com/users/home-assistant/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/home-assistant/subscriptions","organizations_url":"https://api.github.com/users/home-assistant/orgs","repos_url":"https://api.github.com/users/home-assistant/repos","events_url":"https://api.github.com/users/home-assistant/events{/privacy}","received_events_url":"https://api.github.com/users/home-assistant/received_events","type":"Organization","site_admin":false},"repo":{"id":12888993,"name":"home-assistant","full_name":"home-assistant/home-assistant","owner":{"login":"home-assistant","id":13844975,"avatar_url":"https://avatars3.githubusercontent.com/u/13844975?v=4","gravatar_id":"","url":"https://api.github.com/users/home-assistant","html_url":"https://github.com/home-assistant","followers_url":"https://api.github.com/users/home-assistant/followers","following_url":"https://api.github.com/users/home-assistant/following{/other_user}","gists_url":"https://api.github.com/users/home-assistant/gists{/gist_id}","starred_url":"https://api.github.com/users/home-assistant/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/home-assistant/subscriptions","organizations_url":"https://api.github.com/users/home-assistant/orgs","repos_url":"https://api.github.com/users/home-assistant/repos","events_url":"https://api.github.com/users/home-assistant/events{/privacy}","received_events_url":"https://api.github.com/users/home-assistant/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/home-assistant/home-assistant","description":":house_with_garden: Open-source home automation platform running on Python 3","fork":false,"url":"https://api.github.com/repos/home-assistant/home-assistant","forks_url":"https://api.github.com/repos/home-assistant/home-assistant/forks","keys_url":"https://api.github.com/repos/home-assistant/home-assistant/keys{/key_id}","collaborators_url":"https://api.github.com/repos/home-assistant/home-assistant/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/home-assistant/home-assistant/teams","hooks_url":"https://api.github.com/repos/home-assistant/home-assistant/hooks","issue_events_url":"https://api.github.com/repos/home-assistant/home-assistant/issues/events{/number}","events_url":"https://api.github.com/repos/home-assistant/home-assistant/events","assignees_url":"https://api.github.com/repos/home-assistant/home-assistant/assignees{/user}","branches_url":"https://api.github.com/repos/home-assistant/home-assistant/branches{/branch}","tags_url":"https://api.github.com/repos/home-assistant/home-assistant/tags","blobs_url":"https://api.github.com/repos/home-assistant/home-assistant/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/home-assistant/home-assistant/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/home-assistant/home-assistant/git/refs{/sha}","trees_url":"https://api.github.com/repos/home-assistant/home-assistant/git/trees{/sha}","statuses_url":"https://api.github.com/repos/home-assistant/home-assistant/statuses/{sha}","languages_url":"https://api.github.com/repos/home-assistant/home-assistant/languages","stargazers_url":"https://api.github.com/repos/home-assistant/home-assistant/stargazers","contributors_url":"https://api.github.com/repos/home-assistant/home-assistant/contributors","subscribers_url":"https://api.github.com/repos/home-assistant/home-assistant/subscribers","subscription_url":"https://api.github.com/repos/home-assistant/home-assistant/subscription","commits_url":"https://api.github.com/repos/home-assistant/home-assistant/commits{/sha}","git_commits_url":"https://api.github.com/repos/home-assistant/home-assistant/git/commits{/sha}","comments_url":"https://api.github.com/repos/home-assistant/home-assistant/comments{/number}","issue_comment_url":"https://api.github.com/repos/home-assistant/home-assistant/issues/comments{/number}","contents_url":"https://api.github.com/repos/home-assistant/home-assistant/contents/{+path}","compare_url":"https://api.github.com/repos/home-assistant/home-assistant/compare/{base}...{head}","merges_url":"https://api.github.com/repos/home-assistant/home-assistant/merges","archive_url":"https://api.github.com/repos/home-assistant/home-assistant/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/home-assistant/home-assistant/downloads","issues_url":"https://api.github.com/repos/home-assistant/home-assistant/issues{/number}","pulls_url":"https://api.github.com/repos/home-assistant/home-assistant/pulls{/number}","milestones_url":"https://api.github.com/repos/home-assistant/home-assistant/milestones{/number}","notifications_url":"https://api.github.com/repos/home-assistant/home-assistant/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/home-assistant/home-assistant/labels{/name}","releases_url":"https://api.github.com/repos/home-assistant/home-assistant/releases{/id}","deployments_url":"https://api.github.com/repos/home-assistant/home-assistant/deployments","created_at":"2013-09-17T07:29:48Z","updated_at":"2017-11-25T14:36:25Z","pushed_at":"2017-11-25T14:25:21Z","git_url":"git://github.com/home-assistant/home-assistant.git","ssh_url":"git@github.com:home-assistant/home-assistant.git","clone_url":"https://github.com/home-assistant/home-assistant.git","svn_url":"https://github.com/home-assistant/home-assistant","homepage":"https://home-assistant.io","size":76168,"stargazers_count":10454,"watchers_count":10454,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":2973,"mirror_url":null,"archived":false,"open_issues_count":625,"forks":2973,"open_issues":625,"watchers":10454,"default_branch":"dev"}},"_links":{"self":{"href":"https://api.github.com/repos/home-assistant/home-assistant/pulls/10321"},"html":{"href":"https://github.com/home-assistant/home-assistant/pull/10321"},"issue":{"href":"https://api.github.com/repos/home-assistant/home-assistant/issues/10321"},"comments":{"href":"https://api.github.com/repos/home-assistant/home-assistant/issues/10321/comments"},"review_comments":{"href":"https://api.github.com/repos/home-assistant/home-assistant/pulls/10321/comments"},"review_comment":{"href":"https://api.github.com/repos/home-assistant/home-assistant/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/home-assistant/home-assistant/pulls/10321/commits"},"statuses":{"href":"https://api.github.com/repos/home-assistant/home-assistant/statuses/3ae4dea34fe54e733e53f31b3442df64a29470d6"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"Kane610"}}