mirror of
https://github.com/danieldemus/openhab-addons
synced 2026-07-29 12:34:21 +02:00
[bluelink] Allow disabling force refresh (#20673)
* [bluelink] Allow disabling force refresh Signed-off-by: Florian Hotze <dev@florianhotze.com>
This commit is contained in:
+34
-14
@@ -101,14 +101,21 @@ public class BluelinkVehicleHandler extends BaseThingHandler implements VehicleS
|
||||
|
||||
final Duration refreshInterval = config.refreshInterval >= 1 ? Duration.ofMinutes(config.refreshInterval)
|
||||
: DEFAULT_REFRESH_INTERVAL;
|
||||
final Duration forceRefreshInterval = config.forceRefreshInterval >= 1
|
||||
? Duration.ofMinutes(config.forceRefreshInterval)
|
||||
: DEFAULT_FORCE_REFRESH_INTERVAL;
|
||||
this.forceRefreshInterval = forceRefreshInterval;
|
||||
refreshJob = scheduler.scheduleWithFixedDelay(() -> refreshVehicleStatus(false), 5, refreshInterval.toSeconds(),
|
||||
TimeUnit.SECONDS);
|
||||
forceRefreshJob = scheduler.scheduleWithFixedDelay(() -> refreshVehicleStatus(true), 30,
|
||||
forceRefreshInterval.toSeconds(), TimeUnit.SECONDS);
|
||||
|
||||
final @Nullable Duration forceRefreshInterval;
|
||||
if (config.forceRefreshInterval == 0) {
|
||||
forceRefreshInterval = null;
|
||||
} else {
|
||||
forceRefreshInterval = config.forceRefreshInterval >= 1 ? Duration.ofMinutes(config.forceRefreshInterval)
|
||||
: DEFAULT_FORCE_REFRESH_INTERVAL;
|
||||
}
|
||||
this.forceRefreshInterval = forceRefreshInterval;
|
||||
if (forceRefreshInterval != null) {
|
||||
forceRefreshJob = scheduler.scheduleWithFixedDelay(() -> refreshVehicleStatus(true), 30,
|
||||
forceRefreshInterval.toSeconds(), TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
updateStatus(ThingStatus.UNKNOWN);
|
||||
initTask = scheduler.schedule(() -> loadVehicle(vin), 0, TimeUnit.MILLISECONDS);
|
||||
@@ -298,7 +305,11 @@ public class BluelinkVehicleHandler extends BaseThingHandler implements VehicleS
|
||||
return false;
|
||||
}
|
||||
|
||||
return bridgeHnd.climateStart(vehicle, temperature, heat, defrost, igniOnDuration);
|
||||
final boolean res = bridgeHnd.climateStart(vehicle, temperature, heat, defrost, igniOnDuration);
|
||||
if (res) {
|
||||
scheduleForceRefresh();
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
public boolean climateStop() throws BluelinkApiException {
|
||||
@@ -308,7 +319,11 @@ public class BluelinkVehicleHandler extends BaseThingHandler implements VehicleS
|
||||
return false;
|
||||
}
|
||||
|
||||
return bridgeHnd.climateStop(vehicle);
|
||||
final boolean res = bridgeHnd.climateStop(vehicle);
|
||||
if (res) {
|
||||
scheduleForceRefresh();
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
public void refreshVehicleStatus(boolean forceRefresh) {
|
||||
@@ -558,12 +573,17 @@ public class BluelinkVehicleHandler extends BaseThingHandler implements VehicleS
|
||||
*/
|
||||
private void scheduleForceRefresh() {
|
||||
final ScheduledFuture<?> job = forceRefreshJob;
|
||||
final Duration forceRefreshInterval = this.forceRefreshInterval;
|
||||
if (job == null || forceRefreshInterval == null) {
|
||||
return;
|
||||
if (job != null) {
|
||||
job.cancel(false);
|
||||
}
|
||||
final @Nullable Duration forceRefreshInterval = this.forceRefreshInterval;
|
||||
if (forceRefreshInterval != null) {
|
||||
// schedule a periodic job according to forceRefreshInterval
|
||||
forceRefreshJob = scheduler.scheduleWithFixedDelay(() -> refreshVehicleStatus(true), 10,
|
||||
forceRefreshInterval.toSeconds(), TimeUnit.SECONDS);
|
||||
} else {
|
||||
// schedule a one-shot job if forceRefreshInterval is null
|
||||
forceRefreshJob = scheduler.schedule(() -> refreshVehicleStatus(true), 10, TimeUnit.SECONDS);
|
||||
}
|
||||
job.cancel(false);
|
||||
scheduler.scheduleWithFixedDelay(() -> refreshVehicleStatus(true), 10, forceRefreshInterval.toSeconds(),
|
||||
TimeUnit.SECONDS);
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ thing-type.config.bluelink.account.region.option.EU = Europe
|
||||
thing-type.config.bluelink.account.username.label = Username
|
||||
thing-type.config.bluelink.account.username.description = Your Bluelink/Connect account email address (not required for EU region)
|
||||
thing-type.config.bluelink.vehicle.forceRefreshInterval.label = Refresh Interval
|
||||
thing-type.config.bluelink.vehicle.forceRefreshInterval.description = Interval in minutes to refresh data from the vehicle
|
||||
thing-type.config.bluelink.vehicle.forceRefreshInterval.description = Interval in minutes to refresh data from the vehicle. Set to 0 to disable periodic forced refresh.
|
||||
thing-type.config.bluelink.vehicle.refreshInterval.label = Refresh Interval
|
||||
thing-type.config.bluelink.vehicle.refreshInterval.description = Interval in minutes to fetch cached data from the Hyundai/Kia servers
|
||||
thing-type.config.bluelink.vehicle.vin.label = VIN
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
</parameter>
|
||||
<parameter name="forceRefreshInterval" type="integer" min="0" unit="min" required="false">
|
||||
<label>Refresh Interval</label>
|
||||
<description>Interval in minutes to refresh data from the vehicle</description>
|
||||
<description>Interval in minutes to refresh data from the vehicle. Set to 0 to disable periodic forced refresh.</description>
|
||||
<default>240</default>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
|
||||
Reference in New Issue
Block a user