2 * Copyright (c) 2010-2021 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.bmwconnecteddrive.internal;
17 import org.eclipse.jdt.annotation.NonNullByDefault;
18 import org.openhab.core.thing.ThingTypeUID;
21 * The {@link ConnectedDriveConstants} 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 ConnectedDriveConstants {
30 private static final String BINDING_ID = "bmwconnecteddrive";
33 public static final String UNITS_AUTODETECT = "AUTODETECT";
34 public static final String UNITS_IMPERIAL = "IMPERIAL";
35 public static final String UNITS_METRIC = "METRIC";
37 public static final String VIN = "vin";
39 public static final int DEFAULT_IMAGE_SIZE_PX = 1024;
40 public static final int DEFAULT_REFRESH_INTERVAL_MINUTES = 5;
41 public static final String DEFAULT_IMAGE_VIEWPORT = "FRONT";
43 // See constants from bimmer-connected
44 // https://github.com/bimmerconnected/bimmer_connected/blob/master/bimmer_connected/vehicle.py
45 public enum VehicleType {
47 PLUGIN_HYBRID("phev"),
48 ELECTRIC_REX("bev_rex"),
51 private final String type;
53 VehicleType(String s) {
58 public String toString() {
63 public enum ChargingMode {
68 public enum ChargingPreference {
73 public static final Set<String> FUEL_VEHICLES = Set.of(VehicleType.CONVENTIONAL.toString(),
74 VehicleType.PLUGIN_HYBRID.toString(), VehicleType.ELECTRIC_REX.toString());
75 public static final Set<String> ELECTRIC_VEHICLES = Set.of(VehicleType.ELECTRIC.toString(),
76 VehicleType.PLUGIN_HYBRID.toString(), VehicleType.ELECTRIC_REX.toString());
78 // Countries with Mileage display
79 public static final Set<String> IMPERIAL_COUNTRIES = Set.of("US", "GB");
81 // List of all Thing Type UIDs
82 public static final ThingTypeUID THING_TYPE_CONNECTED_DRIVE_ACCOUNT = new ThingTypeUID(BINDING_ID, "account");
83 public static final ThingTypeUID THING_TYPE_CONV = new ThingTypeUID(BINDING_ID,
84 VehicleType.CONVENTIONAL.toString());
85 public static final ThingTypeUID THING_TYPE_PHEV = new ThingTypeUID(BINDING_ID,
86 VehicleType.PLUGIN_HYBRID.toString());
87 public static final ThingTypeUID THING_TYPE_BEV_REX = new ThingTypeUID(BINDING_ID,
88 VehicleType.ELECTRIC_REX.toString());
89 public static final ThingTypeUID THING_TYPE_BEV = new ThingTypeUID(BINDING_ID, VehicleType.ELECTRIC.toString());
90 public static final Set<ThingTypeUID> SUPPORTED_THING_SET = Set.of(THING_TYPE_CONNECTED_DRIVE_ACCOUNT,
91 THING_TYPE_CONV, THING_TYPE_PHEV, THING_TYPE_BEV_REX, THING_TYPE_BEV);
93 // Thing Group definitions
94 public static final String CHANNEL_GROUP_STATUS = "status";
95 public static final String CHANNEL_GROUP_SERVICE = "service";
96 public static final String CHANNEL_GROUP_CHECK_CONTROL = "check";
97 public static final String CHANNEL_GROUP_DOORS = "doors";
98 public static final String CHANNEL_GROUP_RANGE = "range";
99 public static final String CHANNEL_GROUP_LOCATION = "location";
100 public static final String CHANNEL_GROUP_LAST_TRIP = "last-trip";
101 public static final String CHANNEL_GROUP_LIFETIME = "lifetime";
102 public static final String CHANNEL_GROUP_REMOTE = "remote";
103 public static final String CHANNEL_GROUP_CHARGE = "charge";
104 public static final String CHANNEL_GROUP_VEHICLE_IMAGE = "image";
105 public static final String CHANNEL_GROUP_DESTINATION = "destination";
107 // Generic Constants for several groups
108 public static final String NAME = "name";
109 public static final String DETAILS = "details";
110 public static final String DATE = "date";
111 public static final String MILEAGE = "mileage";
112 public static final String GPS = "gps";
113 public static final String HEADING = "heading";
116 public static final String DOORS = "doors";
117 public static final String WINDOWS = "windows";
118 public static final String LOCK = "lock";
119 public static final String SERVICE_DATE = "service-date";
120 public static final String SERVICE_MILEAGE = "service-mileage";
121 public static final String CHECK_CONTROL = "check-control";
122 public static final String PLUG_CONNECTION = "plug-connection";
123 public static final String CHARGE_STATUS = "charge";
124 public static final String CHARGE_END_REASON = "reason";
125 public static final String CHARGE_REMAINING = "remaining";
126 public static final String LAST_UPDATE = "last-update";
127 public static final String LAST_UPDATE_REASON = "last-update-reason";
130 public static final String DOOR_DRIVER_FRONT = "driver-front";
131 public static final String DOOR_DRIVER_REAR = "driver-rear";
132 public static final String DOOR_PASSENGER_FRONT = "passenger-front";
133 public static final String DOOR_PASSENGER_REAR = "passenger-rear";
134 public static final String HOOD = "hood";
135 public static final String TRUNK = "trunk";
136 public static final String WINDOW_DOOR_DRIVER_FRONT = "win-driver-front";
137 public static final String WINDOW_DOOR_DRIVER_REAR = "win-driver-rear";
138 public static final String WINDOW_DOOR_PASSENGER_FRONT = "win-passenger-front";
139 public static final String WINDOW_DOOR_PASSENGER_REAR = "win-passenger-rear";
140 public static final String WINDOW_REAR = "win-rear";
141 public static final String SUNROOF = "sunroof";
144 public static final String CHARGE_PROFILE_CLIMATE = "profile-climate";
145 public static final String CHARGE_PROFILE_MODE = "profile-mode";
146 public static final String CHARGE_PROFILE_PREFERENCE = "profile-prefs";
147 public static final String CHARGE_WINDOW_START = "window-start";
148 public static final String CHARGE_WINDOW_END = "window-end";
149 public static final String CHARGE_TIMER1 = "timer1";
150 public static final String CHARGE_TIMER2 = "timer2";
151 public static final String CHARGE_TIMER3 = "timer3";
152 public static final String CHARGE_OVERRIDE = "override";
153 public static final String CHARGE_DEPARTURE = "-departure";
154 public static final String CHARGE_ENABLED = "-enabled";
155 public static final String CHARGE_DAYS = "-days";
156 public static final String CHARGE_DAY_MON = "-day-mon";
157 public static final String CHARGE_DAY_TUE = "-day-tue";
158 public static final String CHARGE_DAY_WED = "-day-wed";
159 public static final String CHARGE_DAY_THU = "-day-thu";
160 public static final String CHARGE_DAY_FRI = "-day-fri";
161 public static final String CHARGE_DAY_SAT = "-day-sat";
162 public static final String CHARGE_DAY_SUN = "-day-sun";
165 public static final String RANGE_HYBRID = "hybrid";
166 public static final String RANGE_HYBRID_MAX = "hybrid-max";
167 public static final String RANGE_ELECTRIC = "electric";
168 public static final String RANGE_ELECTRIC_MAX = "electric-max";
169 public static final String SOC = "soc";
170 public static final String SOC_MAX = "soc-max";
171 public static final String RANGE_FUEL = "fuel";
172 public static final String REMAINING_FUEL = "remaining-fuel";
173 public static final String RANGE_RADIUS_ELECTRIC = "radius-electric";
174 public static final String RANGE_RADIUS_ELECTRIC_MAX = "radius-electric-max";
175 public static final String RANGE_RADIUS_FUEL = "radius-fuel";
176 public static final String RANGE_RADIUS_HYBRID = "radius-hybrid";
177 public static final String RANGE_RADIUS_HYBRID_MAX = "radius-hybrid-max";
180 public static final String DURATION = "duration";
181 public static final String DISTANCE = "distance";
182 public static final String DISTANCE_SINCE_CHARGING = "distance-since-charging";
183 public static final String AVG_CONSUMPTION = "avg-consumption";
184 public static final String AVG_COMBINED_CONSUMPTION = "avg-combined-consumption";
185 public static final String AVG_RECUPERATION = "avg-recuperation";
187 // Lifetime + Average Consumptions
188 public static final String TOTAL_DRIVEN_DISTANCE = "total-driven-distance";
189 public static final String SINGLE_LONGEST_DISTANCE = "single-longest-distance";
192 public static final String IMAGE_FORMAT = "png";
193 public static final String IMAGE_VIEWPORT = "view";
194 public static final String IMAGE_SIZE = "size";
197 public static final String REMOTE_SERVICE_LIGHT_FLASH = "light";
198 public static final String REMOTE_SERVICE_VEHICLE_FINDER = "finder";
199 public static final String REMOTE_SERVICE_DOOR_LOCK = "lock";
200 public static final String REMOTE_SERVICE_DOOR_UNLOCK = "unlock";
201 public static final String REMOTE_SERVICE_HORN = "horn";
202 public static final String REMOTE_SERVICE_AIR_CONDITIONING = "climate";
203 public static final String REMOTE_SERVICE_CHARGE_NOW = "charge-now";
204 public static final String REMOTE_SERVICE_CHARGING_CONTROL = "charge-control";
205 public static final String REMOTE_SERVICE_COMMAND = "command";
206 public static final String REMOTE_STATE = "state";