diff --git a/bundles/org.openhab.binding.gardena/README.md b/bundles/org.openhab.binding.gardena/README.md
index 21e7c3562..f5933d05b 100644
--- a/bundles/org.openhab.binding.gardena/README.md
+++ b/bundles/org.openhab.binding.gardena/README.md
@@ -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" ]
diff --git a/bundles/org.openhab.binding.gardena/src/main/java/org/openhab/binding/gardena/internal/GardenaSmartImpl.java b/bundles/org.openhab.binding.gardena/src/main/java/org/openhab/binding/gardena/internal/GardenaSmartImpl.java
index f06d70fb4..2425df595 100644
--- a/bundles/org.openhab.binding.gardena/src/main/java/org/openhab/binding/gardena/internal/GardenaSmartImpl.java
+++ b/bundles/org.openhab.binding.gardena/src/main/java/org/openhab/binding/gardena/internal/GardenaSmartImpl.java
@@ -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;
diff --git a/bundles/org.openhab.binding.gardena/src/main/java/org/openhab/binding/gardena/internal/config/GardenaConfig.java b/bundles/org.openhab.binding.gardena/src/main/java/org/openhab/binding/gardena/internal/config/GardenaConfig.java
index 0941c8a9c..864d65475 100644
--- a/bundles/org.openhab.binding.gardena/src/main/java/org/openhab/binding/gardena/internal/config/GardenaConfig.java
+++ b/bundles/org.openhab.binding.gardena/src/main/java/org/openhab/binding/gardena/internal/config/GardenaConfig.java
@@ -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;
+ public GardenaConfig(String apiKey, String apiSecret) {
+ this.apiKey = apiKey;
+ this.apiSecret = apiSecret;
}
/**
- * Returns the email to connect to Gardena smart system.
+ * Returns the apiSecret to connect to Gardena smart system.
*/
- public @Nullable String getEmail() {
- return email;
+ public @Nullable String getApiSecret() {
+ return apiSecret;
}
/**
- * Sets the email to connect to Gardena smart system.
+ * Sets the apiSecret to connect to Gardena smart system.
*/
- public void setEmail(String email) {
- this.email = email;
- }
-
- /**
- * Returns the password to connect to Gardena smart system.
- */
- public @Nullable String getPassword() {
- return password;
- }
-
- /**
- * Sets the password 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();
diff --git a/bundles/org.openhab.binding.gardena/src/main/resources/OH-INF/i18n/gardena.properties b/bundles/org.openhab.binding.gardena/src/main/resources/OH-INF/i18n/gardena.properties
index 506d570bb..46b3b3b83 100644
--- a/bundles/org.openhab.binding.gardena/src/main/resources/OH-INF/i18n/gardena.properties
+++ b/bundles/org.openhab.binding.gardena/src/main/resources/OH-INF/i18n/gardena.properties
@@ -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
diff --git a/bundles/org.openhab.binding.gardena/src/main/resources/OH-INF/i18n/gardena_de.properties b/bundles/org.openhab.binding.gardena/src/main/resources/OH-INF/i18n/gardena_de.properties
index 43d67b30e..82f14f183 100644
--- a/bundles/org.openhab.binding.gardena/src/main/resources/OH-INF/i18n/gardena_de.properties
+++ b/bundles/org.openhab.binding.gardena/src/main/resources/OH-INF/i18n/gardena_de.properties
@@ -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
diff --git a/bundles/org.openhab.binding.gardena/src/main/resources/OH-INF/thing/bridge.xml b/bundles/org.openhab.binding.gardena/src/main/resources/OH-INF/thing/bridge.xml
index 6711fc9e9..2d28069b3 100644
--- a/bundles/org.openhab.binding.gardena/src/main/resources/OH-INF/thing/bridge.xml
+++ b/bundles/org.openhab.binding.gardena/src/main/resources/OH-INF/thing/bridge.xml
@@ -10,14 +10,10 @@
The Gardena smart system account
-
-
- Email address for logging in to Gardena smart system
-
-
-
+
+
password
- Password for logging in to Gardena smart system
+ The Gardena smart system integration API secret