{"action":"created","comment":{"url":"https://api.github.com/repos/openhab/openhab2-addons/pulls/comments/124553627","pull_request_review_id":46852987,"id":124553627,"diff_hunk":"@@ -0,0 +1,417 @@\n+/**\n+ * Copyright (c) 2010-2017 by the respective copyright holders.\n+ *\n+ * All rights reserved. This program and the accompanying materials\n+ * are made available under the terms of the Eclipse Public License v1.0\n+ * which accompanies this distribution, and is available at\n+ * http://www.eclipse.org/legal/epl-v10.html\n+ */\n+package org.openhab.binding.solarview.handler;\n+\n+import static org.openhab.binding.solarview.solarviewBindingConstants.*;\n+\n+import java.io.BufferedReader;\n+import java.io.DataOutputStream;\n+import java.io.IOException;\n+import java.io.InputStreamReader;\n+import java.math.BigDecimal;\n+import java.net.Socket;\n+import java.util.ArrayList;\n+import java.util.Collection;\n+import java.util.concurrent.ScheduledFuture;\n+import java.util.concurrent.TimeUnit;\n+\n+import org.apache.commons.lang.StringUtils;\n+import org.eclipse.smarthome.config.core.Configuration;\n+import org.eclipse.smarthome.config.core.status.ConfigStatusMessage;\n+import org.eclipse.smarthome.core.library.types.DecimalType;\n+import org.eclipse.smarthome.core.thing.ChannelUID;\n+import org.eclipse.smarthome.core.thing.Thing;\n+import org.eclipse.smarthome.core.thing.ThingStatus;\n+import org.eclipse.smarthome.core.thing.ThingStatusDetail;\n+import org.eclipse.smarthome.core.thing.ThingTypeUID;\n+import org.eclipse.smarthome.core.thing.binding.ConfigStatusThingHandler;\n+import org.eclipse.smarthome.core.types.Command;\n+import org.eclipse.smarthome.core.types.RefreshType;\n+import org.eclipse.smarthome.core.types.State;\n+import org.eclipse.smarthome.core.types.UnDefType;\n+import org.slf4j.Logger;\n+import org.slf4j.LoggerFactory;\n+\n+/**\n+ * The {@link solarviewHandler} is responsible for handling commands, which are\n+ * sent to one of the channels.\n+ *\n+ * @author Guenther Schreiner - Initial contribution\n+ */\n+public class solarviewHandler extends ConfigStatusThingHandler {\n+    /**\n+     * Default values - being modfied by runtime configuration\n+     */\n+    private static final String DEFAULTS_SERVERNAME = \"localhost\";\n+    private static final int DEFAULTS_REFRESH_SECS = 60;\n+    /**\n+     * Default values - should not be modified\n+     */\n+    private static final int SERVER_CONNECTION_DSTPORT = 15000;\n+    private static final int SERVER_CONNECTION_TIMEOUT_MSECS = 2000;\n+    /**\n+     * Communication content parameters - should not be modified\n+     */\n+    private static final String SOLARVIEW_REQUEST_ENERGY_PRODUCTION = \"00*\";\n+    private static final String SOLARVIEW_REQUEST_PRODUCTION_INVERTER_ONE = \"01*\";\n+    private static final String SOLARVIEW_REQUEST_PRODUCTION_INVERTER_TWO = \"02*\";\n+    private static final String SOLARVIEW_REQUEST_PRODUCTION_INVERTER_THREE = \"03*\";\n+    private static final String SOLARVIEW_REQUEST_ENERGY_INJECTION = \"21*\";\n+    private static final String SOLARVIEW_REQUEST_ENERGY_IMPORT = \"22*\";\n+    private static final String SOLARVIEW_REQUEST_EOL = \"\\r\\n\";\n+\n+    private static final String SOLARVIEW_RESPONSE_ITEM_DELIM = \",\";\n+    /**\n+     * All available channels\n+     */\n+    private static final String[] channels = { CHANNEL_KT0, CHANNEL_KYR, CHANNEL_KMT, CHANNEL_KDY, CHANNEL_PAC,\n+            CHANNEL_UDC, CHANNEL_IDC, CHANNEL_UDCB, CHANNEL_IDCB, CHANNEL_UDCC, CHANNEL_IDCC, CHANNEL_UL1, CHANNEL_IL1,\n+            CHANNEL_TKK };\n+\n+    private final Logger logger = LoggerFactory.getLogger(solarviewHandler.class);\n+\n+    /** Solarview host */\n+    private String hostname;\n+    /** refresh interval */\n+    private BigDecimal refreshInterval;\n+    /** Solarview query string */\n+    private String queryString;\n+\n+    ScheduledFuture<?> refreshJob;\n+    /** Energy information */\n+    private String energyInformation = null;\n+\n+    public solarviewHandler(Thing thing) {\n+        super(thing);\n+    }\n+\n+    /**\n+     * {@inheritDoc}\n+     */\n+    @Override\n+    public void initialize() {\n+        logger.info(\"Initializing Solarview handler for '{}'.\", getThing().getUID().toString());\n+\n+        //\n+        // Determine query string\n+        //\n+        ThingTypeUID thingTypeUID = getThing().getThingTypeUID();\n+        if (thingTypeUID.equals(THING_TYPE_ENERGY_PRODUCTION)) {\n+            this.queryString = SOLARVIEW_REQUEST_ENERGY_PRODUCTION;\n+        } else if (thingTypeUID.equals(THING_TYPE_PRODUCTION_INVERTER_ONE)) {\n+            this.queryString = SOLARVIEW_REQUEST_PRODUCTION_INVERTER_ONE;\n+        } else if (thingTypeUID.equals(THING_TYPE_PRODUCTION_INVERTER_TWO)) {\n+            this.queryString = SOLARVIEW_REQUEST_PRODUCTION_INVERTER_TWO;\n+        } else if (thingTypeUID.equals(THING_TYPE_PRODUCTION_INVERTER_THREE)) {\n+            this.queryString = SOLARVIEW_REQUEST_PRODUCTION_INVERTER_THREE;\n+        } else if (thingTypeUID.equals(THING_TYPE_ENERGY_INJECTION)) {\n+            this.queryString = SOLARVIEW_REQUEST_ENERGY_INJECTION;\n+        } else if (thingTypeUID.equals(THING_TYPE_ENERGY_IMPORT)) {\n+            this.queryString = SOLARVIEW_REQUEST_ENERGY_IMPORT;\n+        }\n+        logger.trace(\"initialize(): Solarview Query String set to {}.\", queryString);\n+\n+        Configuration config = getThing().getConfiguration();\n+        //\n+        // hostname parameter\n+        //\n+        try {\n+            hostname = (String) config.get(PROPERTY_SOLARVIEW_SERVER);\n+        } catch (Exception e) {\n+            logger.warn(\"Cannot set hostname parameter.\", e);\n+            updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,\n+                    \"Can not access Solarview as hostname is invalid.\");\n+        }\n+\n+        if (hostname == null) {\n+            // let's go for the default\n+            hostname = new String(DEFAULTS_SERVERNAME);\n+        }\n+        //\n+        // refreshInterval parameter\n+        //\n+        try {\n+            refreshInterval = (BigDecimal) config.get(PROPERTY_SOLARVIEW_REFRESH_INTERVAL);\n+        } catch (Exception e) {\n+            logger.warn(\"Cannot set refresh parameter.\", e);\n+            updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,\n+                    \"Can not access Solarview as refresh is invalid.\");\n+        }\n+\n+        if (refreshInterval == null) {\n+            // let's go for the default\n+            refreshInterval = new BigDecimal(DEFAULTS_REFRESH_SECS);\n+        }\n+        logger.trace(\"Initialized Solarview handler '{}' with configuration: host '{}', refresh interval {}.\",\n+                getThing().getUID().toString(), hostname, refreshInterval);\n+        boolean success = updateEnergyDataFromServer();\n+        if (!success) {\n+            logger.trace(\"initialize(): finished with status CONFIGURATION_ERROR.\");\n+            updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,\n+                    (\"Can not access information provider (host '\" + hostname + \"', port \" + SERVER_CONNECTION_DSTPORT\n+                            + \").\"));\n+        } else {\n+            updateStatus(ThingStatus.ONLINE);\n+            startAutomaticRefresh();\n+            logger.trace(\"initialize(): finished with status ONLINE.\");\n+        }\n+    }\n+\n+    /**\n+     * {@inheritDoc}\n+     */\n+    @Override\n+    public void dispose() {\n+        logger.trace(\"dispose() called.\");\n+        refreshJob.cancel(true);\n+        super.dispose();\n+    }\n+\n+    /**\n+     * Start the periodic information retrieval from the Solarview server.\n+     */\n+    private void startAutomaticRefresh() {\n+        logger.trace(\"startAutomaticRefresh() called.\");\n+        refreshJob = scheduler.scheduleAtFixedRate(() -> {","path":"addons/binding/org.openhab.binding.solarview/src/main/java/org/openhab/binding/solarview/handler/solarviewHandler.java","position":181,"original_position":181,"commit_id":"de9f167a5e68d7bec45231fe67f892a473eadff4","original_commit_id":"de9f167a5e68d7bec45231fe67f892a473eadff4","user":{"login":"gs4711","id":13034600,"avatar_url":"https://avatars0.githubusercontent.com/u/13034600?v=3","gravatar_id":"","url":"https://api.github.com/users/gs4711","html_url":"https://github.com/gs4711","followers_url":"https://api.github.com/users/gs4711/followers","following_url":"https://api.github.com/users/gs4711/following{/other_user}","gists_url":"https://api.github.com/users/gs4711/gists{/gist_id}","starred_url":"https://api.github.com/users/gs4711/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gs4711/subscriptions","organizations_url":"https://api.github.com/users/gs4711/orgs","repos_url":"https://api.github.com/users/gs4711/repos","events_url":"https://api.github.com/users/gs4711/events{/privacy}","received_events_url":"https://api.github.com/users/gs4711/received_events","type":"User","site_admin":false},"body":"Well, having read the guidelines and having taken a look into the other bindings (i.e. 42 occurrences of scheduleAtFixedRate within openhab2-addons/addons/binding), I assume that the documentation is not up-to-date ... ","created_at":"2017-06-28T14:19:16Z","updated_at":"2017-06-28T14:19:16Z","html_url":"https://github.com/openhab/openhab2-addons/pull/2402#discussion_r124553627","pull_request_url":"https://api.github.com/repos/openhab/openhab2-addons/pulls/2402","_links":{"self":{"href":"https://api.github.com/repos/openhab/openhab2-addons/pulls/comments/124553627"},"html":{"href":"https://github.com/openhab/openhab2-addons/pull/2402#discussion_r124553627"},"pull_request":{"href":"https://api.github.com/repos/openhab/openhab2-addons/pulls/2402"}}},"pull_request":{"url":"https://api.github.com/repos/openhab/openhab2-addons/pulls/2402","id":127639906,"html_url":"https://github.com/openhab/openhab2-addons/pull/2402","diff_url":"https://github.com/openhab/openhab2-addons/pull/2402.diff","patch_url":"https://github.com/openhab/openhab2-addons/pull/2402.patch","issue_url":"https://api.github.com/repos/openhab/openhab2-addons/issues/2402","number":2402,"state":"open","locked":false,"title":"ADDED: Solarview Photovoltaic Binding","user":{"login":"gs4711","id":13034600,"avatar_url":"https://avatars0.githubusercontent.com/u/13034600?v=3","gravatar_id":"","url":"https://api.github.com/users/gs4711","html_url":"https://github.com/gs4711","followers_url":"https://api.github.com/users/gs4711/followers","following_url":"https://api.github.com/users/gs4711/following{/other_user}","gists_url":"https://api.github.com/users/gs4711/gists{/gist_id}","starred_url":"https://api.github.com/users/gs4711/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gs4711/subscriptions","organizations_url":"https://api.github.com/users/gs4711/orgs","repos_url":"https://api.github.com/users/gs4711/repos","events_url":"https://api.github.com/users/gs4711/events{/privacy}","received_events_url":"https://api.github.com/users/gs4711/received_events","type":"User","site_admin":false},"body":"<!-- Thanks for contributing to the openHAB project! -->\r\n<!-- Please describe the goal and effect of your PR here. -->\r\n<!-- Pay attention to the below notes and to *the guidelines* for this repository. -->\r\n<!-- Feel free to delete any comment lines in the template (starting with \"<!--\"). -->\r\n\r\n<!-- TITLE -->\r\n[solarview] Photovoltaic monitoring system - initial contribution\r\n<!-- Please provide a PR summary in the *Title* above, according to the following schema: -->\r\n<!-- - If related to one specific addon: Mention the addon shortname in square brackets -->\r\n<!--   e.g. \"[exec]\", \"[netatmo]\" or \"[tesla]\" -->\r\n<!-- - If the PR is work in progress: Add \"[WIP]\" -->\r\n<!-- - Give a short meaningful description in imperative mood -->\r\n<!--   e.g. \"Add support for device XYZ\" or \"Fix wrongly handled exception\" -->\r\n<!--   for a new add-on/binding: \"Initial contribution\" -->\r\n<!-- Examples: -->\r\n<!-- - \"[homematic] Improve communication with weak signal devices\" -->\r\n<!-- - \"[timemachine][WIP] Initial contribution\" -->\r\n<!-- - \"Update contribution guidelines on new signing rules\" -->\r\n\r\n<!-- DESCRIPTION -->\r\nThis binding is for users coming from the photovoltaics monitoring-system \"Solarview\". This measurement and monitoring environment provides access to a lot of different energy monitoring devices like inverters and meter readers.\r\n\r\nFor details about the feature, see the following website Solarview (see README.md).\r\n\r\nThe binding is fairly complete and supports the following monitoring functionalities.\r\n\r\n    energy,\r\n    power,\r\n    voltage and\r\n    temperature\r\n\r\nat different levels/devices.\r\n<!-- Please give a few sentences describing the overall goals of the pull request. -->\r\n<!-- Give enough details to make the improvement and changes of the PR understandable  -->\r\n<!-- to both developers and tech-savy users. -->\r\n\r\n<!-- Please keep the following in mind: -->\r\n<!-- - What is the classification of the PR, e.g. Bugfix, Improvement, Novel Addition, ... ? -->\r\n<!-- - Did you describe the PRs motivation and goal? -->\r\n<!-- - Did you provide a link to any prior discussion, e.g. an issue or community forum thread? -->\r\n<!-- - Did you describe new features for the end user? -->\r\n<!-- - Did you describe any noteworthy changes in usage for the end user? --> \r\n<!-- - Was the documentation updated accordingly, e.g. the addon README? -->\r\n<!-- - Does your contribution follow the coding guidelines: -->\r\n<!--   http://docs.openhab.org/developers/development/guidelines.html -->\r\n<!-- - Did you check for any (relevant) issues from the static code analysis: -->\r\n<!--   http://docs.openhab.org/developers/development/bindings.html#static-code-analysis -->\r\n<!-- - Did you sign-off your work: -->\r\n<!--   http://docs.openhab.org/developers/contributing/contributing#sign-your-work -->\r\n","created_at":"2017-06-27T08:42:17Z","updated_at":"2017-06-28T14:19:16Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c2c0bcb6eadc99df07d13ee40788189d1ff717af","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/openhab/openhab2-addons/pulls/2402/commits","review_comments_url":"https://api.github.com/repos/openhab/openhab2-addons/pulls/2402/comments","review_comment_url":"https://api.github.com/repos/openhab/openhab2-addons/pulls/comments{/number}","comments_url":"https://api.github.com/repos/openhab/openhab2-addons/issues/2402/comments","statuses_url":"https://api.github.com/repos/openhab/openhab2-addons/statuses/de9f167a5e68d7bec45231fe67f892a473eadff4","head":{"label":"gs4711:master","ref":"master","sha":"de9f167a5e68d7bec45231fe67f892a473eadff4","user":{"login":"gs4711","id":13034600,"avatar_url":"https://avatars0.githubusercontent.com/u/13034600?v=3","gravatar_id":"","url":"https://api.github.com/users/gs4711","html_url":"https://github.com/gs4711","followers_url":"https://api.github.com/users/gs4711/followers","following_url":"https://api.github.com/users/gs4711/following{/other_user}","gists_url":"https://api.github.com/users/gs4711/gists{/gist_id}","starred_url":"https://api.github.com/users/gs4711/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gs4711/subscriptions","organizations_url":"https://api.github.com/users/gs4711/orgs","repos_url":"https://api.github.com/users/gs4711/repos","events_url":"https://api.github.com/users/gs4711/events{/privacy}","received_events_url":"https://api.github.com/users/gs4711/received_events","type":"User","site_admin":false},"repo":{"id":95528953,"name":"openhab2-addons","full_name":"gs4711/openhab2-addons","owner":{"login":"gs4711","id":13034600,"avatar_url":"https://avatars0.githubusercontent.com/u/13034600?v=3","gravatar_id":"","url":"https://api.github.com/users/gs4711","html_url":"https://github.com/gs4711","followers_url":"https://api.github.com/users/gs4711/followers","following_url":"https://api.github.com/users/gs4711/following{/other_user}","gists_url":"https://api.github.com/users/gs4711/gists{/gist_id}","starred_url":"https://api.github.com/users/gs4711/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gs4711/subscriptions","organizations_url":"https://api.github.com/users/gs4711/orgs","repos_url":"https://api.github.com/users/gs4711/repos","events_url":"https://api.github.com/users/gs4711/events{/privacy}","received_events_url":"https://api.github.com/users/gs4711/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/gs4711/openhab2-addons","description":"Add-ons for openHAB 2.x","fork":true,"url":"https://api.github.com/repos/gs4711/openhab2-addons","forks_url":"https://api.github.com/repos/gs4711/openhab2-addons/forks","keys_url":"https://api.github.com/repos/gs4711/openhab2-addons/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gs4711/openhab2-addons/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gs4711/openhab2-addons/teams","hooks_url":"https://api.github.com/repos/gs4711/openhab2-addons/hooks","issue_events_url":"https://api.github.com/repos/gs4711/openhab2-addons/issues/events{/number}","events_url":"https://api.github.com/repos/gs4711/openhab2-addons/events","assignees_url":"https://api.github.com/repos/gs4711/openhab2-addons/assignees{/user}","branches_url":"https://api.github.com/repos/gs4711/openhab2-addons/branches{/branch}","tags_url":"https://api.github.com/repos/gs4711/openhab2-addons/tags","blobs_url":"https://api.github.com/repos/gs4711/openhab2-addons/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gs4711/openhab2-addons/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gs4711/openhab2-addons/git/refs{/sha}","trees_url":"https://api.github.com/repos/gs4711/openhab2-addons/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gs4711/openhab2-addons/statuses/{sha}","languages_url":"https://api.github.com/repos/gs4711/openhab2-addons/languages","stargazers_url":"https://api.github.com/repos/gs4711/openhab2-addons/stargazers","contributors_url":"https://api.github.com/repos/gs4711/openhab2-addons/contributors","subscribers_url":"https://api.github.com/repos/gs4711/openhab2-addons/subscribers","subscription_url":"https://api.github.com/repos/gs4711/openhab2-addons/subscription","commits_url":"https://api.github.com/repos/gs4711/openhab2-addons/commits{/sha}","git_commits_url":"https://api.github.com/repos/gs4711/openhab2-addons/git/commits{/sha}","comments_url":"https://api.github.com/repos/gs4711/openhab2-addons/comments{/number}","issue_comment_url":"https://api.github.com/repos/gs4711/openhab2-addons/issues/comments{/number}","contents_url":"https://api.github.com/repos/gs4711/openhab2-addons/contents/{+path}","compare_url":"https://api.github.com/repos/gs4711/openhab2-addons/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gs4711/openhab2-addons/merges","archive_url":"https://api.github.com/repos/gs4711/openhab2-addons/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gs4711/openhab2-addons/downloads","issues_url":"https://api.github.com/repos/gs4711/openhab2-addons/issues{/number}","pulls_url":"https://api.github.com/repos/gs4711/openhab2-addons/pulls{/number}","milestones_url":"https://api.github.com/repos/gs4711/openhab2-addons/milestones{/number}","notifications_url":"https://api.github.com/repos/gs4711/openhab2-addons/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gs4711/openhab2-addons/labels{/name}","releases_url":"https://api.github.com/repos/gs4711/openhab2-addons/releases{/id}","deployments_url":"https://api.github.com/repos/gs4711/openhab2-addons/deployments","created_at":"2017-06-27T07:14:32Z","updated_at":"2017-06-27T07:14:40Z","pushed_at":"2017-06-27T08:23:48Z","git_url":"git://github.com/gs4711/openhab2-addons.git","ssh_url":"git@github.com:gs4711/openhab2-addons.git","clone_url":"https://github.com/gs4711/openhab2-addons.git","svn_url":"https://github.com/gs4711/openhab2-addons","homepage":"","size":255954,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"openhab:master","ref":"master","sha":"3e670d2c01194cb0d413706af2af8d6a5829138b","user":{"login":"openhab","id":1007353,"avatar_url":"https://avatars3.githubusercontent.com/u/1007353?v=3","gravatar_id":"","url":"https://api.github.com/users/openhab","html_url":"https://github.com/openhab","followers_url":"https://api.github.com/users/openhab/followers","following_url":"https://api.github.com/users/openhab/following{/other_user}","gists_url":"https://api.github.com/users/openhab/gists{/gist_id}","starred_url":"https://api.github.com/users/openhab/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openhab/subscriptions","organizations_url":"https://api.github.com/users/openhab/orgs","repos_url":"https://api.github.com/users/openhab/repos","events_url":"https://api.github.com/users/openhab/events{/privacy}","received_events_url":"https://api.github.com/users/openhab/received_events","type":"Organization","site_admin":false},"repo":{"id":19753195,"name":"openhab2-addons","full_name":"openhab/openhab2-addons","owner":{"login":"openhab","id":1007353,"avatar_url":"https://avatars3.githubusercontent.com/u/1007353?v=3","gravatar_id":"","url":"https://api.github.com/users/openhab","html_url":"https://github.com/openhab","followers_url":"https://api.github.com/users/openhab/followers","following_url":"https://api.github.com/users/openhab/following{/other_user}","gists_url":"https://api.github.com/users/openhab/gists{/gist_id}","starred_url":"https://api.github.com/users/openhab/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openhab/subscriptions","organizations_url":"https://api.github.com/users/openhab/orgs","repos_url":"https://api.github.com/users/openhab/repos","events_url":"https://api.github.com/users/openhab/events{/privacy}","received_events_url":"https://api.github.com/users/openhab/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/openhab/openhab2-addons","description":"Add-ons for openHAB 2.x","fork":false,"url":"https://api.github.com/repos/openhab/openhab2-addons","forks_url":"https://api.github.com/repos/openhab/openhab2-addons/forks","keys_url":"https://api.github.com/repos/openhab/openhab2-addons/keys{/key_id}","collaborators_url":"https://api.github.com/repos/openhab/openhab2-addons/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/openhab/openhab2-addons/teams","hooks_url":"https://api.github.com/repos/openhab/openhab2-addons/hooks","issue_events_url":"https://api.github.com/repos/openhab/openhab2-addons/issues/events{/number}","events_url":"https://api.github.com/repos/openhab/openhab2-addons/events","assignees_url":"https://api.github.com/repos/openhab/openhab2-addons/assignees{/user}","branches_url":"https://api.github.com/repos/openhab/openhab2-addons/branches{/branch}","tags_url":"https://api.github.com/repos/openhab/openhab2-addons/tags","blobs_url":"https://api.github.com/repos/openhab/openhab2-addons/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/openhab/openhab2-addons/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/openhab/openhab2-addons/git/refs{/sha}","trees_url":"https://api.github.com/repos/openhab/openhab2-addons/git/trees{/sha}","statuses_url":"https://api.github.com/repos/openhab/openhab2-addons/statuses/{sha}","languages_url":"https://api.github.com/repos/openhab/openhab2-addons/languages","stargazers_url":"https://api.github.com/repos/openhab/openhab2-addons/stargazers","contributors_url":"https://api.github.com/repos/openhab/openhab2-addons/contributors","subscribers_url":"https://api.github.com/repos/openhab/openhab2-addons/subscribers","subscription_url":"https://api.github.com/repos/openhab/openhab2-addons/subscription","commits_url":"https://api.github.com/repos/openhab/openhab2-addons/commits{/sha}","git_commits_url":"https://api.github.com/repos/openhab/openhab2-addons/git/commits{/sha}","comments_url":"https://api.github.com/repos/openhab/openhab2-addons/comments{/number}","issue_comment_url":"https://api.github.com/repos/openhab/openhab2-addons/issues/comments{/number}","contents_url":"https://api.github.com/repos/openhab/openhab2-addons/contents/{+path}","compare_url":"https://api.github.com/repos/openhab/openhab2-addons/compare/{base}...{head}","merges_url":"https://api.github.com/repos/openhab/openhab2-addons/merges","archive_url":"https://api.github.com/repos/openhab/openhab2-addons/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/openhab/openhab2-addons/downloads","issues_url":"https://api.github.com/repos/openhab/openhab2-addons/issues{/number}","pulls_url":"https://api.github.com/repos/openhab/openhab2-addons/pulls{/number}","milestones_url":"https://api.github.com/repos/openhab/openhab2-addons/milestones{/number}","notifications_url":"https://api.github.com/repos/openhab/openhab2-addons/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/openhab/openhab2-addons/labels{/name}","releases_url":"https://api.github.com/repos/openhab/openhab2-addons/releases{/id}","deployments_url":"https://api.github.com/repos/openhab/openhab2-addons/deployments","created_at":"2014-05-13T19:41:58Z","updated_at":"2017-06-28T08:08:42Z","pushed_at":"2017-06-28T13:49:40Z","git_url":"git://github.com/openhab/openhab2-addons.git","ssh_url":"git@github.com:openhab/openhab2-addons.git","clone_url":"https://github.com/openhab/openhab2-addons.git","svn_url":"https://github.com/openhab/openhab2-addons","homepage":"","size":255536,"stargazers_count":604,"watchers_count":604,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1029,"mirror_url":null,"open_issues_count":315,"forks":1029,"open_issues":315,"watchers":604,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/openhab/openhab2-addons/pulls/2402"},"html":{"href":"https://github.com/openhab/openhab2-addons/pull/2402"},"issue":{"href":"https://api.github.com/repos/openhab/openhab2-addons/issues/2402"},"comments":{"href":"https://api.github.com/repos/openhab/openhab2-addons/issues/2402/comments"},"review_comments":{"href":"https://api.github.com/repos/openhab/openhab2-addons/pulls/2402/comments"},"review_comment":{"href":"https://api.github.com/repos/openhab/openhab2-addons/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/openhab/openhab2-addons/pulls/2402/commits"},"statuses":{"href":"https://api.github.com/repos/openhab/openhab2-addons/statuses/de9f167a5e68d7bec45231fe67f892a473eadff4"}}}}
{"actor":{"display_login":"gs4711"}}