From a3dadc79bbc2fae9ba4450488d4b2ca633d3d001 Mon Sep 17 00:00:00 2001 From: Steve Saunders Date: Tue, 18 Jun 2024 20:16:10 +1000 Subject: [PATCH] Independent API use counter for every account take 2 --- custom_components/solcast_solar/solcastapi.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/custom_components/solcast_solar/solcastapi.py b/custom_components/solcast_solar/solcastapi.py index 6eeca58..169240e 100644 --- a/custom_components/solcast_solar/solcastapi.py +++ b/custom_components/solcast_solar/solcastapi.py @@ -598,7 +598,7 @@ def get_energy_data(self) -> dict[str, Any]: async def http_data(self, dopast = False): """Request forecast data via the Solcast API.""" - if self.get_last_updated_datetime() + timedelta(minutes=15) < dt.now(timezone.utc): + if self.get_last_updated_datetime() + timedelta(minutes=15) > dt.now(timezone.utc): _LOGGER.warning(f"SOLCAST - not requesting forecast because time is within fifteen minutes of last update ({self.get_last_updated_datetime().astimezone(self._tz)})") return @@ -609,7 +609,11 @@ async def http_data(self, dopast = False): for site in self._sites: _LOGGER.debug(f"SOLCAST - API polling for rooftop {site['resource_id']}") #site=site['resource_id'], apikey=site['apikey'], - result = await self.http_data_call(site['resource_id'], site['apikey'], dopast) + if len(self._sites) == 1: + usageCacheFileName = "solcast-usage.json" + else: + usageCacheFileName = "solcast-usage-%s.json" % (site['apikey'],) + result = await self.http_data_call(usageCacheFileName, site['resource_id'], site['apikey'], dopast) if not result: failure = True @@ -622,6 +626,7 @@ async def http_data(self, dopast = False): await self.buildforcastdata() await self.serialize_data() + async def http_data_call(self, usageCacheFileName, r_id = None, api = None, dopast = False): """Request forecast data via the Solcast API.""" lastday = dt.now(self._tz) + timedelta(days=7)