Try to minimize errors when fpl services are down

This commit is contained in:
Yordan Suarez
2020-11-27 10:57:41 -05:00
parent 657905a4da
commit c4183bc5d4

View File

@@ -179,6 +179,8 @@ class FplApi(object):
return data return data
async def __getFromProjectedBill(self, account, premise, currentBillDate): async def __getFromProjectedBill(self, account, premise, currentBillDate):
data = {}
try: try:
async with async_timeout.timeout(TIMEOUT, loop=self._loop): async with async_timeout.timeout(TIMEOUT, loop=self._loop):
response = await self._session.get( response = await self._session.get(
@@ -190,7 +192,7 @@ class FplApi(object):
) )
if response.status == 200: if response.status == 200:
data = {}
projectedBillData = (await response.json())["data"] projectedBillData = (await response.json())["data"]
billToDate = float(projectedBillData["billToDate"]) billToDate = float(projectedBillData["billToDate"])
@@ -201,10 +203,11 @@ class FplApi(object):
data["bill_to_date"] = billToDate data["bill_to_date"] = billToDate
data["projected_bill"] = projectedBill data["projected_bill"] = projectedBill
data["daily_avg"] = dailyAvg data["daily_avg"] = dailyAvg
data["avg_high_temp"] = avgHighTemp data["avg_high_temp"] = avgHighTemp
return data
except: except:
return [] pass
return data
async def __getBBL_async(self, account, projectedBillData): async def __getBBL_async(self, account, projectedBillData):
_LOGGER.info(f"Getting budget billing data") _LOGGER.info(f"Getting budget billing data")
@@ -281,6 +284,8 @@ class FplApi(object):
"applicationPage": "resDashBoard", "applicationPage": "resDashBoard",
} }
data = {}
async with async_timeout.timeout(TIMEOUT, loop=self._loop): async with async_timeout.timeout(TIMEOUT, loop=self._loop):
response = await self._session.post(URL.format(account=account), json=JSON) response = await self._session.post(URL.format(account=account), json=JSON)
if response.status == 200: if response.status == 200:
@@ -288,27 +293,29 @@ class FplApi(object):
dailyUsage = [] dailyUsage = []
totalPowerUsage = 0 totalPowerUsage = 0
if "data" in r["DailyUsage"]:
for daily in r["DailyUsage"]["data"]:
if "kwhUsed" in daily.keys():
dailyUsage.append(
{
"usage": daily["kwhUsed"],
"cost": daily["billingCharge"],
"date": daily["date"],
"max_temperature": daily["averageHighTemperature"],
}
)
totalPowerUsage += int(daily["kwhUsed"])
for daily in r["DailyUsage"]["data"]: data["total_power_usage"] = totalPowerUsage
if "kwhUsed" in daily.keys(): data["daily_usage"] = dailyUsage
dailyUsage.append(
{
"usage": daily["kwhUsed"],
"cost": daily["billingCharge"],
"date": daily["date"],
"max_temperature": daily["averageHighTemperature"],
}
)
totalPowerUsage += int(daily["kwhUsed"])
return {"total_power_usage": totalPowerUsage, "daily_usage": dailyUsage} return data
return []
async def __getDataFromApplianceUsage(self, account, lastBilledDate): async def __getDataFromApplianceUsage(self, account, lastBilledDate):
_LOGGER.info(f"Getting data from applicance usage") _LOGGER.info(f"Getting data from applicance usage")
URL = "https://www.fpl.com/dashboard-api/resources/account/{account}/applianceUsage/{account}" URL = "https://www.fpl.com/dashboard-api/resources/account/{account}/applianceUsage/{account}"
JSON = {"startDate": str(lastBilledDate.strftime("%m%d%Y"))} JSON = {"startDate": str(lastBilledDate.strftime("%m%d%Y"))}
data = {}
try: try:
async with async_timeout.timeout(TIMEOUT, loop=self._loop): async with async_timeout.timeout(TIMEOUT, loop=self._loop):
response = await self._session.post( response = await self._session.post(
@@ -316,7 +323,7 @@ class FplApi(object):
) )
if response.status == 200: if response.status == 200:
electric = (await response.json())["data"]["electric"] electric = (await response.json())["data"]["electric"]
data = {}
full = 100 full = 100
for e in electric: for e in electric:
rr = round(float(e["percentageDollar"])) rr = round(float(e["percentageDollar"]))
@@ -325,7 +332,8 @@ class FplApi(object):
else: else:
rr = full rr = full
data[e["category"].replace(" ", "_")] = rr data[e["category"].replace(" ", "_")] = rr
return {"energy_percent_by_applicance": data}
except: except:
return [] pass
return {"energy_percent_by_applicance": data}