]> git.basschouten.com Git - openhab-addons.git/commitdiff
[nuki] Fixed nukiId migration for devices with shorter nukiId (#13088) (#13470)
authorJan Vybíral <jan.vybiral1@gmail.com>
Sat, 1 Oct 2022 11:45:35 +0000 (13:45 +0200)
committerGitHub <noreply@github.com>
Sat, 1 Oct 2022 11:45:35 +0000 (13:45 +0200)
Signed-off-by: Jan Vybíral <jan.vybiral1@gmail.com>
bundles/org.openhab.binding.nuki/README.md
bundles/org.openhab.binding.nuki/src/main/java/org/openhab/binding/nuki/internal/handler/AbstractNukiDeviceHandler.java

index e4611d3f3e0bf5fa0f23adf3d83a5382c94f5260..c3b751e66d65bed5ec8e43a12b54244657d36a58 100644 (file)
@@ -169,6 +169,15 @@ If secureToken property is enabled, make sure that time on device running openHA
 is enabled, all requests contain timestamp and bridge will only accept requests with small time difference. If it is not possible to 
 keep time synchronized, disable secureToken feature.
 
+### NukiId conversion when migrating from old binding version
+
+Older versions of binding used nukiId in hexadecimal format (as displayed in Nuki app, e.g. 5C4BC4B3). The new version
+expects nukiId to be in decimal format (e.g. 1548469427), since that's the format returned from API.
+The binding does the conversion automatically, but only if your nukiId contains any letters A-F, otherwise the binding
+has no way to tell whether the id is in hexadecimal or decimal format. If your nukiId in hexadecimal format
+contains only numbers, you'll have to convert it to decimal format manually, or preferably delete the old Thing 
+and use discovery to recreate it.
+
 ## Full Example
 
 A manual setup through files could look like this:
index 23387dcd763c4749b4f0b1247cda31b0f4f88e60..b2f9f1eb37f914349d41b276f67ee721b8614313 100644 (file)
@@ -63,7 +63,8 @@ public abstract class AbstractNukiDeviceHandler<T extends NukiDeviceConfiguratio
 
     protected final Logger logger = LoggerFactory.getLogger(getClass());
     private static final int JOB_INTERVAL = 60;
-    private static final Pattern NUKI_ID_HEX_PATTERN = Pattern.compile("[A-F\\d]{8}", Pattern.CASE_INSENSITIVE);
+    private static final Pattern NUKI_ID_HEX_PATTERN = Pattern.compile("[A-F\\d]*[A-F]+[A-F\\d]*",
+            Pattern.CASE_INSENSITIVE);
 
     @Nullable
     protected ScheduledFuture<?> reInitJob;