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_POWER = "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";
66 public static final String CHANNEL_TYPENAME_RSSI = "type-rssi";
68 // Channels with specific handling
69 public static final String CHANNEL_CHARGER_OP_MODE = "chargerOpMode";
70 public static final String CHANNEL_CHARGER_DYNAMIC_CURRENT = "dynamicChargerCurrent";
71 public static final String CHANNEL_CHARGER_REASON_FOR_NO_CURRENT = "reasonForNoCurrent";
72 public static final String CHANNEL_CHARGER_START_STOP = "startStop";
73 public static final String CHANNEL_CHARGER_PAUSE_RESUME = "pauseResume";
74 public static final String CHANNEL_CIRCUIT_DYNAMIC_CURRENTS = "dynamicCurrents";
75 public static final String CHANNEL_CIRCUIT_DYNAMIC_CURRENT_PHASE1 = "phase1";
76 public static final String CHANNEL_CIRCUIT_DYNAMIC_CURRENT_PHASE2 = "phase2";
77 public static final String CHANNEL_CIRCUIT_DYNAMIC_CURRENT_PHASE3 = "phase3";
78 public static final String CHANNEL_CIRCUIT_MAX_CURRENTS = "maxCurrents";
79 public static final String CHANNEL_CIRCUIT_MAX_CURRENT_PHASE1 = "maxCircuitCurrentP1";
80 public static final String CHANNEL_CIRCUIT_MAX_CURRENT_PHASE2 = "maxCircuitCurrentP2";
81 public static final String CHANNEL_CIRCUIT_MAX_CURRENT_PHASE3 = "maxCircuitCurrentP3";
82 public static final String CHANNEL_CIRCUIT_OFFLINE_MAX_CURRENTS = "offlineMaxCurrents";
83 public static final String CHANNEL_CIRCUIT_OFFLINE_MAX_CURRENT_PHASE1 = "offlineMaxCircuitCurrentP1";
84 public static final String CHANNEL_CIRCUIT_OFFLINE_MAX_CURRENT_PHASE2 = "offlineMaxCircuitCurrentP2";
85 public static final String CHANNEL_CIRCUIT_OFFLINE_MAX_CURRENT_PHASE3 = "offlineMaxCircuitCurrentP3";
88 public static final String JSON_KEY_GENERIC_ID = "id";
89 public static final String JSON_KEY_GENERIC_NAME = "name";
90 public static final String JSON_KEY_CIRCUIT_NAME = "panelName";
91 public static final String JSON_KEY_CIRCUIT_ID = "circuitId";
92 public static final String JSON_KEY_CHARGER_ID = "chargerID";
93 public static final String JSON_KEY_CIRCUITS = "circuits";
94 public static final String JSON_KEY_CHARGERS = "chargers";
95 public static final String JSON_KEY_BACK_PLATE = "backPlate";
96 public static final String JSON_KEY_MASTER_BACK_PLATE = "masterBackPlate";
97 public static final String JSON_KEY_MASTER_BACK_PLATE_ID = "masterBackPlateId";
98 public static final String JSON_KEY_ONLINE = "isOnline";
99 public static final String JSON_KEY_SITE_KEY = "siteKey";
100 public static final String JSON_KEY_ERROR_TITLE = "title";
101 public static final String JSON_KEY_AUTH_ACCESS_TOKEN = "accessToken";
102 public static final String JSON_KEY_AUTH_REFRESH_TOKEN = "refreshToken";
103 public static final String JSON_KEY_AUTH_EXPIRES_IN = "expiresIn";
104 public static final String JSON_KEY_CIRCUIT_STATES = "circuitStates";
105 public static final String JSON_KEY_CHARGER_STATES = "chargerStates";
106 public static final String JSON_KEY_CHARGER_STATE = "chargerState";
109 public static final String COMMAND_CHANGE_CONFIGURATION = "ChangeConfiguration";
110 public static final String COMMAND_SEND_COMMAND = "SendCommand";
111 public static final String COMMAND_SEND_COMMAND_START_STOP = "SendCommandStartStop";
112 public static final String COMMAND_SEND_COMMAND_PAUSE_RESUME = "SendCommandPauseResume";
113 public static final String COMMAND_SET_CIRCUIT_SETTINGS = "SetCircuitSettings";
114 public static final String COMMAND_SET_DYNAMIC_CIRCUIT_CURRENTS = "SetDynamicCircuitCurrents";
115 public static final String COMMAND_SET_MAX_CIRCUIT_CURRENTS = "SetMaxCircuitCurrents";
116 public static final String COMMAND_SET_OFFLINE_MAX_CIRCUIT_CURRENTS = "SetOfflineMaxCircuitCurrents";
119 public static final String CMD_VAL_START_CHARGING = "start_charging";
120 public static final String CMD_VAL_STOP_CHARGING = "stop_charging";
121 public static final String CMD_VAL_PAUSE_CHARGING = "pause_charging";
122 public static final String CMD_VAL_RESUME_CHARGING = "resume_charging";
124 // web request constants
125 public static final long WEB_REQUEST_INITIAL_DELAY = 30;
126 public static final long WEB_REQUEST_INTERVAL = 5;
127 public static final int WEB_REQUEST_QUEUE_MAX_SIZE = 20;
128 public static final int WEB_REQUEST_TOKEN_EXPIRY_BUFFER_MINUTES = 5;
129 public static final int WEB_REQUEST_TOKEN_MAX_AGE_MINUTES = 60;
130 public static final String WEB_REQUEST_BEARER_TOKEN_PREFIX = "Bearer ";
133 private static final String API_BASE_URL = "https://api.easee.com/api";
134 public static final String LOGIN_URL = API_BASE_URL + "/accounts/login";
135 public static final String REFRESH_TOKEN_URL = API_BASE_URL + "/accounts/refresh_token";
136 public static final String GET_SITE_URL = API_BASE_URL + "/sites/{siteId}";
137 public static final String CHARGER_URL = API_BASE_URL + "/chargers/{id}";
138 public static final String SITE_STATE_URL = API_BASE_URL + "/sites/{siteId}/state";
139 public static final String GET_CONFIGURATION_URL = API_BASE_URL + "/chargers/{id}/config";
140 public static final String CHANGE_CONFIGURATION_URL = API_BASE_URL + "/chargers/{id}/settings";
141 public static final String COMMANDS_URL = API_BASE_URL + "/chargers/{id}/commands/{command}";
142 public static final String LATEST_CHARGING_SESSION_URL = API_BASE_URL + "/chargers/{id}/sessions/latest";
143 public static final String DYNAMIC_CIRCUIT_CURRENT_URL = API_BASE_URL
144 + "/sites/{siteId}/circuits/{circuitId}/dynamicCurrent";
145 public static final String CIRCUIT_SETTINGS_URL = API_BASE_URL + "/sites/{siteId}/circuits/{circuitId}/settings";
148 public static final String STATUS_TOKEN_VALIDATED = "@text/status.token.validated";
149 public static final String STATUS_WAITING_FOR_BRIDGE = "@text/status.waiting.for.bridge";
150 public static final String STATUS_WAITING_FOR_LOGIN = "@text/status.waiting.for.login";
151 public static final String STATUS_NO_VALID_DATA = "@text/status.no.valid.data";
152 public static final String STATUS_NO_CONNECTION = "@text/status.no.connection";
155 public static final long POLLING_INITIAL_DELAY = 1;
157 public static final String GENERIC_YES = "Yes";
158 public static final String GENERIC_NO = "No";
159 public static final int CHARGER_OP_STATE_WAITING = 2;
160 public static final int CHARGER_OP_STATE_CHARGING = 3;
161 public static final int CHARGER_OP_STATE_NOT_AUTHENTICATED = 7;
162 public static final double CHARGER_DYNAMIC_CURRENT_PAUSE = 0;
163 public static final int CHARGER_REASON_FOR_NO_CURRENT_CIRCUIT_LIMIT = 2;
164 public static final int CHARGER_REASON_FOR_NO_CURRENT_CHARGER_LIMIT = 52;
166 public static final String THING_CONFIG_ID = "id";
167 public static final String THING_CONFIG_SITE_ID = "siteId";
168 public static final String THING_CONFIG_CIRCUIT_ID = "circuitId";
169 public static final String THING_CONFIG_CIRCUIT_NAME = "circuitName";
170 public static final String THING_CONFIG_IS_MASTER = "isMaster";
171 public static final String THING_CONFIG_BACK_PLATE_ID = "backPlateId";
172 public static final String THING_CONFIG_MASTER_BACK_PLATE_ID = "masterBackPlateId";
174 public static final Instant OUTDATED_DATE = Instant.EPOCH;
175 public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
177 public static final String PARAMETER_NAME_WRITE_COMMAND = "writeCommand";
178 public static final String PARAMETER_NAME_VALIDATION_REGEXP = "validationExpression";
180 public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_SITE,
181 THING_TYPE_MASTER_CHARGER, THING_TYPE_CHARGER);