From dc006338ae9961014cce29c0a45e0c781204e548 Mon Sep 17 00:00:00 2001 From: Ondrej Pecta Date: Sun, 8 Jun 2025 17:27:08 +0200 Subject: [PATCH] [somfytahoma] pure local mode if token provided (#18774) Signed-off-by: Ondrej Pecta --- .../internal/config/SomfyTahomaConfig.java | 4 ++++ .../handler/SomfyTahomaBridgeHandler.java | 22 +++++++++++-------- .../main/resources/OH-INF/config/config.xml | 4 ++-- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/bundles/org.openhab.binding.somfytahoma/src/main/java/org/openhab/binding/somfytahoma/internal/config/SomfyTahomaConfig.java b/bundles/org.openhab.binding.somfytahoma/src/main/java/org/openhab/binding/somfytahoma/internal/config/SomfyTahomaConfig.java index 79e2a90d27a..3049a07022d 100644 --- a/bundles/org.openhab.binding.somfytahoma/src/main/java/org/openhab/binding/somfytahoma/internal/config/SomfyTahomaConfig.java +++ b/bundles/org.openhab.binding.somfytahoma/src/main/java/org/openhab/binding/somfytahoma/internal/config/SomfyTahomaConfig.java @@ -111,4 +111,8 @@ public class SomfyTahomaConfig { public void setToken(String token) { this.token = token; } + + public void setDevMode(boolean devMode) { + this.devMode = devMode; + } } diff --git a/bundles/org.openhab.binding.somfytahoma/src/main/java/org/openhab/binding/somfytahoma/internal/handler/SomfyTahomaBridgeHandler.java b/bundles/org.openhab.binding.somfytahoma/src/main/java/org/openhab/binding/somfytahoma/internal/handler/SomfyTahomaBridgeHandler.java index dc1acb543f4..639e8f801b5 100644 --- a/bundles/org.openhab.binding.somfytahoma/src/main/java/org/openhab/binding/somfytahoma/internal/handler/SomfyTahomaBridgeHandler.java +++ b/bundles/org.openhab.binding.somfytahoma/src/main/java/org/openhab/binding/somfytahoma/internal/handler/SomfyTahomaBridgeHandler.java @@ -247,9 +247,11 @@ public class SomfyTahomaBridgeHandler extends BaseBridgeHandler { public synchronized void login() { if (thingConfig.getEmail().isEmpty() || thingConfig.getPassword().isEmpty()) { - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, - "Can not access device as username and/or password are null"); - return; + if (!thingConfig.isDevMode() || (thingConfig.isDevMode() && thingConfig.getToken().isEmpty())) { + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, + "Can not access device as username and/or password are null"); + return; + } } if (tooManyRequests || Instant.now().minusSeconds(LOGIN_LIMIT_TIME).isBefore(lastLoginTimestamp)) { @@ -269,15 +271,17 @@ public class SomfyTahomaBridgeHandler extends BaseBridgeHandler { lastLoginTimestamp = Instant.now(); if (thingConfig.getCloudPortal().equalsIgnoreCase(COZYTOUCH_PORTAL)) { + // make sure all requests will be sent to cloud + thingConfig.setDevMode(false); if (!loginCozyTouch()) { return; } } else { - loginTahoma(); - } - - if (thingConfig.isDevMode()) { - initializeLocalMode(); + if (thingConfig.isDevMode()) { + initializeLocalMode(); + } else { + loginTahoma(); + } } String id = registerEvents(); @@ -356,13 +360,13 @@ public class SomfyTahomaBridgeHandler extends BaseBridgeHandler { if (!thingConfig.getIp().isEmpty() && !thingConfig.getPin().isEmpty()) { try { if (thingConfig.getToken().isEmpty()) { + loginTahoma(); localToken = getNewLocalToken(); logger.debug("Local token retrieved"); activateLocalToken(); updateConfiguration(); } else { localToken = thingConfig.getToken(); - activateLocalToken(); } logger.debug("Local mode initialized, waiting for cloud sync"); Thread.sleep(3000); diff --git a/bundles/org.openhab.binding.somfytahoma/src/main/resources/OH-INF/config/config.xml b/bundles/org.openhab.binding.somfytahoma/src/main/resources/OH-INF/config/config.xml index 3fec91f7b43..eb69d6bd443 100644 --- a/bundles/org.openhab.binding.somfytahoma/src/main/resources/OH-INF/config/config.xml +++ b/bundles/org.openhab.binding.somfytahoma/src/main/resources/OH-INF/config/config.xml @@ -35,12 +35,12 @@ false - + Email address for the portal - + password Password for the portal