2 * Copyright (c) 2010-2023 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.tradfri.internal;
15 import java.util.Collections;
17 import java.util.stream.Collectors;
18 import java.util.stream.Stream;
20 import org.eclipse.jdt.annotation.NonNullByDefault;
21 import org.openhab.core.thing.ThingTypeUID;
24 * The {@link TradfriBindingConstants} class defines common constants, which are
25 * used across the whole binding.
27 * @author Kai Kreuzer - Initial contribution
28 * @author Christoph Weitkamp - Added support for remote controller and motion sensor devices (read-only battery level)
29 * @author Manuel Raffel - Added support for blinds
32 public class TradfriBindingConstants {
34 private static final String BINDING_ID = "tradfri";
36 // List of all Thing Type UIDs
37 public static final ThingTypeUID GATEWAY_TYPE_UID = new ThingTypeUID(BINDING_ID, "gateway");
39 public static final ThingTypeUID THING_TYPE_ONOFF_PLUG = new ThingTypeUID(BINDING_ID, "0010");
40 public static final ThingTypeUID THING_TYPE_DIMMABLE_LIGHT = new ThingTypeUID(BINDING_ID, "0100");
41 public static final ThingTypeUID THING_TYPE_COLOR_TEMP_LIGHT = new ThingTypeUID(BINDING_ID, "0220");
42 public static final ThingTypeUID THING_TYPE_COLOR_LIGHT = new ThingTypeUID(BINDING_ID, "0210");
43 public static final ThingTypeUID THING_TYPE_DIMMER = new ThingTypeUID(BINDING_ID, "0820");
44 public static final ThingTypeUID THING_TYPE_REMOTE_CONTROL = new ThingTypeUID(BINDING_ID, "0830");
45 public static final ThingTypeUID THING_TYPE_MOTION_SENSOR = new ThingTypeUID(BINDING_ID, "0107");
46 public static final ThingTypeUID THING_TYPE_BLINDS = new ThingTypeUID(BINDING_ID, "0202");
47 public static final ThingTypeUID THING_TYPE_OPEN_CLOSE_REMOTE_CONTROL = new ThingTypeUID(BINDING_ID, "0203");
49 public static final Set<ThingTypeUID> SUPPORTED_LIGHT_TYPES_UIDS = Collections
50 .unmodifiableSet(Stream.of(THING_TYPE_DIMMABLE_LIGHT, THING_TYPE_COLOR_TEMP_LIGHT, THING_TYPE_COLOR_LIGHT)
51 .collect(Collectors.toSet()));
53 public static final Set<ThingTypeUID> SUPPORTED_PLUG_TYPES_UIDS = Collections.singleton(THING_TYPE_ONOFF_PLUG);
55 public static final Set<ThingTypeUID> SUPPORTED_BLINDS_TYPES_UIDS = Collections.singleton(THING_TYPE_BLINDS);
57 // List of all Gateway Configuration Properties
58 public static final String GATEWAY_CONFIG_HOST = "host";
59 public static final String GATEWAY_CONFIG_PORT = "port";
60 public static final String GATEWAY_CONFIG_CODE = "code";
61 public static final String GATEWAY_CONFIG_IDENTITY = "identity";
62 public static final String GATEWAY_CONFIG_PRE_SHARED_KEY = "preSharedKey";
64 // Not yet used - included for future support
65 public static final Set<ThingTypeUID> SUPPORTED_CONTROLLER_TYPES_UIDS = Collections
66 .unmodifiableSet(Stream.of(THING_TYPE_DIMMER, THING_TYPE_REMOTE_CONTROL,
67 THING_TYPE_OPEN_CLOSE_REMOTE_CONTROL, THING_TYPE_MOTION_SENSOR).collect(Collectors.toSet()));
69 public static final Set<ThingTypeUID> SUPPORTED_BRIDGE_TYPES_UIDS = Collections.singleton(GATEWAY_TYPE_UID);
71 public static final Set<ThingTypeUID> SUPPORTED_DEVICE_TYPES_UIDS = Collections.unmodifiableSet(Stream
72 .of(SUPPORTED_LIGHT_TYPES_UIDS.stream(), SUPPORTED_CONTROLLER_TYPES_UIDS.stream(),
73 SUPPORTED_PLUG_TYPES_UIDS.stream(), SUPPORTED_BLINDS_TYPES_UIDS.stream())
74 .reduce(Stream::concat).orElseGet(Stream::empty).collect(Collectors.toSet()));
76 public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections
77 .unmodifiableSet(Stream.concat(SUPPORTED_BRIDGE_TYPES_UIDS.stream(), SUPPORTED_DEVICE_TYPES_UIDS.stream())
78 .collect(Collectors.toSet()));
80 // List of all Channel IDs
81 public static final String CHANNEL_POWER = "power";
82 public static final String CHANNEL_BRIGHTNESS = "brightness";
83 public static final String CHANNEL_COLOR_TEMPERATURE = "color_temperature";
84 public static final String CHANNEL_COLOR = "color";
85 public static final String CHANNEL_POSITION = "position";
86 public static final String CHANNEL_BATTERY_LEVEL = "battery_level";
87 public static final String CHANNEL_BATTERY_LOW = "battery_low";
90 public static final String DEVICES = "15001";
91 public static final String AUTH_PATH = "9063";
92 public static final String BLINDS = "15015";
93 public static final String CLIENT_IDENTITY_PROPOSED = "9090";
94 public static final String COLOR = "5706";
95 public static final String COLOR_X = "5709";
96 public static final String COLOR_Y = "5710";
97 public static final String COMMISSIONING_MODE = "9061";
98 public static final String CREATED_AT = "9002";
99 public static final String CUM_ACTIVE_POWER = "5805";
100 public static final String CURRENT_TIMESTAMP = "9059";
101 public static final int DEFAULT_DIMMER_TRANSITION_TIME = 5;
102 public static final String DEVICE = "3";
103 public static final String DIMMER = "5851";
104 public static final int DIMMER_MAX = 254;
105 public static final int DIMMER_MIN = 0;
106 public static final String END_ACTION = "9043";
107 public static final String END_TIME_HR = "9048";
108 public static final String END_TIME_MN = "9049";
109 public static final String ERROR_TAG = "errorcode";
110 public static final String FORCE_CHECK_OTA_UPDATE = "9032";
111 public static final String GATEWAY = "15011";
112 public static final String GATEWAY_DETAILS = "15012";
113 public static final String GATEWAY_NAME = "9035";
114 public static final int GATEWAY_REBOOT_NOTIFICATION = 1003;
115 public static final String GATEWAY_REBOOT_NOTIFICATION_TYPE = "9052";
116 public static final String GATEWAY_TIME_SOURCE = "9071";
117 public static final String GATEWAY_UPDATE_DETAILS_URL = "9056";
118 public static final String GATEWAY_UPDATE_PROGRESS = "9055";
119 public static final String GROUPS = "15004";
120 public static final String GROUP_ID = "9038";
121 public static final String GROUP_LINK_ARRAY = "9995";
122 public static final String GROUP_SETTINGS = "9045";
123 public static final String HS_ACCESSORY_LINK = "9018";
124 public static final String HS_LINK = "15002";
125 public static final String IKEA_MOODS = "9068";
126 public static final String INSTANCE_ID = "9003";
127 public static final String LAST_SEEN = "9020";
128 public static final String LIGHT = "3311";
129 public static final int LIGHTS_OFF_SMART_TASK = 2;
130 public static final String LIGHT_SETTING = "15013";
131 public static final int LOSS_OF_INTERNET_CONNECTIVITY = 5001;
132 public static final String MASTER_TOKEN_TAG = "9036";
133 public static final String MAX_MSR_VALUE = "5602";
134 public static final String MAX_RNG_VALUE = "5604";
135 public static final String MIN_MSR_VALUE = "5601";
136 public static final String MIN_RNG_VALUE = "5603";
137 public static final String NAME = "9001";
138 public static final int NEW_FIRMWARE_AVAILABLE = 1001;
139 public static final String NEW_PSK_BY_GW = "9091";
140 public static final String NOTIFICATION_EVENT = "9015";
141 public static final String NOTIFICATION_NVPAIR = "9017";
142 public static final String NOTIFICATION_STATE = "9014";
143 public static final int NOT_AT_HOME_SMART_TASK = 1;
144 public static final String NTP_SERVER = "9023";
145 public static final String ONOFF = "5850";
146 public static final String ON_TIME = "5852";
147 public static final String OPEN = "1";
148 public static final int OPTION_APP_TOKEN = 2051;
149 public static final int OTA_CRITICAL = 1;
150 public static final int OTA_FORCED = 5;
151 public static final int OTA_NORMAL = 0;
152 public static final int OTA_REQUIRED = 2;
153 public static final String OTA_TYPE = "9066";
154 public static final String OTA_UPDATE = "9037";
155 public static final String OTA_UPDATE_STATE = "9054";
156 public static final String PLUG = "3312";
157 public static final String POWER_FACTOR = "5820";
158 public static final String POSITION = "5536";
159 public static final String REACHABILITY_STATE = "9019";
160 public static final String REBOOT = "9030";
161 public static final String REPEAT_DAYS = "9041";
162 public static final String REPEATER = "15014";
163 public static final String RESET = "9031";
164 public static final String RESET_MIN_MAX_MSR = "5605";
165 public static final String SCENE = "15005";
166 public static final String SCENE_ACTIVATE_FLAG = "9058";
167 public static final String SCENE_ID = "9039";
168 public static final String SCENE_INDEX = "9057";
169 public static final String SCENE_LINK = "9009";
170 public static final String SENSOR = "3300";
171 public static final String SENSOR_TYPE = "5751";
172 public static final String SENSOR_VALUE = "5700";
173 public static final String SESSION_ID = "9033";
174 public static final String SESSION_LENGTH = "9064";
175 public static final String SHORTCUT_ICON_REFERENCE_TYPE = "9051";
176 public static final String SMART_TASK_ACTION = "9050";
177 public static final String SMART_TASK_TEMPLATE = "9016";
178 public static final int SMART_TASK_TRIGGERED_EVENT = 1002;
179 public static final String SMART_TASK_TYPE = "9040";
180 public static final String START_ACTION = "9042";
181 public static final String START_TIME_HR = "9046";
182 public static final String START_TIME_MN = "9047";
183 public static final String STOP_TRIGGER = "5523";
184 public static final String SWITCH = "15009";
185 public static final String TIME_ARRAY = "9994";
186 public static final String TIME_REMAINING_IN_SECONDS = "9024";
187 public static final String TRANSITION_TIME = "5712";
188 public static final String TRIGGER_TIME_INTERVAL = "9044";
189 public static final String TYPE = "5750";
190 public static final String UNIT = "5701";
191 public static final String UPDATE_ACCEPTED_TIMESTAMP = "9069";
192 public static final String UPDATE_FIRMWARE = "9034";
193 public static final String USE_CURRENT_LIGHT_SETTINGS = "9070";
194 public static final String VERSION = "9029";
195 public static final int WAKE_UP_SMART_TASK = 3;
197 public static final String TYPE_SWITCH = "0";
198 public static final String TYPE_REMOTE = "1";
199 public static final String TYPE_LIGHT = "2";
200 public static final String TYPE_PLUG = "3";
201 public static final String TYPE_SENSOR = "4";
202 public static final String TYPE_REPEATER = "6";
203 public static final String TYPE_BLINDS = "7";
204 public static final String DEVICE_VENDOR = "0";
205 public static final String DEVICE_MODEL = "1";
206 public static final String DEVICE_FIRMWARE = "3";
207 public static final String DEVICE_BATTERY_LEVEL = "9";