]> git.basschouten.com Git - openhab-addons.git/commitdiff
[gardena] Adaptation of the login for API version 1.1 (#13050)
authorGerhard Riegler <6545044+gerrieg@users.noreply.github.com>
Fri, 1 Jul 2022 15:38:39 +0000 (17:38 +0200)
committerGitHub <noreply@github.com>
Fri, 1 Jul 2022 15:38:39 +0000 (17:38 +0200)
* Adaptation of the login for API version 1.1
* Fixed logging statement
* Fixed logging message
* Reverted changes in the german translation

Signed-off-by: Gerhard Riegler <gerhard.riegler@gmail.com>
bundles/org.openhab.binding.gardena/README.md
bundles/org.openhab.binding.gardena/src/main/java/org/openhab/binding/gardena/internal/GardenaSmartImpl.java
bundles/org.openhab.binding.gardena/src/main/java/org/openhab/binding/gardena/internal/config/GardenaConfig.java
bundles/org.openhab.binding.gardena/src/main/resources/OH-INF/i18n/gardena.properties
bundles/org.openhab.binding.gardena/src/main/resources/OH-INF/i18n/gardena_de.properties
bundles/org.openhab.binding.gardena/src/main/resources/OH-INF/thing/bridge.xml

index 21e7c3562430f7eb37f59cdf4eebb07f777e750e..f5933d05b3d08665eab8dd5c618f4b4b7db3f5f0 100644 (file)
@@ -25,17 +25,16 @@ An account must be specified, all things for an account are discovered automatic
 
 There are several settings for an account:
 
-| Name                  | Required | Description                                                                                         |
-|-----------------------|----------|-----------------------------------------------------------------------------------------------------|
-| **email**             | yes      | The email address for logging into the Gardena smart system                                         |
-| **password**          | yes      | The password for logging into the Gardena smart system                                              |
-| **apiKey**            | yes      | The Gardena smart system integration API key                                                    |
-| **connectionTimeout** | no       | The timeout in seconds for connections to Gardena smart system integration API (default = 10)       |
+| Name                  | Required | Description                                                                                   |
+|-----------------------|----------|-----------------------------------------------------------------------------------------------|
+| **apiSecret**         | yes      | The Gardena smart system integration API secret                                               |
+| **apiKey**            | yes      | The Gardena smart system integration API key                                                  |
+| **connectionTimeout** | no       | The timeout in seconds for connections to Gardena smart system integration API (default = 10) |
 
 ### Obtaining your API Key
 
 1. Goto https://developer.husqvarnagroup.cloud/, sign in using your GARDENA smart system account and accept the terms of use
-2. Create and save a new application via the 'Create application' button
+2. Create and save a new application via the 'Create application' button. The Redirect URLs do not matter, you can enter what you want (e.g. http://localhost:8080)
 3. Connect both _Authentication API_ and _GARDENA smart system API_ to your application via the 'Connect new API' button
 4. Copy the application key to use with this binding as _apiKey_
 
@@ -46,14 +45,14 @@ There are several settings for an account:
 Minimal Thing configuration:
 
 ```java
-Bridge gardena:account:home [ email="...", password="...", apiKey="..." ]
+Bridge gardena:account:home [ apiSecret="...", apiKey="..." ]
 ```
 
 Configuration of multiple bridges:
 
 ```java
-Bridge gardena:account:home1 [ email="...", password="...", apiKey="..." ]
-Bridge gardena:account:home2 [ email="...", password="...", apiKey="..." ]
+Bridge gardena:account:home1 [ apiSecret="...", apiKey="..." ]
+Bridge gardena:account:home2 [ apiSecret="...", apiKey="..." ]
 ```
 
 Once a connection to an account is established, connected Things are discovered automatically.
@@ -61,7 +60,7 @@ Once a connection to an account is established, connected Things are discovered
 Alternatively, you can manually configure Things:
 
 ```java
-Bridge gardena:account:home [ email="...", password="...", apiKey="..." ]
+Bridge gardena:account:home [ apiSecret="...", apiKey="..." ]
 {
   Thing mower myMower [ deviceId="c81ad682-6e45-42ce-bed1-6b4eff5620c8" ]
   Thing water_control myWaterControl [ deviceId="c81ad682-6e45-42ce-bed1-6b4eff5620c8" ]
index f06d70fb4f7c41b9e6080ce050dacf366bdbbb32..2425df59508b29a2d8b54848da9ed87b1b2aa80e 100644 (file)
@@ -241,11 +241,10 @@ public class GardenaSmartImpl implements GardenaSmart, GardenaSmartWebSocketList
         PostOAuth2Response token = this.token;
         if (token == null || token.isRefreshTokenExpired()) {
             // new token
-            logger.debug("Gardena API login using password, reason: {}",
+            logger.debug("Gardena API login using apiSecret, reason: {}",
                     token == null ? "no token available" : "refresh token expired");
-            fields.add("grant_type", "password");
-            fields.add("username", config.getEmail());
-            fields.add("password", config.getPassword());
+            fields.add("grant_type", "client_credentials");
+            fields.add("client_secret", config.getApiSecret());
             token = executeRequest(HttpMethod.POST, URL_API_TOKEN, fields, PostOAuth2Response.class);
             token.postProcess();
             this.token = token;
index 0941c8a9c691d5f44fde2a6cdf930427206e75ea..864d654752376ee169c5128109fa70b145933ee1 100644 (file)
@@ -24,8 +24,7 @@ import org.eclipse.jdt.annotation.Nullable;
 public class GardenaConfig {
     private static final Integer DEFAULT_CONNECTION_TIMEOUT = 10;
 
-    private @Nullable String email;
-    private @Nullable String password;
+    private @Nullable String apiSecret;
     private @Nullable String apiKey;
 
     private transient Integer connectionTimeout = DEFAULT_CONNECTION_TIMEOUT;
@@ -33,37 +32,23 @@ public class GardenaConfig {
     public GardenaConfig() {
     }
 
-    public GardenaConfig(String email, String password) {
-        this.email = email;
-        this.password = password;
-    }
-
-    /**
-     * Returns the email to connect to Gardena smart system.
-     */
-    public @Nullable String getEmail() {
-        return email;
-    }
-
-    /**
-     * Sets the email to connect to Gardena smart system.
-     */
-    public void setEmail(String email) {
-        this.email = email;
+    public GardenaConfig(String apiKey, String apiSecret) {
+        this.apiKey = apiKey;
+        this.apiSecret = apiSecret;
     }
 
     /**
-     * Returns the password to connect to Gardena smart system.
+     * Returns the apiSecret to connect to Gardena smart system.
      */
-    public @Nullable String getPassword() {
-        return password;
+    public @Nullable String getApiSecret() {
+        return apiSecret;
     }
 
     /**
-     * Sets the password to connect to Gardena smart system.
+     * Sets the apiSecret to connect to Gardena smart system.
      */
-    public void setPassword(String password) {
-        this.password = password;
+    public void setApiSecret(String apiSecret) {
+        this.apiSecret = apiSecret;
     }
 
     /**
@@ -98,17 +83,14 @@ public class GardenaConfig {
      * Validate the config if email, password and apiKey is specified.
      */
     public boolean isValid() {
-        final String email = this.email;
-        final String password = this.password;
+        final String apiSecret = this.apiSecret;
         final String apiKey = this.apiKey;
-        return email != null && !email.isBlank() && password != null && !password.isBlank() && apiKey != null
-                && !apiKey.isBlank();
+        return apiSecret != null && !apiSecret.isBlank() && apiKey != null && !apiKey.isBlank();
     }
 
     @Override
     public String toString() {
         StringBuilder sb = new StringBuilder(GardenaConfig.class.getSimpleName()).append("[");
-        sb.append("email: ").append(email).append(", ");
         sb.append("connectionTimeout: ").append(connectionTimeout).append(", ");
         sb.append("apiKey: ").append(apiKey);
         return sb.append("]").toString();
index 506d570bbc9973a92b7abf7c1043ed543391dd37..46b3b3b838b1eee4e557e932d6f0273d61882b77 100644 (file)
@@ -38,10 +38,8 @@ thing-type.config.gardena.account.apiKey.label = API Key
 thing-type.config.gardena.account.apiKey.description = The Gardena smart system integration API key
 thing-type.config.gardena.account.connectionTimeout.label = Connection Timeout
 thing-type.config.gardena.account.connectionTimeout.description = The timeout in seconds for connections to Gardena smart system integration API
-thing-type.config.gardena.account.email.label = Email
-thing-type.config.gardena.account.email.description = Email address for logging in to Gardena smart system
-thing-type.config.gardena.account.password.label = Password
-thing-type.config.gardena.account.password.description = Password for logging in to Gardena smart system
+thing-type.config.gardena.account.apiSecret.label = API Secret
+thing-type.config.gardena.account.apiSecret.description = The Gardena smart system integration API secret
 
 # channel group types
 
index 43d67b30e7c0b505e943a33485047b936240d680..82f14f1831b56e913c4d13ca1a4844f46e920ff9 100644 (file)
@@ -39,7 +39,7 @@ thing-type.config.gardena.account.apiKey.description = Der Gardena Smart System
 thing-type.config.gardena.account.connectionTimeout.label = Verbindungszeitüberschreitung
 thing-type.config.gardena.account.connectionTimeout.description = Der Timeout in Sekunden für Verbindungen zur Gardena Smart System Integrations API
 thing-type.config.gardena.account.email.label = E-Mail
-thing-type.config.gardena.account.email.description = E-Mail-Adresse für die Anmeldung im Gardena Smart System
+thing-type.config.gardena.account.email.description = E-Mail-Adresse für die Anmeldung im Gardena Smart System
 thing-type.config.gardena.account.password.label = Passwort
 thing-type.config.gardena.account.password.description = Passwort zur Anmeldung im Gardena Smart System
 
index 6711fc9e9347a25f162fad8ac0cda28eb2bad533..2d28069b3ba8c30cc56529ab3543263d52f93779 100644 (file)
                <description>The Gardena smart system account</description>
 
                <config-description>
-                       <parameter name="email" type="text" required="true">
-                               <label>Email</label>
-                               <description>Email address for logging in to Gardena smart system</description>
-                       </parameter>
-                       <parameter name="password" type="text" required="true">
-                               <label>Password</label>
+                       <parameter name="apiSecret" type="text" required="true">
+                               <label>API Secret</label>
                                <context>password</context>
-                               <description>Password for logging in to Gardena smart system</description>
+                               <description>The Gardena smart system integration API secret</description>
                        </parameter>
                        <parameter name="apiKey" type="text" required="true">
                                <label>API Key</label>