Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
6114737
Added aarch64 architecture
kamiKAC Aug 19, 2023
15db23c
Added requestBatteryStatusRefresh() to fetchBatteryStatus()
kamiKAC Sep 3, 2023
e93bca5
use DOCKERHUBUSERNAME as part of repository name
kamiKAC Sep 3, 2023
8be70f5
Update add-on version
kamiKAC Sep 3, 2023
9de62e8
Merge pull request #1 from kamiKAC/Battery-status-refresh
kamiKAC Oct 9, 2023
304f496
Update add-on version
kamiKAC Oct 9, 2023
51d888e
switch to own repo for dartnissanconnect
kamiKAC Oct 12, 2023
c412d43
Update add-on version
kamiKAC Oct 12, 2023
21d447f
use prebuilt docker image
kamiKAC Oct 30, 2023
167d192
ci: add release-please
kamiKAC May 20, 2024
782e8b9
ci: change docker image tagging
kamiKAC May 20, 2024
6002cf4
chore: release 0.0.2
kamiKAC May 20, 2024
34310ce
ci: remove paths from push event
kamiKAC May 20, 2024
8a0afd5
chore(main): release 0.0.2
kamiKAC May 20, 2024
6856ce8
Merge pull request #3 from kamiKAC/release-please--branches--main--co…
kamiKAC May 20, 2024
fe2b3b8
ci: change docker/metedata-action to v5
kamiKAC May 20, 2024
1509dc4
chore: release 0.0.2
kamiKAC May 20, 2024
4eb0f23
chore(main): release 0.0.2 (#4)
kamiKAC May 20, 2024
926e129
ci: move token to checkout action
kamiKAC May 20, 2024
277013e
Merge branch 'main' of https://github.com/kamiKAC/leaf2mqtt into main
kamiKAC May 20, 2024
a4e0a2d
chore(main): release 0.0.2 (#6)
kamiKAC May 20, 2024
3e32707
chore(main): release 0.0.2 (#7)
kamiKAC May 20, 2024
e0c70fe
ci: Introduce release-please (#9)
kamiKAC May 20, 2024
c9c96ab
chore(main): release 0.0.2 (#8)
kamiKAC May 20, 2024
f9b7205
Update add-on version
kamiKAC May 20, 2024
f0757cb
ci: Re-release v0.0.2 with dartnissanconnect v1.0.4 (#10)
kamiKAC May 20, 2024
b13df46
chore(main): release 0.0.2 (#11)
kamiKAC May 20, 2024
551446c
ci: Re-release v0.0.2 with dartnissanconnect v1.0.4 (#12)
kamiKAC May 20, 2024
7ed658b
chore(main): release 0.0.2 (#13)
kamiKAC May 20, 2024
1d2315e
fix: update to dartnissanconnect v1.0.5 (#14)
kamiKAC May 20, 2024
6ae5ae4
ci: fix if workflow condition (#16)
kamiKAC May 20, 2024
b9dd706
build: Update repo name in various places (#2)
reedy May 21, 2024
924ff11
ci: fix workflow condition (#17)
kamiKAC May 21, 2024
e0e09ba
chore(main): release 0.0.3 (#15)
kamiKAC May 21, 2024
fc84aa2
Update add-on version
kamiKAC May 21, 2024
1c15dee
ci: move addon/config.json update to release-please (#18)
kamiKAC May 21, 2024
d19c52c
fix: reorder of status fetch (#21)
kamiKAC Jun 14, 2024
8429508
trigger relase-please
kamiKAC Jun 14, 2024
cc7bd4d
chore(main): release 0.0.4 (#23)
kamiKAC Jun 14, 2024
d20da53
docs: add badge
kamiKAC Jun 14, 2024
cf6b71b
Revert "chore(main): release 0.0.4 (#23)" (#24)
kamiKAC Jun 16, 2024
b6d1b1d
Revert "fix: reorder of status fetch (#21)" (#25)
kamiKAC Jun 16, 2024
9307c0d
fix: reorder of status fetch (#26)
kamiKAC Jun 16, 2024
719c8ea
chore: release 0.0.4
kamiKAC Jun 16, 2024
3597bcd
fix: correction of release-please-config
kamiKAC Jun 16, 2024
ca2d056
ci: move release-type from workflow parameters to config
kamiKAC Jun 16, 2024
d0c15f4
ci: wrong release-type
kamiKAC Jun 16, 2024
2ec1543
chore(main): release leaf2mqtt 0.0.4 (#27)
kamiKAC Jun 16, 2024
87b51b1
ci: remove component name from tag
kamiKAC Jun 16, 2024
b036511
ci: add tag input in workflow
kamiKAC Jun 16, 2024
cd9ac59
chore(main): release 0.0.4 (#28)
kamiKAC Jun 16, 2024
378d915
ci: solved problem with addon version
kamiKAC Jun 17, 2024
da08572
ci: added armhf to architectures
kamiKAC Jun 17, 2024
d1ed843
ci: removed extra-files section from release-please-config.json as ne…
kamiKAC Jun 17, 2024
8bfd08a
feat: provide combined coordinates which are supported by openHAB (#30)
kamiKAC Jun 30, 2024
8f655a0
chore(main): release 0.1.0 (#31)
github-actions[bot] Jun 30, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: yp87
assignees: kamiKAC

---

Expand Down
135 changes: 95 additions & 40 deletions .github/workflows/leaf2mqtt.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,70 +2,125 @@ name: Publish Docker image

on:
workflow_dispatch:
inputs:
tag:
type: string
description: Set tag for docker image if workflow not started from main
default: ""
required: false

push:
paths:
- 'pubspec.*'
- 'src/**'
- 'Dockerfile'
- '.github/workflows/**'
branches:
- main

jobs:
release-please:
if: github.event_name != 'workflow_dispatch'
runs-on: ubuntu-latest
steps:
- uses: googleapis/release-please-action@v4
id: release
- uses: actions/checkout@v4
- name: tag major and minor versions
if: steps.release.outputs.release_created
run: |
git config user.name github-actions[bot]
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
git tag -d v${{ steps.release.outputs.major }} || true
git tag -d v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }} || true
git push origin :v${{ steps.release.outputs.major }} || true
git push origin :v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }} || true
git tag -a v${{ steps.release.outputs.major }} -m "Release v${{ steps.release.outputs.major }}"
git tag -a v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }} -m "Release v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }}"
git push origin v${{ steps.release.outputs.major }}
git push origin v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }}
- name: display pr output
if: steps.release.outputs.prs_created == 'true'
run: |-
echo 'pr output: ${{ steps.release.outputs.pr }}'
echo 'prs output: ${{ steps.release.outputs.prs }}'
- name: install yq
if: steps.release.outputs.prs_created == 'true'
uses: chrisdickinson/setup-yq@v1.0.1
with:
yq-version: v4.44.2
- name: checkout release-please branch
if: steps.release.outputs.prs_created == 'true'
uses: actions/checkout@v4
with:
ref: ${{ fromJson(steps.release.outputs.pr).headBranchName }}
- name: update addon version
if: steps.release.outputs.prs_created == 'true'
run: |-
version=$(yq '.version' ./pubspec.yaml)
yq -i ".version |= \"v${version}\"" addon/config.json
git add .
if [[ ! -z "$(git status --porcelain)" ]]; then
git config user.name github-actions[bot]
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
git commit -m "Update addon version"
git push
fi

outputs:
release_created: ${{ steps.release.outputs.release_created }}
tag_name: ${{ steps.release.outputs.tag_name }}
push_to_registry:
name: Push Docker image to Docker Hub
needs:
- release-please
if: ${{ ! cancelled() && needs.release-please.outputs.release_created || github.event_name == 'workflow_dispatch' }}
runs-on: ubuntu-latest
steps:
- name: Check out the repo
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
fetch-tags: true
fetch-depth: 200

- name: Set up QEMU
uses: docker/setup-qemu-action@v1
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
uses: docker/setup-buildx-action@v3

- name: Log in to Docker Hub
uses: docker/login-action@v1.10.0
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUBUSERNAME }}
password: ${{ secrets.DOCKERHUBACCESSTOKEN }}


- name: Get nearest tag
id: get-nearest-tag
if: ${{ github.ref != format('refs/heads/{0}', 'main') }}
shell: bash
run: |-
TAGS=$(git tag --list)
NEAREST_TAG=$(git describe --tags --abbrev=0)
SPECIFIC_TAG=$(git tag --points-at $(git rev-list -n 1 $NEAREST_TAG) | grep -E 'v[0-9]+\.[0-9]+\.[0-9]+')
if [[ ! -z "$SPECIFIC_TAG" ]]; then
echo "Nearest tag is: $SPECIFIC_TAG"
echo "Using tag ${SPECIFIC_TAG}-edge"
echo "nearest_tag=${SPECIFIC_TAG}-edge" >> $GITHUB_OUTPUT
else
echo "Nearest tag not found, using 'edge' tag"
echo "nearest_tag=edge" >> $GITHUB_OUTPUT
fi
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
uses: docker/metadata-action@v5
with:
images: yp87/leaf2mqtt
images: ${{ secrets.DOCKERHUBUSERNAME }}/leaf2mqtt
tags: |
type=raw,value=${{ github.run_number }}
type=raw,value=latest

type=raw,value=${{ needs.release-please.outputs.tag_name }},enable=${{ github.ref == format('refs/heads/{0}', 'main') }}
type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'main') }}
type=raw,value=${{ inputs.tag != '' && inputs.tag || steps.get-nearest-tag.outputs.nearest_tag }},enable=${{ github.ref != format('refs/heads/{0}', 'main') }}
- name: Build and push Docker image
uses: docker/build-push-action@v2
uses: docker/build-push-action@v5
with:
context: .
build-args: |
APP_VERSION=${{ steps.meta.outputs.version }}
push: true
platforms: linux/amd64,linux/arm64
tags: ${{ steps.meta.outputs.tags }}

update_addon:
name: Update Home Assistant add-on
needs: push_to_registry
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Change image version number
uses: jossef/action-set-json-field@v1
with:
file: addon/config.json
field: version
value: ${{ github.run_number }}

- name: Commit changes
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Update add-on version
platforms: linux/amd64,linux/arm64,linux/arm/v8
tags: ${{ steps.meta.outputs.tags }}
3 changes: 3 additions & 0 deletions .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
".": "0.1.0"
}
39 changes: 39 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Changelog

## [0.1.0](https://github.com/kamiKAC/leaf2mqtt/compare/v0.0.4...v0.1.0) (2024-06-30)


### Features

* provide combined coordinates which are supported by openHAB ([#30](https://github.com/kamiKAC/leaf2mqtt/issues/30)) ([8bfd08a](https://github.com/kamiKAC/leaf2mqtt/commit/8bfd08a3e451ec79bdf5c2f845a6518fef54bb5e))

## [0.0.4](https://github.com/kamiKAC/leaf2mqtt/compare/v0.0.3...v0.0.4) (2024-06-16)


### Bug Fixes

* correction of release-please-config ([3597bcd](https://github.com/kamiKAC/leaf2mqtt/commit/3597bcd4dc62b89397c29cdc6abb891df4834edb))
* reorder of status fetch (https://github.com/kamiKAC/leaf2mqtt/pull/21) ([9307c0d](https://github.com/kamiKAC/leaf2mqtt/commit/9307c0d69bb69914670d6c857ec8760285a3e79f))
* switch to dartcarwings v1.0.1 (solves https://github.com/kamiKAC/leaf2mqtt/issues/19) ([9307c0d](https://github.com/kamiKAC/leaf2mqtt/commit/9307c0d69bb69914670d6c857ec8760285a3e79f))
* use build argument as version source - this enables displaying version of app in logs ([9307c0d](https://github.com/kamiKAC/leaf2mqtt/commit/9307c0d69bb69914670d6c857ec8760285a3e79f))


### Miscellaneous Chores

* release 0.0.4 ([719c8ea](https://github.com/kamiKAC/leaf2mqtt/commit/719c8eac3e9eb45d8452239c83076dd078b5cd54))


## [0.0.3](https://github.com/kamiKAC/leaf2mqtt/compare/v0.0.2...v0.0.3) (2024-05-21)


### Bug Fixes

* update to dartnissanconnect v1.0.5 ([#14](https://github.com/kamiKAC/leaf2mqtt/issues/14)) ([1d2315e](https://github.com/kamiKAC/leaf2mqtt/commit/1d2315ee762b6a764c6c203553e7fd40806b34c3))

## [0.0.2](https://github.com/kamiKAC/leaf2mqtt/compare/v0.0.2...v0.0.2) (2024-05-20)


### Continuous Integration


* Re-release v0.0.2 with dartnissanconnect v1.0.4 ([#12](https://github.com/kamiKAC/leaf2mqtt/issues/12)) ([551446c](https://github.com/kamiKAC/leaf2mqtt/commit/551446c5872921d36a6f662b55df5bce04ebb566))
3 changes: 2 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
FROM dart:2.19.6-sdk AS build
ARG APP_VERSION=unknown

RUN apt-get update && \
apt-get install -y git
Expand All @@ -10,7 +11,7 @@ RUN dart pub get

COPY . .
RUN dart pub get --offline
RUN dart compile exe src/leaf_2_mqtt.dart -o src/leaf_2_mqtt
RUN dart compile exe -DAPP_VERSION=${APP_VERSION} src/leaf_2_mqtt.dart -o src/leaf_2_mqtt

FROM scratch
COPY --from=build /runtime/ /
Expand Down
13 changes: 9 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
![Docker Pulls](https://img.shields.io/docker/pulls/yp87/leaf2mqtt) ![Docker Image Version (latest by date)](https://img.shields.io/docker/v/yp87/leaf2mqtt)
![Docker Pulls](https://img.shields.io/docker/pulls/kamikac/leaf2mqtt) ![Docker Image Version (latest by date)](https://img.shields.io/docker/v/kamikac/leaf2mqtt) ![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/kamiKAC/leaf2mqtt/leaf2mqtt.yml)

# leaf2mqtt
> :warning: olderCanada and olderUSA support may break at anytime because Nissan keep changing the API key. Thank you Nissan for working against your customers.

Expand Down Expand Up @@ -42,12 +43,12 @@ Should work with multiple Leafs, but it is untested. Please open an issue with f
### Home Assistant add-on
Click the icon below to add this repository to your Home Assistant instance or follow the procedure highlighted on the [Home Assistant website](https://home-assistant.io/hassio/installing_third_party_addons).

[![Install leaf2mqtt add-on repo.](https://my.home-assistant.io/badges/supervisor_add_addon_repository.svg)](https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2Fyp87%2Fleaf2mqtt)
[![Install leaf2mqtt add-on repo.](https://my.home-assistant.io/badges/supervisor_add_addon_repository.svg)](https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2FkamiKAC%2Fleaf2mqtt)

### Pre-built images
You can use pre-built images from here: https://hub.docker.com/r/yp87/leaf2mqtt
You can use pre-built images from here: https://hub.docker.com/r/kamikac/leaf2mqtt

tag example: `yp87/leaf2mqtt:latest`
tag example: `kamikac/leaf2mqtt:latest`

### Building the image

Expand Down Expand Up @@ -180,6 +181,7 @@ In these examples, the `MQTT_BASE_TOPIC` is set to the default (`leaf`).
| ------ | ---- | ----------- |
| leaf/{vin}/location/latitude | String | The reported last known location's latitude in decimal degrees |
| leaf/{vin}/location/longitude | String | The reported last known location's longitude in decimal degrees |
| leaf/{vin}/location/coordinates | String | The reported last known location (combined latitude and longitude in decimal degrees) |
| leaf/{vin}/location/lastReceivedDateTimeUtc | Iso8601 UTC | The datetime when leaf2mqtt received the last location values |
| leaf/{vin}/location/json | String | A json representation of all location status |

Expand Down Expand Up @@ -267,6 +269,9 @@ In Home Assistant, calling a script like this `- service: script.some_script_nam
# Let's have a cool down to give time to Home Assistant to update all the states.
- delay: "00:00:10"

## OpenHAB integration
Once you configure and start application you can configure OpenHAB to get data for your Leaf. Example config file is [here](/openhab) and documentation is [here](/openhab/README.md)

## Credits
- Forked from [Troon/leaf2mqtt](https://github.com/Troon/leaf2mqtt). Thank you for the inspiration!
- Using libraries from [Tobias Westergaard Kjeldsen](https://gitlab.com/tobiaswkjeldsen) to connect with the nissan leaf's APIs. Those libraries are also used for his [MyLeaf app](https://gitlab.com/tobiaswkjeldsen/carwingsflutter).
2 changes: 1 addition & 1 deletion addon/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
ARG BUILD_VERSION
ARG BUILD_ARCH

FROM yp87/leaf2mqtt:${BUILD_VERSION} AS build
FROM kamikac/leaf2mqtt:${BUILD_VERSION} AS build
FROM ghcr.io/hassio-addons/base/${BUILD_ARCH}:stable

COPY --from=build / /
Expand Down
7 changes: 4 additions & 3 deletions addon/config.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
{
"name": "Leaf2MQTT",
"version": "46",
"version": "v0.1.0",
"slug": "leaf2mqtt",
"description": "Interact with your Nissan Leaf using MQTT",
"startup": "application",
"url": "https://github.com/yp87/leaf2mqtt",
"url": "https://github.com/kamiKAC/leaf2mqtt",
"init": false,
"arch": [
"aarch64",
"amd64"
"amd64",
"armhf"
],
"options": {
"LEAF_USERNAME": "",
Expand Down
3 changes: 1 addition & 2 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@ version: "3"
services:
leaf2mqtt:
container_name: leaf2mqtt
build: .
image: leaf2mqtt
image: kamikac/leaf2mqtt
logging:
options:
max-size: "1M"
Expand Down
7 changes: 7 additions & 0 deletions openhab/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# OpenHAB example files for Leaf2MQTT

To use this example config:
- copy `items`, `things` and `transform` directories to `openhab` directory (under Linux it is located under `/etc/)
- edit `.things` file so `mqtt:broker:mosquitto` Bridge points to your MQTT server or change Thing to point to your previously defined MQTT bridge

Leaf Statistics should appear under `Cars` devices.
28 changes: 28 additions & 0 deletions openhab/items/leaf.items
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
Group OF_Car "Nissan Leaf" <car> (OF) ["Car"]

tring Car_Update "Update" <car> (OF_Car) ["Control"] { listWidget="oh-list-item"[actionItem="Car_Update", action="command" ,actionCommand="update", icon="f7:rectangle_split_3x1_fill"], channel="mqtt:topic:leaf:StatusUpdate" }
String Car_BatteryUpdate "Update battery state" <car> (OF_Car) ["Control"] { listWidget="oh-list-item"[actionItem="Car_BatteryUpdate", action="command", actionCommand="update", icon="f7:rectangle_split_3x1_fill"], channel="mqtt:topic:leaf:StatusBatteryUpdate" }
String Car_LocationUpdate "Update location" <car> (OF_Car) ["Control"] { listWidget="oh-list-item"[actionItem="Car_LocationUpdate", action="command", actionCommand="update", icon="f7:rectangle_split_3x1_fill"], channel="mqtt:topic:leaf:LocationUpdate" }
String Car_StatsUpdate "Update daily statistics" <car> (OF_Car) ["Control"] { listWidget="oh-list-item"[actionItem="Car_StatsUpdate", action="command", actionCommand="='update ' + dayjs().format('YYYY-MM-DD HH:mm:ss')", icon="f7:rectangle_split_3x1_fill"], channel="mqtt:topic:leaf:DailyStatistics" }

DateTime Car_StatsDate "Trip statistics for [%1$td-%1$tm-%1$ty]" <time> (OF_Car) ["Status"] { channel="mqtt:topic:leaf:StatsDate", autoupdate="false" }
Number:Length Car_Odometer "Odometer [%dkm]" <distance> (OF_Car) ["Measurement"] { channel="mqtt:topic:leaf:Mileage", unit="km", autoupdate="false" }
Number:Time Car_TripHours "Travel hours [%dh]" <time> (OF_Car) ["Measurement"] { channel="mqtt:topic:leaf:StatsTravelHours" }
Number:Time Car_TripDistance "Travel distance [%dkm]" <distance> (OF_Car) ["Measurement"] { channel="mqtt:topic:leaf:StatsTravelDistance" }
Number Car_TripNumber "Trip number [%d]" <car> (OF_Car) ["Measurement"] { channel="mqtt:topic:leaf:StatsTripsNumber" }
Number Car_KmPerKwh "Distance per kWh [%.1f km/kWh]" <car> (OF_Car) ["Measurement"] { channel="mqtt:topic:leaf:StatsKmPerKwh" }
Number:Energy Car_TripKwh "Consumption [%.1fkWh]" <car> (OF_Car) ["Measurement"] { channel="mqtt:topic:leaf:StatsKwhUsed" }
Number:Energy Car_KwhGained "Recovered energy [%.1fkWh]" <car> (OF_Car) ["Measurement"] { channel="mqtt:topic:leaf:StatsKwhGained" }
DateTime Car_StatsReceiveTime "Statistics last received [%1$td-%1$tm-%1$ty %1$tH:%1$tM:%1$tS]" <time> (OF_Car) ["Status"] { channel="mqtt:topic:leaf:StatsLastReported", autoupdate="false" }
Number Car_BatPercent "Battery level [%d%%]" (OF_Car) ["Status"] { channel="mqtt:topic:leaf:BatPercent", autoupdate="false" }
Switch Car_BatConnected "Battery connected" <battery> (OF_Car) ["Measurement"] { channel="mqtt:topic:leaf:BatConnected", stateDescription=""[readOnly="true"] }
Switch Car_BatCharging "Battery charging" <battery> (OF_Car) ["Measurement"] { channel="mqtt:topic:leaf:BatCharging", stateDescription=""[readOnly="true"] }
String CarBatChargingSpeed "Battery charging speed [%s]" <battery> (OF_Car) ["Measurement"] { channel="mqtt:topic:leaf:BatChargingSpeed" }
Number:Length Car_RangeACOff "Range without AC [%dkm]" <distance> (OF_Car) ["Measurement"] { channel="mqtt:topic:leaf:BatRangeACOff", unit="km", autoupdate="false" }
Number:Length Car_RangeACOn "Range with AC [%dkm]" <distance> (OF_Car) ["Measurement"] { channel="mqtt:topic:leaf:BatRangeACOn", unit="km", autoupdate="false" }
String Car_TimeToFull1kW "Time to full 1kW [%t]" <time> (OF_Car) ["Measurement"] { channel="mqtt:topic:leaf:TimeToFull1kW", unit="h", autoupdate="false" }
String Car_TimeToFull3kW "Time to full 3kW [%t]" <time> (OF_Car) ["Measurement"] { channel="mqtt:topic:leaf:TimeToFull3kW", unit="h", autoupdate="false" }
String Car_TimeToFull6kW "Time to full 6kW [%t]" <time> (OF_Car) ["Measurement"] { channel="mqtt:topic:leaf:TimeToFull6kW", unit="h", autoupdate="false" }
DateTime Car_BatLastReported "Battery statistics last received [%1$td-%1$tm-%1$ty %1$tH:%1$tM:%1$tS]" <time> (OF_Car) ["Status"] { channel="mqtt:topic:leaf:BatLastReported", autoupdate="false" }
Location Car_Location "Car Location [%s]" <location> (OF_Car) ["Status"] { channel="mqtt:topic:leaf:Coordinates", autoupdate="false" }
DateTime Car_LocationLastReported "Car location last received [%1$td-%1$tm-%1$ty %1$tH:%1$tM:%1$tS]" <time> (OF_Car) ["Status"] { channel="mqtt:topic:leaf:LocationLastReported", autoupdate="false" }
Loading