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.binding.insteon.internal;
19 import org.eclipse.jdt.annotation.NonNullByDefault;
20 import org.openhab.binding.insteon.internal.device.feature.FeatureEnums.VenstarSystemMode;
21 import org.openhab.core.OpenHAB;
22 import org.openhab.core.thing.ThingTypeUID;
25 * The {@link InsteonBindingConstants} class defines common constants, which are
26 * used across the whole binding.
28 * @author Rob Nielsen - Initial contribution
29 * @author Jeremy Setton - Rewrite insteon binding
32 public class InsteonBindingConstants {
33 public static final String BINDING_ID = "insteon";
34 public static final String BINDING_DATA_DIR = OpenHAB.getUserDataFolder() + File.separator + BINDING_ID;
36 // List of all thing type uids
37 public static final ThingTypeUID THING_TYPE_DEVICE = new ThingTypeUID(BINDING_ID, "device");
38 public static final ThingTypeUID THING_TYPE_HUB1 = new ThingTypeUID(BINDING_ID, "hub1");
39 public static final ThingTypeUID THING_TYPE_HUB2 = new ThingTypeUID(BINDING_ID, "hub2");
40 public static final ThingTypeUID THING_TYPE_PLM = new ThingTypeUID(BINDING_ID, "plm");
41 public static final ThingTypeUID THING_TYPE_SCENE = new ThingTypeUID(BINDING_ID, "scene");
42 public static final ThingTypeUID THING_TYPE_X10 = new ThingTypeUID(BINDING_ID, "x10");
43 public static final ThingTypeUID THING_TYPE_LEGACY_DEVICE = new ThingTypeUID(BINDING_ID, "legacy-device");
44 public static final ThingTypeUID THING_TYPE_LEGACY_NETWORK = new ThingTypeUID(BINDING_ID, "network");
46 public static final Set<ThingTypeUID> DISCOVERABLE_THING_TYPES_UIDS = Set.of(THING_TYPE_DEVICE, THING_TYPE_SCENE);
47 public static final Set<ThingTypeUID> DISCOVERABLE_LEGACY_THING_TYPES_UIDS = Set.of(THING_TYPE_LEGACY_DEVICE);
49 public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_DEVICE, THING_TYPE_HUB1,
50 THING_TYPE_HUB2, THING_TYPE_PLM, THING_TYPE_SCENE, THING_TYPE_X10, THING_TYPE_LEGACY_DEVICE,
51 THING_TYPE_LEGACY_NETWORK);
53 // List of all thing properties
54 public static final String PROPERTY_DEVICE_ADDRESS = "address";
55 public static final String PROPERTY_DEVICE_TYPE = "deviceType";
56 public static final String PROPERTY_ENGINE_VERSION = "engineVersion";
57 public static final String PROPERTY_PRODUCT_ID = "productId";
58 public static final String PROPERTY_SCENE_GROUP = "group";
60 // List of all channel parameters
61 public static final String PARAMETER_GROUP = "group";
62 public static final String PARAMETER_ON_LEVEL = "onLevel";
63 public static final String PARAMETER_RAMP_RATE = "rampRate";
65 // List of specific device feature names
66 public static final String FEATURE_DATABASE_DELTA = "databaseDelta";
67 public static final String FEATURE_HEARTBEAT = "heartbeat";
68 public static final String FEATURE_HEARTBEAT_INTERVAL = "heartbeatInterval";
69 public static final String FEATURE_HEARTBEAT_ON_OFF = "heartbeatOnOff";
70 public static final String FEATURE_INSTEON_ENGINE = "insteonEngine";
71 public static final String FEATURE_LED_CONTROL = "ledControl";
72 public static final String FEATURE_LED_ON_OFF = "ledOnOff";
73 public static final String FEATURE_LINK_FF_GROUP = "linkFFGroup";
74 public static final String FEATURE_LOW_BATTERY_THRESHOLD = "lowBatteryThreshold";
75 public static final String FEATURE_ON_LEVEL = "onLevel";
76 public static final String FEATURE_PING = "ping";
77 public static final String FEATURE_RAMP_RATE = "rampRate";
78 public static final String FEATURE_SCENE_ON_OFF = "sceneOnOff";
79 public static final String FEATURE_STAY_AWAKE = "stayAwake";
80 public static final String FEATURE_SYSTEM_MODE = "systemMode";
81 public static final String FEATURE_TEMPERATURE_SCALE = "temperatureScale";
82 public static final String FEATURE_TWO_GROUPS = "2Groups";
84 // List of specific device feature types
85 public static final String FEATURE_TYPE_FANLINC_FAN = "FanLincFan";
86 public static final String FEATURE_TYPE_GENERIC_DIMMER = "GenericDimmer";
87 public static final String FEATURE_TYPE_GENERIC_SWITCH = "GenericSwitch";
88 public static final String FEATURE_TYPE_KEYPAD_BUTTON = "KeypadButton";
89 public static final String FEATURE_TYPE_KEYPAD_BUTTON_OFF_MASK = "KeypadButtonOffMask";
90 public static final String FEATURE_TYPE_KEYPAD_BUTTON_ON_MASK = "KeypadButtonOnMask";
91 public static final String FEATURE_TYPE_KEYPAD_BUTTON_TOGGLE_MODE = "KeypadButtonToggleMode";
92 public static final String FEATURE_TYPE_OUTLET_SWITCH = "OutletSwitch";
93 public static final String FEATURE_TYPE_THERMOSTAT_FAN_MODE = "ThermostatFanMode";
94 public static final String FEATURE_TYPE_THERMOSTAT_SYSTEM_MODE = "ThermostatSystemMode";
95 public static final String FEATURE_TYPE_THERMOSTAT_COOL_SETPOINT = "ThermostatCoolSetpoint";
96 public static final String FEATURE_TYPE_THERMOSTAT_HEAT_SETPOINT = "ThermostatHeatSetpoint";
97 public static final String FEATURE_TYPE_VENSTAR_FAN_MODE = "VenstarFanMode";
98 public static final String FEATURE_TYPE_VENSTAR_SYSTEM_MODE = "VenstarSystemMode";
99 public static final String FEATURE_TYPE_VENSTAR_COOL_SETPOINT = "VenstarCoolSetpoint";
100 public static final String FEATURE_TYPE_VENSTAR_HEAT_SETPOINT = "VenstarHeatSetpoint";
102 // List of specific device types
103 public static final String DEVICE_TYPE_CLIMATE_CONTROL_VENSTAR_THERMOSTAT = "ClimateControl_VenstarThermostat";
105 // Map of custom state description options
106 public static final Map<String, String[]> CUSTOM_STATE_DESCRIPTION_OPTIONS = Map.ofEntries(
107 // Venstar Thermostat System Mode
108 Map.entry(DEVICE_TYPE_CLIMATE_CONTROL_VENSTAR_THERMOSTAT + ":" + FEATURE_SYSTEM_MODE,
109 VenstarSystemMode.names().toArray(String[]::new)));