2 * Copyright (c) 2010-2024 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
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
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.io.homekit.internal;
15 import java.util.HashMap;
17 import java.util.Optional;
20 * Enum of the possible device types. The defined tag string can be used
21 * as a tag on an item to enable it for Homekit.
23 * @author Andy Lintner - Initial contribution
25 public enum HomekitAccessoryType {
26 HUMIDITY_SENSOR("HumiditySensor"),
27 LIGHTBULB("Lighting"),
29 TEMPERATURE_SENSOR("TemperatureSensor"),
30 THERMOSTAT("Thermostat"),
31 CONTACT_SENSOR("ContactSensor"),
33 LEAK_SENSOR("LeakSensor"),
34 MOTION_SENSOR("MotionSensor"),
35 OCCUPANCY_SENSOR("OccupancySensor"),
36 WINDOW_COVERING("WindowCovering"),
39 SMOKE_SENSOR("SmokeSensor"),
40 CARBON_MONOXIDE_SENSOR("CarbonMonoxideSensor"),
41 CARBON_DIOXIDE_SENSOR("CarbonDioxideSensor"),
42 BASIC_FAN("BasicFan"),
45 SECURITY_SYSTEM("SecuritySystem"),
48 SMART_SPEAKER("SmartSpeaker"),
49 GARAGE_DOOR_OPENER("GarageDoorOpener"),
50 HEATER_COOLER("HeaterCooler"),
51 LIGHT_SENSOR("LightSensor"),
52 AIR_QUALITY_SENSOR("AirQualitySensor"),
54 FILTER_MAINTENANCE("Filter"),
56 MICROPHONE("Microphone"),
58 TELEVISION("Television"),
59 INPUT_SOURCE("InputSource"),
60 TELEVISION_SPEAKER("TelevisionSpeaker"),
61 ACCESSORY_GROUP("AccessoryGroup"),
62 IRRIGATION_SYSTEM("IrrigationSystem"),
65 private static final Map<String, HomekitAccessoryType> TAG_MAP = new HashMap<>();
68 for (HomekitAccessoryType type : HomekitAccessoryType.values()) {
69 TAG_MAP.put(type.tag, type);
73 private final String tag;
75 private HomekitAccessoryType(String tag) {
79 public String getTag() {
84 * get accessoryType from String
86 * @param tag the tag string
87 * @return accessoryType or Optional.empty if no accessory type for the tag was found
89 public static Optional<HomekitAccessoryType> valueOfTag(String tag) {
90 return Optional.ofNullable(TAG_MAP.get(tag));