[homekit] get min/max/step values from state description if possible (#13510)

this helps to auto-configure if the binding is providing the necessary info

metadata config still overrides

Signed-off-by: Cody Cutrer <cody@cutrer.us>
This commit is contained in:
Cody Cutrer 2022-10-09 02:55:32 -06:00 committed by GitHub
parent 7f1a096dca
commit 0aa28e5d40
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -32,6 +32,7 @@ import org.openhab.core.library.types.OnOffType;
import org.openhab.core.library.types.PercentType;
import org.openhab.core.library.types.StringType;
import org.openhab.core.types.State;
import org.openhab.core.types.StateDescription;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -283,7 +284,27 @@ public class HomekitTaggedItem {
@SuppressWarnings({ "null", "unchecked" })
public <T> T getConfiguration(String key, T defaultValue) {
if (configuration != null) {
final @Nullable Object value = configuration.get(key);
@Nullable
Object value = configuration.get(key);
// No explicit configuration, but for certain things we can check the state description
// to see if the binding provided it
if (value == null) {
final @Nullable StateDescription stateDescription = getItem().getStateDescription();
if (stateDescription != null) {
switch (key) {
case MIN_VALUE:
value = stateDescription.getMinimum();
break;
case MAX_VALUE:
value = stateDescription.getMaximum();
break;
case STEP:
value = stateDescription.getStep();
break;
}
}
}
if (value != null) {
if (value.getClass().equals(defaultValue.getClass())) {
return (T) value;