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
30 * @author Vivien Boistuaud - Added support for air purifier
33 public class TradfriBindingConstants {
35 private static final String BINDING_ID = "tradfri";
37 // List of all Thing Type UIDs
38 public static final ThingTypeUID GATEWAY_TYPE_UID = new ThingTypeUID(BINDING_ID, "gateway");
40 public static final ThingTypeUID THING_TYPE_ONOFF_PLUG = new ThingTypeUID(BINDING_ID, "0010");
41 public static final ThingTypeUID THING_TYPE_DIMMABLE_LIGHT = new ThingTypeUID(BINDING_ID, "0100");
42 public static final ThingTypeUID THING_TYPE_COLOR_TEMP_LIGHT = new ThingTypeUID(BINDING_ID, "0220");
43 public static final ThingTypeUID THING_TYPE_COLOR_LIGHT = new ThingTypeUID(BINDING_ID, "0210");
44 public static final ThingTypeUID THING_TYPE_DIMMER = new ThingTypeUID(BINDING_ID, "0820");
45 public static final ThingTypeUID THING_TYPE_REMOTE_CONTROL = new ThingTypeUID(BINDING_ID, "0830");
46 public static final ThingTypeUID THING_TYPE_MOTION_SENSOR = new ThingTypeUID(BINDING_ID, "0107");
47 public static final ThingTypeUID THING_TYPE_BLINDS = new ThingTypeUID(BINDING_ID, "0202");
48 public static final ThingTypeUID THING_TYPE_OPEN_CLOSE_REMOTE_CONTROL = new ThingTypeUID(BINDING_ID, "0203");
49 public static final ThingTypeUID THING_TYPE_AIR_PURIFIER = new ThingTypeUID(BINDING_ID, "0007");
51 public static final Set<ThingTypeUID> SUPPORTED_LIGHT_TYPES_UIDS = Collections
52 .unmodifiableSet(Stream.of(THING_TYPE_DIMMABLE_LIGHT, THING_TYPE_COLOR_TEMP_LIGHT, THING_TYPE_COLOR_LIGHT)
53 .collect(Collectors.toSet()));
55 public static final Set<ThingTypeUID> SUPPORTED_PLUG_TYPES_UIDS = Collections.singleton(THING_TYPE_ONOFF_PLUG);
57 public static final Set<ThingTypeUID> SUPPORTED_BLINDS_TYPES_UIDS = Collections.singleton(THING_TYPE_BLINDS);
59 public static final Set<ThingTypeUID> SUPPORTED_AIR_PURIFIER_TYPES_UIDS = Set.of(THING_TYPE_AIR_PURIFIER);
61 // List of all Gateway Configuration Properties
62 public static final String GATEWAY_CONFIG_HOST = "host";
63 public static final String GATEWAY_CONFIG_PORT = "port";
64 public static final String GATEWAY_CONFIG_CODE = "code";
65 public static final String GATEWAY_CONFIG_IDENTITY = "identity";
66 public static final String GATEWAY_CONFIG_PRE_SHARED_KEY = "preSharedKey";
68 // Not yet used - included for future support
69 public static final Set<ThingTypeUID> SUPPORTED_CONTROLLER_TYPES_UIDS = Collections
70 .unmodifiableSet(Stream.of(THING_TYPE_DIMMER, THING_TYPE_REMOTE_CONTROL,
71 THING_TYPE_OPEN_CLOSE_REMOTE_CONTROL, THING_TYPE_MOTION_SENSOR).collect(Collectors.toSet()));
73 public static final Set<ThingTypeUID> SUPPORTED_BRIDGE_TYPES_UIDS = Collections.singleton(GATEWAY_TYPE_UID);
75 public static final Set<ThingTypeUID> SUPPORTED_DEVICE_TYPES_UIDS = Collections.unmodifiableSet(Stream
76 .of(SUPPORTED_LIGHT_TYPES_UIDS.stream(), SUPPORTED_CONTROLLER_TYPES_UIDS.stream(),
77 SUPPORTED_PLUG_TYPES_UIDS.stream(), SUPPORTED_BLINDS_TYPES_UIDS.stream(),
78 SUPPORTED_AIR_PURIFIER_TYPES_UIDS.stream())
79 .reduce(Stream::concat).orElseGet(Stream::empty).collect(Collectors.toSet()));
81 public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections
82 .unmodifiableSet(Stream.concat(SUPPORTED_BRIDGE_TYPES_UIDS.stream(), SUPPORTED_DEVICE_TYPES_UIDS.stream())
83 .collect(Collectors.toSet()));
85 // List of all Channel IDs
86 public static final String CHANNEL_POWER = "power";
87 public static final String CHANNEL_BRIGHTNESS = "brightness";
88 public static final String CHANNEL_COLOR_TEMPERATURE = "color_temperature";
89 public static final String CHANNEL_COLOR = "color";
90 public static final String CHANNEL_POSITION = "position";
91 public static final String CHANNEL_BATTERY_LEVEL = "battery_level";
92 public static final String CHANNEL_BATTERY_LOW = "battery_low";
93 public static final String CHANNEL_FAN_MODE = "fan_mode";
94 public static final String CHANNEL_FAN_SPEED = "fan_speed";
95 public static final String CHANNEL_DISABLE_LED = "disable_led";
96 public static final String CHANNEL_LOCK_BUTTON = "lock_button";
97 public static final String CHANNEL_AIR_QUALITY_PM25 = "air_quality_pm25";
98 public static final String CHANNEL_AIR_QUALITY_RATING = "air_quality_rating";
99 public static final String CHANNEL_FILTER_CHECK_NEXT = "filter_check_next";
100 public static final String CHANNEL_FILTER_CHECK_ALARM = "filter_check_alarm";
101 public static final String CHANNEL_FILTER_UPTIME = "filter_uptime";
104 public static final String DEVICES = "15001";
105 public static final String AIR_PURIFIER = "15025";
106 public static final String AIR_QUALITY = "5907";
107 public static final String AUTH_PATH = "9063";
108 public static final String BLINDS = "15015";
109 public static final String CLIENT_IDENTITY_PROPOSED = "9090";
110 public static final String COLOR = "5706";
111 public static final String COLOR_X = "5709";
112 public static final String COLOR_Y = "5710";
113 public static final String COMMISSIONING_MODE = "9061";
114 public static final String CREATED_AT = "9002";
115 public static final String CUM_ACTIVE_POWER = "5805";
116 public static final String CURRENT_TIMESTAMP = "9059";
117 public static final int DEFAULT_DIMMER_TRANSITION_TIME = 5;
118 public static final String DEVICE = "3";
119 public static final String DIMMER = "5851";
120 public static final int DIMMER_MAX = 254;
121 public static final int DIMMER_MIN = 0;
122 public static final String END_ACTION = "9043";
123 public static final String END_TIME_HR = "9048";
124 public static final String END_TIME_MN = "9049";
125 public static final String ERROR_TAG = "errorcode";
126 public static final String FAN_MODE = "5900";
127 public static final String FAN_SPEED = "5908";
128 public static final String FILTER_UPTIME = "5902";
129 public static final String FORCE_CHECK_OTA_UPDATE = "9032";
130 public static final String GATEWAY = "15011";
131 public static final String GATEWAY_DETAILS = "15012";
132 public static final String GATEWAY_NAME = "9035";
133 public static final int GATEWAY_REBOOT_NOTIFICATION = 1003;
134 public static final String GATEWAY_REBOOT_NOTIFICATION_TYPE = "9052";
135 public static final String GATEWAY_TIME_SOURCE = "9071";
136 public static final String GATEWAY_UPDATE_DETAILS_URL = "9056";
137 public static final String GATEWAY_UPDATE_PROGRESS = "9055";
138 public static final String GROUPS = "15004";
139 public static final String GROUP_ID = "9038";
140 public static final String GROUP_LINK_ARRAY = "9995";
141 public static final String GROUP_SETTINGS = "9045";
142 public static final String HS_ACCESSORY_LINK = "9018";
143 public static final String HS_LINK = "15002";
144 public static final String IKEA_MOODS = "9068";
145 public static final String INSTANCE_ID = "9003";
146 public static final String LAST_SEEN = "9020";
147 public static final String LED_DISABLE = "5906";
148 public static final String LIGHT = "3311";
149 public static final int LIGHTS_OFF_SMART_TASK = 2;
150 public static final String LIGHT_SETTING = "15013";
151 public static final String LOCK_PHYSICAL_BUTTON = "5905";
152 public static final int LOSS_OF_INTERNET_CONNECTIVITY = 5001;
153 public static final String MASTER_TOKEN_TAG = "9036";
154 public static final String MAX_MSR_VALUE = "5602";
155 public static final String MAX_RNG_VALUE = "5604";
156 public static final String MIN_MSR_VALUE = "5601";
157 public static final String MIN_RNG_VALUE = "5603";
158 public static final String NAME = "9001";
159 public static final int NEW_FIRMWARE_AVAILABLE = 1001;
160 public static final String NEW_PSK_BY_GW = "9091";
161 public static final String NEXT_FILTER_CHECK = "5910";
162 public static final String NOTIFICATION_EVENT = "9015";
163 public static final String NOTIFICATION_NVPAIR = "9017";
164 public static final String NOTIFICATION_STATE = "9014";
165 public static final int NOT_AT_HOME_SMART_TASK = 1;
166 public static final String NTP_SERVER = "9023";
167 public static final String ONOFF = "5850";
168 public static final String ON_TIME = "5852";
169 public static final String OPEN = "1";
170 public static final int OPTION_APP_TOKEN = 2051;
171 public static final int OTA_CRITICAL = 1;
172 public static final int OTA_FORCED = 5;
173 public static final int OTA_NORMAL = 0;
174 public static final int OTA_REQUIRED = 2;
175 public static final String OTA_TYPE = "9066";
176 public static final String OTA_UPDATE = "9037";
177 public static final String OTA_UPDATE_STATE = "9054";
178 public static final String PLUG = "3312";
179 public static final String POWER_FACTOR = "5820";
180 public static final String POSITION = "5536";
181 public static final String REACHABILITY_STATE = "9019";
182 public static final String REBOOT = "9030";
183 public static final String REPEAT_DAYS = "9041";
184 public static final String REPEATER = "15014";
185 public static final String RESET = "9031";
186 public static final String RESET_MIN_MAX_MSR = "5605";
187 public static final String SCENE = "15005";
188 public static final String SCENE_ACTIVATE_FLAG = "9058";
189 public static final String SCENE_ID = "9039";
190 public static final String SCENE_INDEX = "9057";
191 public static final String SCENE_LINK = "9009";
192 public static final String SENSOR = "3300";
193 public static final String SENSOR_TYPE = "5751";
194 public static final String SENSOR_VALUE = "5700";
195 public static final String SESSION_ID = "9033";
196 public static final String SESSION_LENGTH = "9064";
197 public static final String SHORTCUT_ICON_REFERENCE_TYPE = "9051";
198 public static final String SMART_TASK_ACTION = "9050";
199 public static final String SMART_TASK_TEMPLATE = "9016";
200 public static final int SMART_TASK_TRIGGERED_EVENT = 1002;
201 public static final String SMART_TASK_TYPE = "9040";
202 public static final String START_ACTION = "9042";
203 public static final String START_TIME_HR = "9046";
204 public static final String START_TIME_MN = "9047";
205 public static final String STOP_TRIGGER = "5523";
206 public static final String SWITCH = "15009";
207 public static final String TIME_ARRAY = "9994";
208 public static final String TIME_REMAINING_IN_SECONDS = "9024";
209 public static final String TRANSITION_TIME = "5712";
210 public static final String TRIGGER_TIME_INTERVAL = "9044";
211 public static final String TYPE = "5750";
212 public static final String UNIT = "5701";
213 public static final String UPDATE_ACCEPTED_TIMESTAMP = "9069";
214 public static final String UPDATE_FIRMWARE = "9034";
215 public static final String USE_CURRENT_LIGHT_SETTINGS = "9070";
216 public static final String VERSION = "9029";
217 public static final int WAKE_UP_SMART_TASK = 3;
219 public static final String TYPE_SWITCH = "0";
220 public static final String TYPE_REMOTE = "1";
221 public static final String TYPE_LIGHT = "2";
222 public static final String TYPE_PLUG = "3";
223 public static final String TYPE_SENSOR = "4";
224 public static final String TYPE_REPEATER = "6";
225 public static final String TYPE_BLINDS = "7";
226 public static final String TYPE_AIR_PURIFIER = "10";
228 public static final String DEVICE_VENDOR = "0";
229 public static final String DEVICE_MODEL = "1";
230 public static final String DEVICE_FIRMWARE = "3";
231 public static final String DEVICE_BATTERY_LEVEL = "9";
233 // List of Air Purifier Constants
234 public static final int FAN_MODE_OFF = 0;
235 public static final int FAN_MODE_AUTO = 1;
236 public static final int FAN_MODE_SPEED1 = 10;
237 public static final int FAN_MODE_SPEED2 = 20;
238 public static final int FAN_MODE_SPEED3 = 30;
239 public static final int FAN_MODE_SPEED4 = 40;
240 public static final int FAN_MODE_SPEED5 = 50;
242 public static final Set<Integer> AIR_PURIFIER_FANMODE = Set.of(FAN_MODE_OFF, FAN_MODE_AUTO, FAN_MODE_SPEED1,
243 FAN_MODE_SPEED2, FAN_MODE_SPEED3, FAN_MODE_SPEED4, FAN_MODE_SPEED5);
245 public static final int AIR_PURIFIER_AIR_QUALITY_OK = 36;
246 public static final int AIR_PURIFIER_AIR_QUALITY_BAD = 86;
248 public static final int AIR_PURIFIER_AIR_QUALITY_UNDEFINED = 65535;