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.easee.internal;
15 import java.time.Instant;
18 import org.eclipse.jdt.annotation.NonNullByDefault;
19 import org.openhab.core.thing.ThingTypeUID;
22 * The {@link EaseeBindingConstants} class defines common constants, which are
23 * used across the whole binding.
25 * @author Alexander Friese - Initial contribution
28 public class EaseeBindingConstants {
30 public static final String BINDING_ID = "easee";
32 // List of main device types
33 public static final String DEVICE_SITE = "site";
34 public static final String DEVICE_MASTER_CHARGER = "mastercharger";
35 public static final String DEVICE_CHARGER = "charger";
37 // List of all Thing Type UIDs
38 public static final ThingTypeUID THING_TYPE_SITE = new ThingTypeUID(BINDING_ID, DEVICE_SITE);
39 public static final ThingTypeUID THING_TYPE_MASTER_CHARGER = new ThingTypeUID(BINDING_ID, DEVICE_MASTER_CHARGER);
40 public static final ThingTypeUID THING_TYPE_CHARGER = new ThingTypeUID(BINDING_ID, DEVICE_CHARGER);
42 // List of all channel groups
43 public static final String CHANNEL_GROUP_NONE = "";
44 public static final String CHANNEL_GROUP_SITE_INFO = "info";
45 public static final String CHANNEL_GROUP_CHARGER = "charger";
46 public static final String CHANNEL_GROUP_CHARGER_STATE = "state";
47 public static final String CHANNEL_GROUP_CHARGER_CONFIG = "config";
48 public static final String CHANNEL_GROUP_CHARGER_COMMANDS = "commands";
49 public static final String CHANNEL_GROUP_CHARGER_LATEST_SESSION = "latestSession";
50 public static final String CHANNEL_GROUP_CIRCUIT_DYNAMIC_CURRENT = "dynamicCurrent";
51 public static final String CHANNEL_GROUP_CIRCUIT_SETTINGS = "settings";
54 public static final String CHANNEL_TYPE_SWITCH = "Switch";
55 public static final String CHANNEL_TYPE_VOLT = "Number:ElectricPotential";
56 public static final String CHANNEL_TYPE_AMPERE = "Number:ElectricCurrent";
57 public static final String CHANNEL_TYPE_KWH = "Number:Energy";
58 public static final String CHANNEL_TYPE_KW = "Number:Power";
59 public static final String CHANNEL_TYPE_DATE = "DateTime";
60 public static final String CHANNEL_TYPE_STRING = "String";
61 public static final String CHANNEL_TYPE_NUMBER = "Number";
63 public static final String CHANNEL_TYPEPREFIX_RW = "rw";
65 public static final String CHANNEL_TYPENAME_INTEGER = "type-integer";
67 // Channels with specific handling
68 public static final String CHANNEL_CHARGER_OP_MODE = "chargerOpMode";
69 public static final String CHANNEL_CHARGER_DYNAMIC_CURRENT = "dynamicChargerCurrent";
70 public static final String CHANNEL_CHARGER_REASON_FOR_NO_CURRENT = "reasonForNoCurrent";
71 public static final String CHANNEL_CHARGER_START_STOP = "startStop";
72 public static final String CHANNEL_CHARGER_PAUSE_RESUME = "pauseResume";
73 public static final String CHANNEL_CIRCUIT_DYNAMIC_CURRENTS = "dynamicCurrents";
74 public static final String CHANNEL_CIRCUIT_DYNAMIC_CURRENT_PHASE1 = "phase1";
75 public static final String CHANNEL_CIRCUIT_DYNAMIC_CURRENT_PHASE2 = "phase2";
76 public static final String CHANNEL_CIRCUIT_DYNAMIC_CURRENT_PHASE3 = "phase3";
77 public static final String CHANNEL_CIRCUIT_MAX_CURRENTS = "maxCurrents";
78 public static final String CHANNEL_CIRCUIT_MAX_CURRENT_PHASE1 = "maxCircuitCurrentP1";
79 public static final String CHANNEL_CIRCUIT_MAX_CURRENT_PHASE2 = "maxCircuitCurrentP2";
80 public static final String CHANNEL_CIRCUIT_MAX_CURRENT_PHASE3 = "maxCircuitCurrentP3";
81 public static final String CHANNEL_CIRCUIT_OFFLINE_MAX_CURRENTS = "offlineMaxCurrents";
82 public static final String CHANNEL_CIRCUIT_OFFLINE_MAX_CURRENT_PHASE1 = "offlineMaxCircuitCurrentP1";
83 public static final String CHANNEL_CIRCUIT_OFFLINE_MAX_CURRENT_PHASE2 = "offlineMaxCircuitCurrentP2";
84 public static final String CHANNEL_CIRCUIT_OFFLINE_MAX_CURRENT_PHASE3 = "offlineMaxCircuitCurrentP3";
87 public static final String JSON_KEY_GENERIC_ID = "id";
88 public static final String JSON_KEY_GENERIC_NAME = "name";
89 public static final String JSON_KEY_CIRCUIT_NAME = "panelName";
90 public static final String JSON_KEY_CIRCUIT_ID = "circuitId";
91 public static final String JSON_KEY_CIRCUITS = "circuits";
92 public static final String JSON_KEY_CHARGERS = "chargers";
93 public static final String JSON_KEY_BACK_PLATE = "backPlate";
94 public static final String JSON_KEY_MASTER_BACK_PLATE = "masterBackPlate";
95 public static final String JSON_KEY_MASTER_BACK_PLATE_ID = "masterBackPlateId";
96 public static final String JSON_KEY_ONLINE = "isOnline";
97 public static final String JSON_KEY_SITE_KEY = "siteKey";
98 public static final String JSON_KEY_ERROR_TITLE = "title";
99 public static final String JSON_KEY_AUTH_ACCESS_TOKEN = "accessToken";
100 public static final String JSON_KEY_AUTH_REFRESH_TOKEN = "refreshToken";
101 public static final String JSON_KEY_AUTH_EXPIRES_IN = "expiresIn";
104 public static final String COMMAND_CHANGE_CONFIGURATION = "ChangeConfiguration";
105 public static final String COMMAND_SEND_COMMAND = "SendCommand";
106 public static final String COMMAND_SEND_COMMAND_START_STOP = "SendCommandStartStop";
107 public static final String COMMAND_SEND_COMMAND_PAUSE_RESUME = "SendCommandPauseResume";
108 public static final String COMMAND_SET_CIRCUIT_SETTINGS = "SetCircuitSettings";
109 public static final String COMMAND_SET_DYNAMIC_CIRCUIT_CURRENTS = "SetDynamicCircuitCurrents";
110 public static final String COMMAND_SET_MAX_CIRCUIT_CURRENTS = "SetMaxCircuitCurrents";
111 public static final String COMMAND_SET_OFFLINE_MAX_CIRCUIT_CURRENTS = "SetOfflineMaxCircuitCurrents";
114 public static final String CMD_VAL_START_CHARGING = "start_charging";
115 public static final String CMD_VAL_STOP_CHARGING = "stop_charging";
116 public static final String CMD_VAL_PAUSE_CHARGING = "pause_charging";
117 public static final String CMD_VAL_RESUME_CHARGING = "resume_charging";
119 // web request constants
120 public static final long WEB_REQUEST_INITIAL_DELAY = 30;
121 public static final long WEB_REQUEST_INTERVAL = 5;
122 public static final int WEB_REQUEST_QUEUE_MAX_SIZE = 20;
123 public static final int WEB_REQUEST_TOKEN_EXPIRY_BUFFER_MINUTES = 5;
124 public static final int WEB_REQUEST_TOKEN_MAX_AGE_MINUTES = 60;
125 public static final String WEB_REQUEST_BEARER_TOKEN_PREFIX = "Bearer ";
128 public static final String LOGIN_URL = "https://api.easee.cloud/api/accounts/login";
129 public static final String REFRESH_TOKEN_URL = "https://api.easee.cloud/api/accounts/refresh_token";
130 public static final String GET_SITE_URL = "https://api.easee.cloud/api/sites/{siteId}";
131 public static final String CHARGER_URL = "https://api.easee.cloud/api/chargers/{id}";
132 public static final String STATE_URL = "https://api.easee.cloud/api/chargers/{id}/state";
133 public static final String GET_CONFIGURATION_URL = "https://api.easee.cloud/api/chargers/{id}/config";
134 public static final String CHANGE_CONFIGURATION_URL = "https://api.easee.cloud/api/chargers/{id}/settings";
135 public static final String COMMANDS_URL = "https://api.easee.cloud/api/chargers/{id}/commands/{command}";
136 public static final String LATEST_CHARGING_SESSION_URL = "https://api.easee.cloud/api/chargers/{id}/sessions/latest";
137 public static final String DYNAMIC_CIRCUIT_CURRENT_URL = "https://api.easee.cloud/api/sites/{siteId}/circuits/{circuitId}/dynamicCurrent";
138 public static final String CIRCUIT_SETTINGS_URL = "https://api.easee.cloud/api/sites/{siteId}/circuits/{circuitId}/settings";
141 public static final String STATUS_TOKEN_VALIDATED = "@text/status.token.validated";
142 public static final String STATUS_WAITING_FOR_BRIDGE = "@text/status.waiting.for.bridge";
143 public static final String STATUS_WAITING_FOR_LOGIN = "@text/status.waiting.for.login";
144 public static final String STATUS_NO_VALID_DATA = "@text/status.no.valid.data";
145 public static final String STATUS_NO_CONNECTION = "@text/status.no.connection";
148 public static final long POLLING_INITIAL_DELAY = 1;
150 public static final String GENERIC_YES = "Yes";
151 public static final String GENERIC_NO = "No";
152 public static final int CHARGER_OP_STATE_WAITING = 2;
153 public static final int CHARGER_OP_STATE_CHARGING = 3;
154 public static final double CHARGER_DYNAMIC_CURRENT_PAUSE = 0;
155 public static final int CHARGER_REASON_FOR_NO_CURRENT_DYNAMIC_0KW = 2;
156 public static final int CHARGER_REASON_FOR_NO_CURRENT_PAUSED = 52;
158 public static final String THING_CONFIG_ID = "id";
159 public static final String THING_CONFIG_SITE_ID = "siteId";
160 public static final String THING_CONFIG_CIRCUIT_ID = "circuitId";
161 public static final String THING_CONFIG_CIRCUIT_NAME = "circuitName";
162 public static final String THING_CONFIG_IS_MASTER = "isMaster";
163 public static final String THING_CONFIG_BACK_PLATE_ID = "backPlateId";
164 public static final String THING_CONFIG_MASTER_BACK_PLATE_ID = "masterBackPlateId";
166 public static final Instant OUTDATED_DATE = Instant.MIN;
167 public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
169 public static final String PARAMETER_NAME_WRITE_COMMAND = "writeCommand";
170 public static final String PARAMETER_NAME_VALIDATION_REGEXP = "validationExpression";
172 public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_SITE,
173 THING_TYPE_MASTER_CHARGER, THING_TYPE_CHARGER);