{"action":"created","comment":{"url":"https://api.github.com/repos/balloob/home-assistant/pulls/comments/51692930","id":51692930,"diff_hunk":"@@ -6,212 +6,79 @@\n For more details about this platform, please refer to the documentation at\n https://home-assistant.io/components/light.hue/\n \"\"\"\n-import json\n import logging\n-import os\n-import socket\n import random\n-from datetime import timedelta\n-from urllib.parse import urlparse\n-\n-from homeassistant.loader import get_component\n-import homeassistant.util as util\n import homeassistant.util.color as color_util\n-from homeassistant.const import CONF_HOST, CONF_FILENAME, DEVICE_DEFAULT_NAME\n from homeassistant.components.light import (\n     Light, ATTR_BRIGHTNESS, ATTR_XY_COLOR, ATTR_COLOR_TEMP,\n     ATTR_TRANSITION, ATTR_FLASH, FLASH_LONG, FLASH_SHORT,\n     ATTR_EFFECT, EFFECT_COLORLOOP, EFFECT_RANDOM, ATTR_RGB_COLOR)\n+from homeassistant.const import (\n+    DEVICE_DEFAULT_NAME)\n+from homeassistant.components.hue import (\n+    HUEBRIDGE, ATTR_HUE_BRIDGEID, ATTR_HUE_LIGHTS)\n \n-REQUIREMENTS = ['phue==0.8']\n-MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10)\n-MIN_TIME_BETWEEN_FORCED_SCANS = timedelta(milliseconds=100)\n-\n-PHUE_CONFIG_FILE = \"phue.conf\"\n-\n-\n-# Map ip to request id for configuring\n-_CONFIGURING = {}\n _LOGGER = logging.getLogger(__name__)\n \n \n-def _find_host_from_config(hass, filename=PHUE_CONFIG_FILE):\n-    \"\"\" Attempt to detect host based on existing configuration. \"\"\"\n-    path = hass.config.path(filename)\n-\n-    if not os.path.isfile(path):\n-        return None\n-\n-    try:\n-        with open(path) as inp:\n-            return next(json.loads(''.join(inp)).keys().__iter__())\n-    except (ValueError, AttributeError, StopIteration):\n-        # ValueError if can't parse as JSON\n-        # AttributeError if JSON value is not a dict\n-        # StopIteration if no keys\n-        return None\n-\n-\n-def setup_platform(hass, config, add_devices_callback, discovery_info=None):\n-    \"\"\" Gets the Hue lights. \"\"\"\n-    filename = config.get(CONF_FILENAME, PHUE_CONFIG_FILE)\n-    if discovery_info is not None:\n-        host = urlparse(discovery_info[1]).hostname\n-    else:\n-        host = config.get(CONF_HOST, None)\n-\n-        if host is None:\n-            host = _find_host_from_config(hass, filename)\n-\n-        if host is None:\n-            _LOGGER.error('No host found in configuration')\n-            return False\n-\n-    # Only act if we are not already configuring this host\n-    if host in _CONFIGURING:\n-        return\n-\n-    setup_bridge(host, hass, add_devices_callback, filename)\n-\n-\n-def setup_bridge(host, hass, add_devices_callback, filename):\n-    \"\"\" Setup a phue bridge based on host parameter. \"\"\"\n-    import phue\n-\n-    try:\n-        bridge = phue.Bridge(\n-            host,\n-            config_file_path=hass.config.path(filename))\n-    except ConnectionRefusedError:  # Wrong host was given\n-        _LOGGER.exception(\"Error connecting to the Hue bridge at %s\", host)\n-\n-        return\n-\n-    except phue.PhueRegistrationException:\n-        _LOGGER.warning(\"Connected to Hue at %s but not registered.\", host)\n-\n-        request_configuration(host, hass, add_devices_callback, filename)\n-\n+def setup_platform(hass, config, add_devices, discovery_info=None):\n+    \"\"\" Find and add Hue lights. \"\"\"\n+    if discovery_info is None:\n         return\n \n-    # If we came here and configuring this host, mark as done\n-    if host in _CONFIGURING:\n-        request_id = _CONFIGURING.pop(host)\n-\n-        configurator = get_component('configurator')\n-\n-        configurator.request_done(request_id)\n-\n-    lights = {}\n-\n-    @util.Throttle(MIN_TIME_BETWEEN_SCANS, MIN_TIME_BETWEEN_FORCED_SCANS)\n-    def update_lights():\n-        \"\"\" Updates the Hue light objects with latest info from the bridge. \"\"\"\n-        try:\n-            api = bridge.get_api()\n-        except socket.error:\n-            # socket.error when we cannot reach Hue\n-            _LOGGER.exception(\"Cannot reach the bridge\")\n-            return\n-\n-        api_states = api.get('lights')\n-\n-        if not isinstance(api_states, dict):\n-            _LOGGER.error(\"Got unexpected result from Hue API\")\n-            return\n-\n-        new_lights = []\n-\n-        api_name = api.get('config').get('name')\n-        if api_name == 'RaspBee-GW':\n-            bridge_type = 'deconz'\n-        else:\n-            bridge_type = 'hue'\n-\n-        for light_id, info in api_states.items():\n-            if light_id not in lights:\n-                lights[light_id] = HueLight(int(light_id), info,\n-                                            bridge, update_lights,\n-                                            bridge_type=bridge_type)\n-                new_lights.append(lights[light_id])\n-            else:\n-                lights[light_id].info = info\n-\n-        if new_lights:\n-            add_devices_callback(new_lights)\n-\n-    update_lights()\n-\n-\n-def request_configuration(host, hass, add_devices_callback, filename):\n-    \"\"\" Request configuration steps from the user. \"\"\"\n-    configurator = get_component('configurator')\n-\n-    # We got an error if this method is called while we are configuring\n-    if host in _CONFIGURING:\n-        configurator.notify_errors(\n-            _CONFIGURING[host], \"Failed to register, please try again.\")\n-\n-        return\n-\n-    # pylint: disable=unused-argument\n-    def hue_configuration_callback(data):\n-        \"\"\" Actions to do when our configuration callback is called. \"\"\"\n-        setup_bridge(host, hass, add_devices_callback, filename)\n-\n-    _CONFIGURING[host] = configurator.request_config(\n-        hass, \"Philips Hue\", hue_configuration_callback,\n-        description=(\"Press the button on the bridge to register Philips Hue \"\n-                     \"with Home Assistant.\"),\n-        description_image=\"/static/images/config_philips_hue.jpg\",\n-        submit_caption=\"I have pressed the button\"\n-    )\n+    # FIXME / debuglog\n+    _LOGGER.warning('Discovery info: %s', discovery_info)\n+    bridge_id = discovery_info.get(ATTR_HUE_BRIDGEID)\n+    for light_id in discovery_info.get(ATTR_HUE_LIGHTS):\n+        # FIXME / debuglog\n+        _LOGGER.warning('Found HueLamp: %s', light_id)\n+        # FIXME / Rewrite this to one add_devices call\n+        add_devices([HueLight(bridge_id, light_id)])\n \n \n class HueLight(Light):\n     \"\"\" Represents a Hue light \"\"\"\n \n     # pylint: disable=too-many-arguments\n-    def __init__(self, light_id, info, bridge, update_lights,\n-                 bridge_type='hue'):\n+    def __init__(self, bridge_id, light_id):\n+        self.bridge = HUEBRIDGE.get(bridge_id)\n         self.light_id = light_id\n-        self.info = info\n-        self.bridge = bridge\n-        self.update_lights = update_lights\n-        self.bridge_type = bridge_type\n+        # FIXME / debuglog\n+        _LOGGER.warning('init new light %s on hub %s', light_id, bridge_id)\n+\n+    def info(self):\n+        return self.bridge.get_state(ATTR_HUE_LIGHTS, self.light_id)","path":"homeassistant/components/light/hue.py","position":198,"original_position":198,"commit_id":"69e578a9da87e865bf1c4ad115bb44de5543a36a","original_commit_id":"69e578a9da87e865bf1c4ad115bb44de5543a36a","user":{"login":"tomduijf","id":8886397,"avatar_url":"https://avatars.githubusercontent.com/u/8886397?v=3","gravatar_id":"","url":"https://api.github.com/users/tomduijf","html_url":"https://github.com/tomduijf","followers_url":"https://api.github.com/users/tomduijf/followers","following_url":"https://api.github.com/users/tomduijf/following{/other_user}","gists_url":"https://api.github.com/users/tomduijf/gists{/gist_id}","starred_url":"https://api.github.com/users/tomduijf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tomduijf/subscriptions","organizations_url":"https://api.github.com/users/tomduijf/orgs","repos_url":"https://api.github.com/users/tomduijf/repos","events_url":"https://api.github.com/users/tomduijf/events{/privacy}","received_events_url":"https://api.github.com/users/tomduijf/received_events","type":"User","site_admin":false},"body":"Ah info was on the cleanup todo.\r\nThe idea is that the bridge class caches state information (bri, col, etc) for all devices. All info is passed by reference. I make a quick info() wrapper so i could revert back quickly in case it didnt work well.\r\n\r\nI wanted to prevent data duplication. Either i query the bridge once per connected devices per action, or I query once for all connected in the bridge class and pass it by reference, while calling update.\r\n\r\nIn the latter, a light's properties can change due ti another light's update call.","created_at":"2016-02-03T08:50:35Z","updated_at":"2016-02-03T08:50:35Z","html_url":"https://github.com/balloob/home-assistant/pull/1104#discussion_r51692930","pull_request_url":"https://api.github.com/repos/balloob/home-assistant/pulls/1104","_links":{"self":{"href":"https://api.github.com/repos/balloob/home-assistant/pulls/comments/51692930"},"html":{"href":"https://github.com/balloob/home-assistant/pull/1104#discussion_r51692930"},"pull_request":{"href":"https://api.github.com/repos/balloob/home-assistant/pulls/1104"}}},"pull_request":{"url":"https://api.github.com/repos/balloob/home-assistant/pulls/1104","id":58077142,"html_url":"https://github.com/balloob/home-assistant/pull/1104","diff_url":"https://github.com/balloob/home-assistant/pull/1104.diff","patch_url":"https://github.com/balloob/home-assistant/pull/1104.patch","issue_url":"https://api.github.com/repos/balloob/home-assistant/issues/1104","number":1104,"state":"open","locked":false,"title":"Splitting hue","user":{"login":"tomduijf","id":8886397,"avatar_url":"https://avatars.githubusercontent.com/u/8886397?v=3","gravatar_id":"","url":"https://api.github.com/users/tomduijf","html_url":"https://github.com/tomduijf","followers_url":"https://api.github.com/users/tomduijf/followers","following_url":"https://api.github.com/users/tomduijf/following{/other_user}","gists_url":"https://api.github.com/users/tomduijf/gists{/gist_id}","starred_url":"https://api.github.com/users/tomduijf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tomduijf/subscriptions","organizations_url":"https://api.github.com/users/tomduijf/orgs","repos_url":"https://api.github.com/users/tomduijf/repos","events_url":"https://api.github.com/users/tomduijf/events{/privacy}","received_events_url":"https://api.github.com/users/tomduijf/received_events","type":"User","site_admin":false},"body":"## Feedback request\r\nI'd like to get some feedback on certain things in this PR. Depending on the amount of fixes, I may submit a new one after fixes.\r\n\r\n## Purpose of PR\r\nSo, feature of this branch is to split the existing Hue platform into it's own component and a light platform.\r\nReasons are as follows:\r\n* Prepare for supporting Hue Tap, wall switch, wall dimmer, etc\r\n* The bridge is now split off from the light allowing for separate polling\r\n  * Add new lights on the fly after initial setup\r\n  * Don't require at least one initialised light for the bridge to pol (still the case, want to find a solution)\r\n\r\nSome minor fixes\r\n* Support multiple hue bridges in configuration and phue.conf\r\n\r\nFeatures (not new, but still working)\r\n* discovery of bridge via netdisco\r\n* multiple bridges supported\r\n* Use of configurator when new bridge is detected","created_at":"2016-02-03T01:10:36Z","updated_at":"2016-02-03T08:50:35Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5509acbcdad85b7ac0de60c6fb0abb8b16c448fb","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/balloob/home-assistant/pulls/1104/commits","review_comments_url":"https://api.github.com/repos/balloob/home-assistant/pulls/1104/comments","review_comment_url":"https://api.github.com/repos/balloob/home-assistant/pulls/comments{/number}","comments_url":"https://api.github.com/repos/balloob/home-assistant/issues/1104/comments","statuses_url":"https://api.github.com/repos/balloob/home-assistant/statuses/69e578a9da87e865bf1c4ad115bb44de5543a36a","head":{"label":"balloob:splitting_hue","ref":"splitting_hue","sha":"69e578a9da87e865bf1c4ad115bb44de5543a36a","user":{"login":"balloob","id":1444314,"avatar_url":"https://avatars.githubusercontent.com/u/1444314?v=3","gravatar_id":"","url":"https://api.github.com/users/balloob","html_url":"https://github.com/balloob","followers_url":"https://api.github.com/users/balloob/followers","following_url":"https://api.github.com/users/balloob/following{/other_user}","gists_url":"https://api.github.com/users/balloob/gists{/gist_id}","starred_url":"https://api.github.com/users/balloob/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/balloob/subscriptions","organizations_url":"https://api.github.com/users/balloob/orgs","repos_url":"https://api.github.com/users/balloob/repos","events_url":"https://api.github.com/users/balloob/events{/privacy}","received_events_url":"https://api.github.com/users/balloob/received_events","type":"User","site_admin":false},"repo":{"id":12888993,"name":"home-assistant","full_name":"balloob/home-assistant","owner":{"login":"balloob","id":1444314,"avatar_url":"https://avatars.githubusercontent.com/u/1444314?v=3","gravatar_id":"","url":"https://api.github.com/users/balloob","html_url":"https://github.com/balloob","followers_url":"https://api.github.com/users/balloob/followers","following_url":"https://api.github.com/users/balloob/following{/other_user}","gists_url":"https://api.github.com/users/balloob/gists{/gist_id}","starred_url":"https://api.github.com/users/balloob/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/balloob/subscriptions","organizations_url":"https://api.github.com/users/balloob/orgs","repos_url":"https://api.github.com/users/balloob/repos","events_url":"https://api.github.com/users/balloob/events{/privacy}","received_events_url":"https://api.github.com/users/balloob/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/balloob/home-assistant","description":":house_with_garden: Open-source home automation platform running on Python 3","fork":false,"url":"https://api.github.com/repos/balloob/home-assistant","forks_url":"https://api.github.com/repos/balloob/home-assistant/forks","keys_url":"https://api.github.com/repos/balloob/home-assistant/keys{/key_id}","collaborators_url":"https://api.github.com/repos/balloob/home-assistant/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/balloob/home-assistant/teams","hooks_url":"https://api.github.com/repos/balloob/home-assistant/hooks","issue_events_url":"https://api.github.com/repos/balloob/home-assistant/issues/events{/number}","events_url":"https://api.github.com/repos/balloob/home-assistant/events","assignees_url":"https://api.github.com/repos/balloob/home-assistant/assignees{/user}","branches_url":"https://api.github.com/repos/balloob/home-assistant/branches{/branch}","tags_url":"https://api.github.com/repos/balloob/home-assistant/tags","blobs_url":"https://api.github.com/repos/balloob/home-assistant/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/balloob/home-assistant/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/balloob/home-assistant/git/refs{/sha}","trees_url":"https://api.github.com/repos/balloob/home-assistant/git/trees{/sha}","statuses_url":"https://api.github.com/repos/balloob/home-assistant/statuses/{sha}","languages_url":"https://api.github.com/repos/balloob/home-assistant/languages","stargazers_url":"https://api.github.com/repos/balloob/home-assistant/stargazers","contributors_url":"https://api.github.com/repos/balloob/home-assistant/contributors","subscribers_url":"https://api.github.com/repos/balloob/home-assistant/subscribers","subscription_url":"https://api.github.com/repos/balloob/home-assistant/subscription","commits_url":"https://api.github.com/repos/balloob/home-assistant/commits{/sha}","git_commits_url":"https://api.github.com/repos/balloob/home-assistant/git/commits{/sha}","comments_url":"https://api.github.com/repos/balloob/home-assistant/comments{/number}","issue_comment_url":"https://api.github.com/repos/balloob/home-assistant/issues/comments{/number}","contents_url":"https://api.github.com/repos/balloob/home-assistant/contents/{+path}","compare_url":"https://api.github.com/repos/balloob/home-assistant/compare/{base}...{head}","merges_url":"https://api.github.com/repos/balloob/home-assistant/merges","archive_url":"https://api.github.com/repos/balloob/home-assistant/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/balloob/home-assistant/downloads","issues_url":"https://api.github.com/repos/balloob/home-assistant/issues{/number}","pulls_url":"https://api.github.com/repos/balloob/home-assistant/pulls{/number}","milestones_url":"https://api.github.com/repos/balloob/home-assistant/milestones{/number}","notifications_url":"https://api.github.com/repos/balloob/home-assistant/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/balloob/home-assistant/labels{/name}","releases_url":"https://api.github.com/repos/balloob/home-assistant/releases{/id}","deployments_url":"https://api.github.com/repos/balloob/home-assistant/deployments","created_at":"2013-09-17T07:29:48Z","updated_at":"2016-02-03T08:07:00Z","pushed_at":"2016-02-03T08:15:55Z","git_url":"git://github.com/balloob/home-assistant.git","ssh_url":"git@github.com:balloob/home-assistant.git","clone_url":"https://github.com/balloob/home-assistant.git","svn_url":"https://github.com/balloob/home-assistant","homepage":"https://home-assistant.io","size":40263,"stargazers_count":2675,"watchers_count":2675,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":415,"mirror_url":null,"open_issues_count":132,"forks":415,"open_issues":132,"watchers":2675,"default_branch":"dev"}},"base":{"label":"balloob:dev","ref":"dev","sha":"b19fbd8e72b5c07437a69048747cf0cb43bc7b60","user":{"login":"balloob","id":1444314,"avatar_url":"https://avatars.githubusercontent.com/u/1444314?v=3","gravatar_id":"","url":"https://api.github.com/users/balloob","html_url":"https://github.com/balloob","followers_url":"https://api.github.com/users/balloob/followers","following_url":"https://api.github.com/users/balloob/following{/other_user}","gists_url":"https://api.github.com/users/balloob/gists{/gist_id}","starred_url":"https://api.github.com/users/balloob/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/balloob/subscriptions","organizations_url":"https://api.github.com/users/balloob/orgs","repos_url":"https://api.github.com/users/balloob/repos","events_url":"https://api.github.com/users/balloob/events{/privacy}","received_events_url":"https://api.github.com/users/balloob/received_events","type":"User","site_admin":false},"repo":{"id":12888993,"name":"home-assistant","full_name":"balloob/home-assistant","owner":{"login":"balloob","id":1444314,"avatar_url":"https://avatars.githubusercontent.com/u/1444314?v=3","gravatar_id":"","url":"https://api.github.com/users/balloob","html_url":"https://github.com/balloob","followers_url":"https://api.github.com/users/balloob/followers","following_url":"https://api.github.com/users/balloob/following{/other_user}","gists_url":"https://api.github.com/users/balloob/gists{/gist_id}","starred_url":"https://api.github.com/users/balloob/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/balloob/subscriptions","organizations_url":"https://api.github.com/users/balloob/orgs","repos_url":"https://api.github.com/users/balloob/repos","events_url":"https://api.github.com/users/balloob/events{/privacy}","received_events_url":"https://api.github.com/users/balloob/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/balloob/home-assistant","description":":house_with_garden: Open-source home automation platform running on Python 3","fork":false,"url":"https://api.github.com/repos/balloob/home-assistant","forks_url":"https://api.github.com/repos/balloob/home-assistant/forks","keys_url":"https://api.github.com/repos/balloob/home-assistant/keys{/key_id}","collaborators_url":"https://api.github.com/repos/balloob/home-assistant/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/balloob/home-assistant/teams","hooks_url":"https://api.github.com/repos/balloob/home-assistant/hooks","issue_events_url":"https://api.github.com/repos/balloob/home-assistant/issues/events{/number}","events_url":"https://api.github.com/repos/balloob/home-assistant/events","assignees_url":"https://api.github.com/repos/balloob/home-assistant/assignees{/user}","branches_url":"https://api.github.com/repos/balloob/home-assistant/branches{/branch}","tags_url":"https://api.github.com/repos/balloob/home-assistant/tags","blobs_url":"https://api.github.com/repos/balloob/home-assistant/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/balloob/home-assistant/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/balloob/home-assistant/git/refs{/sha}","trees_url":"https://api.github.com/repos/balloob/home-assistant/git/trees{/sha}","statuses_url":"https://api.github.com/repos/balloob/home-assistant/statuses/{sha}","languages_url":"https://api.github.com/repos/balloob/home-assistant/languages","stargazers_url":"https://api.github.com/repos/balloob/home-assistant/stargazers","contributors_url":"https://api.github.com/repos/balloob/home-assistant/contributors","subscribers_url":"https://api.github.com/repos/balloob/home-assistant/subscribers","subscription_url":"https://api.github.com/repos/balloob/home-assistant/subscription","commits_url":"https://api.github.com/repos/balloob/home-assistant/commits{/sha}","git_commits_url":"https://api.github.com/repos/balloob/home-assistant/git/commits{/sha}","comments_url":"https://api.github.com/repos/balloob/home-assistant/comments{/number}","issue_comment_url":"https://api.github.com/repos/balloob/home-assistant/issues/comments{/number}","contents_url":"https://api.github.com/repos/balloob/home-assistant/contents/{+path}","compare_url":"https://api.github.com/repos/balloob/home-assistant/compare/{base}...{head}","merges_url":"https://api.github.com/repos/balloob/home-assistant/merges","archive_url":"https://api.github.com/repos/balloob/home-assistant/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/balloob/home-assistant/downloads","issues_url":"https://api.github.com/repos/balloob/home-assistant/issues{/number}","pulls_url":"https://api.github.com/repos/balloob/home-assistant/pulls{/number}","milestones_url":"https://api.github.com/repos/balloob/home-assistant/milestones{/number}","notifications_url":"https://api.github.com/repos/balloob/home-assistant/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/balloob/home-assistant/labels{/name}","releases_url":"https://api.github.com/repos/balloob/home-assistant/releases{/id}","deployments_url":"https://api.github.com/repos/balloob/home-assistant/deployments","created_at":"2013-09-17T07:29:48Z","updated_at":"2016-02-03T08:07:00Z","pushed_at":"2016-02-03T08:15:55Z","git_url":"git://github.com/balloob/home-assistant.git","ssh_url":"git@github.com:balloob/home-assistant.git","clone_url":"https://github.com/balloob/home-assistant.git","svn_url":"https://github.com/balloob/home-assistant","homepage":"https://home-assistant.io","size":40263,"stargazers_count":2675,"watchers_count":2675,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":415,"mirror_url":null,"open_issues_count":132,"forks":415,"open_issues":132,"watchers":2675,"default_branch":"dev"}},"_links":{"self":{"href":"https://api.github.com/repos/balloob/home-assistant/pulls/1104"},"html":{"href":"https://github.com/balloob/home-assistant/pull/1104"},"issue":{"href":"https://api.github.com/repos/balloob/home-assistant/issues/1104"},"comments":{"href":"https://api.github.com/repos/balloob/home-assistant/issues/1104/comments"},"review_comments":{"href":"https://api.github.com/repos/balloob/home-assistant/pulls/1104/comments"},"review_comment":{"href":"https://api.github.com/repos/balloob/home-assistant/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/balloob/home-assistant/pulls/1104/commits"},"statuses":{"href":"https://api.github.com/repos/balloob/home-assistant/statuses/69e578a9da87e865bf1c4ad115bb44de5543a36a"}}}}