]> git.basschouten.com Git - openhab-addons.git/blob
b8b83f630dbd272ab12066749822d078ce3f780b
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2024 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.io.homekit.internal;
14
15 import java.util.HashMap;
16 import java.util.Map;
17 import java.util.Optional;
18
19 /**
20  * Characteristics are used by complex accessories that can't be represented by
21  * a single item (i.e. a thermostat)
22  *
23  * @author Andy Lintner - Initial contribution
24  */
25 public enum HomekitCharacteristicType {
26     /*
27      * It is illegal to have a characteristic type also be a device type
28      */
29     EMPTY("Empty"), // used in case only accessory type but no characteristic provided
30     NAME("Name"),
31     BATTERY_LOW_STATUS("BatteryLowStatus"),
32     ACTIVE_STATUS("ActiveStatus"),
33     ISCONFIGURED("IsConfigured"),
34     SERVICELABELIDX("ServiceLabelIndex"),
35     INUSE_STATUS("InUseStatus"),
36     FAULT_STATUS("FaultStatus"),
37     TAMPERED_STATUS("TamperedStatus"),
38     OBSTRUCTION_STATUS("ObstructionStatus"),
39     ON_STATE("OnState"),
40     CONTACT_SENSOR_STATE("ContactSensorState"),
41
42     MOTION_DETECTED_STATE("MotionDetectedState"),
43     OCCUPANCY_DETECTED_STATE("OccupancyDetectedState"),
44     SMOKE_DETECTED_STATE("SmokeDetectedState"),
45
46     CARBON_MONOXIDE_DETECTED_STATE("CarbonMonoxideDetectedState"),
47     CARBON_MONOXIDE_LEVEL("CarbonMonoxideLevel"),
48     CARBON_MONOXIDE_PEAK_LEVEL("CarbonMonoxidePeakLevel"),
49
50     CARBON_DIOXIDE_DETECTED_STATE("CarbonDioxideDetectedState"),
51     CARBON_DIOXIDE_LEVEL("CarbonDioxideLevel"),
52     CARBON_DIOXIDE_PEAK_LEVEL("CarbonDioxidePeakLevel"),
53
54     RELATIVE_HUMIDITY("RelativeHumidity"),
55     LEAK_DETECTED_STATE("LeakDetectedState"),
56     HOLD_POSITION("HoldPosition"),
57
58     TARGET_POSITION("TargetPosition"),
59     CURRENT_POSITION("CurrentPosition"),
60     POSITION_STATE("PositionState"),
61     CURRENT_HORIZONTAL_TILT_ANGLE("CurrentHorizontalTiltAngle"),
62     CURRENT_VERTICAL_TILT_ANGLE("CurrentVerticalTiltAngle"),
63     TARGET_HORIZONTAL_TILT_ANGLE("TargetHorizontalTiltAngle"),
64     TARGET_VERTICAL_TILT_ANGLE("TargetVerticalTiltAngle"),
65     CURRENT_TILT_ANGLE("CurrentTiltAngle"),
66     TARGET_TILT_ANGLE("TargetTiltAngle"),
67
68     HUE("Hue"),
69     BRIGHTNESS("Brightness"),
70     SATURATION("Saturation"),
71     COLOR_TEMPERATURE("ColorTemperature"),
72
73     CURRENT_FAN_STATE("CurrentFanState"),
74     TARGET_FAN_STATE("TargetFanState"),
75     ROTATION_DIRECTION("RotationDirection"),
76     ROTATION_SPEED("RotationSpeed"),
77     SWING_MODE("SwingMode"),
78     LOCK_CONTROL("LockControl"),
79
80     CURRENT_TEMPERATURE("CurrentTemperature"),
81     TARGET_HEATING_COOLING_STATE("TargetHeatingCoolingMode"),
82     CURRENT_HEATING_COOLING_STATE("CurrentHeatingCoolingMode"),
83     TARGET_TEMPERATURE("TargetTemperature"),
84     TEMPERATURE_UNIT("TemperatureUnit"),
85
86     LOCK_CURRENT_STATE("LockCurrentState"),
87     LOCK_TARGET_STATE("LockTargetState"),
88
89     DURATION("Duration"),
90     REMAINING_DURATION("RemainingDuration"),
91
92     SECURITY_SYSTEM_CURRENT_STATE("CurrentSecuritySystemState"),
93     SECURITY_SYSTEM_TARGET_STATE("TargetSecuritySystemState"),
94
95     VOLUME("Volume"),
96     MUTE("Mute"),
97     LIGHT_LEVEL("LightLevel"),
98
99     CURRENT_DOOR_STATE("CurrentDoorState"),
100     TARGET_DOOR_STATE("TargetDoorState"),
101     TARGET_HEATER_COOLER_STATE("TargetHeaterCoolerState"),
102     CURRENT_HEATER_COOLER_STATE("CurrentHeaterCoolerState"),
103     COOLING_THRESHOLD_TEMPERATURE("CoolingThresholdTemperature"),
104     HEATING_THRESHOLD_TEMPERATURE("HeatingThresholdTemperature"),
105
106     AIR_QUALITY("AirQuality"),
107     OZONE_DENSITY("OzoneDensity"),
108     NITROGEN_DIOXIDE_DENSITY("NitrogenDioxideDensity"),
109     SULPHUR_DIOXIDE_DENSITY("SulphurDioxideDensity"),
110     PM25_DENSITY("PM25Density"),
111     PM10_DENSITY("PM10Density"),
112     VOC_DENSITY("VOCDensity"),
113
114     BATTERY_LEVEL("BatteryLevel"),
115     BATTERY_CHARGING_STATE("BatteryChargingState"),
116
117     CURRENT_SLAT_STATE("CurrentSlatState"),
118
119     CURRENT_MEDIA_STATE("CurrentMediaState"),
120     TARGET_MEDIA_STATE("TargetMediaState"),
121     CONFIGURED_NAME("ConfiguredName"),
122
123     ACTIVE("Active"),
124
125     FILTER_CHANGE_INDICATION("FilterChangeIndication"),
126     FILTER_LIFE_LEVEL("FilterLifeLevel"),
127     FILTER_RESET_INDICATION("FilterResetIndication"),
128
129     ACTIVE_IDENTIFIER("ActiveIdentifier"),
130     REMOTE_KEY("RemoteKey"),
131     SLEEP_DISCOVERY_MODE("SleepDiscoveryMode"),
132     POWER_MODE("PowerMode"),
133     CLOSED_CAPTIONS("ClosedCaptions"),
134     PICTURE_MODE("PictureMode"),
135
136     CONFIGURED("Configured"),
137     INPUT_SOURCE_TYPE("InputSourceType"),
138     CURRENT_VISIBILITY("CurrentVisibility"),
139     IDENTIFIER("Identifier"),
140     INPUT_DEVICE_TYPE("InputDeviceType"),
141     TARGET_VISIBILITY_STATE("TargetVisibilityState"),
142
143     VOLUME_SELECTOR("VolumeSelector"),
144     VOLUME_CONTROL_TYPE("VolumeControlType"),
145
146     PROGRAM_MODE("ProgramMode"),
147     SERVICE_LABEL("ServiceLabel"),
148     SERVICE_INDEX("ServiceIndex");
149
150     private static final Map<String, HomekitCharacteristicType> TAG_MAP = new HashMap<>();
151
152     static {
153         for (HomekitCharacteristicType type : HomekitCharacteristicType.values()) {
154             TAG_MAP.put(type.tag, type);
155         }
156     }
157
158     private final String tag;
159
160     private HomekitCharacteristicType(String tag) {
161         this.tag = tag;
162     }
163
164     public String getTag() {
165         return tag;
166     }
167
168     /**
169      * get characteristicType from String
170      *
171      * @param tag the tag string
172      * @return characteristicType or null if not found
173      */
174     public static Optional<HomekitCharacteristicType> valueOfTag(String tag) {
175         return Optional.ofNullable(TAG_MAP.get(tag));
176     }
177
178     @Override
179     public String toString() {
180         return tag;
181     }
182 }