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.mybmw.internal;
17 import org.eclipse.jdt.annotation.NonNullByDefault;
18 import org.openhab.core.thing.ThingTypeUID;
21 * The {@link MyBMWConstants} class defines common constants, which are
22 * used across the whole binding.
24 * @author Bernd Weymann - Initial contribution
25 * @author Norbert Truchsess - edit and send of charge profile
26 * @author Martin Grassl - updated enum values
29 public interface MyBMWConstants {
31 static final String BINDING_ID = "mybmw";
33 static final String VIN = "vin";
35 static final String REFRESH_INTERVAL = "refreshInterval";
37 static final String VEHICLE_BRAND = "vehicleBrand";
39 static final String REMOTE_SERVICES_DISABLED = "remoteServicesDisabled";
41 static final String REMOTE_SERVICES_ENABLED = "remoteServicesEnabled";
43 static final String SERVICES_DISABLED = "servicesDisabled";
45 static final String SERVICES_ENABLED = "servicesEnabled";
47 static final String SERVICES_UNSUPPORTED = "servicesUnsupported";
49 static final String SERVICES_SUPPORTED = "servicesSupported";
51 static final String VEHICLE_BODYTYPE = "vehicleBodytype";
53 static final String VEHICLE_CONSTRUCTION_YEAR = "vehicleConstructionYear";
55 static final String VEHICLE_DRIVE_TRAIN = "vehicleDriveTrain";
57 static final String VEHICLE_MODEL = "vehicleModel";
59 static final int DEFAULT_IMAGE_SIZE_PX = 1024;
61 static final int DEFAULT_REFRESH_INTERVAL_MINUTES = 5;
63 // See constants from bimmer-connected
64 // https://github.com/bimmerconnected/bimmer_connected/blob/master/bimmer_connected/vehicle.py
67 PLUGIN_HYBRID("phev"),
68 MILD_HYBRID("hybrid"),
69 ELECTRIC_REX("bev_rex"),
73 private final String type;
75 VehicleType(String s) {
80 public String toString() {
90 enum ChargingPreference {
95 static final Set<String> FUEL_VEHICLES = Set.of(VehicleType.CONVENTIONAL.toString(),
96 VehicleType.PLUGIN_HYBRID.toString(), VehicleType.ELECTRIC_REX.toString());
97 static final Set<String> ELECTRIC_VEHICLES = Set.of(VehicleType.ELECTRIC.toString(),
98 VehicleType.PLUGIN_HYBRID.toString(), VehicleType.ELECTRIC_REX.toString());
100 // List of all Thing Type UIDs
101 static final ThingTypeUID THING_TYPE_CONNECTED_DRIVE_ACCOUNT = new ThingTypeUID(BINDING_ID, "account");
102 static final ThingTypeUID THING_TYPE_CONV = new ThingTypeUID(BINDING_ID, VehicleType.CONVENTIONAL.toString());
103 static final ThingTypeUID THING_TYPE_PHEV = new ThingTypeUID(BINDING_ID, VehicleType.PLUGIN_HYBRID.toString());
104 static final ThingTypeUID THING_TYPE_BEV_REX = new ThingTypeUID(BINDING_ID, VehicleType.ELECTRIC_REX.toString());
105 static final ThingTypeUID THING_TYPE_BEV = new ThingTypeUID(BINDING_ID, VehicleType.ELECTRIC.toString());
106 static final Set<ThingTypeUID> SUPPORTED_THING_SET = Set.of(THING_TYPE_CONNECTED_DRIVE_ACCOUNT, THING_TYPE_CONV,
107 THING_TYPE_PHEV, THING_TYPE_BEV_REX, THING_TYPE_BEV);
109 // Thing Group definitions
110 static final String CHANNEL_GROUP_STATUS = "status";
111 static final String CHANNEL_GROUP_SERVICE = "service";
112 static final String CHANNEL_GROUP_CHECK_CONTROL = "check";
113 static final String CHANNEL_GROUP_DOORS = "doors";
114 static final String CHANNEL_GROUP_RANGE = "range";
115 static final String CHANNEL_GROUP_LOCATION = "location";
116 static final String CHANNEL_GROUP_REMOTE = "remote";
117 static final String CHANNEL_GROUP_CHARGE_PROFILE = "profile";
118 static final String CHANNEL_GROUP_CHARGE_STATISTICS = "statistic";
119 static final String CHANNEL_GROUP_CHARGE_SESSION = "session";
120 static final String CHANNEL_GROUP_TIRES = "tires";
121 static final String CHANNEL_GROUP_VEHICLE_IMAGE = "image";
123 // Charge Statistics & Sessions
124 static final String SESSIONS = "sessions";
125 static final String ENERGY = "energy";
126 static final String TITLE = "title";
127 static final String SUBTITLE = "subtitle";
128 static final String ISSUE = "issue";
129 static final String STATUS = "status";
131 // Generic Constants for several groups
132 static final String NAME = "name";
133 static final String DETAILS = "details";
134 static final String SEVERITY = "severity";
135 static final String DATE = "date";
136 static final String MILEAGE = "mileage";
137 static final String GPS = "gps";
138 static final String HEADING = "heading";
139 static final String ADDRESS = "address";
140 static final String HOME_DISTANCE = "home-distance";
143 static final String DOORS = "doors";
144 static final String WINDOWS = "windows";
145 static final String LOCK = "lock";
146 static final String SERVICE_DATE = "service-date";
147 static final String SERVICE_MILEAGE = "service-mileage";
148 static final String CHECK_CONTROL = "check-control";
149 static final String PLUG_CONNECTION = "plug-connection";
150 static final String CHARGE_STATUS = "charge";
151 static final String CHARGE_REMAINING = "charge-remaining";
152 static final String LAST_UPDATE = "last-update";
153 static final String LAST_FETCHED = "last-fetched";
154 static final String RAW = "raw";
157 static final String DOOR_DRIVER_FRONT = "driver-front";
158 static final String DOOR_DRIVER_REAR = "driver-rear";
159 static final String DOOR_PASSENGER_FRONT = "passenger-front";
160 static final String DOOR_PASSENGER_REAR = "passenger-rear";
161 static final String HOOD = "hood";
162 static final String TRUNK = "trunk";
163 static final String WINDOW_DOOR_DRIVER_FRONT = "win-driver-front";
164 static final String WINDOW_DOOR_DRIVER_REAR = "win-driver-rear";
165 static final String WINDOW_DOOR_PASSENGER_FRONT = "win-passenger-front";
166 static final String WINDOW_DOOR_PASSENGER_REAR = "win-passenger-rear";
167 static final String WINDOW_REAR = "win-rear";
168 static final String SUNROOF = "sunroof";
171 static final String CHARGE_PROFILE_CLIMATE = "climate";
172 static final String CHARGE_PROFILE_MODE = "mode";
173 static final String CHARGE_PROFILE_PREFERENCE = "prefs";
174 static final String CHARGE_PROFILE_CONTROL = "control";
175 static final String CHARGE_PROFILE_TARGET = "target";
176 static final String CHARGE_PROFILE_LIMIT = "limit";
177 static final String CHARGE_WINDOW_START = "window-start";
178 static final String CHARGE_WINDOW_END = "window-end";
179 static final String CHARGE_TIMER1 = "timer1";
180 static final String CHARGE_TIMER2 = "timer2";
181 static final String CHARGE_TIMER3 = "timer3";
182 static final String CHARGE_TIMER4 = "timer4";
183 static final String CHARGE_DEPARTURE = "-departure";
184 static final String CHARGE_ENABLED = "-enabled";
185 static final String CHARGE_DAY_MON = "-day-mon";
186 static final String CHARGE_DAY_TUE = "-day-tue";
187 static final String CHARGE_DAY_WED = "-day-wed";
188 static final String CHARGE_DAY_THU = "-day-thu";
189 static final String CHARGE_DAY_FRI = "-day-fri";
190 static final String CHARGE_DAY_SAT = "-day-sat";
191 static final String CHARGE_DAY_SUN = "-day-sun";
194 static final String RANGE_ELECTRIC = "electric";
195 static final String RANGE_RADIUS_ELECTRIC = "radius-electric";
196 static final String RANGE_FUEL = "fuel";
197 static final String RANGE_RADIUS_FUEL = "radius-fuel";
198 static final String RANGE_HYBRID = "hybrid";
199 static final String RANGE_RADIUS_HYBRID = "radius-hybrid";
200 static final String REMAINING_FUEL = "remaining-fuel";
201 static final String ESTIMATED_FUEL_L_100KM = "estimated-fuel-l-100km";
202 static final String ESTIMATED_FUEL_MPG = "estimated-fuel-mpg";
203 static final String SOC = "soc";
206 static final String IMAGE_FORMAT = "png";
207 static final String IMAGE_VIEWPORT = "view";
210 static final String REMOTE_SERVICE_LIGHT_FLASH = "light-flash";
211 static final String REMOTE_SERVICE_VEHICLE_FINDER = "vehicle-finder";
212 static final String REMOTE_SERVICE_DOOR_LOCK = "door-lock";
213 static final String REMOTE_SERVICE_DOOR_UNLOCK = "door-unlock";
214 static final String REMOTE_SERVICE_HORN = "horn-blow";
215 static final String REMOTE_SERVICE_AIR_CONDITIONING_START = "climate-now-start";
216 static final String REMOTE_SERVICE_AIR_CONDITIONING_STOP = "climate-now-stop";
217 static final String REMOTE_SERVICE_CHARGE = "charge-now";
219 static final String REMOTE_SERVICE_COMMAND = "command";
220 static final String REMOTE_STATE = "state";
223 static final String FRONT_LEFT_CURRENT = "fl-current";
224 static final String FRONT_LEFT_TARGET = "fl-target";
225 static final String FRONT_RIGHT_CURRENT = "fr-current";
226 static final String FRONT_RIGHT_TARGET = "fr-target";
227 static final String REAR_LEFT_CURRENT = "rl-current";
228 static final String REAR_LEFT_TARGET = "rl-target";
229 static final String REAR_RIGHT_CURRENT = "rr-current";
230 static final String REAR_RIGHT_TARGET = "rr-target";