# MyBMW Binding
The binding provides access like MyBMW App (opens new window) to openHAB. All vehicles connected to an account will be detected by the discovery with the correct type:
- Conventional Fuel Vehicle
- Plugin-Hybrid Electrical Vehicle
- Battery Electric Vehicle with Range Extender
- Battery Electric Vehicle
In addition properties are attached with information and services provided by this vehicle. The provided data depends on
- the Thing Type and
- the Properties mentioned in Services
Different channel groups are clustering all information. Check for each group if it's supported by your vehicle.
Please note this isn't a real-time binding. If a door is opened the state isn't transmitted and changed immediately. It's not a flaw in the binding itself because the state in BMW's own MyBMW App is also updated with some delay.
# Supported Things
# Bridge
The bridge establishes the connection between BMW API and openHAB.
Name | Bridge Type ID | Description |
---|---|---|
MyBMW Account | account | Access to BMW API for a specific user |
# Things
Four different vehicle types are provided. They differ in the supported channel groups & channels. Conventional Fuel Vehicles don't provide e.g. Charging Profile, Electric Vehicles don't provide a Fuel Range. For hybrid vehicles in addition to Fuel and Electric Range the Hybrid Range is shown.
Name | Thing Type ID | Supported Channel Groups |
---|---|---|
BMW Electric Vehicle | bev | Vehicle with electric drive train |
BMW Electric Vehicle with REX | bev_rex | Vehicle with electric drive train plus fuel powered range extender |
BMW Plug-In-Hybrid Electric Vehicle | phev | Vehicle with combustion and electric drive train |
BMW Conventional Vehicle | conv | Vehicle with combustion drive train |
# Properties
For each vehicle properties are available. Basic information is given regarding
- Vehicle properties like model type, drive train and construction year
- Which services are available / not available
In the right picture can see in remoteServicesEnabled e.g. the Door Lock and Door Unlock services are mentioned. This ensures channel group Remote Services is supporting door lock and unlock remote control.
In Services Supported the entry ChargingHistory is mentioned. So it's valid to connect channel group Charge Sessions in order to display your last charging sessions.
Property Key | Property Value | Supported Channel Groups |
---|---|---|
servicesSupported | ChargingHistory | session |
remoteServicesEnabled | list of services | remote |
# Discovery
Auto discovery is starting after the bridge is created. A list of your registered vehicles is queried and all found things are added in the inbox. Unique identifier is the Vehicle Identification Number (VIN). If a thing is already declared in a .things configuration, discovery won't highlight it again. Properties will be attached to predefined vehicles if the VIN is matching.
# Configuration
# Bridge Configuration
Parameter | Type | Description |
---|---|---|
userName | text | MyBMW Username |
password | text | MyBMW Password |
hcaptchatoken | text | HCaptcha-Token for initial login (see https://bimmer-connected.readthedocs.io/en/latest/captcha.html (opens new window)) |
region | text | Select region in order to connect to the appropriate BMW server. |
The region Configuration has 3 different options
- NORTH_AMERICA
- CHINA
- ROW (Rest of World)
# Advanced Configuration
Parameter | Type | Description |
---|---|---|
language | text | Channel data can be returned in the desired language |
Language is predefined as AUTODETECT. Some textual descriptions, date and times are delivered based on your local language. You can overwrite this setting with lowercase 2-letter language code reagrding ISO 639 (opens new window) So if want your UI in english language place en as desired language.
# Thing Configuration
Same configuration is needed for all things
Parameter | Type | Description |
---|---|---|
vin | text | Vehicle Identification Number (VIN) |
refreshInterval | integer | Refresh Interval in Minutes (by default set to 60; to be set to 0 if no automated refresh should be triggered) |
# Advanced Configuration
Parameter | Type | Description |
---|---|---|
vehicleBrand | text | Vehicle Brand like BMW or Mini |
The vehicleBrand is automatically obtained by the discovery service and shall not be changed. If thing is defined manually via *.things file following brands are supported
- BMW
- MINI
# Channels
There are many channels available for each vehicle. For better overview they are clustered in different channel groups. They differ for each vehicle type, build-in sensors and activated services.
# Thing Channel Groups
Channel Group ID | Description | conv | phev | bev_rex | bev |
---|---|---|---|---|---|
update | Overall vehicle status | X | X | X | X |
status | Overall vehicle status | X | X | X | X |
doors | Details of all doors and windows | X | X | X | X |
range | Provides mileage, range and charge / fuel levels | X | X | X | X |
check | Shows current active CheckControl messages | X | X | X | X |
service | Future vehicle service schedules | X | X | X | X |
location | Coordinates and heading of the vehicle | X | X | X | X |
remote | Remote control of the vehicle | X | X | X | X |
profile | Scheduled charging profiles of vehicle | X | X | X | |
statistic | Charging statistics of current month | X | X | X | |
session | Past charging sessions | X | X | X | |
tires | Current and wanted pressure for all tires | X | X | X | X |
image | Provides an image of your vehicle | X | X | X | X |
# Vehicle Update
The BMW API has limits in the requests per time period. This leads to unexpected errors stating that some quota is reached and the next successful request can be triggered in X minutes. In this case the bridge as well as the vehicle things can be set to offline and nothing can be done with them anymore until the next successful refresh. To reduce the probability of the error, the default automated API update has been set to 60 Minutes, but this is often not sufficient to retrieve continuous range or charging updates. These channels can be used to control the update behavior from openHAB, e.g. via rules.
- Channel Group ID is status
- Available for all vehicles (charging channel only for xEV)
- switches which can be triggered by a command
- if the switches are set to ON, then immediately they will be set to OFF again for being able to trigger the next update
Channel ID | Type | Description | conv | phev | bev_rex | bev |
---|---|---|---|---|---|---|
state-update | Switch | When set to ON, the state channels of the vehicle will be updated | X | X | X | X |
charging-update | Switch | When set to ON, the charging statistics and charging sessions channels of the vehicle will be updated | X | X | X | |
image-update | Switch | When set to ON, the image of the vehicle will be updated | X | X | X | X |
# Vehicle Status
Reflects overall status of the vehicle.
- Channel Group ID is status
- Available for all vehicles
- Read-only values
Channel ID | Type | Description | conv | phev | bev_rex | bev |
---|---|---|---|---|---|---|
doors | String | Combined status for all doors | X | X | X | X |
windows | String | Combined status for all windows | X | X | X | X |
lock | String | Status if vehicle is secured | X | X | X | X |
service-date | DateTime | Date of next upcoming service | X | X | X | X |
service-mileage | Number:Length | Mileage till upcoming service | X | X | X | X |
check-control | String | Presence of active warning messages | X | X | X | X |
plug-connection | String | Plug is Connected or Not connected | X | X | X | |
charge | String | Current charging status | X | X | X | |
charge-remaining | Number:Time | Remaining time for current charging session | X | X | X | |
last-update | DateTime | Date and time of last status update | X | X | X | X |
last-fetched | DateTime | Date and time of last time status fetched | X | X | X | X |
Overall Door Status values
- Closed - all doors closed
- Open - at least one door is open
- Undef - no door data delivered at all
Overall Windows Status values
- Closed - all windows closed
- Open - at least one window is completely open
- Intermediate - at least one window is partially open
- Undef - no window data delivered at all
Check Control values
Localized String of current active warnings. Examples:
- No Issues
- Multiple Issues
Charging Status values
- Not Charging
- Charging
- Plugged In
- Fully Charged
Charging Information values Localized String of current active charging session Examples
- 100% at ~00:43
- Starts at ~09:00
# Vehicle Status Raw Data
The raw data channel is marked as advanced and isn't shown by default. Target are advanced users to derive even more data out of BMW API replies. As the replies are formatted as JSON use the JsonPath Transformation Service (opens new window) to extract data for an item,
Channel ID | Type | Description |
---|---|---|
raw | String | Unfiltered JSON String of vehicle data |
Examples:
# Country ISO Code
$.properties.originCountryISO
# Drivers Guide URL
$.driverGuideInfo.androidStoreUrl
# Range Data
Based on vehicle type some channels are present or not. Conventional fuel vehicles don't provide Electric Range and battery electric vehicles don't show Fuel Range. Hybrid vehicles have both and in addition Hybrid Range. See description Range vs Range Radius to get more information.
- Channel Group ID is range
- Availability according to table
- Read-only values
Channel ID | Type | Description | conv | phev | bev_rex | bev |
---|---|---|---|---|---|---|
mileage | Number:Length | Current mileage of the vehicle | X | X | X | X |
range-fuel | Number:Length | Fuel range | X | X | X | |
range-electric | Number:Length | Electric range | X | X | X | |
range-hybrid | Number:Length | Combined hybrid range | X | X | ||
soc | Number:Dimensionless | State of charge | X | X | X | |
remaining-fuel | Number:Volume | Remaining fuel in l | X | X | X | |
estimated-fuel-l-100km | Number | Estimated fuel consumption in l | X | X | X | |
estimated-fuel-mpg | Number | Estimated fuel consumption in mpg | X | X | X | |
range-radius-fuel | Number:Length | The calculated range radius combustion | X | X | X | |
range-radius-electric | Number:Length | The calculated range radius electric | X | X | X | |
range-radius-hybrid | Number:Length | The calculated range radius hybrid combined | X | X |
# Doors Details
Detailed status of all doors and windows.
- Channel Group ID is doors
- Available for all vehicles if corresponding sensors are built-in
- Read-only values
Channel ID | Type | Description |
---|---|---|
driver-front | String | Status of front door driver's side |
driver-rear | String | Status of rear door driver's side |
passenger-front | String | Status of front door passenger's side |
passenger-rear | String | Status of rear door passenger's side |
trunk | String | Status of trunk |
hood | String | Status of hood |
win-driver-front | String | Status of front window driver's side |
win-driver-rear | String | Status of rear window driver's side |
win-passenger-front | String | Status of front window passenger's side |
win-passenger-rear | String | Status of rear window passenger's side |
win-rear | String | Status of rear window |
sunroof | String | Status of sunroof |
Possible states
- Undef - no status data available
- Invalid - this door / window isn't applicable for this vehicle
- Closed - the door / window is closed
- Open - the door / window is open
- Intermediate - window in intermediate position, not applicable for doors
# Check Control
Group for all current active Check Control messages. If more than one message is active the channel name contains all active messages as options.
- Channel Group ID is check
- Available for all vehicles
- Read/Write access
Channel ID | Type | Access |
---|---|---|
name | String | Read/Write |
details | String | Read |
severity | String | Read |
Severity Levels
- Ok
- Low
- Medium
# Services
Group for all upcoming services with description, service date and/or service mileage. If more than one service is scheduled in the future the channel name contains all future services as options.
- Channel Group ID is service
- Available for all vehicles
- Read/Write access
Channel ID | Type | Access |
---|---|---|
name | String | Read/Write |
details | String | Read |
date | DateTime | Read |
mileage | Number:Length | Read |
# Location
GPS location and heading of the vehicle.
- Channel Group ID is location
- Available for all vehicles with built-in GPS sensor. Function can be enabled/disabled in the head unit
- Read-only values
Channel ID | Type | Description |
---|---|---|
gps | Location | Current GPS coordinates of the vehicle |
heading | Number:Angle | Current direction of the vehicle |
address | String | Current address |
home-distance | Number:Length | Calculated distance from configured home position of openHAB |
# Remote Services
Remote control of the vehicle. Send a command to the vehicle and the state is reporting the execution progress. Only one command can be executed each time. Parallel execution isn't supported.
- Channel Group ID is remote
- Available for all commands mentioned in Services Activated. See Vehicle Properties for further details
- Read/Write access
Channel ID | Type | Access |
---|---|---|
command | String | Write |
state | String | Read |
The channel command provides options
- light-flash
- vehicle-finder
- door-lock
- door-unlock
- horn-blow
- climate-now-start
- climate-now-stop
- start-charging
- stop-charging
The channel state shows the progress of the command execution in the following order
- initiated
- pending
- delivered
- executed
# Charge Profile
Charging options with date and time for preferred time windows and charging modes.
- Channel Group ID is profile
- Available for electric and hybrid vehicles
- Read access for UI.
- There are 4 timers T1, T2, T3 and T4 available. Replace X with number 1,2 or 3 to target the correct timer
Channel ID | Type |
---|---|
mode | String |
prefs | String |
control | String |
target | String |
limit | Switch |
window-start | DateTime |
window-end | DateTime |
climate | Switch |
timer_X_-enabled | Switch |
timer_X_-departure | DateTime |
timer_X_-day-mon | Switch |
timer_X_-day-tue | Switch |
timer_X_-day-wed | Switch |
timer_X_-day-thu | Switch |
timer_X_-day-fri | Switch |
timer_X_-day-sat | Switch |
timer_X_-day-sun | Switch |
The channel profile-mode supports
- immediateCharging
- delayedCharging
The channel profile-prefs supports
- noPreSelection
- chargingWindow
# Charge Statistics
Shows charge statistics of the current month
- Channel Group ID is statistic
- Available for electric and hybrid vehicles
- Read-only values
Channel ID | Type | Description |
---|---|---|
title | String | Title of the statistics |
energy | Number:Energy | Consumed energy |
sessions | Number | Number of sessions |
# Charge Sessions
Group for past charging sessions. If more than one message is active the channel name contains all active messages as options.
- Channel Group ID is session
- Available for electric and hybrid vehicles
- Read-only values
Channel ID | Type | Description |
---|---|---|
title | String | Title of the session |
subtitle | String | Subtitle of the session |
energy | String | Consumed energy |
issue | String | If an issue occurred |
status | String | Status of the session |
# Tire Pressure
Current and target tire pressure values
- Channel Group ID is tires
- Available for all vehicles if corresponding sensors are built-in
- Read-only values
Channel ID | Type | Description |
---|---|---|
fl-current | Number:Pressure | Current pressure front left |
fl-target | Number:Pressure | Target pressure front left |
fr-current | Number:Pressure | Current pressure front right |
fr-target | Number:Pressure | Target pressure front right |
rl-current | Number:Pressure | Current pressure rear left |
rl-target | Number:Pressure | Target pressure rear left |
rr-current | Number:Pressure | Current pressure rear right |
rr-target | Number:Pressure | Target pressure rear right |
# Image
Image representation of the vehicle.
- Channel Group ID is image
- Available for all vehicles
- Read/Write access
Channel ID | Type | Access | Description |
---|---|---|---|
png | Image | Read | The image as png |
view | String | Write | The view port of the car |
Possible view ports:
- VehicleStatus Front Left Side View
- FrontView Front View
- FrontLeft Front Left Side View
- FrontRight Front Right Side View
- RearView Rear View
# Further Descriptions
# Dynamic Data
There are 3 occurrences of dynamic data delivered
- Upcoming Services delivered in group Services
- Check Control Messages delivered in group Check Control
- Charging Session data delivered in group Charge Sessions
The channel id name shows the first element as default. All other possibilities are attached as options. The picture on the right shows the Session Title item and 3 possible options. Select the desired service and the corresponding Charge Session with Energy Charged, Session Status and Session Issues will be shown.
# TroubleShooting
BMW has a high range of vehicles supported by their API. In case of any issues with this binding help to resolve it! Please perform the following steps:
- Can you log into MyBMW App with your credentials?
- Is the vehicle listed in your account?
- Is the MyBMW Brige status Online?
If these preconditions are fulfilled proceed with the fingerprint generation.
# Generate Debug Fingerprint
Login to the openHAB console and use the mybmw fingerprint
command.
Fingerprint information on your account and vehicle(s) will show in the console and can be copiedfrom there.
A zip file with fingerprint information for your vehicle(s) will also be generated and put into the mybmw
folder in the userdata folder.
This fingerprint information is valuable for the developers to better support your vehicle.
You can restrict the accounts and vehicles for the fingerprint generation.
Full syntax is available through the mybmw help
console command.
Personal data is eliminated from fingerprints so it should be possible to share them in public. Data like
- Vehicle Identification Number (VIN)
- Location data
are anonymized in the JSON response and URL's.
After the corresponding fingerprint is generated please follow the instructions to raise an issue (opens new window) and attach the fingerprint!
Your feedback is highly appreciated!
# Debug Logging
You can enable debug logging (opens new window) to get more information on the behaviour of the binding. The package.subpackage in this case would be "org.openhab.binding.mybmw".
As with fingerprint data, personal data is eliminated from logs.
# Range vs Range Radius
You will observe differences in the vehicle range and range radius values. While range is indicating the possible distance to be driven on roads the range radius indicates the reachable range on the map.
The right picture shows the distance between Kassel and Frankfurt in Germany. While the air-line distance is 145 kilometers the route distance is 192 kilometers. So range value is the normal remaining range while the range radius values can be used e.g. on Mapview (opens new window) to indicate the reachable range on map. Please note this is just an indicator of the effective range. Especially for electric vehicles it depends on many factors like driving style and usage of electric consumers.
# Full Example
The example is based on a BMW i3 with range extender (REX). Exchange configuration parameters in the Things section
- 4711 - any id you want
- YOUR_USERNAME - with your MyBMW login username
- YOUR_PASSWORD - with your MyBMW password credentials
- VEHICLE_VIN - the vehicle identification number
In addition search for all occurrences of i3 and replace it with your Vehicle Identification like x3 or 535d and you're ready to go!
# Things File
Bridge mybmw:account:4711 "MyBMW Account" [userName="YOUR_USERNAME",password="YOUR_PASSWORD",region="ROW"] {
Thing bev_rex i3 "BMW i3 94h REX" [ vin="VEHICLE_VIN",refreshInterval=5,vehicleBrand="BMW"]
}
# Items File
Number:Length i3Mileage "Odometer [%d %unit%]" <line> (i3) {channel="mybmw:bev_rex:4711:i3:range#mileage" }
Number:Length i3Range "Range [%d %unit%]" <motion> (i3) {channel="mybmw:bev_rex:4711:i3:range#hybrid"}
Number:Length i3RangeElectric "Electric Range [%d %unit%]" <motion> (i3,long) {channel="mybmw:bev_rex:4711:i3:range#electric"}
Number:Length i3RangeFuel "Fuel Range [%d %unit%]" <motion> (i3) {channel="mybmw:bev_rex:4711:i3:range#fuel"}
Number:Dimensionless i3BatterySoc "Battery Charge [%.1f %%]" <battery> (i3,long) {channel="mybmw:bev_rex:4711:i3:range#soc"}
Number:Volume i3Fuel "Fuel [%.1f %unit%]" <oil> (i3) {channel="mybmw:bev_rex:4711:i3:range#remaining-fuel"}
Number:Length i3RadiusElectric "Electric Radius [%d %unit%]" <zoom> (i3) {channel="mybmw:bev_rex:4711:i3:range#radius-electric" }
Number:Length i3RadiusFuel "Fuel Radius [%d %unit%]" <zoom> (i3) {channel="mybmw:bev_rex:4711:i3:range#radius-fuel" }
Number:Length i3RadiusHybrid "Hybrid Radius [%d %unit%]" <zoom> (i3) {channel="mybmw:bev_rex:4711:i3:range#radius-hybrid" }
String i3DoorStatus "Door Status [%s]" <lock> (i3) {channel="mybmw:bev_rex:4711:i3:status#doors" }
String i3WindowStatus "Window Status [%s]" <lock> (i3) {channel="mybmw:bev_rex:4711:i3:status#windows" }
String i3LockStatus "Lock Status [%s]" <lock> (i3) {channel="mybmw:bev_rex:4711:i3:status#lock" }
DateTime i3NextServiceDate "Next Service Date [%1$tb %1$tY]" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:status#service-date" }
String i3NextServiceMileage "Next Service Mileage [%d %unit%]" <line> (i3) {channel="mybmw:bev_rex:4711:i3:status#service-mileage" }
String i3CheckControl "Check Control [%s]" <error> (i3) {channel="mybmw:bev_rex:4711:i3:status#check-control" }
String i3PlugConnection "Plug [%s]" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:status#plug-connection" }
String i3ChargingStatus "[%s]" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:status#charge" }
String i3ChargingInfo "[%s]" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:status#charge-info" }
DateTime i3LastUpdate "Update [%1$tA, %1$td.%1$tm. %1$tH:%1$tM]" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:status#last-update"}
Location i3Location "Location [%s]" <zoom> (i3) {channel="mybmw:bev_rex:4711:i3:location#gps" }
Number:Angle i3Heading "Heading [%.1f %unit%]" <zoom> (i3) {channel="mybmw:bev_rex:4711:i3:location#heading" }
String i3RemoteCommand "Command [%s]" <switch> (i3) {channel="mybmw:bev_rex:4711:i3:remote#command" }
String i3RemoteState "Remote Execution State [%s]" <status> (i3) {channel="mybmw:bev_rex:4711:i3:remote#state" }
String i3DriverDoor "Driver Door [%s]" <lock> (i3) {channel="mybmw:bev_rex:4711:i3:doors#driver-front" }
String i3DriverDoorRear "Driver Door Rear [%s]" <lock> (i3) {channel="mybmw:bev_rex:4711:i3:doors#driver-rear" }
String i3PassengerDoor "Passenger Door [%s]" <lock> (i3) {channel="mybmw:bev_rex:4711:i3:doors#passenger-front" }
String i3PassengerDoorRear "Passenger Door Rear [%s]" <lock> (i3) {channel="mybmw:bev_rex:4711:i3:doors#passenger-rear" }
String i3Hood "Hood [%s]" <lock> (i3) {channel="mybmw:bev_rex:4711:i3:doors#hood" }
String i3Trunk "Trunk [%s]" <lock> (i3) {channel="mybmw:bev_rex:4711:i3:doors#trunk" }
String i3DriverWindow "Driver Window [%s]" <lock> (i3) {channel="mybmw:bev_rex:4711:i3:doors#win-driver-front" }
String i3DriverWindowRear "Driver Window Rear [%s]" <lock> (i3) {channel="mybmw:bev_rex:4711:i3:doors#win-driver-rear" }
String i3PassengerWindow "Passenger Window [%s]" <lock> (i3) {channel="mybmw:bev_rex:4711:i3:doors#win-passenger-front" }
String i3PassengerWindowRear "Passenger Window Rear [%s]" <lock> (i3) {channel="mybmw:bev_rex:4711:i3:doors#win-passenger-rear" }
String i3RearWindow "Rear Window [%s]" <lock> (i3) {channel="mybmw:bev_rex:4711:i3:doors#win-rear" }
String i3Sunroof "Sunroof [%s]" <lock> (i3) {channel="mybmw:bev_rex:4711:i3:doors#sunroof" }
String i3ServiceName "Service Name [%s]" <text> (i3) {channel="mybmw:bev_rex:4711:i3:service#name" }
String i3ServiceDetails "Service Details [%s]" <text> (i3) {channel="mybmw:bev_rex:4711:i3:service#details" }
Number:Length i3ServiceMileage "Service Mileage [%d %unit%]" <line> (i3) {channel="mybmw:bev_rex:4711:i3:service#mileage" }
DateTime i3ServiceDate "Service Date [%1$tb %1$tY]" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:service#date" }
String i3CCName "CheckControl Name [%s]" <text> (i3) {channel="mybmw:bev_rex:4711:i3:check#name" }
String i3CCDetails "CheckControl Details [%s]" <text> (i3) {channel="mybmw:bev_rex:4711:i3:check#details" }
String i3CCSeverity "CheckControl Severity [%s]" <line> (i3) {channel="mybmw:bev_rex:4711:i3:check#severity" }
Switch i3ChargeProfileClimate "Charge Profile Climatization" <temperature> (i3) {channel="mybmw:bev_rex:4711:i3:profile#climate" }
String i3ChargeProfileMode "Charge Profile Mode [%s]" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:profile#mode" }
String i3ChargeProfilePrefs "Charge Profile Preference [%s]" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:profile#prefs" }
String i3ChargeProfileCtrl "Charge Profile Control [%s]" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:profile#control" }
Number i3ChargeProfileTarget "Charge Profile SoC Target [%s]" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:profile#target" }
Switch i3ChargeProfileLimit "Charge Profile limited" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:profile#limit" }
DateTime i3ChargeWindowStart "Charge Window Start [%1$tH:%1$tM]" <time> (i3) {channel="mybmw:bev_rex:4711:i3:profile#window-start" }
DateTime i3ChargeWindowEnd "Charge Window End [%1$tH:%1$tM]" <time> (i3) {channel="mybmw:bev_rex:4711:i3:profile#window-end" }
DateTime i3Timer1Departure "Timer 1 Departure [%1$tH:%1$tM]" <time> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-departure" }
String i3Timer1Days "Timer 1 Days [%s]" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-days" }
Switch i3Timer1DayMon "Timer 1 Monday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-day-mon" }
Switch i3Timer1DayTue "Timer 1 Tuesday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-day-tue" }
Switch i3Timer1DayWed "Timer 1 Wednesday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-day-wed" }
Switch i3Timer1DayThu "Timer 1 Thursday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-day-thu" }
Switch i3Timer1DayFri "Timer 1 Friday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-day-fri" }
Switch i3Timer1DaySat "Timer 1 Saturday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-day-sat" }
Switch i3Timer1DaySun "Timer 1 Sunday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-day-sun" }
Switch i3Timer1Enabled "Timer 1 Enabled" <switch> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-enabled" }
DateTime i3Timer2Departure "Timer 2 Departure [%1$tH:%1$tM]" <time> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-departure" }
Switch i3Timer2DayMon "Timer 2 Monday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-day-mon" }
Switch i3Timer2DayTue "Timer 2 Tuesday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-day-tue" }
Switch i3Timer2DayWed "Timer 2 Wednesday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-day-wed" }
Switch i3Timer2DayThu "Timer 2 Thursday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-day-thu" }
Switch i3Timer2DayFri "Timer 2 Friday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-day-fri" }
Switch i3Timer2DaySat "Timer 2 Saturday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-day-sat" }
Switch i3Timer2DaySun "Timer 2 Sunday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-day-sun" }
Switch i3Timer2Enabled "Timer 2 Enabled" <switch> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-enabled" }
DateTime i3Timer3Departure "Timer 3 Departure [%1$tH:%1$tM]" <time> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-departure" }
Switch i3Timer3DayMon "Timer 3 Monday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-day-mon" }
Switch i3Timer3DayTue "Timer 3 Tuesday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-day-tue" }
Switch i3Timer3DayWed "Timer 3 Wednesday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-day-wed" }
Switch i3Timer3DayThu "Timer 3 Thursday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-day-thu" }
Switch i3Timer3DayFri "Timer 3 Friday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-day-fri" }
Switch i3Timer3DaySat "Timer 3 Saturday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-day-sat" }
Switch i3Timer3DaySun "Timer 3 Sunday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-day-sun" }
Switch i3Timer3Enabled "Timer 3 Enabled" <switch> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-enabled" }
DateTime i3Timer4Departure "Timer 4 Departure [%1$tH:%1$tM]" <time> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-departure" }
Switch i3Timer4DayMon "Timer 4 Monday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-day-mon" }
Switch i3Timer4DayTue "Timer 4 Tuesday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-day-tue" }
Switch i3Timer4DayWed "Timer 4 Wednesday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-day-wed" }
Switch i3Timer4DayThu "Timer 4 Thursday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-day-thu" }
Switch i3Timer4DayFri "Timer 4 Friday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-day-fri" }
Switch i3Timer4DaySat "Timer 4 Saturday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-day-sat" }
Switch i3Timer4DaySun "Timer 4 Sunday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-day-sun" }
Switch i3Timer4Enabled "Timer 4 Enabled" <switch> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-enabled" }
String i3StatisticsTitle "[%s]" <text> (i3) {channel="mybmw:bev_rex:4711:i3:statistic#title" }
Number:Energy i3StatisticsEnergy "Charged [%d %unit%]" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:statistic#energy" }
Number i3StatisticsSessions "Sessions [%d]" <line> (i3) {channel="mybmw:bev_rex:4711:i3:statistic#sessions" }
String i3SessionTitle "[%s]" <text> (i3) {channel="mybmw:bev_rex:4711:i3:session#title" }
String i3SessionDetails "[%s]" <text> (i3) {channel="mybmw:bev_rex:4711:i3:session#subtitle" }
String i3SessionCharged "Energy Charged [%s]" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:session#energy" }
String i3SessionProblems "Problems [%s]" <error> (i3) {channel="mybmw:bev_rex:4711:i3:session#issue" }
String i3SessionStatus "Session status [%s]" <text> (i3) {channel="mybmw:bev_rex:4711:i3:session#status" }
Number:Pressure i3TireFLCurrent "Tire Front Left [%.1f %unit%]" <text> (i3) {channel="mybmw:bev_rex:4711:i3:tires#fl-current" }
Number:Pressure i3TireFLTarget "Tire Front Left Target [%.1f %unit%]" <text> (i3) {channel="mybmw:bev_rex:4711:i3:tires#fl-target" }
Number:Pressure i3TireFRCurrent "Tire Front Right [%.1f %unit%]" <text> (i3) {channel="mybmw:bev_rex:4711:i3:tires#fr-current" }
Number:Pressure i3TireFRTarget "Tire Front Right Target [%.1f %unit%]" <text> (i3) {channel="mybmw:bev_rex:4711:i3:tires#fr-target" }
Number:Pressure i3TireRLCurrent "Tire Rear Left [%.1f %unit%]" <text> (i3) {channel="mybmw:bev_rex:4711:i3:tires#rl-current" }
Number:Pressure i3TireRLTarget "Tire Rear Left Target [%.1f %unit%]" <text> (i3) {channel="mybmw:bev_rex:4711:i3:tires#rl-target" }
Number:Pressure i3TireRRCurrent "Tire Rear Right [%.1f %unit%]" <text> (i3) {channel="mybmw:bev_rex:4711:i3:tires#rr-current" }
Number:Pressure i3TireRRTarget "Tire Rear Right Target [%.1f %unit%]" <text> (i3) {channel="mybmw:bev_rex:4711:i3:tires#rr-target" }
Image i3Image "Image" (i3) {channel="mybmw:bev_rex:4711:i3:image#png" }
String i3ImageViewport "Image Viewport [%s]" <zoom> (i3) {channel="mybmw:bev_rex:4711:i3:image#view" }
# Sitemap File
sitemap BMW label="BMW" {
Frame label="BMW i3" {
Image item=i3Image
}
Frame label="Status" {
Text item=i3DoorStatus
Text item=i3WindowStatus
Text item=i3LockStatus
Text item=i3NextServiceDate
Text item=i3NextServiceMileage
Text item=i3CheckControl
Text item=i3ChargingStatus
Text item=i3LastUpdate
}
Frame label="Range" {
Text item=i3Mileage
Text item=i3Range
Text item=i3RangeElectric
Text item=i3RangeFuel
Text item=i3BatterySoc
Text item=i3Fuel
Text item=i3RadiusElectric
Text item=i3RadiusHybrid
}
Frame label="Remote Services" {
Selection item=i3RemoteCommand
Text item=i3RemoteState
}
Frame label="Services" {
Selection item=i3ServiceName
Text item=i3ServiceDetails
Text item=i3ServiceMileage
Text item=i3ServiceDate
}
Frame label="CheckControl" {
Selection item=i3CCName
Text item=i3CCDetails
Text item=i3CCSeverity
}
Frame label="Door Details" {
Text item=i3DriverDoor visibility=[i3DriverDoor!="INVALID"]
Text item=i3DriverDoorRear visibility=[i3DriverDoorRear!="INVALID"]
Text item=i3PassengerDoor visibility=[i3PassengerDoor!="INVALID"]
Text item=i3PassengerDoorRear visibility=[i3PassengerDoorRear!="INVALID"]
Text item=i3Hood visibility=[i3Hood!="INVALID"]
Text item=i3Trunk visibility=[i3Trunk!="INVALID"]
Text item=i3DriverWindow visibility=[i3DriverWindow!="INVALID"]
Text item=i3DriverWindowRear visibility=[i3DriverWindowRear!="INVALID"]
Text item=i3PassengerWindow visibility=[i3PassengerWindow!="INVALID"]
Text item=i3PassengerWindowRear visibility=[i3PassengerWindowRear!="INVALID"]
Text item=i3RearWindow visibility=[i3RearWindow!="INVALID"]
Text item=i3Sunroof visibility=[i3Sunroof!="INVALID"]
}
Frame label="Location" {
Text item=i3Location
Text item=i3Heading
}
Frame label="Charge Profile" {
Switch item=i3ChargeProfileClimate
Selection item=i3ChargeProfileMode
Text item=i3ChargeWindowStart
Text item=i3ChargeWindowEnd
Text item=i3Timer1Departure
Switch item=i3Timer1DayMon
Switch item=i3Timer1DayTue
Switch item=i3Timer1DayWed
Switch item=i3Timer1DayThu
Switch item=i3Timer1DayFri
Switch item=i3Timer1DaySat
Switch item=i3Timer1DaySun
Switch item=i3Timer1Enabled
Text item=i3Timer2Departure
Switch item=i3Timer2DayMon
Switch item=i3Timer2DayTue
Switch item=i3Timer2DayWed
Switch item=i3Timer2DayThu
Switch item=i3Timer2DayFri
Switch item=i3Timer2DaySat
Switch item=i3Timer2DaySun
Switch item=i3Timer2Enabled
Text item=i3Timer3Departure
Switch item=i3Timer3DayMon
Switch item=i3Timer3DayTue
Switch item=i3Timer3DayWed
Switch item=i3Timer3DayThu
Switch item=i3Timer3DayFri
Switch item=i3Timer3DaySat
Switch item=i3Timer3DaySun
Switch item=i3Timer3Enabled
Text item=i3Timer4Departure
Switch item=i3Timer4DayMon
Switch item=i3Timer4DayTue
Switch item=i3Timer4DayWed
Switch item=i3Timer4DayThu
Switch item=i3Timer4DayFri
Switch item=i3Timer4DaySat
Switch item=i3Timer4DaySun
Switch item=i3Timer4Enabled
}
Frame label="Charge Statistics" {
Text item=i3StatisticsTitle
Text item=i3StatisticsEnergy
Text item=i3StatisticsSessions
}
Frame label="Charge Sessions" {
Selection item=i3SessionTitle
Text item=i3SessionDetails
Text item=i3SessionCharged
Text item=i3SessionProblems
Text item=i3SessionStatus
}
Frame label="Tires" {
Text item=i3TireFLCurrent
Text item=i3TireFLTarget
Text item=i3TireFRCurrent
Text item=i3TireFRTarget
Text item=i3TireRLCurrent
Text item=i3TireRLTarget
Text item=i3TireRRCurrent
Text item=i3TireRRTarget
}
Frame label="Image Properties" {
Selection item=i3ImageViewport
}
}
# Credits
This work is based on the great work of the project of Bimmer Connected (opens new window).