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 & send of charge profile
28 public class MyBMWConstants {
30 private static final String BINDING_ID = "mybmw";
32 public static final String VIN = "vin";
34 public static final int DEFAULT_IMAGE_SIZE_PX = 1024;
35 public static final int DEFAULT_REFRESH_INTERVAL_MINUTES = 5;
37 // See constants from bimmer-connected
38 // https://github.com/bimmerconnected/bimmer_connected/blob/master/bimmer_connected/vehicle.py
39 public enum VehicleType {
41 PLUGIN_HYBRID("phev"),
42 MILD_HYBRID("hybrid"),
43 ELECTRIC_REX("bev_rex"),
47 private final String type;
49 VehicleType(String s) {
54 public String toString() {
59 public enum ChargingMode {
64 public enum ChargingPreference {
69 public static final Set<String> FUEL_VEHICLES = Set.of(VehicleType.CONVENTIONAL.toString(),
70 VehicleType.PLUGIN_HYBRID.toString(), VehicleType.ELECTRIC_REX.toString());
71 public static final Set<String> ELECTRIC_VEHICLES = Set.of(VehicleType.ELECTRIC.toString(),
72 VehicleType.PLUGIN_HYBRID.toString(), VehicleType.ELECTRIC_REX.toString());
74 // List of all Thing Type UIDs
75 public static final ThingTypeUID THING_TYPE_CONNECTED_DRIVE_ACCOUNT = new ThingTypeUID(BINDING_ID, "account");
76 public static final ThingTypeUID THING_TYPE_CONV = new ThingTypeUID(BINDING_ID,
77 VehicleType.CONVENTIONAL.toString());
78 public static final ThingTypeUID THING_TYPE_PHEV = new ThingTypeUID(BINDING_ID,
79 VehicleType.PLUGIN_HYBRID.toString());
80 public static final ThingTypeUID THING_TYPE_BEV_REX = new ThingTypeUID(BINDING_ID,
81 VehicleType.ELECTRIC_REX.toString());
82 public static final ThingTypeUID THING_TYPE_BEV = new ThingTypeUID(BINDING_ID, VehicleType.ELECTRIC.toString());
83 public static final Set<ThingTypeUID> SUPPORTED_THING_SET = Set.of(THING_TYPE_CONNECTED_DRIVE_ACCOUNT,
84 THING_TYPE_CONV, THING_TYPE_PHEV, THING_TYPE_BEV_REX, THING_TYPE_BEV);
86 // Thing Group definitions
87 public static final String CHANNEL_GROUP_STATUS = "status";
88 public static final String CHANNEL_GROUP_SERVICE = "service";
89 public static final String CHANNEL_GROUP_CHECK_CONTROL = "check";
90 public static final String CHANNEL_GROUP_DOORS = "doors";
91 public static final String CHANNEL_GROUP_RANGE = "range";
92 public static final String CHANNEL_GROUP_LOCATION = "location";
93 public static final String CHANNEL_GROUP_REMOTE = "remote";
94 public static final String CHANNEL_GROUP_CHARGE_PROFILE = "profile";
95 public static final String CHANNEL_GROUP_CHARGE_STATISTICS = "statistic";
96 public static final String CHANNEL_GROUP_CHARGE_SESSION = "session";
97 public static final String CHANNEL_GROUP_TIRES = "tires";
98 public static final String CHANNEL_GROUP_VEHICLE_IMAGE = "image";
100 // Charge Statistics & Sessions
101 public static final String SESSIONS = "sessions";
102 public static final String ENERGY = "energy";
103 public static final String TITLE = "title";
104 public static final String SUBTITLE = "subtitle";
105 public static final String ISSUE = "issue";
106 public static final String STATUS = "status";
108 // Generic Constants for several groups
109 public static final String NAME = "name";
110 public static final String DETAILS = "details";
111 public static final String SEVERITY = "severity";
112 public static final String DATE = "date";
113 public static final String MILEAGE = "mileage";
114 public static final String GPS = "gps";
115 public static final String HEADING = "heading";
116 public static final String ADDRESS = "address";
117 public static final String HOME_DISTANCE = "home-distance";
120 public static final String DOORS = "doors";
121 public static final String WINDOWS = "windows";
122 public static final String LOCK = "lock";
123 public static final String SERVICE_DATE = "service-date";
124 public static final String SERVICE_MILEAGE = "service-mileage";
125 public static final String CHECK_CONTROL = "check-control";
126 public static final String PLUG_CONNECTION = "plug-connection";
127 public static final String CHARGE_STATUS = "charge";
128 public static final String CHARGE_INFO = "charge-info";
129 public static final String MOTION = "motion";
130 public static final String LAST_UPDATE = "last-update";
131 public static final String RAW = "raw";
134 public static final String DOOR_DRIVER_FRONT = "driver-front";
135 public static final String DOOR_DRIVER_REAR = "driver-rear";
136 public static final String DOOR_PASSENGER_FRONT = "passenger-front";
137 public static final String DOOR_PASSENGER_REAR = "passenger-rear";
138 public static final String HOOD = "hood";
139 public static final String TRUNK = "trunk";
140 public static final String WINDOW_DOOR_DRIVER_FRONT = "win-driver-front";
141 public static final String WINDOW_DOOR_DRIVER_REAR = "win-driver-rear";
142 public static final String WINDOW_DOOR_PASSENGER_FRONT = "win-passenger-front";
143 public static final String WINDOW_DOOR_PASSENGER_REAR = "win-passenger-rear";
144 public static final String WINDOW_REAR = "win-rear";
145 public static final String SUNROOF = "sunroof";
148 public static final String CHARGE_PROFILE_CLIMATE = "climate";
149 public static final String CHARGE_PROFILE_MODE = "mode";
150 public static final String CHARGE_PROFILE_PREFERENCE = "prefs";
151 public static final String CHARGE_PROFILE_CONTROL = "control";
152 public static final String CHARGE_PROFILE_TARGET = "target";
153 public static final String CHARGE_PROFILE_LIMIT = "limit";
154 public static final String CHARGE_WINDOW_START = "window-start";
155 public static final String CHARGE_WINDOW_END = "window-end";
156 public static final String CHARGE_TIMER1 = "timer1";
157 public static final String CHARGE_TIMER2 = "timer2";
158 public static final String CHARGE_TIMER3 = "timer3";
159 public static final String CHARGE_TIMER4 = "timer4";
160 public static final String CHARGE_DEPARTURE = "-departure";
161 public static final String CHARGE_ENABLED = "-enabled";
162 public static final String CHARGE_DAY_MON = "-day-mon";
163 public static final String CHARGE_DAY_TUE = "-day-tue";
164 public static final String CHARGE_DAY_WED = "-day-wed";
165 public static final String CHARGE_DAY_THU = "-day-thu";
166 public static final String CHARGE_DAY_FRI = "-day-fri";
167 public static final String CHARGE_DAY_SAT = "-day-sat";
168 public static final String CHARGE_DAY_SUN = "-day-sun";
171 public static final String RANGE_ELECTRIC = "electric";
172 public static final String RANGE_RADIUS_ELECTRIC = "radius-electric";
173 public static final String RANGE_FUEL = "fuel";
174 public static final String RANGE_RADIUS_FUEL = "radius-fuel";
175 public static final String RANGE_HYBRID = "hybrid";
176 public static final String RANGE_RADIUS_HYBRID = "radius-hybrid";
177 public static final String REMAINING_FUEL = "remaining-fuel";
178 public static final String SOC = "soc";
181 public static final String IMAGE_FORMAT = "png";
182 public static final String IMAGE_VIEWPORT = "view";
185 public static final String REMOTE_SERVICE_LIGHT_FLASH = "light-flash";
186 public static final String REMOTE_SERVICE_VEHICLE_FINDER = "vehicle-finder";
187 public static final String REMOTE_SERVICE_DOOR_LOCK = "door-lock";
188 public static final String REMOTE_SERVICE_DOOR_UNLOCK = "door-unlock";
189 public static final String REMOTE_SERVICE_HORN = "horn-blow";
190 public static final String REMOTE_SERVICE_AIR_CONDITIONING_START = "climate-now-start";
191 public static final String REMOTE_SERVICE_AIR_CONDITIONING_STOP = "climate-now-stop";
193 public static final String REMOTE_SERVICE_COMMAND = "command";
194 public static final String REMOTE_STATE = "state";
197 public static final String FRONT_LEFT_CURRENT = "fl-current";
198 public static final String FRONT_LEFT_TARGET = "fl-target";
199 public static final String FRONT_RIGHT_CURRENT = "fr-current";
200 public static final String FRONT_RIGHT_TARGET = "fr-target";
201 public static final String REAR_LEFT_CURRENT = "rl-current";
202 public static final String REAR_LEFT_TARGET = "rl-target";
203 public static final String REAR_RIGHT_CURRENT = "rr-current";
204 public static final String REAR_RIGHT_TARGET = "rr-target";