[lcn] Fix RVar setpoint modification for modules before 2006 (#10115)

Signed-off-by: Fabian Wolter <github@fabian-wolter.de>
This commit is contained in:
Fabian Wolter 2021-02-13 22:55:21 +01:00 committed by GitHub
parent b4ca793963
commit 1604149f5c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 20 deletions

View File

@ -21,7 +21,6 @@ import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.binding.lcn.internal.LcnBindingConstants; import org.openhab.binding.lcn.internal.LcnBindingConstants;
import org.openhab.binding.lcn.internal.LcnModuleHandler; import org.openhab.binding.lcn.internal.LcnModuleHandler;
import org.openhab.binding.lcn.internal.common.LcnChannelGroup; import org.openhab.binding.lcn.internal.common.LcnChannelGroup;
import org.openhab.binding.lcn.internal.common.LcnDefs;
import org.openhab.binding.lcn.internal.common.LcnException; import org.openhab.binding.lcn.internal.common.LcnException;
import org.openhab.binding.lcn.internal.common.PckGenerator; import org.openhab.binding.lcn.internal.common.PckGenerator;
import org.openhab.binding.lcn.internal.common.Variable; import org.openhab.binding.lcn.internal.common.Variable;
@ -51,21 +50,7 @@ public class LcnModuleRvarSetpointSubHandler extends AbstractLcnModuleVariableSu
@Override @Override
public void handleCommandDecimal(DecimalType command, LcnChannelGroup channelGroup, int number) public void handleCommandDecimal(DecimalType command, LcnChannelGroup channelGroup, int number)
throws LcnException { throws LcnException {
Variable variable = getVariable(channelGroup, number);
if (info.hasExtendedMeasurementProcessing()) {
handler.sendPck(PckGenerator.setSetpointAbsolute(number, command.intValue())); handler.sendPck(PckGenerator.setSetpointAbsolute(number, command.intValue()));
} else {
try {
int relativeVariableChange = getRelativeChange(command, variable);
handler.sendPck(
PckGenerator.setSetpointRelative(number, LcnDefs.RelVarRef.CURRENT, relativeVariableChange));
} catch (LcnException e) {
// current value unknown for some reason, refresh it in case we come again here
info.refreshVariable(variable);
throw e;
}
}
} }
@Override @Override

View File

@ -74,7 +74,7 @@ public class LcnModuleRvarSetpointSubHandlerTest extends AbstractTestLcnModuleSu
when(info.getVariableValue(Variable.RVARSETPOINT1)).thenReturn(1000L); when(info.getVariableValue(Variable.RVARSETPOINT1)).thenReturn(1000L);
when(info.hasExtendedMeasurementProcessing()).thenReturn(false); when(info.hasExtendedMeasurementProcessing()).thenReturn(false);
l.handleCommandDecimal(new DecimalType(1100), LcnChannelGroup.RVARSETPOINT, 0); l.handleCommandDecimal(new DecimalType(1100), LcnChannelGroup.RVARSETPOINT, 0);
verify(handler).sendPck("REASA+100"); verify(handler).sendPck("X2030032100");
} }
@Test @Test
@ -82,7 +82,7 @@ public class LcnModuleRvarSetpointSubHandlerTest extends AbstractTestLcnModuleSu
when(info.getVariableValue(Variable.RVARSETPOINT2)).thenReturn(1000L); when(info.getVariableValue(Variable.RVARSETPOINT2)).thenReturn(1000L);
when(info.hasExtendedMeasurementProcessing()).thenReturn(false); when(info.hasExtendedMeasurementProcessing()).thenReturn(false);
l.handleCommandDecimal(new DecimalType(1100), LcnChannelGroup.RVARSETPOINT, 1); l.handleCommandDecimal(new DecimalType(1100), LcnChannelGroup.RVARSETPOINT, 1);
verify(handler).sendPck("REBSA+100"); verify(handler).sendPck("X2030096100");
} }
@Test @Test
@ -90,7 +90,7 @@ public class LcnModuleRvarSetpointSubHandlerTest extends AbstractTestLcnModuleSu
when(info.getVariableValue(Variable.RVARSETPOINT1)).thenReturn(1000L); when(info.getVariableValue(Variable.RVARSETPOINT1)).thenReturn(1000L);
when(info.hasExtendedMeasurementProcessing()).thenReturn(false); when(info.hasExtendedMeasurementProcessing()).thenReturn(false);
l.handleCommandDecimal(new DecimalType(900), LcnChannelGroup.RVARSETPOINT, 0); l.handleCommandDecimal(new DecimalType(900), LcnChannelGroup.RVARSETPOINT, 0);
verify(handler).sendPck("REASA-100"); verify(handler).sendPck("X2030040100");
} }
@Test @Test
@ -98,7 +98,7 @@ public class LcnModuleRvarSetpointSubHandlerTest extends AbstractTestLcnModuleSu
when(info.getVariableValue(Variable.RVARSETPOINT2)).thenReturn(1000L); when(info.getVariableValue(Variable.RVARSETPOINT2)).thenReturn(1000L);
when(info.hasExtendedMeasurementProcessing()).thenReturn(false); when(info.hasExtendedMeasurementProcessing()).thenReturn(false);
l.handleCommandDecimal(new DecimalType(900), LcnChannelGroup.RVARSETPOINT, 1); l.handleCommandDecimal(new DecimalType(900), LcnChannelGroup.RVARSETPOINT, 1);
verify(handler).sendPck("REBSA-100"); verify(handler).sendPck("X2030104100");
} }
@Test @Test