[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:
parent
7f1a096dca
commit
0aa28e5d40
@ -32,6 +32,7 @@ import org.openhab.core.library.types.OnOffType;
|
|||||||
import org.openhab.core.library.types.PercentType;
|
import org.openhab.core.library.types.PercentType;
|
||||||
import org.openhab.core.library.types.StringType;
|
import org.openhab.core.library.types.StringType;
|
||||||
import org.openhab.core.types.State;
|
import org.openhab.core.types.State;
|
||||||
|
import org.openhab.core.types.StateDescription;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -283,7 +284,27 @@ public class HomekitTaggedItem {
|
|||||||
@SuppressWarnings({ "null", "unchecked" })
|
@SuppressWarnings({ "null", "unchecked" })
|
||||||
public <T> T getConfiguration(String key, T defaultValue) {
|
public <T> T getConfiguration(String key, T defaultValue) {
|
||||||
if (configuration != null) {
|
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 != null) {
|
||||||
if (value.getClass().equals(defaultValue.getClass())) {
|
if (value.getClass().equals(defaultValue.getClass())) {
|
||||||
return (T) value;
|
return (T) value;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user