diff --git a/bundles/org.openhab.binding.freebox/src/main/java/org/openhab/binding/freebox/internal/FreeboxHandlerFactory.java b/bundles/org.openhab.binding.freebox/src/main/java/org/openhab/binding/freebox/internal/FreeboxHandlerFactory.java index ff742b211df7e..8f25888e99721 100644 --- a/bundles/org.openhab.binding.freebox/src/main/java/org/openhab/binding/freebox/internal/FreeboxHandlerFactory.java +++ b/bundles/org.openhab.binding.freebox/src/main/java/org/openhab/binding/freebox/internal/FreeboxHandlerFactory.java @@ -27,6 +27,7 @@ import org.eclipse.smarthome.config.discovery.DiscoveryService; import org.eclipse.smarthome.core.audio.AudioHTTPServer; import org.eclipse.smarthome.core.audio.AudioSink; +import org.eclipse.smarthome.core.i18n.TimeZoneProvider; import org.eclipse.smarthome.core.net.HttpServiceUtil; import org.eclipse.smarthome.core.net.NetworkAddressService; import org.eclipse.smarthome.core.thing.Bridge; @@ -70,15 +71,18 @@ public class FreeboxHandlerFactory extends BaseThingHandlerFactory { private final AudioHTTPServer audioHTTPServer; private final NetworkAddressService networkAddressService; + private final TimeZoneProvider timeZoneProvider; // url (scheme+server+port) to use for playing notification sounds private @Nullable String callbackUrl; @Activate public FreeboxHandlerFactory(final @Reference AudioHTTPServer audioHTTPServer, - final @Reference NetworkAddressService networkAddressService) { + final @Reference NetworkAddressService networkAddressService, + final @Reference TimeZoneProvider timeZoneProvider) { this.audioHTTPServer = audioHTTPServer; this.networkAddressService = networkAddressService; + this.timeZoneProvider = timeZoneProvider; } @Override @@ -120,7 +124,7 @@ public boolean supportsThingType(ThingTypeUID thingTypeUID) { registerDiscoveryService(handler); return handler; } else if (FreeboxBindingConstants.SUPPORTED_THING_TYPES_UIDS.contains(thingTypeUID)) { - FreeboxThingHandler handler = new FreeboxThingHandler(thing); + FreeboxThingHandler handler = new FreeboxThingHandler(thing, timeZoneProvider.getTimeZone()); if (FreeboxBindingConstants.FREEBOX_THING_TYPE_AIRPLAY.equals(thingTypeUID)) { registerAudioSink(handler); } diff --git a/bundles/org.openhab.binding.freebox/src/main/java/org/openhab/binding/freebox/internal/handler/FreeboxThingHandler.java b/bundles/org.openhab.binding.freebox/src/main/java/org/openhab/binding/freebox/internal/handler/FreeboxThingHandler.java index 7cca08f818089..85a5a058abb37 100644 --- a/bundles/org.openhab.binding.freebox/src/main/java/org/openhab/binding/freebox/internal/handler/FreeboxThingHandler.java +++ b/bundles/org.openhab.binding.freebox/src/main/java/org/openhab/binding/freebox/internal/handler/FreeboxThingHandler.java @@ -15,12 +15,12 @@ import static org.openhab.binding.freebox.internal.FreeboxBindingConstants.*; import java.time.Instant; +import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.Calendar; import java.util.Collections; import java.util.Comparator; import java.util.List; -import java.util.TimeZone; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; @@ -62,6 +62,7 @@ public class FreeboxThingHandler extends BaseThingHandler { private final Logger logger = LoggerFactory.getLogger(FreeboxThingHandler.class); + private final ZoneId zoneId; private ScheduledFuture phoneJob; private ScheduledFuture callsJob; private FreeboxHandler bridgeHandler; @@ -70,8 +71,9 @@ public class FreeboxThingHandler extends BaseThingHandler { private String airPlayName; private String airPlayPassword; - public FreeboxThingHandler(Thing thing) { + public FreeboxThingHandler(Thing thing, ZoneId zoneId) { super(thing); + this.zoneId = zoneId; } @Override @@ -260,7 +262,7 @@ private void updateCall(FreeboxCallEntry call, String channelGroup) { updateGroupChannelStringState(channelGroup, CALLNUMBER, call.getNumber()); updateGroupChannelDecimalState(channelGroup, CALLDURATION, call.getDuration()); ZonedDateTime zoned = ZonedDateTime.ofInstant(Instant.ofEpochMilli(call.getTimeStamp().getTimeInMillis()), - TimeZone.getDefault().toZoneId()); + zoneId); updateGroupChannelDateTimeState(channelGroup, CALLTIMESTAMP, zoned); updateGroupChannelStringState(channelGroup, CALLNAME, call.getName()); if (channelGroup.equals(ANY)) {