[modbus] Improve error message if data thing is configured for reading but not connected to a polling bridge. (#16054)

Signed-off-by: Markus Minichmayr <markus@minichmayr.net>
This commit is contained in:
Markus Minichmayr 2023-12-14 23:25:25 +01:00 committed by GitHub
parent 4f84c48b21
commit 03b7b1dbac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View 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);
}
}