From 3456d8f6a38cbe9500bf6dc1d792fa1ebb4c5f80 Mon Sep 17 00:00:00 2001 From: Andre Jendrysseck Date: Wed, 23 Aug 2023 10:56:47 +0200 Subject: [PATCH 1/4] fixed problems with fingerprint codes which were received in decimal instead of hex Signed-off-by: Andre Jendrysseck --- .../subhandler/LcnModuleCodeSubHandler.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/subhandler/LcnModuleCodeSubHandler.java b/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/subhandler/LcnModuleCodeSubHandler.java index b4e6750affe8b..3840543b0fb8e 100644 --- a/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/subhandler/LcnModuleCodeSubHandler.java +++ b/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/subhandler/LcnModuleCodeSubHandler.java @@ -33,8 +33,10 @@ public class LcnModuleCodeSubHandler extends AbstractLcnModuleSubHandler { private static final Pattern TRANSPONDER_PATTERN = Pattern .compile(LcnBindingConstants.ADDRESS_REGEX + "\\.ZT(?\\d{3})(?\\d{3})(?\\d{3})"); - private static final Pattern FINGERPRINT_PATTERN = Pattern.compile(LcnBindingConstants.ADDRESS_REGEX - + "\\.ZF(?[0-9A-Fa-f]{2})(?[0-9A-Fa-f]{2})(?[0-9A-Fa-f]{2})"); + private static final Pattern FINGERPRINT_PATTERN_HEX = Pattern.compile(LcnBindingConstants.ADDRESS_REGEX + + "\\.ZF(?[0-9A-Fa-f]{2})(?[0-9A-Fa-f]{2})(?[0-9A-Fa-f]{2})$"); + private static final Pattern FINGERPRINT_PATTERN_DEC = Pattern + .compile(LcnBindingConstants.ADDRESS_REGEX + "\\.ZF(?\\d{3})(?\\d{3})(?\\d{3})"); private static final Pattern REMOTE_CONTROL_PATTERN = Pattern.compile(LcnBindingConstants.ADDRESS_REGEX + "\\.ZI(?\\d{3})(?\\d{3})(?\\d{3})(?\\d{3})(?\\d{3})"); @@ -51,7 +53,7 @@ public void handleRefresh(LcnChannelGroup channelGroup, int number) { public void handleStatusMessage(Matcher matcher) { String code; - if (matcher.pattern() == FINGERPRINT_PATTERN) { + if (matcher.pattern() == FINGERPRINT_PATTERN_HEX) { code = String.format("%02X%02X%02X", Integer.parseInt(matcher.group("byte0"), 16), Integer.parseInt(matcher.group("byte1"), 16), Integer.parseInt(matcher.group("byte2"), 16)); } else { @@ -61,7 +63,7 @@ public void handleStatusMessage(Matcher matcher) { if (matcher.pattern() == TRANSPONDER_PATTERN) { handler.triggerChannel(LcnChannelGroup.CODE, "transponder", code); - } else if (matcher.pattern() == FINGERPRINT_PATTERN) { + } else if (matcher.pattern() == FINGERPRINT_PATTERN_HEX || matcher.pattern() == FINGERPRINT_PATTERN_DEC) { handler.triggerChannel(LcnChannelGroup.CODE, "fingerprint", code); } else if (matcher.pattern() == REMOTE_CONTROL_PATTERN) { int keyNumber = Integer.parseInt(matcher.group("key")); @@ -114,6 +116,7 @@ public void handleStatusMessage(Matcher matcher) { @Override public Collection getPckStatusMessagePatterns() { - return Arrays.asList(TRANSPONDER_PATTERN, FINGERPRINT_PATTERN, REMOTE_CONTROL_PATTERN); + return Arrays.asList(TRANSPONDER_PATTERN, FINGERPRINT_PATTERN_HEX, FINGERPRINT_PATTERN_DEC, + REMOTE_CONTROL_PATTERN); } -} +} \ No newline at end of file From 136d29e375510fd3d5eca90b2554d61e25cb3b5e Mon Sep 17 00:00:00 2001 From: Andre Jendrysseck Date: Wed, 23 Aug 2023 11:17:19 +0200 Subject: [PATCH 2/4] correct format issues Signed-off-by: Andre Jendrysseck --- .../lcn/internal/subhandler/LcnModuleCodeSubHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/subhandler/LcnModuleCodeSubHandler.java b/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/subhandler/LcnModuleCodeSubHandler.java index 3840543b0fb8e..0fdc132818fdc 100644 --- a/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/subhandler/LcnModuleCodeSubHandler.java +++ b/bundles/org.openhab.binding.lcn/src/main/java/org/openhab/binding/lcn/internal/subhandler/LcnModuleCodeSubHandler.java @@ -119,4 +119,4 @@ public Collection getPckStatusMessagePatterns() { return Arrays.asList(TRANSPONDER_PATTERN, FINGERPRINT_PATTERN_HEX, FINGERPRINT_PATTERN_DEC, REMOTE_CONTROL_PATTERN); } -} \ No newline at end of file +} From dcc30719ee8d337766753e5e4d2224597ca66946 Mon Sep 17 00:00:00 2001 From: Andre Jendrysseck Date: Tue, 29 Aug 2023 22:59:16 +0200 Subject: [PATCH 3/4] add test file for fingerprint codes Signed-off-by: Andre Jendrysseck --- .../LcnModuleCodeSubHandlerTest.java | 49 +++++++++++++++++++ openhab-addons.code-workspace | 8 +++ 2 files changed, 57 insertions(+) create mode 100644 bundles/org.openhab.binding.lcn/src/test/java/org/openhab/binding/lcn/internal/subhandler/LcnModuleCodeSubHandlerTest.java create mode 100644 openhab-addons.code-workspace diff --git a/bundles/org.openhab.binding.lcn/src/test/java/org/openhab/binding/lcn/internal/subhandler/LcnModuleCodeSubHandlerTest.java b/bundles/org.openhab.binding.lcn/src/test/java/org/openhab/binding/lcn/internal/subhandler/LcnModuleCodeSubHandlerTest.java new file mode 100644 index 0000000000000..e6824fe93b14f --- /dev/null +++ b/bundles/org.openhab.binding.lcn/src/test/java/org/openhab/binding/lcn/internal/subhandler/LcnModuleCodeSubHandlerTest.java @@ -0,0 +1,49 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.lcn.internal.subhandler; + +import static org.mockito.Mockito.*; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.openhab.binding.lcn.internal.common.LcnChannelGroup; + +/** + * Test class. + * + * @author Andre Jendrysseck - Initial contribution + */ +@NonNullByDefault +public class LcnModuleCodeSubHandlerTest extends AbstractTestLcnModuleSubHandler { + + @Override + @BeforeEach + public void setUp() { + super.setUp(); + } + + @Test + public void testHexFingerprint() { + tryParseAllHandlers("=M000005.ZFABCDEF"); + verify(handler).triggerChannel(LcnChannelGroup.CODE, "fingerprint", "ABCDEF"); + verify(handler).triggerChannel(any(), any(), any()); + } + + @Test + public void testDecFingerprint() { + tryParseAllHandlers("=M000005.ZF255255255"); + verify(handler).triggerChannel(LcnChannelGroup.CODE, "fingerprint", "FFFFFF"); + verify(handler).triggerChannel(any(), any(), any()); + } +} diff --git a/openhab-addons.code-workspace b/openhab-addons.code-workspace new file mode 100644 index 0000000000000..876a1499c09dc --- /dev/null +++ b/openhab-addons.code-workspace @@ -0,0 +1,8 @@ +{ + "folders": [ + { + "path": "." + } + ], + "settings": {} +} \ No newline at end of file From 7ff7aca3f35f7fd30593e3b5268945c738cfe6c3 Mon Sep 17 00:00:00 2001 From: andrexp Date: Tue, 29 Aug 2023 23:22:31 +0200 Subject: [PATCH 4/4] Delete openhab-addons.code-workspace Signed-off-by: Andre Jendrysseck --- openhab-addons.code-workspace | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 openhab-addons.code-workspace diff --git a/openhab-addons.code-workspace b/openhab-addons.code-workspace deleted file mode 100644 index 876a1499c09dc..0000000000000 --- a/openhab-addons.code-workspace +++ /dev/null @@ -1,8 +0,0 @@ -{ - "folders": [ - { - "path": "." - } - ], - "settings": {} -} \ No newline at end of file