The API for retrieving a value from a device should be something like
<T extends Variable> public T getVariable(Class<T> variableClass) throws VariableNotProvidedException
If there is a limit on how often a variable can be retrieved (for example, wait 500 ms before issuing two get requests), this should be handled on the device itself.