From: Stefan Triller Date: Wed, 3 Feb 2021 20:37:00 +0000 (+0100) Subject: [smartmeter] Fix trying to create channels from invalid data (#10008) X-Git-Url: https://git.basschouten.com/?a=commitdiff_plain;h=bc5ffb26e2c095dbfb5e63d12b06872717fd943f;p=openhab-addons.git [smartmeter] Fix trying to create channels from invalid data (#10008) Fixes #6762 * Fix Unit tests The method was used to create the pattern for a regex and for building the channel id. I ave separated them now. At least the tests are green ;) Signed-off-by: Stefan Triller --- diff --git a/bundles/org.openhab.binding.smartmeter/src/main/java/org/openhab/binding/smartmeter/SmartMeterBindingConstants.java b/bundles/org.openhab.binding.smartmeter/src/main/java/org/openhab/binding/smartmeter/SmartMeterBindingConstants.java index 8738b74718..de2b535b44 100644 --- a/bundles/org.openhab.binding.smartmeter/src/main/java/org/openhab/binding/smartmeter/SmartMeterBindingConstants.java +++ b/bundles/org.openhab.binding.smartmeter/src/main/java/org/openhab/binding/smartmeter/SmartMeterBindingConstants.java @@ -36,14 +36,18 @@ public class SmartMeterBindingConstants { public static final String CONFIGURATION_CONVERSION = "conversionRatio"; public static final String CONFIGURATION_CHANNEL_NEGATE = "negate"; public static final String CHANNEL_PROPERTY_OBIS = "obis"; - public static final String OBIS_PATTERN_CHANNELID = getObisChannelId(ObisCode.OBIS_PATTERN); + public static final String OBIS_PATTERN_CHANNELID = getObisChannelIdPattern(ObisCode.OBIS_PATTERN); /** Obis format */ public static final String OBIS_FORMAT_MINIMAL = "%d-%d:%d.%d.%d"; /** Obis format */ public static final String OBIS_FORMAT = OBIS_FORMAT_MINIMAL + "*%d"; public static final String CHANNEL_TYPE_METERREADER_OBIS = "channel-type:" + BINDING_ID + ":obis"; - public static String getObisChannelId(String obis) { + public static String getObisChannelIdPattern(String obis) { return obis.replaceAll("\\.", "-").replaceAll(":|\\*", "_"); } + + public static String getObisChannelId(String obis) { + return getObisChannelIdPattern(obis).replaceAll("[^\\w-]", ""); + } } diff --git a/bundles/org.openhab.binding.smartmeter/src/main/java/org/openhab/binding/smartmeter/internal/iec62056/Iec62056_21SerialConnector.java b/bundles/org.openhab.binding.smartmeter/src/main/java/org/openhab/binding/smartmeter/internal/iec62056/Iec62056_21SerialConnector.java index 81f8ba4047..f1a06905c8 100644 --- a/bundles/org.openhab.binding.smartmeter/src/main/java/org/openhab/binding/smartmeter/internal/iec62056/Iec62056_21SerialConnector.java +++ b/bundles/org.openhab.binding.smartmeter/src/main/java/org/openhab/binding/smartmeter/internal/iec62056/Iec62056_21SerialConnector.java @@ -100,6 +100,7 @@ public class Iec62056_21SerialConnector extends ConnectorBase { @Override public void newDataMessage(@Nullable DataMessage dataMessage) { logger.debug("Datamessage read: {}", dataMessage); + emitter.onError(new IllegalArgumentException("Error while emitting dataMessage")); emitter.onNext(dataMessage); }