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.shelly.internal;
15 import static org.openhab.binding.shelly.internal.discovery.ShellyThingCreator.*;
19 import org.eclipse.jdt.annotation.NonNullByDefault;
20 import org.openhab.core.thing.ThingTypeUID;
23 * The {@link ShellyBindingConstants} class defines common constants, which are
24 * used across the whole binding.
26 * @author Markus Michels - Initial contribution
29 public class ShellyBindingConstants {
31 public static final String VENDOR = "Shelly";
32 public static final String BINDING_ID = "shelly";
33 public static final String SYSTEM_ID = "system";
35 public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_SHELLY1, //
36 THING_TYPE_SHELLY1L, //
37 THING_TYPE_SHELLY1PM, //
38 THING_TYPE_SHELLYEM, //
39 THING_TYPE_SHELLY3EM, //
40 THING_TYPE_SHELLY2_RELAY, //
41 THING_TYPE_SHELLY2_ROLLER, //
42 THING_TYPE_SHELLY25_RELAY, //
43 THING_TYPE_SHELLY25_ROLLER, //
44 THING_TYPE_SHELLY4PRO, //
45 THING_TYPE_SHELLYPLUG, //
46 THING_TYPE_SHELLYPLUGS, //
47 THING_TYPE_SHELLYPLUGU1, //
48 THING_TYPE_SHELLYUNI, //
49 THING_TYPE_SHELLYDIMMER, //
50 THING_TYPE_SHELLYDIMMER2, //
51 THING_TYPE_SHELLYIX3, //
52 THING_TYPE_SHELLYBULB, //
53 THING_TYPE_SHELLYDUO, //
54 THING_TYPE_SHELLYVINTAGE, //
55 THING_TYPE_SHELLYDUORGBW, //
56 THING_TYPE_SHELLYRGBW2_COLOR, //
57 THING_TYPE_SHELLYRGBW2_WHITE, //
58 THING_TYPE_SHELLYHT, //
59 THING_TYPE_SHELLYTRV, //
60 THING_TYPE_SHELLYSENSE, //
61 THING_TYPE_SHELLYEYE, //
62 THING_TYPE_SHELLYSMOKE, //
63 THING_TYPE_SHELLYGAS, //
64 THING_TYPE_SHELLYFLOOD, //
65 THING_TYPE_SHELLYDOORWIN, //
66 THING_TYPE_SHELLYDOORWIN2, //
67 THING_TYPE_SHELLYBUTTON1, //
68 THING_TYPE_SHELLYBUTTON2, //
69 THING_TYPE_SHELLMOTION, //
70 THING_TYPE_SHELLYPLUS1, //
71 THING_TYPE_SHELLYPLUS1PM, //
72 THING_TYPE_SHELLYPLUS2PM_RELAY, //
73 THING_TYPE_SHELLYPLUS2PM_ROLLER, //
74 THING_TYPE_SHELLYPRO1, //
75 THING_TYPE_SHELLYPRO1PM, //
76 THING_TYPE_SHELLYPRO2_RELAY, //
77 THING_TYPE_SHELLYPRO2PM_RELAY, //
78 THING_TYPE_SHELLYPRO2PM_ROLLER, //
79 THING_TYPE_SHELLYPRO3, //
80 THING_TYPE_SHELLYPRO3EM, //
81 THING_TYPE_SHELLYPRO4PM, //
82 THING_TYPE_SHELLYPLUSI4, //
83 THING_TYPE_SHELLYPLUSI4DC, //
84 THING_TYPE_SHELLYPLUSHT, //
85 THING_TYPE_SHELLYPLUSSMOKE, //
86 THING_TYPE_SHELLYPLUSPLUGS, //
87 THING_TYPE_SHELLYPLUSPLUGUS, //
88 THING_TYPE_SHELLYPROTECTED, //
89 THING_TYPE_SHELLYUNKNOWN);
91 // Thing Configuration Properties
92 public static final String CONFIG_DEVICEIP = "deviceIp";
93 public static final String CONFIG_HTTP_USERID = "userId";
94 public static final String CONFIG_HTTP_PASSWORD = "password";
95 public static final String CONFIG_UPDATE_INTERVAL = "updateInterval";
97 public static final String PROPERTY_SERVICE_NAME = "serviceName";
98 public static final String PROPERTY_DEV_NAME = "deviceName";
99 public static final String PROPERTY_DEV_TYPE = "deviceType";
100 public static final String PROPERTY_DEV_MODE = "deviceMode";
101 public static final String PROPERTY_DEV_GEN = "deviceGeneration";
102 public static final String PROPERTY_HWREV = "deviceHwRev";
103 public static final String PROPERTY_HWBATCH = "deviceHwBatch";
104 public static final String PROPERTY_UPDATE_PERIOD = "devUpdatePeriod";
105 public static final String PROPERTY_NUM_RELAYS = "numberRelays";
106 public static final String PROPERTY_NUM_ROLLERS = "numberRollers";
107 public static final String PROPERTY_NUM_METER = "numberMeters";
108 public static final String PROPERTY_LAST_ACTIVE = "lastActive";
109 public static final String PROPERTY_WIFI_NETW = "wifiNetwork";
110 public static final String PROPERTY_UPDATE_STATUS = "updateStatus";
111 public static final String PROPERTY_UPDATE_AVAILABLE = "updateAvailable";
112 public static final String PROPERTY_UPDATE_CURR_VERS = "updateCurrentVersion";
113 public static final String PROPERTY_UPDATE_NEW_VERS = "updateNewVersion";
114 public static final String PROPERTY_COAP_DESCR = "coapDeviceDescr";
115 public static final String PROPERTY_COAP_VERSION = "coapVersion";
116 public static final String PROPERTY_COIOTAUTO = "coiotAutoEnable";
119 public static final String CHANNEL_GROUP_RELAY_CONTROL = "relay";
120 public static final String CHANNEL_OUTPUT_NAME = "outputName";
121 public static final String CHANNEL_OUTPUT = "output";
122 public static final String CHANNEL_INPUT = "input";
123 public static final String CHANNEL_INPUT1 = "input1";
124 public static final String CHANNEL_INPUT2 = "input2";
125 public static final String CHANNEL_BRIGHTNESS = "brightness";
127 public static final String CHANNEL_TIMER_AUTOON = "autoOn";
128 public static final String CHANNEL_TIMER_AUTOOFF = "autoOff";
129 public static final String CHANNEL_TIMER_ACTIVE = "timerActive";
132 public static final String CHANNEL_GROUP_ROL_CONTROL = "roller";
133 public static final String CHANNEL_ROL_CONTROL_CONTROL = "control";
134 public static final String CHANNEL_ROL_CONTROL_POS = "rollerpos";
135 public static final String CHANNEL_ROL_CONTROL_FAV = "rollerFav";
136 public static final String CHANNEL_ROL_CONTROL_TIMER = "timer";
137 public static final String CHANNEL_ROL_CONTROL_STATE = "state";
138 public static final String CHANNEL_ROL_CONTROL_STOPR = "stopReason";
139 public static final String CHANNEL_ROL_CONTROL_SAFETY = "safety";
142 public static final String CHANNEL_GROUP_DIMMER_CONTROL = CHANNEL_GROUP_RELAY_CONTROL;
145 public static final String CHANNEL_GROUP_METER = "meter";
146 public static final String CHANNEL_METER_CURRENTWATTS = "currentWatts";
147 public static final String CHANNEL_METER_LASTMIN = "lastPower";
148 public static final String CHANNEL_METER_LASTMIN1 = CHANNEL_METER_LASTMIN + "1";
149 public static final String CHANNEL_METER_TOTALKWH = "totalKWH";
150 public static final String CHANNEL_EMETER_TOTALRET = "returnedKWH";
151 public static final String CHANNEL_EMETER_REACTWATTS = "reactiveWatts";
152 public static final String CHANNEL_EMETER_VOLTAGE = "voltage";
153 public static final String CHANNEL_EMETER_CURRENT = "current";
154 public static final String CHANNEL_EMETER_PFACTOR = "powerFactor";
155 public static final String CHANNEL_EMETER_RESETTOTAL = "resetTotals";
157 public static final String CHANNEL_GROUP_SENSOR = "sensors";
158 public static final String CHANNEL_SENSOR_TEMP = "temperature";
159 public static final String CHANNEL_SENSOR_HUM = "humidity";
160 public static final String CHANNEL_SENSOR_LUX = "lux";
161 public static final String CHANNEL_SENSOR_PPM = "ppm";
162 public static final String CHANNEL_SENSOR_VOLTAGE = "voltage";
163 public static final String CHANNEL_SENSOR_ILLUM = "illumination";
164 public static final String CHANNEL_SENSOR_VIBRATION = "vibration";
165 public static final String CHANNEL_SENSOR_TILT = "tilt";
166 public static final String CHANNEL_SENSOR_FLOOD = "flood";
167 public static final String CHANNEL_SENSOR_SMOKE = "smoke";
168 public static final String CHANNEL_SENSOR_MUTE = "mute";
169 public static final String CHANNEL_SENSOR_STATE = "state";
170 public static final String CHANNEL_SENSOR_OPEN = "open";
171 public static final String CHANNEL_SENSOR_VALVE = "valve";
172 public static final String CHANNEL_SENSOR_SSTATE = "status"; // Shelly Gas
173 public static final String CHANNEL_SENSOR_MOTION_ACT = "motionActive";
174 public static final String CHANNEL_SENSOR_MOTION = "motion";
175 public static final String CHANNEL_SENSOR_MOTION_TS = "motionTimestamp";
176 public static final String CHANNEL_SENSOR_SLEEPTIME = "sensorSleepTime";
177 public static final String CHANNEL_SENSOR_ALARM_STATE = "alarmState";
178 public static final String CHANNEL_SENSOR_ERROR = "lastError";
181 public static final String CHANNEL_CONTROL_SETTEMP = "targetTemp";
182 public static final String CHANNEL_CONTROL_POSITION = "position";
183 public static final String CHANNEL_CONTROL_MODE = "mode";
184 public static final String CHANNEL_CONTROL_BCONTROL = "boost";
185 public static final String CHANNEL_CONTROL_BTIMER = "boostTimer";
186 public static final String CHANNEL_CONTROL_SCHEDULE = "schedule";
187 public static final String CHANNEL_CONTROL_PROFILE = "selectedProfile";
189 // External sensors for Shelly1/1PM
190 public static final String CHANNEL_ESENSOR_TEMP1 = CHANNEL_SENSOR_TEMP + "1";
191 public static final String CHANNEL_ESENSOR_TEMP2 = CHANNEL_SENSOR_TEMP + "2";
192 public static final String CHANNEL_ESENSOR_TEMP3 = CHANNEL_SENSOR_TEMP + "3";
193 public static final String CHANNEL_ESENSOR_TEMP4 = CHANNEL_SENSOR_TEMP + "4";
194 public static final String CHANNEL_ESENSOR_TEMP5 = CHANNEL_SENSOR_TEMP + "5";
195 public static final String CHANNEL_ESENSOR_HUMIDITY = CHANNEL_SENSOR_HUM;
196 public static final String CHANNEL_ESENSOR_VOLTAGE = CHANNEL_SENSOR_VOLTAGE;
197 public static final String CHANNEL_ESENSOR_DIGITALINPUT = "digitalInput";
198 public static final String CHANNEL_ESENSOR_ANALOGINPUT = "analogInput";
199 public static final String CHANNEL_ESENSOR_INPUT = "input";
200 public static final String CHANNEL_ESENSOR_INPUT1 = CHANNEL_ESENSOR_INPUT + "1";
202 public static final String CHANNEL_GROUP_CONTROL = "control";
203 public static final String CHANNEL_SENSE_KEY = "key";
205 public static final String CHANNEL_GROUP_BATTERY = "battery";
206 public static final String CHANNEL_SENSOR_BAT_LEVEL = "batteryLevel";
207 public static final String CHANNEL_SENSOR_BAT_LOW = "lowBattery";
209 public static final String CHANNEL_GROUP_LIGHT_CONTROL = "control";
210 public static final String CHANNEL_LIGHT_COLOR_MODE = "mode";
211 public static final String CHANNEL_LIGHT_POWER = "power";
212 public static final String CHANNEL_LIGHT_DEFSTATE = "defaultState";
213 public static final String CHANNEL_GROUP_LIGHT_CHANNEL = "channel";
215 // Bulb/RGBW2 in color mode
216 public static final String CHANNEL_GROUP_COLOR_CONTROL = "color";
217 public static final String CHANNEL_COLOR_PICKER = "hsb";
218 public static final String CHANNEL_COLOR_FULL = "full";
219 public static final String CHANNEL_COLOR_RED = "red";
220 public static final String CHANNEL_COLOR_GREEN = "green";
221 public static final String CHANNEL_COLOR_BLUE = "blue";
222 public static final String CHANNEL_COLOR_WHITE = "white";
223 public static final String CHANNEL_COLOR_GAIN = "gain";
224 public static final String CHANNEL_COLOR_EFFECT = "effect";
226 // Bulb/RGBW2/Dup in White Mode
227 public static final String CHANNEL_GROUP_WHITE_CONTROL = "white";
228 public static final String CHANNEL_COLOR_TEMP = "temperature";
231 public static final String CHANNEL_GROUP_DEV_STATUS = "device";
232 public static final String CHANNEL_DEVST_NAME = "deviceName";
233 public static final String CHANNEL_DEVST_UPTIME = "uptime";
234 public static final String CHANNEL_DEVST_HEARTBEAT = "heartBeat";
235 public static final String CHANNEL_DEVST_RSSI = "wifiSignal";
236 public static final String CHANNEL_DEVST_ITEMP = "internalTemp";
237 public static final String CHANNEL_DEVST_WAKEUP = "wakeupReason";
238 public static final String CHANNEL_DEVST_ALARM = "alarm";
239 public static final String CHANNEL_DEVST_ACCUWATTS = "accumulatedWatts";
240 public static final String CHANNEL_DEVST_ACCUTOTAL = "accumulatedWTotal";
241 public static final String CHANNEL_DEVST_ACCURETURNED = "accumulatedReturned";
242 public static final String CHANNEL_DEVST_CHARGER = "charger";
243 public static final String CHANNEL_DEVST_UPDATE = "updateAvailable";
244 public static final String CHANNEL_DEVST_SELFTTEST = "selfTest";
245 public static final String CHANNEL_DEVST_VOLTAGE = "supplyVoltage";
246 public static final String CHANNEL_DEVST_CALIBRATED = "calibrated";
248 public static final String CHANNEL_LED_STATUS_DISABLE = "statusLed";
249 public static final String CHANNEL_LED_POWER_DISABLE = "powerLed";
251 public static final String CHANNEL_GROUP_STATUS = "status";
252 public static final String CHANNEL_STATUS_EVENTTYPE = "lastEvent";
253 public static final String CHANNEL_STATUS_EVENTTYPE1 = CHANNEL_STATUS_EVENTTYPE + "1";
254 public static final String CHANNEL_STATUS_EVENTTYPE2 = CHANNEL_STATUS_EVENTTYPE + "2";
255 public static final String CHANNEL_STATUS_EVENTCOUNT = "eventCount";
256 public static final String CHANNEL_STATUS_EVENTCOUNT1 = CHANNEL_STATUS_EVENTCOUNT + "1";
257 public static final String CHANNEL_STATUS_EVENTCOUNT2 = CHANNEL_STATUS_EVENTCOUNT + "2";
260 public static final String CHANNEL_LAST_UPDATE = "lastUpdate";
261 public static final String CHANNEL_EVENT_TRIGGER = "event";
262 public static final String CHANNEL_BUTTON_TRIGGER = "button";
263 public static final String CHANNEL_BUTTON_TRIGGER1 = CHANNEL_BUTTON_TRIGGER + "1";
264 public static final String CHANNEL_BUTTON_TRIGGER2 = CHANNEL_BUTTON_TRIGGER + "2";
266 public static final String SERVICE_TYPE = "_http._tcp.local.";
267 public static final String SHELLY_API_MIN_FWVERSION = "v1.8.2";
268 public static final String SHELLY_API_MIN_FWCOIOT = "v1.6";// v1.6.0+
269 public static final String SHELLY_API_FWCOIOT2 = "v1.8";// CoAP 2 with FW 1.8+
270 public static final String SHELLY_API_FW_110 = "v1.10"; // FW 1.10 or newer detected, activates some add feature
271 public static final String SHELLY2_API_MIN_FWVERSION = "v0.10.2"; // Gen 2 minimum FW
273 // Alarm types/messages
274 public static final String ALARM_TYPE_NONE = "NONE";
275 public static final String ALARM_TYPE_RESTARTED = "RESTARTED";
276 public static final String ALARM_TYPE_OVERTEMP = "OVERTEMP";
277 public static final String ALARM_TYPE_OVERPOWER = "OVERPOWER";
278 public static final String ALARM_TYPE_OVERLOAD = "OVERLOAD";
279 public static final String ALARM_TYPE_LOADERR = "LOAD_ERROR";
280 public static final String ALARM_TYPE_SENSOR_ERROR = "SENSOR_ERROR";
281 public static final String ALARM_TYPE_LOW_BATTERY = "LOW_BATTERY";
282 public static final String ALARM_TYPE_VALVE_ERROR = "VALVE_ERROR";
283 public static final String EVENT_TYPE_VIBRATION = "VIBRATION";
286 public static final String EVENT_TYPE_RELAY = "relay";
287 public static final String EVENT_TYPE_ROLLER = "roller";
288 public static final String EVENT_TYPE_LIGHT = "light";
289 public static final String EVENT_TYPE_SENSORDATA = "report";
291 // URI for the EventServlet
292 public static final String SHELLY1_CALLBACK_URI = "/shelly/event";
293 public static final String SHELLY2_CALLBACK_URI = "/shelly/wsevent";
295 public static final int DIM_STEPSIZE = 5;
297 // Formatting: Number of scaling digits
298 public static final int DIGITS_NONE = 0;
299 public static final int DIGITS_WATT = 2;
300 public static final int DIGITS_KWH = 3;
301 public static final int DIGITS_VOLT = 1;
302 public static final int DIGITS_AMPERE = 3;
303 public static final int DIGITS_TEMP = 1;
304 public static final int DIGITS_LUX = 0;
305 public static final int DIGITS_PERCENT = 1;
307 public static final int SHELLY_API_TIMEOUT_MS = 15000;
308 public static final int UPDATE_STATUS_INTERVAL_SECONDS = 3; // check for updates every x sec
309 public static final int UPDATE_SKIP_COUNT = 20; // update every x triggers or when a key was pressed
310 public static final int UPDATE_MIN_DELAY = 15;// update every x triggers or when a key was pressed
311 public static final int UPDATE_SETTINGS_INTERVAL_SECONDS = 60; // check for updates every x sec
312 public static final int HEALTH_CHECK_INTERVAL_SEC = 300; // Health check interval, 5min
313 public static final int VIBRATION_FILTER_SEC = 5; // Absore duplicate vibration events for xx sec