From b408b451ae7506bab2ea6031b87fdbf5da23f0b5 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Tue, 27 Dec 2022 23:37:58 +0100 Subject: [PATCH] fixed position channel: altered channel type from DateTime to Number:Time as suggested in https://community.openhab.org/t/display-elapsed-time-seconds-to-hhss/142572/4?u=stephanrichter --- .../internal/ClementineRemoteHandler.java | 23 ++++++++++--------- .../resources/OH-INF/thing/thing-types.xml | 5 ++-- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/bundles/org.openhab.binding.clementineremote/src/main/java/org/openhab/binding/clementineremote/internal/ClementineRemoteHandler.java b/bundles/org.openhab.binding.clementineremote/src/main/java/org/openhab/binding/clementineremote/internal/ClementineRemoteHandler.java index 2d02a7dd0ad26..3507ecf7d22f3 100644 --- a/bundles/org.openhab.binding.clementineremote/src/main/java/org/openhab/binding/clementineremote/internal/ClementineRemoteHandler.java +++ b/bundles/org.openhab.binding.clementineremote/src/main/java/org/openhab/binding/clementineremote/internal/ClementineRemoteHandler.java @@ -28,8 +28,6 @@ import java.io.IOException; import java.net.InetSocketAddress; import java.net.Socket; -import java.time.Instant; -import java.time.ZoneOffset; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -40,7 +38,6 @@ import org.openhab.core.thing.ThingStatus; import org.openhab.core.thing.binding.BaseThingHandler; import org.openhab.core.types.Command; -import org.openhab.core.types.State; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -52,6 +49,7 @@ import de.qspool.clementineremote.backend.pb.ClementineRemote.ResponseCurrentMetadata; import de.qspool.clementineremote.backend.pb.ClementineRemote.ResponseUpdateTrackPosition; import de.qspool.clementineremote.backend.pb.ClementineRemote.SongMetadata; +import tech.units.indriya.unit.Units; /** * The {@link ClementineRemoteHandler} is responsible for handling commands, which are @@ -290,8 +288,7 @@ private void handleNullableTrackPos(@Nullable Integer newPos) { currentPos = 0; } - var epoch = Instant.ofEpochSecond(currentPos).atZone(ZoneOffset.UTC); - updateState(CHANNEL_POSITION, new DateTimeType(epoch)); + updateState(CHANNEL_POSITION, new QuantityType<>(currentPos, Units.SECOND)); } private void handleTrackPos(ResponseUpdateTrackPosition message) { @@ -339,10 +336,10 @@ public void initialize() { // "Can not access device as username and/or password are invalid"); } - private void sendConnectMessage() { + private void sendConnectMessage() throws IOException { RequestConnect req = builder.getRequestConnectBuilder().build(); Message msg = builder.setRequestConnect(req).build(); - sendMessage(msg); + sendMessageOrThrow(msg); } private void sendSkip(int d) { @@ -360,16 +357,20 @@ private void sendMessage(Message message) { return; } try { - byte[] bytes = message.toByteArray(); - out.writeInt(bytes.length); - out.write(bytes); - out.flush(); + sendMessageOrThrow(message); } catch (IOException e) { logger.warn("sendMessage({}) failed: {}", message, e.getMessage()); disconnect(); } } + private void sendMessageOrThrow(Message message) throws IOException { + byte[] bytes = message.toByteArray(); + out.writeInt(bytes.length); + out.write(bytes); + out.flush(); + } + private void sendPause() { if (setState(State.paused)) { sendMessage(MsgType.PAUSE); diff --git a/bundles/org.openhab.binding.clementineremote/src/main/resources/OH-INF/thing/thing-types.xml b/bundles/org.openhab.binding.clementineremote/src/main/resources/OH-INF/thing/thing-types.xml index 4d81cd955a567..47313b3583d50 100644 --- a/bundles/org.openhab.binding.clementineremote/src/main/resources/OH-INF/thing/thing-types.xml +++ b/bundles/org.openhab.binding.clementineremote/src/main/resources/OH-INF/thing/thing-types.xml @@ -55,11 +55,10 @@ - DateTime + Number:Time Current position within the playing track - - + String