From 65a398512f4e58b006c340ccc67eb94120b87313 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ga=C3=ABl=20L=27hopital?= Date: Tue, 10 Sep 2024 15:28:13 +0200 Subject: [PATCH] [netatmo] Switching siren channel of the Presence to Read-Only (#17397) MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit * Switching siren channel of the Presence to Read-Only Signed-off-by: Gaël L'hopital --- bundles/org.openhab.binding.netatmo/README.md | 2 +- .../binding/netatmo/internal/api/SecurityApi.java | 7 ------- .../netatmo/internal/api/data/ModuleType.java | 2 +- .../handler/capability/PresenceCapability.java | 8 +++----- .../handler/capability/SecurityCapability.java | 12 ------------ .../src/main/resources/OH-INF/thing/security.xml | 2 +- .../main/resources/OH-INF/update/instructions.xml | 6 ++++++ 7 files changed, 12 insertions(+), 27 deletions(-) diff --git a/bundles/org.openhab.binding.netatmo/README.md b/bundles/org.openhab.binding.netatmo/README.md index fb80901a2d..ef62071af9 100644 --- a/bundles/org.openhab.binding.netatmo/README.md +++ b/bundles/org.openhab.binding.netatmo/README.md @@ -568,7 +568,7 @@ Warnings: | signal | strength | Number | Read-only | Signal strength (0 for no signal, 1 for weak...) | | signal | value | Number:Power | Read-only | Signal strength in dBm | | presence | floodlight | String | Read-write | Sets the floodlight to ON/OFF/AUTO | -| presence | siren | Switch | Read-write | Status of the siren, if silent or emitting an alarm | +| presence | siren | Switch | Read-only | Status of the siren, if silent or emitting an alarm | | last-event | type | String | Read-only | Type of event | | last-event | subtype | String | Read-only | Sub-type of event | | last-event | time | DateTime | Read-only | Time of occurrence of event | diff --git a/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/api/SecurityApi.java b/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/api/SecurityApi.java index 5cac555aca..e7c08e8157 100644 --- a/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/api/SecurityApi.java +++ b/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/api/SecurityApi.java @@ -25,7 +25,6 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.FeatureArea; import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.FloodLightMode; -import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.SirenStatus; import org.openhab.binding.netatmo.internal.api.dto.Home; import org.openhab.binding.netatmo.internal.api.dto.HomeEvent; import org.openhab.binding.netatmo.internal.api.dto.HomeEvent.NAEventsDataResponse; @@ -127,12 +126,6 @@ public class SecurityApi extends RestManager { post(uriBuilder, ApiResponse.Ok.class, payload); } - public void changeSirenStatus(String homeId, String moduleId, SirenStatus status) throws NetatmoException { - UriBuilder uriBuilder = getApiUriBuilder(PATH_STATE); - String payload = PAYLOAD_SIREN_PRESENCE.formatted(homeId, moduleId, status.name().toLowerCase()); - post(uriBuilder, ApiResponse.Ok.class, payload); - } - public void setPersonAwayStatus(String homeId, String personId, boolean away) throws NetatmoException { UriBuilder uriBuilder = getApiUriBuilder(away ? SUB_PATH_PERSON_AWAY : SUB_PATH_PERSON_HOME); String payload = String.format(away ? PAYLOAD_PERSON_AWAY : PAYLOAD_PERSON_HOME, homeId, personId); diff --git a/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/api/data/ModuleType.java b/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/api/data/ModuleType.java index d2f4c3a8b3..74c5e27882 100644 --- a/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/api/data/ModuleType.java +++ b/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/api/data/ModuleType.java @@ -96,7 +96,7 @@ public enum ModuleType { Set.of(ChannelHelperCapability.class, ParentUpdateCapability.class), ChannelGroup.SIGNAL, ChannelGroup.BATTERY, ChannelGroup.TIMESTAMP, new ChannelGroup(SirenChannelHelper.class, GROUP_SIREN)), - PRESENCE(FeatureArea.SECURITY, "NOC", 1, "camera", HOME, + PRESENCE(FeatureArea.SECURITY, "NOC", 2, "camera", HOME, Set.of(PresenceCapability.class, ChannelHelperCapability.class, ParentUpdateCapability.class), ChannelGroup.SIGNAL, ChannelGroup.EVENT, new ChannelGroup(PresenceChannelHelper.class, GROUP_SECURITY_EVENT, GROUP_CAM_STATUS, GROUP_CAM_LIVE, diff --git a/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/PresenceCapability.java b/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/PresenceCapability.java index daac4367e2..cf9d505257 100644 --- a/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/PresenceCapability.java +++ b/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/PresenceCapability.java @@ -18,7 +18,6 @@ import java.util.List; import org.eclipse.jdt.annotation.NonNullByDefault; import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.FloodLightMode; -import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.SirenStatus; import org.openhab.binding.netatmo.internal.handler.CommonInterface; import org.openhab.binding.netatmo.internal.handler.channelhelper.ChannelHelper; import org.openhab.binding.netatmo.internal.providers.NetatmoDescriptionProvider; @@ -53,13 +52,12 @@ public class PresenceCapability extends CameraCapability { try { changeFloodlightMode(FloodLightMode.valueOf(command.toString())); } catch (IllegalArgumentException e) { - logger.info("Incorrect command '{}' received for channel '{}'", command, channelName); + logger.warn("Incorrect command '{}' received for channel '{}'", command, channelName); } return; } - } else if (CHANNEL_SIREN.equals(channelName) && command instanceof OnOffType) { - getSecurityCapability().ifPresent(cap -> cap.changeSirenStatus(handler.getId(), - command == OnOffType.ON ? SirenStatus.SOUND : SirenStatus.NO_SOUND)); + } else if (CHANNEL_SIREN.equals(channelName)) { + logger.info("Channel '{}' is read-only", channelName); return; } super.handleCommand(channelName, command); diff --git a/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/SecurityCapability.java b/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/SecurityCapability.java index 50473750ef..f583dfeabf 100644 --- a/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/SecurityCapability.java +++ b/bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/SecurityCapability.java @@ -26,7 +26,6 @@ import org.openhab.binding.netatmo.internal.api.NetatmoException; import org.openhab.binding.netatmo.internal.api.SecurityApi; import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.FeatureArea; import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.FloodLightMode; -import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.SirenStatus; import org.openhab.binding.netatmo.internal.api.dto.HomeData; import org.openhab.binding.netatmo.internal.api.dto.HomeDataModule; import org.openhab.binding.netatmo.internal.api.dto.HomeDataPerson; @@ -237,15 +236,4 @@ class SecurityCapability extends RestCapability { } }); } - - public void changeSirenStatus(String moduleId, SirenStatus status) { - getApi().ifPresent(api -> { - try { - api.changeSirenStatus(handler.getId(), moduleId, status); - handler.expireData(); - } catch (NetatmoException e) { - logger.warn("Error changing siren status '{}' : {}", status, e.getMessage()); - } - }); - } } diff --git a/bundles/org.openhab.binding.netatmo/src/main/resources/OH-INF/thing/security.xml b/bundles/org.openhab.binding.netatmo/src/main/resources/OH-INF/thing/security.xml index 29a601f534..b4f9c3a8fc 100644 --- a/bundles/org.openhab.binding.netatmo/src/main/resources/OH-INF/thing/security.xml +++ b/bundles/org.openhab.binding.netatmo/src/main/resources/OH-INF/thing/security.xml @@ -225,7 +225,7 @@ - + diff --git a/bundles/org.openhab.binding.netatmo/src/main/resources/OH-INF/update/instructions.xml b/bundles/org.openhab.binding.netatmo/src/main/resources/OH-INF/update/instructions.xml index 10d3dff092..63eda01169 100644 --- a/bundles/org.openhab.binding.netatmo/src/main/resources/OH-INF/update/instructions.xml +++ b/bundles/org.openhab.binding.netatmo/src/main/resources/OH-INF/update/instructions.xml @@ -14,6 +14,12 @@ + + + netatmo:siren-status + + + -- 2.47.3