From c75485df16e50b7be60568681e4e5986d24ee5b6 Mon Sep 17 00:00:00 2001 From: Jan Gustafsson Date: Sun, 16 Oct 2022 10:13:18 +0200 Subject: [PATCH] [meater] Initial contribution (#13400) * First version. Signed-off-by: Jan Gustafsson --- CODEOWNERS | 1 + bom/openhab-addons/pom.xml | 5 + bundles/org.openhab.binding.meater/NOTICE | 13 ++ bundles/org.openhab.binding.meater/README.md | 146 ++++++++++++ .../doc/meater-plus-side.png | Bin 0 -> 191893 bytes bundles/org.openhab.binding.meater/pom.xml | 17 ++ .../src/main/feature/feature.xml | 9 + .../internal/MeaterBindingConstants.java | 51 +++++ .../internal/MeaterBridgeConfiguration.java | 27 +++ .../meater/internal/MeaterConfiguration.java | 32 +++ .../meater/internal/api/MeaterRestAPI.java | 209 ++++++++++++++++++ .../discovery/MeaterDiscoveryService.java | 82 +++++++ .../meater/internal/dto/MeaterProbeDTO.java | 102 +++++++++ .../MeaterAuthenticationException.java | 38 ++++ .../internal/exceptions/MeaterException.java | 51 +++++ .../internal/handler/MeaterBridgeHandler.java | 166 ++++++++++++++ .../internal/handler/MeaterHandler.java | 165 ++++++++++++++ .../handler/MeaterHandlerFactory.java | 85 +++++++ .../main/resources/OH-INF/binding/binding.xml | 9 + .../resources/OH-INF/i18n/meater.properties | 63 ++++++ .../resources/OH-INF/thing/thing-types.xml | 165 ++++++++++++++ bundles/pom.xml | 1 + 22 files changed, 1437 insertions(+) create mode 100644 bundles/org.openhab.binding.meater/NOTICE create mode 100644 bundles/org.openhab.binding.meater/README.md create mode 100644 bundles/org.openhab.binding.meater/doc/meater-plus-side.png create mode 100644 bundles/org.openhab.binding.meater/pom.xml create mode 100644 bundles/org.openhab.binding.meater/src/main/feature/feature.xml create mode 100644 bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/MeaterBindingConstants.java create mode 100644 bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/MeaterBridgeConfiguration.java create mode 100644 bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/MeaterConfiguration.java create mode 100644 bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/api/MeaterRestAPI.java create mode 100644 bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/discovery/MeaterDiscoveryService.java create mode 100644 bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/dto/MeaterProbeDTO.java create mode 100644 bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/exceptions/MeaterAuthenticationException.java create mode 100644 bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/exceptions/MeaterException.java create mode 100644 bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/handler/MeaterBridgeHandler.java create mode 100644 bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/handler/MeaterHandler.java create mode 100644 bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/handler/MeaterHandlerFactory.java create mode 100644 bundles/org.openhab.binding.meater/src/main/resources/OH-INF/binding/binding.xml create mode 100644 bundles/org.openhab.binding.meater/src/main/resources/OH-INF/i18n/meater.properties create mode 100644 bundles/org.openhab.binding.meater/src/main/resources/OH-INF/thing/thing-types.xml diff --git a/CODEOWNERS b/CODEOWNERS index 4b693ba51..181b2e4d0 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -182,6 +182,7 @@ /bundles/org.openhab.binding.max/ @marcelrv /bundles/org.openhab.binding.mcd/ @simon-dengler /bundles/org.openhab.binding.mcp23017/ @aogorek +/bundles/org.openhab.binding.meater/ @jannegpriv /bundles/org.openhab.binding.mecmeter/ @kaikreuzer /bundles/org.openhab.binding.melcloud/ @lucacalcaterra @paulianttila @thewiep /bundles/org.openhab.binding.meteoalerte/ @clinique diff --git a/bom/openhab-addons/pom.xml b/bom/openhab-addons/pom.xml index 17696c838..06e5a0ac7 100644 --- a/bom/openhab-addons/pom.xml +++ b/bom/openhab-addons/pom.xml @@ -911,6 +911,11 @@ org.openhab.binding.mcp23017 ${project.version} + + org.openhab.addons.bundles + org.openhab.binding.meater + ${project.version} + org.openhab.addons.bundles org.openhab.binding.mecmeter diff --git a/bundles/org.openhab.binding.meater/NOTICE b/bundles/org.openhab.binding.meater/NOTICE new file mode 100644 index 000000000..38d625e34 --- /dev/null +++ b/bundles/org.openhab.binding.meater/NOTICE @@ -0,0 +1,13 @@ +This content is produced and maintained by the openHAB project. + +* Project home: https://www.openhab.org + +== Declared Project Licenses + +This program and the accompanying materials are made available under the terms +of the Eclipse Public License 2.0 which is available at +https://www.eclipse.org/legal/epl-2.0/. + +== Source Code + +https://github.com/openhab/openhab-addons diff --git a/bundles/org.openhab.binding.meater/README.md b/bundles/org.openhab.binding.meater/README.md new file mode 100644 index 000000000..1093e8feb --- /dev/null +++ b/bundles/org.openhab.binding.meater/README.md @@ -0,0 +1,146 @@ +# MEATER Binding + +This is an openHAB binding for the MEATER probe, MEATER® is a trademark of Apption Labs™ Limited. A Traeger Company. + +This binding uses the MEATER Cloud REST API. + +![Meater+ Probe](doc/meater-plus-side.png) + + +## Supported Things + +This binding supports the following thing types: + +- meaterapi: Bridge - Communicates with the MEATER Cloud REST API. + + +- meaterprobe: The MEATER probe - Only support for cloud connected MEATER probes (MEATER Block and MEATER Plus) + +## Discovery + +The preferred way of adding MEATER probe(s) since the probe IDs are not easily found. + +**NOTE**: For The Original MEATER and MEATER Plus you need to have your MEATER app running and the MEATER probe(s) must connected to the cloud (out of the charger box) before you start the discovery. + + +After the configuration of the Bridge, you need to perform a manual scan and then your MEATER probe(s) will be automatically discovered and placed as a thing(s) in the inbox. + + + +## Supported Things and Channels + +### MEATER Bridge + +#### Configuration Options + +| Parameter | Description | Type | Default | Required | +|-----------|--------------------------------------------------------------|--------|----------|----------| +| email | The email used to login to your MEATER Cloud account | String | NA | yes | +| password | The password used to login to your MEATER Cloud account | String | NA | yes | +| refresh | Specifies the refresh interval in seconds | Number | 30 | no | + +#### Channels + +The following channels are supported: + +| Channel Type ID | Item Type | Description | +|-----------------|-----------|-------------------------------------------------------------------------------------------------| +| status | String | Can be used to trigger an instant refresh by sending a `REFRESH` command.| + +### MEATER Probe + +#### Configuration Options + +| Parameter | Description | Type | Default | Required | +|-----------|--------------------------------------------------------------|--------|----------|----------| +| deviceId | Unique id for your MEATER Probe | String | NA | yes | + + + +#### Channels + +| Channel Type ID | Item Type | Description | +|-----------------------|--------------------|------------------------------------------------------| +| internalTemperature | Number:Temperature | Internal temperature reading of MEATER probe | +| ambientTemperature | Number:Temperature | Ambient temperature reading of MEATER probe. If ambient is less than internal, ambient will equal internal | +| cookTargetTemperature | Number:Temperature | Target temperature of current cook | +| cookPeakTemperature | Number:Temperature | Peak temperature of current cook | +| lastConnection | DateTime | Date and time of last probe connection | +| cookId | String | Unique cook ID of current cook | +| cookName | String | Name of selected meat or user given custom name | +| cookState | String | One of Not Started, Configured, Started, Ready For Resting, Resting, Slightly Underdone, Finished, Slightly Overdone, OVERCOOK! | +| cookElapsedTime | Number:Time | Time since the start of cook in seconds. Default: 0 | +| cookRemainingTime | Number:Time | Remaining time in seconds or UNDEF when unknown. | +| cookEstimatedEndTime | DateTime | Date and time of estimated end time for current cook | + + +## Example + +### Things-file + +```` +Bridge meater:meaterapi:block "MEATER Block" [email="", password="", refresh=30] { + meaterprobe probe1 "Meater Probe 1" [deviceId=""] + meaterprobe probe2 "Meater Probe 2" [deviceId=""] + meaterprobe probe3 "Meater Probe 3" [deviceId=""] + meaterprobe probe4 "Meater Probe 4" [deviceId=""] +} +```` + +### Items-file + +```` +Number:Temperature Probe1InternalTemperature {channel="meater:meaterprobe:block:probe1:internalTemperature"} +Number:Temperature Probe1AmbientTemperature {channel="meater:meaterprobe:block:probe1:ambientTemperature"} +String Probe1CookId {channel="meater:meaterprobe:block:probe1:cookId"} +String Probe1CookName {channel="meater:meaterprobe:block:probe1:cookName"} +String Probe1CookState {channel="meater:meaterprobe:block:probe1:cookState"} +Number:Temperature Probe1CookTargetTemperature {channel="meater:meaterprobe:block:probe1:cookTargetTemperature"} +Number:Temperature Probe1CookPeakTemperature {channel="meater:meaterprobe:block:probe1:cookPeakTemperature"} +Number:Time Probe1CookElapsedTime {channel="meater:meaterprobe:block:probe1:cookElapsedTime"} +Number:Time Probe1CookRemainingTime {channel="meater:meaterprobe:block:probe1:cookRemainingTime"} +DateTime Probe1CookEstimatedEndTime {channel="meater:meaterprobe:block:probe1:cookEstimatedEndTime"} +String Probe1Status {channel="meater:meaterprobe:block:probe1:status"} +DateTime Probe1LastConnection {channel="meater:meaterprobe:block:probe1:lastConnection"} + +Number:Temperature Probe2InternalTemperature {channel="meater:meaterprobe:block:probe2:internalTemperature"} +Number:Temperature Probe2AmbientTemperature {channel="meater:meaterprobe:block:probe2:ambientTemperature"} +String Probe2CookId {channel="meater:meaterprobe:block:probe2:cookId"} +String Probe2CookName {channel="meater:meaterprobe:block:probe2:cookName"} +String Probe2CookState {channel="meater:meaterprobe:block:probe2:cookState"} +Number:Temperature Probe2CookTargetTemperature {channel="meater:meaterprobe:block:probe2:cookTargetTemperature"} +Number:Temperature Probe2CookPeakTemperature {channel="meater:meaterprobe:block:probe2:cookPeakTemperature"} +Number:Time Probe2CookElapsedTime {channel="meater:meaterprobe:block:probe2:cookElapsedTime"} +Number:Time Probe2CookRemainingTime {channel="meater:meaterprobe:block:probe2:cookRemainingTime"} +DateTime Probe2CookEstimatedEndTime {channel="meater:meaterprobe:block:probe2:cookEstimatedEndTime"} +String Probe2Status {channel="meater:meaterprobe:block:probe2:status"} +DateTime Probe2LastConnection {channel="meater:meaterprobe:block:probe2:lastConnection"} + +Number:Temperature Probe3InternalTemperature {channel="meater:meaterprobe:block:probe3:internalTemperature"} +Number:Temperature Probe3AmbientTemperature {channel="meater:meaterprobe:block:probe3:ambientTemperature"} +String Probe3CookId {channel="meater:meaterprobe:block:probe3:cookId"} +String Probe3CookName {channel="meater:meaterprobe:block:probe3:cookName"} +String Probe3CookState {channel="meater:meaterprobe:block:probe3:cookState"} +Number:Temperature Probe3CookTargetTemperature {channel="meater:meaterprobe:block:probe3:cookTargetTemperature"} +Number:Temperature Probe3CookPeakTemperature {channel="meater:meaterprobe:block:probe3:cookPeakTemperature"} +Number:Time Probe3CookElapsedTime {channel="meater:meaterprobe:block:probe3:cookElapsedTime"} +Number:Time Probe3CookRemainingTime {channel="meater:meaterprobe:block:probe3:cookRemainingTime"} +DateTime Probe3CookEstimatedEndTime {channel="meater:meaterprobe:block:probe3:cookEstimatedEndTime"} +String Probe3Status {channel="meater:meaterprobe:block:probe3:status"} +DateTime Probe3LastConnection {channel="meater:meaterprobe:block:probe3:lastConnection"} + +Number:Temperature Probe4InternalTemperature {channel="meater:meaterprobe:block:probe4:internalTemperature"} +Number:Temperature Probe4AmbientTemperature {channel="meater:meaterprobe:block:probe4:ambientTemperature"} +String Probe4CookId {channel="meater:meaterprobe:block:probe4:cookId"} +String Probe4CookName {channel="meater:meaterprobe:block:probe4:cookName"} +String Probe4CookState {channel="meater:meaterprobe:block:probe4:cookState"} +Number:Temperature Probe4CookTargetTemperature {channel="meater:meaterprobe:block:probe4:cookTargetTemperature"} +Number:Temperature Probe4CookPeakTemperature {channel="meater:meaterprobe:block:probe4:cookPeakTemperature"} +Number:Time Probe4CookElapsedTime {channel="meater:meaterprobe:block:probe4:cookElapsedTime"} +Number:Time Probe4CookRemainingTime {channel="meater:meaterprobe:block:probe4:cookRemainingTime"} +DateTime Probe4CookEstimatedEndTime {channel="meater:meaterprobe:block:probe4:cookEstimatedEndTime"} +String Probe4Status {channel="meater:meaterprobe:block:probe4:status"} +DateTime Probe4LastConnection {channel="meater:meaterprobe:block:probe4:lastConnection"} +```` + + diff --git a/bundles/org.openhab.binding.meater/doc/meater-plus-side.png b/bundles/org.openhab.binding.meater/doc/meater-plus-side.png new file mode 100644 index 0000000000000000000000000000000000000000..e046b0a756a99ab0f083891846bc36fa40858728 GIT binary patch literal 191893 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ⅇ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μ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 + + + 4.0.0 + + + org.openhab.addons.bundles + org.openhab.addons.reactor.bundles + 3.4.0-SNAPSHOT + + + org.openhab.binding.meater + + openHAB Add-ons :: Bundles :: Meater Binding + + diff --git a/bundles/org.openhab.binding.meater/src/main/feature/feature.xml b/bundles/org.openhab.binding.meater/src/main/feature/feature.xml new file mode 100644 index 000000000..bbb34aec0 --- /dev/null +++ b/bundles/org.openhab.binding.meater/src/main/feature/feature.xml @@ -0,0 +1,9 @@ + + + mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/${ohc.version}/xml/features + + + openhab-runtime-base + mvn:org.openhab.addons.bundles/org.openhab.binding.meater/${project.version} + + diff --git a/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/MeaterBindingConstants.java b/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/MeaterBindingConstants.java new file mode 100644 index 000000000..c2d8fc630 --- /dev/null +++ b/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/MeaterBindingConstants.java @@ -0,0 +1,51 @@ +/** + * Copyright (c) 2010-2022 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.meater.internal; + +import java.util.Set; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.openhab.core.thing.ThingTypeUID; + +/** + * The {@link MeaterBindingConstants} class defines common constants, which are + * used across the whole binding. + * + * @author Jan Gustafsson - Initial contribution + */ +@NonNullByDefault +public class MeaterBindingConstants { + + private static final String BINDING_ID = "meater"; + + // List of all Thing Type UIDs + public static final ThingTypeUID THING_TYPE_MEATER_PROBE = new ThingTypeUID(BINDING_ID, "meaterprobe"); + public static final ThingTypeUID THING_TYPE_BRIDGE = new ThingTypeUID(BINDING_ID, "meaterapi"); + + // List of all Channel ids + public static final String CHANNEL_STATUS = "status"; + public static final String CHANNEL_LAST_CONNECTION = "lastConnection"; + public static final String CHANNEL_INTERNAL_TEMPERATURE = "internalTemperature"; + public static final String CHANNEL_AMBIENT_TEMPERATURE = "ambientTemperature"; + public static final String CHANNEL_COOK_ID = "cookId"; + public static final String CHANNEL_COOK_NAME = "cookName"; + public static final String CHANNEL_COOK_STATE = "cookState"; + public static final String CHANNEL_COOK_TARGET_TEMPERATURE = "cookTargetTemperature"; + public static final String CHANNEL_COOK_PEAK_TEMPERATURE = "cookPeakTemperature"; + public static final String CHANNEL_COOK_ELAPSED_TIME = "cookElapsedTime"; + public static final String CHANNEL_COOK_REMAINING_TIME = "cookRemainingTime"; + public static final String CHANNEL_COOK_ESTIMATED_END_TIME = "cookEstimatedEndTime"; + + public static final Set SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_BRIDGE, + THING_TYPE_MEATER_PROBE); +} diff --git a/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/MeaterBridgeConfiguration.java b/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/MeaterBridgeConfiguration.java new file mode 100644 index 000000000..828789bd5 --- /dev/null +++ b/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/MeaterBridgeConfiguration.java @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2010-2022 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.meater.internal; + +import org.eclipse.jdt.annotation.NonNullByDefault; + +/** + * The {@link MeaterBridgeConfiguration} class contains fields mapping bridge configuration parameters. + * + * @author Jan Gustafsson - Initial contribution + */ +@NonNullByDefault +public class MeaterBridgeConfiguration { + public String email = ""; + public String password = ""; + public int refresh = 30; +} diff --git a/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/MeaterConfiguration.java b/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/MeaterConfiguration.java new file mode 100644 index 000000000..861b7d890 --- /dev/null +++ b/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/MeaterConfiguration.java @@ -0,0 +1,32 @@ +/** + * Copyright (c) 2010-2022 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.meater.internal; + +import org.eclipse.jdt.annotation.NonNullByDefault; + +/** + * The {@link MeaterConfiguration} class contains fields mapping thing configuration parameters. + * + * @author Jan Gustafsson - Initial contribution + */ +@NonNullByDefault +public class MeaterConfiguration { + + public static final String DEVICE_ID_LABEL = "deviceId"; + + private String deviceId = ""; + + public String getDeviceId() { + return deviceId; + } +} diff --git a/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/api/MeaterRestAPI.java b/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/api/MeaterRestAPI.java new file mode 100644 index 000000000..085d8ab9a --- /dev/null +++ b/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/api/MeaterRestAPI.java @@ -0,0 +1,209 @@ +/** + * Copyright (c) 2010-2022 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.meater.internal.api; + +import java.util.List; +import java.util.Map; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeoutException; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.jetty.client.HttpClient; +import org.eclipse.jetty.client.HttpResponseException; +import org.eclipse.jetty.client.api.ContentResponse; +import org.eclipse.jetty.client.api.Request; +import org.eclipse.jetty.client.api.Response; +import org.eclipse.jetty.client.util.StringContentProvider; +import org.eclipse.jetty.http.HttpHeader; +import org.eclipse.jetty.http.HttpMethod; +import org.eclipse.jetty.http.HttpStatus; +import org.openhab.binding.meater.internal.MeaterBridgeConfiguration; +import org.openhab.binding.meater.internal.dto.MeaterProbeDTO; +import org.openhab.binding.meater.internal.dto.MeaterProbeDTO.Device; +import org.openhab.binding.meater.internal.exceptions.MeaterAuthenticationException; +import org.openhab.binding.meater.internal.exceptions.MeaterException; +import org.openhab.core.i18n.LocaleProvider; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonParser; +import com.google.gson.JsonSyntaxException; + +/** + * The {@link MeaterRestAPI} class defines the MEATER REST API + * + * @author Jan Gustafsson - Initial contribution + */ +@NonNullByDefault +public class MeaterRestAPI { + private static final String API_ENDPOINT = "https://public-api.cloud.meater.com/v1/"; + private static final String JSON_CONTENT_TYPE = "application/json"; + private static final String LOGIN = "login"; + private static final String DEVICES = "devices"; + private static final int MAX_RETRIES = 3; + + private final Logger logger = LoggerFactory.getLogger(MeaterRestAPI.class); + private final Gson gson; + private final HttpClient httpClient; + private final MeaterBridgeConfiguration configuration; + private String authToken = ""; + private LocaleProvider localeProvider; + + public MeaterRestAPI(MeaterBridgeConfiguration configuration, Gson gson, HttpClient httpClient, + LocaleProvider localeProvider) { + this.gson = gson; + this.configuration = configuration; + this.httpClient = httpClient; + this.localeProvider = localeProvider; + } + + public boolean refresh(Map meaterProbeThings) { + try { + MeaterProbeDTO dto = getDevices(MeaterProbeDTO.class); + if (dto != null) { + List devices = dto.getData().getDevices(); + if (devices != null) { + if (!devices.isEmpty()) { + for (Device meaterProbe : devices) { + meaterProbeThings.put(meaterProbe.id, meaterProbe); + } + } else { + meaterProbeThings.clear(); + } + return true; + } + } + } catch (MeaterException e) { + logger.warn("Failed to refresh! {}", e.getMessage()); + } + return false; + } + + private void login() throws MeaterException { + try { + // Login + String json = "{ \"email\": \"" + configuration.email + "\", \"password\": \"" + configuration.password + + "\" }"; + Request request = httpClient.newRequest(API_ENDPOINT + LOGIN).method(HttpMethod.POST); + request.header(HttpHeader.ACCEPT, JSON_CONTENT_TYPE); + request.header(HttpHeader.CONTENT_TYPE, JSON_CONTENT_TYPE); + request.content(new StringContentProvider(json), JSON_CONTENT_TYPE); + + logger.trace("{}.", request.toString()); + + ContentResponse httpResponse = request.send(); + if (!HttpStatus.isSuccess(httpResponse.getStatus())) { + throw new MeaterException("Failed to login " + httpResponse.getContentAsString()); + } + // Fetch JWT + json = httpResponse.getContentAsString(); + JsonObject jsonObject = JsonParser.parseString(json).getAsJsonObject(); + JsonObject childObject = jsonObject.getAsJsonObject("data"); + JsonElement tokenJson = childObject.get("token"); + if (tokenJson != null) { + this.authToken = tokenJson.getAsString(); + } else { + throw new MeaterException("Token is not present in the JSON response"); + } + } catch (TimeoutException | ExecutionException | JsonParseException e) { + throw new MeaterException(e); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new MeaterException(e); + } + } + + private String getFromApi(String uri) throws MeaterException { + try { + for (int i = 0; i < MAX_RETRIES; i++) { + try { + Request request = httpClient.newRequest(API_ENDPOINT + uri).method(HttpMethod.GET); + request.header(HttpHeader.AUTHORIZATION, "Bearer " + authToken); + request.header(HttpHeader.ACCEPT, JSON_CONTENT_TYPE); + request.header(HttpHeader.CONTENT_TYPE, JSON_CONTENT_TYPE); + request.header(HttpHeader.ACCEPT_LANGUAGE, localeProvider.getLocale().getLanguage()); + + ContentResponse response = request.send(); + String content = response.getContentAsString(); + logger.trace("API response: {}", content); + + if (response.getStatus() == HttpStatus.UNAUTHORIZED_401) { + // This will currently not happen because "WWW-Authenticate" header is missing; see below. + logger.debug("getFromApi failed, authentication failed, HTTP status: 401"); + throw new MeaterAuthenticationException("Authentication failed"); + } else if (!HttpStatus.isSuccess(response.getStatus())) { + logger.debug("getFromApi failed, HTTP status: {}", response.getStatus()); + throw new MeaterException("Failed to fetch from API!"); + } else { + return content; + } + } catch (TimeoutException e) { + logger.debug("TimeoutException error in get: {}", e.getMessage()); + } + } + throw new MeaterException("Failed to fetch from API!"); + } catch (ExecutionException e) { + Throwable cause = e.getCause(); + if (cause != null && cause instanceof HttpResponseException) { + Response response = ((HttpResponseException) cause).getResponse(); + if (response.getStatus() == HttpStatus.UNAUTHORIZED_401) { + /* + * When contextId is not valid, the service will respond with HTTP code 401 without + * any "WWW-Authenticate" header, violating RFC 7235. Jetty will then throw + * HttpResponseException. We need to handle this in order to attempt + * reauthentication. + */ + logger.debug("getFromApi failed, authentication failed, HTTP status: 401"); + throw new MeaterAuthenticationException("Authentication failed"); + } + } + throw new MeaterException(e); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new MeaterException(e); + } + } + + public @Nullable T getDevices(Class dto) throws MeaterException { + String uri = DEVICES; + String json = ""; + + if (authToken.isEmpty()) { + login(); + } + + try { + json = getFromApi(uri); + } catch (MeaterAuthenticationException e) { + logger.debug("getFromApi failed {}", e.getMessage()); + this.authToken = ""; + login(); + json = getFromApi(uri); + } + + if (json.isEmpty()) { + throw new MeaterException("JSON from API is empty!"); + } else { + try { + return gson.fromJson(json, dto); + } catch (JsonSyntaxException e) { + throw new MeaterException("Error parsing JSON", e); + } + } + } +} diff --git a/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/discovery/MeaterDiscoveryService.java b/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/discovery/MeaterDiscoveryService.java new file mode 100644 index 000000000..7406379d3 --- /dev/null +++ b/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/discovery/MeaterDiscoveryService.java @@ -0,0 +1,82 @@ +/** + * Copyright (c) 2010-2022 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.meater.internal.discovery; + +import static org.openhab.binding.meater.internal.MeaterBindingConstants.*; + +import java.util.Map; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.openhab.binding.meater.internal.MeaterConfiguration; +import org.openhab.binding.meater.internal.handler.MeaterBridgeHandler; +import org.openhab.core.config.discovery.AbstractDiscoveryService; +import org.openhab.core.config.discovery.DiscoveryResultBuilder; +import org.openhab.core.thing.ThingUID; +import org.openhab.core.thing.binding.ThingHandler; +import org.openhab.core.thing.binding.ThingHandlerService; + +/** + * The {@link MeaterDiscoveryService} searches for available + * Meater probes discoverable through MEATER REST API. + * + * @author Jan Gustafsson - Initial contribution + */ +@NonNullByDefault +public class MeaterDiscoveryService extends AbstractDiscoveryService implements ThingHandlerService { + private static final int SEARCH_TIME = 2; + private @Nullable MeaterBridgeHandler handler; + + public MeaterDiscoveryService() { + super(SUPPORTED_THING_TYPES_UIDS, SEARCH_TIME); + } + + @Override + public void setThingHandler(@Nullable ThingHandler handler) { + if (handler instanceof MeaterBridgeHandler) { + this.handler = (MeaterBridgeHandler) handler; + i18nProvider = ((MeaterBridgeHandler) handler).getI18nProvider(); + localeProvider = ((MeaterBridgeHandler) handler).getLocaleProvider(); + } + } + + @Override + public @Nullable ThingHandler getThingHandler() { + return handler; + } + + @Override + public void activate(@Nullable Map configProperties) { + super.activate(configProperties); + } + + @Override + public void deactivate() { + super.deactivate(); + } + + @Override + protected void startScan() { + MeaterBridgeHandler bridgeHandler = this.handler; + if (bridgeHandler != null) { + ThingUID bridgeUID = bridgeHandler.getThing().getUID(); + bridgeHandler.getMeaterThings().entrySet().stream().forEach(thing -> { + thingDiscovered( + DiscoveryResultBuilder.create(new ThingUID(THING_TYPE_MEATER_PROBE, bridgeUID, thing.getKey())) + .withLabel("@text/discovery.probe.label").withBridge(bridgeUID) + .withProperty(MeaterConfiguration.DEVICE_ID_LABEL, thing.getKey()) + .withRepresentationProperty(MeaterConfiguration.DEVICE_ID_LABEL).build()); + }); + } + } +} diff --git a/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/dto/MeaterProbeDTO.java b/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/dto/MeaterProbeDTO.java new file mode 100644 index 000000000..e91d782f1 --- /dev/null +++ b/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/dto/MeaterProbeDTO.java @@ -0,0 +1,102 @@ +/** + * Copyright (c) 2010-2022 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.meater.internal.dto; + +import java.time.Instant; +import java.util.List; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; + +import com.google.gson.annotations.SerializedName; + +/** + * The {@link MeaterProbeDTO} class defines the DTO for the Meater probe. + * + * @author Jan Gustafsson - Initial contribution + */ +@NonNullByDefault +public class MeaterProbeDTO { + + public String status = ""; + public long statusCode; + public Data data = new Data(); + public Meta meta = new Meta(); + + public Data getData() { + return data; + } + + public class Data { + + @Nullable + public List devices; + + public @Nullable List getDevices() { + return devices; + } + + public @Nullable Device getDevice(String id) { + List localDevices = devices; + if (localDevices != null) { + for (Device meaterProbe : localDevices) { + if (id.equals(meaterProbe.id)) { + return meaterProbe; + } + } + } + return null; + } + } + + public class Meta { + } + + public class Device { + public String id = ""; + public Temperature temperature = new Temperature(); + public @Nullable Cook cook = new Cook(); + @SerializedName("updated_at") + private long lastConnection; + + public @Nullable Instant getLastConnection() { + if (lastConnection > 0) { + return Instant.ofEpochSecond(lastConnection); + } + return null; + } + } + + public class Cook { + public String id = ""; + public String name = ""; + public String state = ""; + public TemperatureCook temperature = new TemperatureCook(); + public Time time = new Time(); + } + + public class TemperatureCook { + public double target; + public double peak; + } + + public class Temperature { + public double internal; + public double ambient; + } + + public class Time { + public long elapsed; + public long remaining; + } +} diff --git a/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/exceptions/MeaterAuthenticationException.java b/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/exceptions/MeaterAuthenticationException.java new file mode 100644 index 000000000..edf7ebe75 --- /dev/null +++ b/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/exceptions/MeaterAuthenticationException.java @@ -0,0 +1,38 @@ +/** + * Copyright (c) 2010-2022 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.meater.internal.exceptions; + +import org.eclipse.jdt.annotation.NonNullByDefault; + +/** + * {@link MeaterAuthenticationException} is used when there is an authentication exception with MEATER REST API. + * + * @author Jan Gustafsson - Initial contribution + */ +@NonNullByDefault +public class MeaterAuthenticationException extends MeaterException { + + private static final long serialVersionUID = 2543564118231301158L; + + public MeaterAuthenticationException(Exception source) { + super(source); + } + + public MeaterAuthenticationException(String message) { + super(message); + } + + public MeaterAuthenticationException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/exceptions/MeaterException.java b/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/exceptions/MeaterException.java new file mode 100644 index 000000000..d31a52b2e --- /dev/null +++ b/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/exceptions/MeaterException.java @@ -0,0 +1,51 @@ +/** + * Copyright (c) 2010-2022 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.meater.internal.exceptions; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; + +/** + * {@link MeaterException} is used when there is exception communicating with MEATER REST API. + * + * @author Jan Gustafsson - Initial contribution + */ +@NonNullByDefault +public class MeaterException extends Exception { + + private static final long serialVersionUID = 2543564118231301158L; + + public MeaterException(Exception source) { + super(source); + } + + public MeaterException(String message) { + super(message); + } + + public MeaterException(String message, Throwable cause) { + super(message, cause); + } + + @Override + public @Nullable String getMessage() { + Throwable throwable = getCause(); + if (throwable != null) { + String localMessage = throwable.getMessage(); + if (localMessage != null) { + return localMessage; + } + } + return super.getMessage(); + } +} diff --git a/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/handler/MeaterBridgeHandler.java b/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/handler/MeaterBridgeHandler.java new file mode 100644 index 000000000..081b2dc46 --- /dev/null +++ b/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/handler/MeaterBridgeHandler.java @@ -0,0 +1,166 @@ +/** + * Copyright (c) 2010-2022 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.meater.internal.handler; + +import static org.openhab.binding.meater.internal.MeaterBindingConstants.*; + +import java.util.Collection; +import java.util.Collections; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.jetty.client.HttpClient; +import org.openhab.binding.meater.internal.MeaterBridgeConfiguration; +import org.openhab.binding.meater.internal.api.MeaterRestAPI; +import org.openhab.binding.meater.internal.discovery.MeaterDiscoveryService; +import org.openhab.binding.meater.internal.dto.MeaterProbeDTO; +import org.openhab.core.i18n.LocaleProvider; +import org.openhab.core.i18n.TranslationProvider; +import org.openhab.core.thing.Bridge; +import org.openhab.core.thing.ChannelUID; +import org.openhab.core.thing.ThingStatus; +import org.openhab.core.thing.ThingStatusDetail; +import org.openhab.core.thing.ThingTypeUID; +import org.openhab.core.thing.binding.BaseBridgeHandler; +import org.openhab.core.thing.binding.ThingHandlerService; +import org.openhab.core.types.Command; +import org.openhab.core.types.RefreshType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.google.gson.Gson; + +/** + * The {@link MeaterBridgeHandler} is responsible for handling commands, which are + * sent to one of the channels. + * + * @author Jan Gustafsson - Initial contribution + */ +@NonNullByDefault +public class MeaterBridgeHandler extends BaseBridgeHandler { + + private final Logger logger = LoggerFactory.getLogger(MeaterBridgeHandler.class); + + public static final Set SUPPORTED_THING_TYPES = Collections.singleton(THING_TYPE_BRIDGE); + + private final Gson gson; + private final HttpClient httpClient; + private final TranslationProvider i18nProvider; + private final LocaleProvider localeProvider; + private final Map meaterProbeThings = new ConcurrentHashMap<>(); + + private int refreshTimeInSeconds = 300; + private @Nullable MeaterRestAPI api; + private @Nullable ScheduledFuture refreshJob; + + public MeaterBridgeHandler(Bridge bridge, HttpClient httpClient, Gson gson, TranslationProvider i18nProvider, + LocaleProvider localeProvider) { + super(bridge); + this.httpClient = httpClient; + this.gson = gson; + this.i18nProvider = i18nProvider; + this.localeProvider = localeProvider; + } + + @Override + public void initialize() { + MeaterBridgeConfiguration config = getConfigAs(MeaterBridgeConfiguration.class); + + api = new MeaterRestAPI(config, gson, httpClient, localeProvider); + refreshTimeInSeconds = config.refresh; + + if (config.email.isBlank() || config.password.isBlank()) { + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, + "@text/config.missing-username-password.description"); + } else { + updateStatus(ThingStatus.UNKNOWN); + scheduler.execute(() -> { + startAutomaticRefresh(); + }); + } + } + + public Map getMeaterThings() { + return meaterProbeThings; + } + + @Override + public Collection> getServices() { + return Collections.singleton(MeaterDiscoveryService.class); + } + + @Override + public void dispose() { + stopAutomaticRefresh(); + meaterProbeThings.clear(); + } + + private boolean refreshAndUpdateStatus() { + MeaterRestAPI localAPI = api; + if (localAPI != null) { + if (localAPI.refresh(meaterProbeThings)) { + updateStatus(ThingStatus.ONLINE); + getThing().getThings().stream().forEach(thing -> { + MeaterHandler handler = (MeaterHandler) thing.getHandler(); + if (handler != null) { + handler.update(); + } + }); + return true; + } else { + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR); + } + } + return false; + } + + private void startAutomaticRefresh() { + ScheduledFuture refreshJob = this.refreshJob; + if (refreshJob == null || refreshJob.isCancelled()) { + this.refreshJob = scheduler.scheduleWithFixedDelay(this::refreshAndUpdateStatus, 0, refreshTimeInSeconds, + TimeUnit.SECONDS); + } + } + + private void stopAutomaticRefresh() { + ScheduledFuture refreshJob = this.refreshJob; + if (refreshJob != null) { + refreshJob.cancel(true); + this.refreshJob = null; + } + } + + @Override + public void handleCommand(ChannelUID channelUID, Command command) { + logger.debug("Command received: {}", command); + if (command instanceof RefreshType) { + if (channelUID.getId().equals(CHANNEL_STATUS)) { + logger.debug("Refresh command on status channel {} will trigger instant refresh", channelUID); + refreshAndUpdateStatus(); + } + } + } + + public TranslationProvider getI18nProvider() { + return i18nProvider; + } + + public LocaleProvider getLocaleProvider() { + return localeProvider; + } +} diff --git a/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/handler/MeaterHandler.java b/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/handler/MeaterHandler.java new file mode 100644 index 000000000..9045d4ff4 --- /dev/null +++ b/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/handler/MeaterHandler.java @@ -0,0 +1,165 @@ +/** + * Copyright (c) 2010-2022 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.meater.internal.handler; + +import static org.openhab.binding.meater.internal.MeaterBindingConstants.*; + +import java.time.Instant; +import java.time.ZonedDateTime; + +import javax.measure.quantity.Temperature; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.openhab.binding.meater.internal.MeaterConfiguration; +import org.openhab.binding.meater.internal.dto.MeaterProbeDTO.Cook; +import org.openhab.binding.meater.internal.dto.MeaterProbeDTO.Device; +import org.openhab.core.i18n.TimeZoneProvider; +import org.openhab.core.library.types.DateTimeType; +import org.openhab.core.library.types.QuantityType; +import org.openhab.core.library.types.StringType; +import org.openhab.core.library.unit.SIUnits; +import org.openhab.core.library.unit.Units; +import org.openhab.core.thing.Bridge; +import org.openhab.core.thing.Channel; +import org.openhab.core.thing.ChannelUID; +import org.openhab.core.thing.Thing; +import org.openhab.core.thing.ThingStatus; +import org.openhab.core.thing.ThingStatusDetail; +import org.openhab.core.thing.binding.BaseThingHandler; +import org.openhab.core.types.Command; +import org.openhab.core.types.State; +import org.openhab.core.types.UnDefType; + +/** + * The {@link MeaterHandler} is responsible for handling commands, which are + * sent to one of the channels. + * + * @author Jan Gustafsson - Initial contribution + */ +@NonNullByDefault +public class MeaterHandler extends BaseThingHandler { + + private String deviceId = ""; + private TimeZoneProvider timeZoneProvider; + + public MeaterHandler(Thing thing, TimeZoneProvider timeZoneProvider) { + super(thing); + this.timeZoneProvider = timeZoneProvider; + } + + @Override + public void handleCommand(ChannelUID channelUID, Command command) { + } + + @Override + public void initialize() { + deviceId = getConfigAs(MeaterConfiguration.class).getDeviceId(); + updateStatus(ThingStatus.UNKNOWN); + + scheduler.execute(() -> { + update(); + }); + } + + public void update() { + Device meaterProbe = getMeaterProbe(); + if (meaterProbe != null) { + update(meaterProbe); + } else { + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, + "@text/offline.communication-error.description"); + } + } + + private @Nullable Device getMeaterProbe() { + Bridge bridge = getBridge(); + if (bridge != null && bridge.getStatus() == ThingStatus.ONLINE) { + MeaterBridgeHandler bridgeHandler = (MeaterBridgeHandler) bridge.getHandler(); + if (bridgeHandler != null) { + return bridgeHandler.getMeaterThings().get(deviceId); + } + } + return null; + } + + private void update(Device meaterProbe) { + // Update all channels from the updated data + getThing().getChannels().stream().map(Channel::getUID).filter(channelUID -> isLinked(channelUID)) + .forEach(channelUID -> { + State state = getValue(channelUID.getId(), meaterProbe); + updateState(channelUID, state); + }); + updateStatus(ThingStatus.ONLINE); + } + + private State getValue(String channelId, Device meaterProbe) { + Cook cook = meaterProbe.cook; + switch (channelId) { + case CHANNEL_INTERNAL_TEMPERATURE: + return new QuantityType(meaterProbe.temperature.internal, SIUnits.CELSIUS); + case CHANNEL_AMBIENT_TEMPERATURE: + return new QuantityType(meaterProbe.temperature.ambient, SIUnits.CELSIUS); + case CHANNEL_COOK_TARGET_TEMPERATURE: + if (cook != null) { + return new QuantityType(cook.temperature.target, SIUnits.CELSIUS); + } + break; + case CHANNEL_COOK_PEAK_TEMPERATURE: + if (cook != null) { + return new QuantityType(cook.temperature.peak, SIUnits.CELSIUS); + } + break; + case CHANNEL_COOK_ELAPSED_TIME: + if (cook != null) { + return new QuantityType<>(cook.time.elapsed, Units.SECOND); + } + break; + case CHANNEL_COOK_REMAINING_TIME: + if (cook != null) { + return cook.time.remaining == -1 ? UnDefType.UNDEF + : new QuantityType<>(cook.time.remaining, Units.SECOND); + } + break; + case CHANNEL_COOK_ID: + if (cook != null) { + return new StringType(cook.id); + } + break; + case CHANNEL_COOK_NAME: + if (cook != null) { + return new StringType(cook.name); + } + break; + case CHANNEL_COOK_STATE: + if (cook != null) { + return new StringType(cook.state); + } + break; + case CHANNEL_LAST_CONNECTION: + Instant instant = meaterProbe.getLastConnection(); + if (instant != null) { + return new DateTimeType(ZonedDateTime.ofInstant(instant, timeZoneProvider.getTimeZone())); + } + break; + case CHANNEL_COOK_ESTIMATED_END_TIME: + if (cook != null) { + if (cook.time.remaining > -1) { + return new DateTimeType( + ZonedDateTime.now(timeZoneProvider.getTimeZone()).plusSeconds(cook.time.remaining)); + } + } + } + return UnDefType.UNDEF; + } +} diff --git a/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/handler/MeaterHandlerFactory.java b/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/handler/MeaterHandlerFactory.java new file mode 100644 index 000000000..83c08fdce --- /dev/null +++ b/bundles/org.openhab.binding.meater/src/main/java/org/openhab/binding/meater/internal/handler/MeaterHandlerFactory.java @@ -0,0 +1,85 @@ +/** + * Copyright (c) 2010-2022 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.meater.internal.handler; + +import static org.openhab.binding.meater.internal.MeaterBindingConstants.*; + +import java.util.Set; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.jetty.client.HttpClient; +import org.openhab.core.i18n.LocaleProvider; +import org.openhab.core.i18n.TimeZoneProvider; +import org.openhab.core.i18n.TranslationProvider; +import org.openhab.core.io.net.http.HttpClientFactory; +import org.openhab.core.thing.Bridge; +import org.openhab.core.thing.Thing; +import org.openhab.core.thing.ThingTypeUID; +import org.openhab.core.thing.binding.BaseThingHandlerFactory; +import org.openhab.core.thing.binding.ThingHandler; +import org.openhab.core.thing.binding.ThingHandlerFactory; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Reference; + +import com.google.gson.Gson; + +/** + * The {@link MeaterHandlerFactory} is responsible for creating things and thing + * handlers. + * + * @author Jan Gustafsson - Initial contribution + */ +@NonNullByDefault +@Component(configurationPid = "binding.meater", service = ThingHandlerFactory.class) +public class MeaterHandlerFactory extends BaseThingHandlerFactory { + + private static final Set SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_MEATER_PROBE, + THING_TYPE_BRIDGE); + + private final Gson gson; + private final HttpClient httpClient; + private final TimeZoneProvider timeZoneProvider; + private final TranslationProvider i18nProvider; + private final LocaleProvider localeProvider; + + @Activate + public MeaterHandlerFactory(@Reference TimeZoneProvider timeZoneProvider, + final @Reference TranslationProvider i18nProvider, @Reference LocaleProvider localeProvider, + @Reference HttpClientFactory httpClientFactory) { + this.timeZoneProvider = timeZoneProvider; + this.i18nProvider = i18nProvider; + this.localeProvider = localeProvider; + this.httpClient = httpClientFactory.getCommonHttpClient(); + this.gson = new Gson(); + } + + @Override + public boolean supportsThingType(ThingTypeUID thingTypeUID) { + return SUPPORTED_THING_TYPES_UIDS.contains(thingTypeUID); + } + + @Override + protected @Nullable ThingHandler createHandler(Thing thing) { + ThingTypeUID thingTypeUID = thing.getThingTypeUID(); + + if (THING_TYPE_MEATER_PROBE.equals(thingTypeUID)) { + return new MeaterHandler(thing, timeZoneProvider); + } else if (THING_TYPE_BRIDGE.equals(thingTypeUID)) { + return new MeaterBridgeHandler((Bridge) thing, httpClient, gson, i18nProvider, localeProvider); + } + + return null; + } +} diff --git a/bundles/org.openhab.binding.meater/src/main/resources/OH-INF/binding/binding.xml b/bundles/org.openhab.binding.meater/src/main/resources/OH-INF/binding/binding.xml new file mode 100644 index 000000000..4d48b3a7c --- /dev/null +++ b/bundles/org.openhab.binding.meater/src/main/resources/OH-INF/binding/binding.xml @@ -0,0 +1,9 @@ + + + + MEATER Binding + This is the binding for MEATER probe. + + diff --git a/bundles/org.openhab.binding.meater/src/main/resources/OH-INF/i18n/meater.properties b/bundles/org.openhab.binding.meater/src/main/resources/OH-INF/i18n/meater.properties new file mode 100644 index 000000000..bc50a1e60 --- /dev/null +++ b/bundles/org.openhab.binding.meater/src/main/resources/OH-INF/i18n/meater.properties @@ -0,0 +1,63 @@ +# binding + +binding.meater.name = MEATER Binding +binding.meater.description = This is the binding for MEATER probe. + +# thing types + +thing-type.meater.meaterapi.label = MEATER Cloud REST API +thing-type.meater.meaterapi.description = This bridge represents the MEATER Cloud REST API connector +thing-type.meater.meaterprobe.label = MEATER Probe +thing-type.meater.meaterprobe.description = This thing represents a MEATER Probe + +# thing types config + +thing-type.config.meater.meaterapi.email.label = Email +thing-type.config.meater.meaterapi.email.description = The email used to login to MEATER Cloud account +thing-type.config.meater.meaterapi.password.label = Password +thing-type.config.meater.meaterapi.password.description = The password used to login to MEATER Cloud account +thing-type.config.meater.meaterapi.refresh.label = Refresh Interval +thing-type.config.meater.meaterapi.refresh.description = Specifies the refresh interval in seconds +thing-type.config.meater.meaterprobe.deviceId.label = Device Id +thing-type.config.meater.meaterprobe.deviceId.description = Unique id for your MEATER Probe + +# channel types + +channel-type.meater.ambientTemperature.label = Probe Ambient Temperature +channel-type.meater.ambientTemperature.description = Ambient temperature reading of MEATER Probe. If ambient is less than internal, ambient will equal internal +channel-type.meater.cookElapsedTime.label = Cook Elapsed Time +channel-type.meater.cookElapsedTime.description = Time since the start of cook in seconds. Default: 0 +channel-type.meater.cookEstimatedEndTime.label = Cook Estimated End Time +channel-type.meater.cookEstimatedEndTime.description = Date and time of estimated end time for current cook +channel-type.meater.cookEstimatedEndTime.state.pattern = %1$tY-%1$tm-%1$td %1$tH:%1$tM +channel-type.meater.cookId.label = Current Cook ID +channel-type.meater.cookId.description = Unique cook ID of current cook +channel-type.meater.cookName.label = Current Cook Name +channel-type.meater.cookName.description = Name of selected meat in your language or user given custom name +channel-type.meater.cookPeakTemperature.label = Current Cook Peak Temperature +channel-type.meater.cookPeakTemperature.description = Peak temperature of current cook +channel-type.meater.cookRemainingTime.label = Cook Remaining Time +channel-type.meater.cookRemainingTime.description = Remaining time in seconds or UNDEF when unknown +channel-type.meater.cookState.label = Current Cook State +channel-type.meater.cookState.description = One of Not Started, Configured, Started, Ready For Resting, Resting, Slightly Underdone, Finished, Slightly Overdone, OVERCOOK! +channel-type.meater.cookTargetTemperature.label = Current Cook Target Temperature +channel-type.meater.cookTargetTemperature.description = Target temperature of current cook +channel-type.meater.internalTemperature.label = Probe Internal Temperature +channel-type.meater.internalTemperature.description = Internal temperature reading of MEATER Probe +channel-type.meater.lastConnection.label = Last Probe Connection +channel-type.meater.lastConnection.description = Date and time of last probe connection +channel-type.meater.lastConnection.state.pattern = %1$tY-%1$tm-%1$td %1$tH:%1$tM +channel-type.meater.status.label = Status +channel-type.meater.status.description = Can be used to trigger an instant refresh + +# thing types config + +config.missing-username-password.description = Configuration of username and password is mandatory + +# thing status descriptions + +offline.communication-error.description = MEATER Probe is offline + +# discovery result + +discovery.probe.label = MEATER Probe diff --git a/bundles/org.openhab.binding.meater/src/main/resources/OH-INF/thing/thing-types.xml b/bundles/org.openhab.binding.meater/src/main/resources/OH-INF/thing/thing-types.xml new file mode 100644 index 000000000..64c9c5905 --- /dev/null +++ b/bundles/org.openhab.binding.meater/src/main/resources/OH-INF/thing/thing-types.xml @@ -0,0 +1,165 @@ + + + + + + This bridge represents the MEATER Cloud REST API connector + + + + + + + + + The email used to login to MEATER Cloud account + + + + password + The password used to login to MEATER Cloud account + + + + Specifies the refresh interval in seconds + 30 + + + + + + + + + + + This thing represents a MEATER Probe + + + + + + + + + + + + + + + + + Apption Labs + MEATER + + + deviceId + + + + + Unique id for your MEATER Probe + + + + + + + String + + Can be used to trigger an instant refresh + + + + + DateTime + + Date and time of last probe connection + Time + + + + + Number:Time + + Time since the start of cook in seconds. Default: 0 + Time + + + + + Number:Time + + Remaining time in seconds or UNDEF when unknown + Time + + + + + DateTime + + Date and time of estimated end time for current cook + Time + + + + + Number:Temperature + + Internal temperature reading of MEATER Probe + Temperature + + + + + Number:Temperature + + Ambient temperature reading of MEATER Probe. If ambient is less than internal, ambient will equal + internal + Temperature + + + + + Number:Temperature + + Target temperature of current cook + Temperature + + + + + Number:Temperature + + Peak temperature of current cook + Temperature + + + + + String + + Unique cook ID of current cook + + + + + String + + Name of selected meat in your language or user given custom name + + + + + String + + One of Not Started, Configured, Started, Ready For Resting, Resting, Slightly Underdone, Finished, + Slightly Overdone, OVERCOOK! + + + + diff --git a/bundles/pom.xml b/bundles/pom.xml index c6272d061..54fdac650 100644 --- a/bundles/pom.xml +++ b/bundles/pom.xml @@ -216,6 +216,7 @@ org.openhab.binding.max org.openhab.binding.mcd org.openhab.binding.mcp23017 + org.openhab.binding.meater org.openhab.binding.mecmeter org.openhab.binding.melcloud org.openhab.binding.mercedesme