From 7d2aaed221e805c9e77a824725f34bc4db493e1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20K=C3=BChnel?= Date: Wed, 29 Jan 2025 18:49:06 +0100 Subject: [PATCH 1/2] feat(TeslaFleetApiService): do not wakeup car more often than every 30 minutes via fleet API --- .../Server/Services/TeslaFleetApiService.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/TeslaSolarCharger/Server/Services/TeslaFleetApiService.cs b/TeslaSolarCharger/Server/Services/TeslaFleetApiService.cs index 0f2cd5066..a9d341677 100644 --- a/TeslaSolarCharger/Server/Services/TeslaFleetApiService.cs +++ b/TeslaSolarCharger/Server/Services/TeslaFleetApiService.cs @@ -960,6 +960,16 @@ await errorHandlingService.HandleError(nameof(TeslaFleetApiService), nameof(Send } await errorHandlingService.HandleErrorResolved(issueKeys.FleetApiNotLicensed, car.Vin); + if (fleetApiRequest.RequestUrl == WakeUpRequest.RequestUrl) + { + var lastWakeUp = car.WakeUpCalls.OrderByDescending(c => c).FirstOrDefault(); + if (lastWakeUp != default && lastWakeUp > dateTimeProvider.UtcNow().AddMinutes(20)) + { + logger.LogDebug("Do not send wake up command as last wake up was at {lastWakeUp}", lastWakeUp); + throw new InvalidOperationException("Do not send wake up command as last wake up was at " + lastWakeUp); + } + } + var accessToken = await teslaSolarChargerContext.BackendTokens.SingleOrDefaultAsync(); if (accessToken == default) { From e6c66ed98c1b42e2b0579fbb1b14d389d63aa793 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20K=C3=BChnel?= Date: Wed, 29 Jan 2025 18:53:33 +0100 Subject: [PATCH 2/2] fix(TeslaFleetApiService): use 30 minutes as minimum time between wakes --- TeslaSolarCharger/Server/Services/TeslaFleetApiService.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TeslaSolarCharger/Server/Services/TeslaFleetApiService.cs b/TeslaSolarCharger/Server/Services/TeslaFleetApiService.cs index a9d341677..2b2256e4b 100644 --- a/TeslaSolarCharger/Server/Services/TeslaFleetApiService.cs +++ b/TeslaSolarCharger/Server/Services/TeslaFleetApiService.cs @@ -963,10 +963,10 @@ await errorHandlingService.HandleError(nameof(TeslaFleetApiService), nameof(Send if (fleetApiRequest.RequestUrl == WakeUpRequest.RequestUrl) { var lastWakeUp = car.WakeUpCalls.OrderByDescending(c => c).FirstOrDefault(); - if (lastWakeUp != default && lastWakeUp > dateTimeProvider.UtcNow().AddMinutes(20)) + if (lastWakeUp != default && lastWakeUp > dateTimeProvider.UtcNow().AddMinutes(-30)) { logger.LogDebug("Do not send wake up command as last wake up was at {lastWakeUp}", lastWakeUp); - throw new InvalidOperationException("Do not send wake up command as last wake up was at " + lastWakeUp); + return null; } }