]> git.basschouten.com Git - openhab-addons.git/blob
ebed1632284cd3f3f2445ede1e566acf8e3e6ef4
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2022 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
66     HUE("Hue"),
67     BRIGHTNESS("Brightness"),
68     SATURATION("Saturation"),
69     COLOR_TEMPERATURE("ColorTemperature"),
70
71     CURRENT_FAN_STATE("CurrentFanState"),
72     TARGET_FAN_STATE("TargetFanState"),
73     ROTATION_DIRECTION("RotationDirection"),
74     ROTATION_SPEED("RotationSpeed"),
75     SWING_MODE("SwingMode"),
76     LOCK_CONTROL("LockControl"),
77
78     CURRENT_TEMPERATURE("CurrentTemperature"),
79     TARGET_HEATING_COOLING_STATE("TargetHeatingCoolingMode"),
80     CURRENT_HEATING_COOLING_STATE("CurrentHeatingCoolingMode"),
81     TARGET_TEMPERATURE("TargetTemperature"),
82     TEMPERATURE_UNIT("TemperatureUnit"),
83
84     LOCK_CURRENT_STATE("LockCurrentState"),
85     LOCK_TARGET_STATE("LockTargetState"),
86
87     DURATION("Duration"),
88     REMAINING_DURATION("RemainingDuration"),
89
90     SECURITY_SYSTEM_CURRENT_STATE("CurrentSecuritySystemState"),
91     SECURITY_SYSTEM_TARGET_STATE("TargetSecuritySystemState"),
92
93     VOLUME("Volume"),
94     MUTE("Mute"),
95     LIGHT_LEVEL("LightLevel"),
96
97     CURRENT_DOOR_STATE("CurrentDoorState"),
98     TARGET_DOOR_STATE("TargetDoorState"),
99     TARGET_HEATER_COOLER_STATE("TargetHeaterCoolerState"),
100     CURRENT_HEATER_COOLER_STATE("CurrentHeaterCoolerState"),
101     COOLING_THRESHOLD_TEMPERATURE("CoolingThresholdTemperature"),
102     HEATING_THRESHOLD_TEMPERATURE("HeatingThresholdTemperature"),
103
104     AIR_QUALITY("AirQuality"),
105     OZONE_DENSITY("OzoneDensity"),
106     NITROGEN_DIOXIDE_DENSITY("NitrogenDioxideDensity"),
107     SULPHUR_DIOXIDE_DENSITY("SulphurDioxideDensity"),
108     PM25_DENSITY("PM25Density"),
109     PM10_DENSITY("PM10Density"),
110     VOC_DENSITY("VOCDensity");
111
112     private static final Map<String, HomekitCharacteristicType> TAG_MAP = new HashMap<>();
113
114     static {
115         for (HomekitCharacteristicType type : HomekitCharacteristicType.values()) {
116             TAG_MAP.put(type.tag, type);
117         }
118     }
119
120     private final String tag;
121
122     private HomekitCharacteristicType(String tag) {
123         this.tag = tag;
124     }
125
126     public String getTag() {
127         return tag;
128     }
129
130     /**
131      * get characteristicType from String
132      *
133      * @param tag the tag string
134      * @return characteristicType or null if not found
135      */
136     public static Optional<HomekitCharacteristicType> valueOfTag(String tag) {
137         return Optional.ofNullable(TAG_MAP.get(tag));
138     }
139 }