]> git.basschouten.com Git - openhab-addons.git/blob
ac3c9cea4595b17e0cd568edc0f034dc4cfa480e
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2023 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.binding.tradfri.internal;
14
15 import java.util.Collections;
16 import java.util.Set;
17 import java.util.stream.Collectors;
18 import java.util.stream.Stream;
19
20 import org.eclipse.jdt.annotation.NonNullByDefault;
21 import org.openhab.core.thing.ThingTypeUID;
22
23 /**
24  * The {@link TradfriBindingConstants} class defines common constants, which are
25  * used across the whole binding.
26  *
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
31  */
32 @NonNullByDefault
33 public class TradfriBindingConstants {
34
35     private static final String BINDING_ID = "tradfri";
36
37     // List of all Thing Type UIDs
38     public static final ThingTypeUID GATEWAY_TYPE_UID = new ThingTypeUID(BINDING_ID, "gateway");
39
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");
50
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()));
54
55     public static final Set<ThingTypeUID> SUPPORTED_PLUG_TYPES_UIDS = Set.of(THING_TYPE_ONOFF_PLUG);
56
57     public static final Set<ThingTypeUID> SUPPORTED_BLINDS_TYPES_UIDS = Set.of(THING_TYPE_BLINDS);
58
59     public static final Set<ThingTypeUID> SUPPORTED_AIR_PURIFIER_TYPES_UIDS = Set.of(THING_TYPE_AIR_PURIFIER);
60
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";
67
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()));
72
73     public static final Set<ThingTypeUID> SUPPORTED_BRIDGE_TYPES_UIDS = Set.of(GATEWAY_TYPE_UID);
74
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()));
80
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()));
84
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";
102
103     // IPSO Objects
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;
218
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";
227
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";
232
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;
241
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);
244
245     public static final int AIR_PURIFIER_AIR_QUALITY_OK = 36;
246     public static final int AIR_PURIFIER_AIR_QUALITY_BAD = 86;
247
248     public static final int AIR_PURIFIER_AIR_QUALITY_UNDEFINED = 65535;
249 }