From a58ae579420cdf299d085b114c09b49642d77256 Mon Sep 17 00:00:00 2001 From: Hilbrand Bouwkamp Date: Mon, 4 Jul 2022 21:50:03 +0200 Subject: [PATCH] [dsmr] Fix incorrect deriving of sub channel names when updating channels (#13076) Subchannels were created by appending the key. However this was done inside a loop and if multiple updates were needed they would be appended to the channel name, instead of taking the channel name each time. Signed-off-by: Hilbrand Bouwkamp --- .../dsmr/internal/handler/DSMRMeterHandler.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/bundles/org.openhab.binding.dsmr/src/main/java/org/openhab/binding/dsmr/internal/handler/DSMRMeterHandler.java b/bundles/org.openhab.binding.dsmr/src/main/java/org/openhab/binding/dsmr/internal/handler/DSMRMeterHandler.java index aabef9d2e7..b1ade25b32 100644 --- a/bundles/org.openhab.binding.dsmr/src/main/java/org/openhab/binding/dsmr/internal/handler/DSMRMeterHandler.java +++ b/bundles/org.openhab.binding.dsmr/src/main/java/org/openhab/binding/dsmr/internal/handler/DSMRMeterHandler.java @@ -136,15 +136,13 @@ public class DSMRMeterHandler extends BaseThingHandler implements P1TelegramList private synchronized void updateState() { logger.trace("Update state for device: {}", getThing().getThingTypeUID().getId()); if (!lastReceivedValues.isEmpty()) { - for (CosemObject cosemObject : lastReceivedValues) { - String channel = cosemObject.getType().name().toLowerCase(); - - for (Entry entry : cosemObject.getCosemValues().entrySet()) { - if (!entry.getKey().isEmpty()) { - /* CosemObject has a specific sub channel */ - channel += "_" + entry.getKey(); - } - State newState = entry.getValue(); + for (final CosemObject cosemObject : lastReceivedValues) { + for (final Entry entry : cosemObject.getCosemValues().entrySet()) { + final String channel = cosemObject.getType().name().toLowerCase() + /* CosemObject has a specific sub channel if key not empty */ + + (entry.getKey().isEmpty() ? "" : "_" + entry.getKey()); + + final State newState = entry.getValue(); logger.debug("Updating state for channel {} to value {}", channel, newState); updateState(channel, newState); } -- 2.47.3