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