]> git.basschouten.com Git - openhab-addons.git/commitdiff
[modbus] Improve error message if data thing is configured for reading but not connec...
authorMarkus Minichmayr <markus@tapkey.com>
Thu, 14 Dec 2023 22:25:25 +0000 (23:25 +0100)
committerGitHub <noreply@github.com>
Thu, 14 Dec 2023 22:25:25 +0000 (23:25 +0100)
Signed-off-by: Markus Minichmayr <markus@minichmayr.net>
bundles/org.openhab.binding.modbus/src/main/java/org/openhab/binding/modbus/internal/handler/ModbusDataThingHandler.java

index 8eb720b40cf74414bc127ea318013ae3bea7f222..f81fc521718e0866222ae76d32281e8dd4808867 100644 (file)
@@ -423,8 +423,7 @@ public class ModbusDataThingHandler extends BaseThingHandler {
                 childOfEndpoint = true;
                 functionCode = null;
                 readRequest = null;
-            } else {
-                ModbusPollerThingHandler localPollerHandler = (ModbusPollerThingHandler) bridgeHandler;
+            } else if (bridgeHandler instanceof ModbusPollerThingHandler localPollerHandler) {
                 pollerHandler = localPollerHandler;
                 ModbusReadRequestBlueprint localReadRequest = localPollerHandler.getRequest();
                 if (localReadRequest == null) {
@@ -441,7 +440,12 @@ public class ModbusDataThingHandler extends BaseThingHandler {
                 comms = localPollerHandler.getCommunicationInterface();
                 pollStart = localReadRequest.getReference();
                 childOfEndpoint = false;
+            } else {
+                String errmsg = String.format("Thing %s is connected to an unsupported type of bridge.",
+                        getThing().getUID());
+                throw new ModbusConfigurationException(errmsg);
             }
+
             validateAndParseReadParameters(localConfig);
             validateAndParseWriteParameters(localConfig);
             validateMustReadOrWrite();
@@ -513,8 +517,8 @@ public class ModbusDataThingHandler extends BaseThingHandler {
         if (childOfEndpoint && readRequest == null) {
             if (!readStartMissing || !readValueTypeMissing) {
                 String errmsg = String.format(
-                        "Thing %s readStart=%s, and readValueType=%s were specified even though the data thing is child of endpoint (that is, write-only)!",
-                        getThing().getUID(), config.getReadStart(), config.getReadValueType());
+                        "Thing %s was configured for reading (readStart and/or readValueType specified) but the parent is not a polling bridge. Consider using a bridge of type 'Regular Poll'.",
+                        getThing().getUID());
                 throw new ModbusConfigurationException(errmsg);
             }
         }