[Documentation] Markdown improvements f to m (#13866)

Signed-off-by: Jerome Luckenbach <github@luckenba.ch>
This commit is contained in:
Jerome Luckenbach
2022-12-08 21:36:05 +01:00
committed by GitHub
parent 3c236b3103
commit 0e68936663
122 changed files with 3490 additions and 3662 deletions

View File

@@ -1,25 +1,25 @@
# MyBMW Binding
The binding provides access like [MyBMW App](https://www.bmw.com/en/footer/mybmw-app.html) to openHAB.
All vehicles connected to an account will be detected by the discovery with the correct type:
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
- 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 provided data depends on
1. the [Thing Type](#things) and
2. the [Properties](#properties) mentioned in Services
1. the [Thing Type](#things) and
1. the [Properties](#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.
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
@@ -31,14 +31,13 @@ The bridge establishes the connection between BMW API and openHAB.
|----------------------------|----------------|------------------------------------------|
| 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_.
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 |
@@ -46,21 +45,20 @@ For hybrid vehicles in addition to _Fuel and Electric Range_ the _Hybrid Range_
| BMW Plug-In-Hybrid Electric Vehicle | `phev` | Vehicle with combustion and electric drive train |
| BMW Conventional Vehicle | `conv` | Vehicle with combustion drive train |
#### Properties
<img align="right" src="./doc/vehicle-properties.png" width="500" height="350"/>
For each vehicle properties are available.
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
- 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.
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](#remote-services) is supporting door lock and unlock remote control.
In *Services Supported* the entry *ChargingHistory* is mentioned.
In _Services Supported_ the entry _ChargingHistory_ is mentioned.
So it's valid to connect channel group [Charge Sessions](#charge-sessions) in order to display your last charging sessions.
| Property Key | Property Value | Supported Channel Groups |
@@ -68,12 +66,11 @@ So it's valid to connect channel group [Charge Sessions](#charge-sessions) in or
| servicesSupported | ChargingHistory | session |
| remoteServicesEnabled | _list of services_ | remote |
## Discovery
Auto discovery is starting after the bridge is created.
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).
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.
@@ -81,7 +78,7 @@ Properties will be attached to predefined vehicles if the VIN is matching.
### Bridge Configuration
| Parameter | Type | Description |
| Parameter | Type | Description |
|-----------------|---------|--------------------------------------------------------------------|
| userName | text | MyBMW Username |
| password | text | MyBMW Password |
@@ -89,53 +86,49 @@ Properties will be attached to predefined vehicles if the VIN is matching.
The region Configuration has 3 different options
* _NORTH_AMERICA_
* _CHINA_
* _ROW_ (Rest of World)
- _NORTH_AMERICA_
- _CHINA_
- _ROW_ (Rest of World)
#### Advanced Configuration
| Parameter | Type | Description |
| Parameter | Type | Description |
|-----------------|---------|---------------------------------------------------------|
| language | text | Channel data can be returned in the desired language |
Language is predefined as *AUTODETECT*.
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](https://www.oracle.com/java/technologies/javase/jdk8-jre8-suported-locales.html)
So if want your UI in english language place *en* as desired language.
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 |
| Parameter | Type | Description |
|-----------------|---------|---------------------------------------|
| vin | text | Vehicle Identification Number (VIN) |
| refreshInterval | integer | Refresh Interval in Minutes |
#### Advanced Configuration
| Parameter | Type | Description |
| 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
- BMW
- MINI
## Channels
There are many channels available for each vehicle.
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
### Thing Channel Groups
| Channel Group ID | Description | conv | phev | bev_rex | bev |
|----------------------------------|---------------------------------------------------|------|------|---------|-----|
@@ -152,14 +145,13 @@ They differ for each vehicle type, build-in sensors and activated services.
| [tires](#tire-pressure) | Current and wanted pressure for all tires | X | X | X | X |
| [image](#image) | Provides an image of your vehicle | 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 Group ID is **status**
- Available for all vehicles
- Read-only values
| Channel Label | Channel ID | Type | Description | conv | phev | bev_rex | bev |
|---------------------------|---------------------|---------------|------------------------------------------------|------|------|---------|-----|
@@ -177,44 +169,44 @@ Reflects overall status of the vehicle.
Overall Door Status values
* _Closed_ - all doors closed
* _Open_ - at least one door is open
* _Undef_ - no door data delivered at all
- _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
- _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
- No Issues
- Multiple Issues
Charging Status values
* _Not Charging_
* _Charging_
* _Plugged In_
* _Fully Charged_
- _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
- 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](https://www.openhab.org/addons/transformations/jsonpath/) to extract data for an item,
As the replies are formatted as JSON use the [JsonPath Transformation Service](https://www.openhab.org/addons/transformations/jsonpath/) to extract data for an item,
| Channel Label | Channel ID | Type | Description |
|---------------------------|---------------------|---------------|------------------------------------------------|
@@ -224,51 +216,50 @@ As the replies are formatted as JSON use the [JsonPath Transformation Service](h
Examples:
_Country ISO Code_
###### Country ISO Code
```
```json
$.properties.originCountryISO
```
_Drivers Guide URL_
###### Drivers Guide URL
```
```json
$.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*.
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](#range-vs-range-radius) to get more information.
* Channel Group ID is **range**
* Availability according to table
* Read-only values
- Channel Group ID is **range**
- Availability according to table
- Read-only values
| Channel Label | Channel ID | Type | conv | phev | bev_rex | bev |
|---------------------------|-------------------------|----------------------|------|------|---------|-----|
| Mileage | mileage | Number:Length | X | X | X | X |
| Fuel Range | range-fuel | Number:Length | X | X | X | |
| Electric Range | range-electric | Number:Length | | X | X | X |
| Hybrid Range | range-hybrid | Number:Length | | X | X | |
| Electric Range | range-electric | Number:Length | | X | X | X |
| Hybrid Range | range-hybrid | Number:Length | | X | X | |
| Battery Charge Level | soc | Number:Dimensionless | | X | X | X |
| Remaining Fuel | remaining-fuel | Number:Volume | X | X | X | |
| Fuel Range Radius | range-radius-fuel | Number:Length | X | X | X | |
| Electric Range Radius | range-radius-electric | Number:Length | | X | X | X |
| Hybrid Range Radius | range-radius-hybrid | Number:Length | | X | X | |
| Remaining Fuel | remaining-fuel | Number:Volume | X | X | X | |
| Fuel Range Radius | range-radius-fuel | Number:Length | X | X | X | |
| Electric Range Radius | range-radius-electric | Number:Length | | X | X | X |
| Hybrid Range Radius | range-radius-hybrid | Number:Length | | 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 Label | Channel ID | Type |
- Channel Group ID is **doors**
- Available for all vehicles if corresponding sensors are built-in
- Read-only values
| Channel Label | Channel ID | Type |
|----------------------------|-------------------------|---------------|
| Driver Door | driver-front | String |
| Driver Door Rear | driver-rear | String |
@@ -285,21 +276,20 @@ Detailed status of all doors and windows.
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
- _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 Group ID is **check**
- Available for all vehicles
- Read/Write access
| Channel Label | Channel ID | Type | Access |
|---------------------------------|---------------------|----------------|------------|
@@ -309,19 +299,18 @@ If more than one message is active the channel _name_ contains all active messag
Severity Levels
* Ok
* Low
* Medium
- 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 Group ID is **service**
- Available for all vehicles
- Read/Write access
| Channel Label | Channel ID | Type | Access |
|--------------------------------|---------------------|----------------|------------|
@@ -330,33 +319,31 @@ If more than one service is scheduled in the future the channel _name_ contains
| Service Date | date | DateTime | Read |
| Mileage till Service | 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 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 Label | Channel ID | Type |
| Channel Label | Channel ID | Type |
|---------------------|---------------------|---------------|
| GPS Coordinates | gps | Location |
| Heading | heading | Number:Angle |
| Address | address | String |
| Distance from Home | home-distance | Number:Length |
| GPS Coordinates | gps | Location |
| Heading | heading | Number:Angle |
| Address | address | String |
| Distance from Home | home-distance | Number:Length |
#### Remote Services
Remote control of the vehicle.
Send a *command* to the vehicle and the *state* is reporting the execution progress.
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](#properties) for further details
* Read/Write access
- Channel Group ID is **remote**
- Available for all commands mentioned in _Services Activated_. See [Vehicle Properties](#properties) for further details
- Read/Write access
| Channel Label | Channel ID | Type | Access |
|-------------------------|---------------------|---------|--------|
@@ -365,85 +352,82 @@ Parallel execution isn't supported.
The channel _command_ provides options
* _flash-lights_
* _vehicle-finder_
* _door-lock_
* _door-unlock_
* _horn-low_
* _climate-now-start_
* _climate-now-stop_
- _flash-lights_
- _vehicle-finder_
- _door-lock_
- _door-unlock_
- _horn-low_
- _climate-now-start_
- _climate-now-stop_
The channel _state_ shows the progress of the command execution in the following order
1) _initiated_
2) _pending_
3) _delivered_
4) _executed_
1. _initiated_
1. _pending_
1. _delivered_
1. _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 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 Label | Channel ID | Type |
|----------------------------|---------------------------|----------|
| Charge Mode | mode | String |
| Charge Preferences | prefs | String |
| Charging Plan | control | String |
| SoC Target | target | String |
| Charging Energy Limited | limit | Switch |
| Window Start Time | window-start | DateTime |
| Window End Time | window-end | DateTime |
| A/C at Departure | climate | Switch |
| T*X* Enabled | timer*X*-enabled | Switch |
| T*X* Departure Time | timer*X*-departure | DateTime |
| T*X* Monday | timer*X*-day-mon | Switch |
| T*X* Tuesday | timer*X*-day-tue | Switch |
| T*X* Wednesday | timer*X*-day-wed | Switch |
| T*X* Thursday | timer*X*-day-thu | Switch |
| T*X* Friday | timer*X*-day-fri | Switch |
| T*X* Saturday | timer*X*-day-sat | Switch |
| T*X* Sunday | timer*X*-day-sun | Switch |
| Channel Label | Channel ID | Type |
|----------------------------|---------------------------|----------|
| Charge Mode | mode | String |
| Charge Preferences | prefs | String |
| Charging Plan | control | String |
| SoC Target | target | String |
| Charging Energy Limited | limit | Switch |
| Window Start Time | window-start | DateTime |
| Window End Time | window-end | DateTime |
| A/C at Departure | climate | Switch |
| T_X_ Enabled | timer_X_-enabled | Switch |
| T_X_ Departure Time | timer_X_-departure | DateTime |
| T_X_ Monday | timer_X_-day-mon | Switch |
| T_X_ Tuesday | timer_X_-day-tue | Switch |
| T_X_ Wednesday | timer_X_-day-wed | Switch |
| T_X_ Thursday | timer_X_-day-thu | Switch |
| T_X_ Friday | timer_X_-day-fri | Switch |
| T_X_ Saturday | timer_X_-day-sat | Switch |
| T_X_ Sunday | timer_X_-day-sun | Switch |
The channel _profile-mode_ supports
* *immediateCharging*
* *delayedCharging*
- _immediateCharging_
- _delayedCharging_
The channel _profile-prefs_ supports
* *noPreSelection*
* *chargingWindow*
- _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 Label | Channel ID | Type |
- Channel Group ID is **statistic**
- Available for electric and hybrid vehicles
- Read-only values
| Channel Label | Channel ID | Type |
|----------------------------|-------------------------|----------------|
| Charge Statistic Month | title | String |
| Energy Charged | energy | Number:Energy |
| Charge Sessions | sessions | Number |
#### 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 Group ID is **session**
- Available for electric and hybrid vehicles
- Read-only values
| Channel Label | Channel ID | Type |
|---------------------------------|--------------|----------|
@@ -453,16 +437,15 @@ If more than one message is active the channel _name_ contains all active messag
| Issues during Session | issue | String |
| Session Status | status | String |
#### 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 Label | Channel ID | Type |
- Channel Group ID is **tires**
- Available for all vehicles if corresponding sensors are built-in
- Read-only values
| Channel Label | Channel ID | Type |
|----------------------------|-------------------------|------------------|
| Front Left | fl-current | Number:Pressure |
| Front Left Target | fl-target | Number:Pressure |
@@ -473,14 +456,13 @@ Current and target tire pressure values
| Rear Right | rr-current | Number:Pressure |
| Rear Right Target | rr-target | Number:Pressure |
#### Image
Image representation of the vehicle.
Image representation of the vehicle.
* Channel Group ID is **image**
* Available for all vehicles
* Read/Write access
- Channel Group ID is **image**
- Available for all vehicles
- Read/Write access
| Channel Label | Channel ID | Type | Access |
|----------------------------|---------------------|--------|----------|
@@ -489,11 +471,10 @@ Image representation of the vehicle.
Possible view ports:
* _VehicleStatus_ Front Side View
* _VehicleInfo_ Front View
* _ChargingHistory_ Side View
* _Default_ Front Side View
- _VehicleStatus_ Front Side View
- _VehicleInfo_ Front View
- _ChargingHistory_ Side View
- _Default_ Front Side View
## Further Descriptions
@@ -503,35 +484,34 @@ Possible view ports:
There are 3 occurrences of dynamic data delivered
* Upcoming Services delivered in group [Services](#services)
* Check Control Messages delivered in group [Check Control](#check-control)
* Charging Session data delivered in group [Charge Sessions](#charge-sessions)
- Upcoming Services delivered in group [Services](#services)
- Check Control Messages delivered in group [Check Control](#check-control)
- Charging Session data delivered in group [Charge Sessions](#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.
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!
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](#bridge) status _Online_?
- Can you log into MyBMW App with your credentials?
- Is the vehicle listed in your account?
- Is the [MyBMW Brige](#bridge) status _Online_?
If these preconditions are fulfilled proceed with the fingerprint generation.
If these preconditions are fulfilled proceed with the fingerprint generation.
#### Generate Debug Fingerprint
<img align="right" src="./doc/DiscoveryScan.png" width="400" height="350"/>
First [enable debug logging](https://www.openhab.org/docs/administration/logging.html#defining-what-to-log) for the binding.
```
```shell
log:set DEBUG org.openhab.binding.mybmw
```
@@ -540,48 +520,47 @@ To force a new fingerprint perform a _Scan_ for MyBMW things.
Personal data is eliminated from the log entries so it should be possible to share them in public.
Data like
* Vehicle Identification Number (VIN)
* Location data
- Vehicle Identification Number (VIN)
- Location data
are anonymized.
You'll find the fingerprint in the logs with the command
```
```shell
grep "Discovery Fingerprint Data" openhab.log
```
After the corresponding fingerprint is generated please [follow the instructions to raise an issue](https://community.openhab.org/t/how-to-file-an-issue/68464) and attach the fingerprint data!
Your feedback is highly appreciated!
### Range vs Range Radius
<img align="right" src="./doc/range-radius.png" width="400" height="350"/>
You will observe differences in the vehicle range and range radius values.
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.
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](https://www.openhab.org/docs/ui/sitemaps.html#element-type-mapview) 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.
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).
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
- 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!
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
```
```java
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"]
}
@@ -589,7 +568,7 @@ Bridge mybmw:account:4711 "MyBMW Account" [userName="YOUR_USERNAME",password="
### Items File
```
```java
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"}
@@ -710,7 +689,7 @@ String i3ImageViewport "Image Viewport [%s]"
### Sitemap File
```
```perl
sitemap BMW label="BMW" {
Frame label="BMW i3" {
Image item=i3Image
@@ -842,5 +821,4 @@ sitemap BMW label="BMW" {
## Credits
This work is based on the project of [Bimmer Connected](https://github.com/bimmerconnected/bimmer_connected).
This work is based on the project of [Bimmer Connected](https://github.com/bimmerconnected/bimmer_connected).