From ff9254df75b72f12f85dbc148a50319caaf3cd58 Mon Sep 17 00:00:00 2001 From: Doug Culnane <32482395+dougculnane@users.noreply.github.com> Date: Sat, 17 Jun 2023 12:46:01 +0200 Subject: [PATCH] [renault] Add support for MyDacia accounts and Dacia Spring car (#15101) * [renault] Support for MyDacia accounts and Dacia Spring car Signed-off-by: Doug Culnane --- bundles/org.openhab.binding.renault/README.md | 3 ++- .../binding/renault/internal/RenaultConfiguration.java | 1 + .../renault/internal/api/MyRenaultHttpSession.java | 4 ++-- .../src/main/resources/OH-INF/i18n/renault.properties | 8 ++++++-- .../src/main/resources/OH-INF/thing/thing-types.xml | 9 ++++++++- 5 files changed, 19 insertions(+), 6 deletions(-) diff --git a/bundles/org.openhab.binding.renault/README.md b/bundles/org.openhab.binding.renault/README.md index 66352f273775..4b6e35efc32a 100644 --- a/bundles/org.openhab.binding.renault/README.md +++ b/bundles/org.openhab.binding.renault/README.md @@ -7,7 +7,7 @@ The binding translates the [python based renault-api](https://renault-api.readth ## Supported Things -Supports MyRenault registered cars with an active Connected-Services account. +Supports MyRenault (and MyDacia) registered cars with an active Connected-Services account. This binding can only retrieve information that is available in the MyRenault App. @@ -21,6 +21,7 @@ You require your MyRenault credential, locale and VIN for your MyRenault registe | Parameter | Description | Default | |-------------------|----------------------------------------------------------------------------|----------------------------------| +| accountType | Account Type. (MYDACIA,MYRENAULT) | MYRENAULT | | myRenaultUsername | MyRenault Username. | | | myRenaultPassword | MyRenault Password. | | | locale | MyRenault Location (language_country). | | diff --git a/bundles/org.openhab.binding.renault/src/main/java/org/openhab/binding/renault/internal/RenaultConfiguration.java b/bundles/org.openhab.binding.renault/src/main/java/org/openhab/binding/renault/internal/RenaultConfiguration.java index 7bb3fbe8385b..7882f1191dc6 100644 --- a/bundles/org.openhab.binding.renault/src/main/java/org/openhab/binding/renault/internal/RenaultConfiguration.java +++ b/bundles/org.openhab.binding.renault/src/main/java/org/openhab/binding/renault/internal/RenaultConfiguration.java @@ -22,6 +22,7 @@ @NonNullByDefault public class RenaultConfiguration { + public String accountType = "MYRENAULT"; public String myRenaultUsername = ""; public String myRenaultPassword = ""; public String locale = ""; diff --git a/bundles/org.openhab.binding.renault/src/main/java/org/openhab/binding/renault/internal/api/MyRenaultHttpSession.java b/bundles/org.openhab.binding.renault/src/main/java/org/openhab/binding/renault/internal/api/MyRenaultHttpSession.java index ac74fbe5e949..701f07fd1c18 100644 --- a/bundles/org.openhab.binding.renault/src/main/java/org/openhab/binding/renault/internal/api/MyRenaultHttpSession.java +++ b/bundles/org.openhab.binding.renault/src/main/java/org/openhab/binding/renault/internal/api/MyRenaultHttpSession.java @@ -192,14 +192,14 @@ private void getAccountID() if (responseJson != null) { JsonArray accounts = responseJson.getAsJsonArray("accounts"); for (int i = 0; i < accounts.size(); i++) { - if (accounts.get(i).getAsJsonObject().get("accountType").getAsString().equals("MYRENAULT")) { + if (accounts.get(i).getAsJsonObject().get("accountType").getAsString().equals(config.accountType)) { kamereonaccountId = accounts.get(i).getAsJsonObject().get("accountId").getAsString(); break; } } } if (kamereonaccountId == null) { - throw new RenaultException("Can not get Kamereon MyRenault Account ID!"); + throw new RenaultException("Can not get Kamereon " + config.accountType + " Account ID!"); } } diff --git a/bundles/org.openhab.binding.renault/src/main/resources/OH-INF/i18n/renault.properties b/bundles/org.openhab.binding.renault/src/main/resources/OH-INF/i18n/renault.properties index 789a0220685a..33a199e16bcc 100644 --- a/bundles/org.openhab.binding.renault/src/main/resources/OH-INF/i18n/renault.properties +++ b/bundles/org.openhab.binding.renault/src/main/resources/OH-INF/i18n/renault.properties @@ -10,6 +10,9 @@ thing-type.renault.car.description = A MyRenault registered car. # thing types config +thing-type.config.renault.car.accountType.label = Account Type +thing-type.config.renault.car.accountType.option.MYDACIA = MyDacia +thing-type.config.renault.car.accountType.option.MYRENAULT = MyRenault thing-type.config.renault.car.kamereonApiKey.label = Kamereon API Key thing-type.config.renault.car.kamereonApiKey.description = Access code for MyRenault Services. thing-type.config.renault.car.locale.label = MyRenault Location @@ -62,7 +65,6 @@ channel-type.renault.chargingmode.label = Charging Mode channel-type.renault.chargingmode.state.option.UNKNOWN = Unknown channel-type.renault.chargingmode.state.option.SCHEDULE_MODE = Schedule mode channel-type.renault.chargingmode.state.option.ALWAYS_CHARGING = Instant charge -channel-type.renault.pause.label = Pause channel-type.renault.chargingremainingtime.label = Charging Time Remaining channel-type.renault.chargingstatus.label = Charging Status channel-type.renault.chargingstatus.state.option.NOT_IN_CHARGE = Not charging @@ -86,13 +88,15 @@ channel-type.renault.hvactargettemperature.label = HVAC Target Temperature channel-type.renault.hvactargettemperature.description = HVAC target temperature (19 to 21) channel-type.renault.image.label = Image URL channel-type.renault.image.description = Image URL of MyRenault -channel-type.renault.locationupdated.label = Location Update +channel-type.renault.locationupdated.label = Location Updated channel-type.renault.locationupdated.description = Timestamp of the last location update channel-type.renault.locationupdated.state.pattern = %1$tH:%1$tM %1$td.%1$tm.%1$tY channel-type.renault.locked.label = Locked channel-type.renault.locked.description = Locked status of the car channel-type.renault.odometer.label = Odometer channel-type.renault.odometer.description = Total distance travelled +channel-type.renault.pause.label = Pause Charge +channel-type.renault.pause.description = Pause or resume the charge. channel-type.renault.plugstatus.label = Plug Status channel-type.renault.plugstatus.description = Status of charging plug. channel-type.renault.plugstatus.state.option.UNPLUGGED = Unplugged diff --git a/bundles/org.openhab.binding.renault/src/main/resources/OH-INF/thing/thing-types.xml b/bundles/org.openhab.binding.renault/src/main/resources/OH-INF/thing/thing-types.xml index d0464df81e6b..876637a5ef13 100644 --- a/bundles/org.openhab.binding.renault/src/main/resources/OH-INF/thing/thing-types.xml +++ b/bundles/org.openhab.binding.renault/src/main/resources/OH-INF/thing/thing-types.xml @@ -34,7 +34,14 @@ - + + + + + + + MYRENAULT +