]> git.basschouten.com Git - openhab-addons.git/blob
bd4052898ea5551bbeab24b7fddb57bb2bccb910
[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
31     NAME("Name"),
32     MANUFACTURER("Manufacturer"),
33     MODEL("Model"),
34     SERIAL_NUMBER("SerialNumber"),
35     FIRMWARE_REVISION("FirmwareRevision"),
36     HARDWARE_REVISION("HardwareRevision"),
37     IDENTIFY("Identify"),
38
39     BATTERY_LOW_STATUS("BatteryLowStatus"),
40     ACTIVE_STATUS("ActiveStatus"),
41     ISCONFIGURED("IsConfigured"),
42     SERVICELABELIDX("ServiceLabelIndex"),
43     INUSE_STATUS("InUseStatus"),
44     FAULT_STATUS("FaultStatus"),
45     TAMPERED_STATUS("TamperedStatus"),
46     OBSTRUCTION_STATUS("ObstructionStatus"),
47     ON_STATE("OnState"),
48     CONTACT_SENSOR_STATE("ContactSensorState"),
49
50     MOTION_DETECTED_STATE("MotionDetectedState"),
51     OCCUPANCY_DETECTED_STATE("OccupancyDetectedState"),
52     SMOKE_DETECTED_STATE("SmokeDetectedState"),
53
54     CARBON_MONOXIDE_DETECTED_STATE("CarbonMonoxideDetectedState"),
55     CARBON_MONOXIDE_LEVEL("CarbonMonoxideLevel"),
56     CARBON_MONOXIDE_PEAK_LEVEL("CarbonMonoxidePeakLevel"),
57
58     CARBON_DIOXIDE_DETECTED_STATE("CarbonDioxideDetectedState"),
59     CARBON_DIOXIDE_LEVEL("CarbonDioxideLevel"),
60     CARBON_DIOXIDE_PEAK_LEVEL("CarbonDioxidePeakLevel"),
61
62     RELATIVE_HUMIDITY("RelativeHumidity"),
63     LEAK_DETECTED_STATE("LeakDetectedState"),
64     HOLD_POSITION("HoldPosition"),
65
66     TARGET_POSITION("TargetPosition"),
67     CURRENT_POSITION("CurrentPosition"),
68     POSITION_STATE("PositionState"),
69     CURRENT_HORIZONTAL_TILT_ANGLE("CurrentHorizontalTiltAngle"),
70     CURRENT_VERTICAL_TILT_ANGLE("CurrentVerticalTiltAngle"),
71     TARGET_HORIZONTAL_TILT_ANGLE("TargetHorizontalTiltAngle"),
72     TARGET_VERTICAL_TILT_ANGLE("TargetVerticalTiltAngle"),
73     CURRENT_TILT_ANGLE("CurrentTiltAngle"),
74     TARGET_TILT_ANGLE("TargetTiltAngle"),
75
76     HUE("Hue"),
77     BRIGHTNESS("Brightness"),
78     SATURATION("Saturation"),
79     COLOR_TEMPERATURE("ColorTemperature"),
80
81     CURRENT_FAN_STATE("CurrentFanState"),
82     TARGET_FAN_STATE("TargetFanState"),
83     ROTATION_DIRECTION("RotationDirection"),
84     ROTATION_SPEED("RotationSpeed"),
85     SWING_MODE("SwingMode"),
86     LOCK_CONTROL("LockControl"),
87
88     CURRENT_TEMPERATURE("CurrentTemperature"),
89     TARGET_HEATING_COOLING_STATE("TargetHeatingCoolingMode"),
90     CURRENT_HEATING_COOLING_STATE("CurrentHeatingCoolingMode"),
91     TARGET_TEMPERATURE("TargetTemperature"),
92     TEMPERATURE_UNIT("TemperatureUnit"),
93     TARGET_RELATIVE_HUMIDITY("TargetRelativeHumidity"),
94
95     LOCK_CURRENT_STATE("LockCurrentState"),
96     LOCK_TARGET_STATE("LockTargetState"),
97
98     DURATION("Duration"),
99     REMAINING_DURATION("RemainingDuration"),
100
101     SECURITY_SYSTEM_CURRENT_STATE("CurrentSecuritySystemState"),
102     SECURITY_SYSTEM_TARGET_STATE("TargetSecuritySystemState"),
103
104     VOLUME("Volume"),
105     MUTE("Mute"),
106     LIGHT_LEVEL("LightLevel"),
107
108     CURRENT_DOOR_STATE("CurrentDoorState"),
109     TARGET_DOOR_STATE("TargetDoorState"),
110     TARGET_HEATER_COOLER_STATE("TargetHeaterCoolerState"),
111     CURRENT_HEATER_COOLER_STATE("CurrentHeaterCoolerState"),
112     COOLING_THRESHOLD_TEMPERATURE("CoolingThresholdTemperature"),
113     HEATING_THRESHOLD_TEMPERATURE("HeatingThresholdTemperature"),
114
115     AIR_QUALITY("AirQuality"),
116     OZONE_DENSITY("OzoneDensity"),
117     NITROGEN_DIOXIDE_DENSITY("NitrogenDioxideDensity"),
118     SULPHUR_DIOXIDE_DENSITY("SulphurDioxideDensity"),
119     PM25_DENSITY("PM25Density"),
120     PM10_DENSITY("PM10Density"),
121     VOC_DENSITY("VOCDensity"),
122
123     BATTERY_LEVEL("BatteryLevel"),
124     BATTERY_CHARGING_STATE("BatteryChargingState"),
125
126     CURRENT_SLAT_STATE("CurrentSlatState"),
127
128     CURRENT_MEDIA_STATE("CurrentMediaState"),
129     TARGET_MEDIA_STATE("TargetMediaState"),
130     CONFIGURED_NAME("ConfiguredName"),
131
132     ACTIVE("Active"),
133
134     FILTER_CHANGE_INDICATION("FilterChangeIndication"),
135     FILTER_LIFE_LEVEL("FilterLifeLevel"),
136     FILTER_RESET_INDICATION("FilterResetIndication"),
137
138     ACTIVE_IDENTIFIER("ActiveIdentifier"),
139     REMOTE_KEY("RemoteKey"),
140     SLEEP_DISCOVERY_MODE("SleepDiscoveryMode"),
141     POWER_MODE("PowerMode"),
142     CLOSED_CAPTIONS("ClosedCaptions"),
143     PICTURE_MODE("PictureMode"),
144
145     CONFIGURED("Configured"),
146     INPUT_SOURCE_TYPE("InputSourceType"),
147     CURRENT_VISIBILITY("CurrentVisibility"),
148     IDENTIFIER("Identifier"),
149     INPUT_DEVICE_TYPE("InputDeviceType"),
150     TARGET_VISIBILITY_STATE("TargetVisibilityState"),
151
152     VOLUME_SELECTOR("VolumeSelector"),
153     VOLUME_CONTROL_TYPE("VolumeControlType"),
154
155     PROGRAM_MODE("ProgramMode"),
156     SERVICE_LABEL("ServiceLabel"),
157     SERVICE_INDEX("ServiceIndex");
158
159     private static final Map<String, HomekitCharacteristicType> TAG_MAP = new HashMap<>();
160
161     static {
162         for (HomekitCharacteristicType type : HomekitCharacteristicType.values()) {
163             TAG_MAP.put(type.tag, type);
164         }
165     }
166
167     private final String tag;
168
169     private HomekitCharacteristicType(String tag) {
170         this.tag = tag;
171     }
172
173     public String getTag() {
174         return tag;
175     }
176
177     /**
178      * get characteristicType from String
179      *
180      * @param tag the tag string
181      * @return characteristicType or null if not found
182      */
183     public static Optional<HomekitCharacteristicType> valueOfTag(String tag) {
184         return Optional.ofNullable(TAG_MAP.get(tag));
185     }
186
187     @Override
188     public String toString() {
189         return tag;
190     }
191 }