]> git.basschouten.com Git - openhab-addons.git/commitdiff
[netatmo] Switching siren channel of the Presence to Read-Only (#17397)
authorGaël L'hopital <gael@lhopital.org>
Tue, 10 Sep 2024 13:28:13 +0000 (15:28 +0200)
committerGitHub <noreply@github.com>
Tue, 10 Sep 2024 13:28:13 +0000 (15:28 +0200)
* Switching siren channel of the Presence to Read-Only

Signed-off-by: Gaël L'hopital <gael@lhopital.org>
bundles/org.openhab.binding.netatmo/README.md
bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/api/SecurityApi.java
bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/api/data/ModuleType.java
bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/PresenceCapability.java
bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/capability/SecurityCapability.java
bundles/org.openhab.binding.netatmo/src/main/resources/OH-INF/thing/security.xml
bundles/org.openhab.binding.netatmo/src/main/resources/OH-INF/update/instructions.xml

index fb80901a2d6170fb517fa2aa6666ea6c80ca29a7..ef62071af962142f8799833a6ff0c2a32952c6f8 100644 (file)
@@ -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                                                                                                                 |
index 5cac555aca5a539b7a181a272ac2a59e7a7bf82b..e7c08e8157affd2237798aac414f76c9ce7289f5 100644 (file)
@@ -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);
index d2f4c3a8b358c4e350571a482876381588d04d2f..74c5e278828dcd4d43602d276f446beec1a4ae41 100644 (file)
@@ -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,
index daac4367e23026ca1fca1e07cb140a54351f98fb..cf9d5052577eb3a3fc63c687c45ca14fb78c4cb7 100644 (file)
@@ -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);
index 50473750efb00ebef3d142e1d026b471c9cc2e85..f583dfeabf9458e8792d48fd1144f280da084015 100644 (file)
@@ -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<SecurityApi> {
             }
         });
     }
-
-    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());
-            }
-        });
-    }
 }
index 29a601f53419533124f91a826498a46f34b24d39..b4f9c3a8fca8e09b977c9718eb7f71bb648a6a99 100644 (file)
        <channel-group-type id="presence">
                <label>Presence Camera</label>
                <channels>
-                       <channel id="siren" typeId="siren-status-rw"/>
+                       <channel id="siren" typeId="siren-status"/>
                        <channel id="floodlight" typeId="floodlight-mode"/>
                </channels>
        </channel-group-type>
index 10d3dff092495b1a7009a19fddaa50c361305575..63eda01169a6debf91b9627a7fb4cb5a7c08d7f4 100644 (file)
                        </update-channel>
                </instruction-set>
 
+               <instruction-set targetVersion="2">
+                       <update-channel id="siren" groupIds="presence">
+                               <type>netatmo:siren-status</type>
+                       </update-channel>
+               </instruction-set>
+
        </thing-type>
 
 </update:update-descriptions>