Skip to content

Commit

Permalink
[Tibber] Improve connection logic (openhab#17344)
Browse files Browse the repository at this point in the history
* Fixes openhab#14735
Optimized Logging and sending Ping Frames. See also PR openhab#17214

Signed-off-by: christian <dev@bestof5.de>
Signed-off-by: Patrik Gfeller <patrik.gfeller@proton.me>
  • Loading branch information
Afrouper authored and pgfeller committed Sep 29, 2024
1 parent 96f25f6 commit 55b9984
Showing 1 changed file with 24 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,10 @@
import java.math.BigDecimal;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZonedDateTime;
import java.time.format.DateTimeParseException;
import java.util.Properties;
Expand Down Expand Up @@ -87,6 +90,7 @@ public class TibberHandler extends BaseThingHandler {
private String rtEnabled = "false";
private @Nullable String subscriptionURL;
private @Nullable String versionString;
private @Nullable LocalDateTime lastWebSocketMessage;

public TibberHandler(Thing thing) {
super(thing);
Expand Down Expand Up @@ -170,7 +174,10 @@ public void getTibberParameters() {
}

if (liveChannelsLinked() && "true".equals(rtEnabled)) {
logger.debug("Pulse associated with HomeId: Live stream will be started");
startLiveStream();
} else {
logger.debug("No Pulse associated with HomeId: No live stream will be started");
}
} else {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
Expand Down Expand Up @@ -320,8 +327,17 @@ public void startRefresh(int refresh) {

public void updateRequest() throws IOException {
getURLInput(BASE_URL);
if (liveChannelsLinked() && "true".equals(rtEnabled) && !isConnected()) {
startLiveStream();
if (liveChannelsLinked() && "true".equals(rtEnabled)) {
if (lastWebSocketMessage != null && lastWebSocketMessage.plusMinutes(5).isBefore(LocalDateTime.now())) {
logger.debug("Last data from tibber on {}. Reconnecting WebSocket.", lastWebSocketMessage);
close();
startLiveStream();
} else if (isConnected()) {
logger.debug("Sending Ping Message");
session.getRemote().sendPing(ByteBuffer.wrap("openHAB Ping".getBytes(StandardCharsets.UTF_8)));
} else if (!isConnected()) {
startLiveStream();
}
}
}

Expand Down Expand Up @@ -406,7 +422,7 @@ private void startLiveStream() throws IOException {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR,
"Unexpected subscription result from the server");
} else {
logger.debug("Connecting Subscription to: {}", subscriptionURL);
logger.debug("Reconnecting Subscription to: {}", subscriptionURL);
open();
}
}
Expand Down Expand Up @@ -552,19 +568,21 @@ public void onClose(int statusCode, String reason) {
@OnWebSocketError
public void onWebSocketError(Throwable e) {
String message = e.getMessage();
logger.debug("Error during websocket communication: {}", message);
logger.warn("Error during websocket communication: {}", message);
close();
}

@OnWebSocketMessage
public void onMessage(String message) {
if (message.contains("connection_ack")) {
logger.debug("Connected to Server");
logger.debug("WebSocket connected to Server");
startSubscription();
} else if (message.contains("error") || message.contains("terminate")) {
logger.debug("Error/terminate received from server: {}", message);
close();
} else if (message.contains("liveMeasurement")) {
logger.debug("Received liveMeasurement message.");
lastWebSocketMessage = LocalDateTime.now();
JsonObject object = (JsonObject) JsonParser.parseString(message);
JsonObject myObject = object.getAsJsonObject("payload").getAsJsonObject("data")
.getAsJsonObject("liveMeasurement");
Expand Down Expand Up @@ -641,7 +659,7 @@ public void onMessage(String message) {
updateChannel(LIVE_MAXPOWERPRODUCTION, myObject.get("maxPowerProduction").toString());
}
} else {
logger.debug("Unknown live response from Tibber");
logger.debug("Unknown live response from Tibber. Message: {}", message);
}
}

Expand Down

0 comments on commit 55b9984

Please sign in to comment.