Pushing PR #14123 to OH4 (#14140)

Signed-off-by: clinique <gael@lhopital.org>
This commit is contained in:
Gaël L'hopital 2023-01-02 19:06:24 +01:00 committed by GitHub
parent ce6b331518
commit c7275c8946
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 17 additions and 6 deletions

View File

@ -47,6 +47,7 @@ The Account bridge has the following configuration elements:
| clientId | String | Yes | Client ID provided for the application you created on <http://dev.netatmo.com/createapp> | | clientId | String | Yes | Client ID provided for the application you created on <http://dev.netatmo.com/createapp> |
| clientSecret | String | Yes | Client Secret provided for the application you created | | clientSecret | String | Yes | Client Secret provided for the application you created |
| webHookUrl | String | No | Protocol, public IP and port to access openHAB server from Internet | | webHookUrl | String | No | Protocol, public IP and port to access openHAB server from Internet |
| webHookPostfix | String | No | String appended to the generated webhook address (should start with "/") |
| reconnectInterval | Number | No | The reconnection interval to Netatmo API (in s) | | reconnectInterval | Number | No | The reconnection interval to Netatmo API (in s) |
| refreshToken | String | Yes* | The refresh token provided by Netatmo API after the granting process. Can be saved in case of file based configuration | | refreshToken | String | Yes* | The refresh token provided by Netatmo API after the granting process. Can be saved in case of file based configuration |
@ -100,14 +101,14 @@ Netatmo servers can send push notifications to the Netatmo Binding by using a ca
The webhook URL is setup at Netatmo Account level using "Webhook Address" parameter. The webhook URL is setup at Netatmo Account level using "Webhook Address" parameter.
You will define here public way to access your openHAB server: You will define here public way to access your openHAB server:
```text ```
http(s)://xx.yy.zz.ww:443 http(s)://xx.yy.zz.ww:443
``` ```
Your Netatmo App will be configured automatically by the bridge to the endpoint: Your Netatmo App will be configured automatically by the bridge to the endpoint:
```text ```
http(s)://xx.yy.zz.ww:443/netatmo/webhook/<_CLIENT_ID_> http(s)://xx.yy.zz.ww:443/netatmo/webhook/<_CLIENT_ID_><webHookPostfix>
``` ```
Please be aware of Netatmo own limits regarding webhook usage that lead to a 24h ban-time when webhook does not answer 5 times. Please be aware of Netatmo own limits regarding webhook usage that lead to a 24h ban-time when webhook does not answer 5 times.

View File

@ -29,6 +29,7 @@ public class ApiHandlerConfiguration {
public String clientSecret = ""; public String clientSecret = "";
public String refreshToken = ""; public String refreshToken = "";
public String webHookUrl = ""; public String webHookUrl = "";
public String webHookPostfix = "";
public int reconnectInterval = 300; public int reconnectInterval = 300;
public ConfigurationLevel check() { public ConfigurationLevel check() {

View File

@ -160,7 +160,7 @@ public class ApiBridgeHandler extends BaseBridgeHandler {
SecurityApi securityApi = getRestManager(SecurityApi.class); SecurityApi securityApi = getRestManager(SecurityApi.class);
if (securityApi != null) { if (securityApi != null) {
WebhookServlet servlet = new WebhookServlet(this, httpService, deserializer, securityApi, WebhookServlet servlet = new WebhookServlet(this, httpService, deserializer, securityApi,
configuration.webHookUrl); configuration.webHookUrl, configuration.webHookPostfix);
servlet.startListening(); servlet.startListening();
this.webHookServlet = servlet; this.webHookServlet = servlet;
} }

View File

@ -50,21 +50,23 @@ public class WebhookServlet extends NetatmoServlet {
private final SecurityApi securityApi; private final SecurityApi securityApi;
private final NADeserializer deserializer; private final NADeserializer deserializer;
private final String webHookUrl; private final String webHookUrl;
private final String webHookPostfix;
private boolean hookSet = false; private boolean hookSet = false;
public WebhookServlet(ApiBridgeHandler handler, HttpService httpService, NADeserializer deserializer, public WebhookServlet(ApiBridgeHandler handler, HttpService httpService, NADeserializer deserializer,
SecurityApi securityApi, String webHookUrl) { SecurityApi securityApi, String webHookUrl, String webHookPostfix) {
super(handler, httpService, "webhook"); super(handler, httpService, "webhook");
this.deserializer = deserializer; this.deserializer = deserializer;
this.securityApi = securityApi; this.securityApi = securityApi;
this.webHookUrl = webHookUrl; this.webHookUrl = webHookUrl;
this.webHookPostfix = webHookPostfix;
} }
@Override @Override
public void startListening() { public void startListening() {
super.startListening(); super.startListening();
URI uri = UriBuilder.fromUri(webHookUrl).path(path).build(); URI uri = UriBuilder.fromUri(webHookUrl).path(path + webHookPostfix).build();
try { try {
logger.info("Setting up WebHook at Netatmo to {}", uri.toString()); logger.info("Setting up WebHook at Netatmo to {}", uri.toString());
hookSet = securityApi.addwebhook(uri); hookSet = securityApi.addwebhook(uri);

View File

@ -29,6 +29,11 @@
<description>@text/config.webHookUrl.description</description> <description>@text/config.webHookUrl.description</description>
</parameter> </parameter>
<parameter name="webHookPostfix" type="text" required="false">
<label>@text/config.webHookPostfix.label</label>
<description>@text/config.webHookPostfix.description</description>
</parameter>
<parameter name="reconnectInterval" type="integer" unit="s"> <parameter name="reconnectInterval" type="integer" unit="s">
<label>@text/config.reconnectInterval.label</label> <label>@text/config.reconnectInterval.label</label>
<description>@text/config.reconnectInterval.description</description> <description>@text/config.reconnectInterval.description</description>

View File

@ -423,6 +423,8 @@ config.clientSecret.label = Client Secret
config.clientSecret.description = Client Secret provided for the application you created. config.clientSecret.description = Client Secret provided for the application you created.
config.refreshToken.label = Refresh Token config.refreshToken.label = Refresh Token
config.refreshToken.description = Refresh token provided by the oAuth2 authentication process. config.refreshToken.description = Refresh token provided by the oAuth2 authentication process.
config.webHookPostfix.label = Webhook Postfix
config.webHookPostfix.description = String appended to the generated webhook address (should start with `/`).
config.webHookUrl.label = Webhook Address config.webHookUrl.label = Webhook Address
config.webHookUrl.description = Protocol, public IP or hostname and port to access openHAB server from Internet. config.webHookUrl.description = Protocol, public IP or hostname and port to access openHAB server from Internet.
config.reconnectInterval.label = Reconnect Interval config.reconnectInterval.label = Reconnect Interval