]> git.basschouten.com Git - openhab-addons.git/commitdiff
[netatmo] Update only the channel for which the REFRESH is sent (#9188)
authorChristoph Weitkamp <github@christophweitkamp.de>
Tue, 1 Dec 2020 00:40:56 +0000 (01:40 +0100)
committerGitHub <noreply@github.com>
Tue, 1 Dec 2020 00:40:56 +0000 (16:40 -0800)
Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>
bundles/org.openhab.binding.netatmo/src/main/java/org/openhab/binding/netatmo/internal/handler/AbstractNetatmoThingHandler.java

index c0a3e97bd9270e64e326b9acd89607b5d4525a98..6cc210783ea601baed9ef1f4de01326bf7020f5b 100644 (file)
@@ -122,9 +122,7 @@ public abstract class AbstractNetatmoThingHandler extends BaseThingHandler {
     protected abstract void initializeThing();
 
     protected State getNAThingProperty(String channelId) {
-        Optional<State> result;
-
-        result = getBatteryHelper().flatMap(helper -> helper.getNAThingProperty(channelId));
+        Optional<State> result = getBatteryHelper().flatMap(helper -> helper.getNAThingProperty(channelId));
         if (result.isPresent()) {
             return result.get();
         }
@@ -146,15 +144,13 @@ public abstract class AbstractNetatmoThingHandler extends BaseThingHandler {
     }
 
     private void updateDataChannels() {
-        getThing().getChannels().stream().filter(channel -> !channel.getKind().equals(ChannelKind.TRIGGER))
-                .forEach(channel -> {
-
-                    String channelId = channel.getUID().getId();
-                    if (isLinked(channelId)) {
-                        State state = getNAThingProperty(channelId);
-                        updateState(channel.getUID(), state);
-                    }
-                });
+        getThing().getChannels().stream()
+                .filter(channel -> !ChannelKind.TRIGGER.equals(channel.getKind()) && isLinked(channel.getUID()))
+                .map(channel -> channel.getUID()).forEach(this::updateChannel);
+    }
+
+    private void updateChannel(ChannelUID channelUID) {
+        updateState(channelUID, getNAThingProperty(channelUID.getId()));
     }
 
     /**
@@ -162,8 +158,8 @@ public abstract class AbstractNetatmoThingHandler extends BaseThingHandler {
      * (when a channel is triggered, a rule can get all other information from the updated non-trigger channels)
      */
     private void triggerEventChannels() {
-        getThing().getChannels().stream().filter(channel -> channel.getKind().equals(ChannelKind.TRIGGER))
-                .forEach(channel -> triggerChannelIfRequired(channel.getUID().getId()));
+        getThing().getChannels().stream().filter(channel -> ChannelKind.TRIGGER.equals(channel.getKind()))
+                .map(channel -> channel.getUID().getId()).forEach(this::triggerChannelIfRequired);
     }
 
     /**
@@ -177,8 +173,8 @@ public abstract class AbstractNetatmoThingHandler extends BaseThingHandler {
     @Override
     public void handleCommand(ChannelUID channelUID, Command command) {
         if (command == RefreshType.REFRESH) {
-            logger.debug("Refreshing {}", channelUID);
-            updateChannels();
+            logger.debug("Refreshing '{}'", channelUID);
+            updateChannel(channelUID);
         }
     }