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 4b693ba5113..181b2e4d01d 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 17696c83825..06e5a0ac739 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 00000000000..38d625e3492 --- /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 00000000000..1093e8feb40 --- /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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 z

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 w+xZp0kX+&$Q(7@A5P;6dgtmpy>YAbOd}VPE$B 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 z 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%0D`zqaDbneYvUVJT6>7_;wIy-T4(kAFU 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 UVVy2*{IkDu=^Coa*fHjR0JUUXGXMYp literal 0 HcmV?d00001 diff --git a/bundles/org.openhab.binding.meater/pom.xml b/bundles/org.openhab.binding.meater/pom.xml new file mode 100644 index 00000000000..3caa0a1e4a9 --- /dev/null +++ b/bundles/org.openhab.binding.meater/pom.xml @@ -0,0 +1,17 @@ + + + + 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 00000000000..bbb34aec011 --- /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 00000000000..c2d8fc63014 --- /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 00000000000..828789bd54a --- /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 00000000000..861b7d8900b --- /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 00000000000..085d8ab9aea --- /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 00000000000..7406379d3dd --- /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 00000000000..e91d782f146 --- /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 00000000000..edf7ebe75a4 --- /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 00000000000..d31a52b2e73 --- /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 00000000000..081b2dc46d4 --- /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 00000000000..9045d4ff48c --- /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 00000000000..83c08fdce35 --- /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 00000000000..4d48b3a7cef --- /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 00000000000..bc50a1e6009 --- /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 00000000000..64c9c590559 --- /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 c6272d061a5..54fdac650ac 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