From 731ef9444ab588a243a95f2114941c68e034af6c Mon Sep 17 00:00:00 2001 From: Yordan Suarez Date: Wed, 17 Aug 2022 18:29:43 -0400 Subject: [PATCH] added bill to date sensor and organize sensor initialization file --- custom_components/fpl/sensor.py | 102 +++++++++--------- .../fpl/sensor_ProjectedBillSensor.py | 16 +++ 2 files changed, 70 insertions(+), 48 deletions(-) diff --git a/custom_components/fpl/sensor.py b/custom_components/fpl/sensor.py index 19ed290..5681ede 100644 --- a/custom_components/fpl/sensor.py +++ b/custom_components/fpl/sensor.py @@ -15,6 +15,7 @@ from .sensor_DatesSensor import ( RemainingDaysSensor, ) from .sensor_ProjectedBillSensor import ( + BillToDateSensor, FplProjectedBillSensor, ProjectedBudgetBillSensor, ProjectedActualBillSensor, @@ -32,64 +33,69 @@ from .sensor_DailyUsageSensor import ( FplDailyReceivedKWHSensor, ) -from .sensor_test import TestSensor +from .const import CONF_ACCOUNTS, CONF_TERRITORY, DOMAIN, FPL_MAINREGION, FPL_NORTHWEST -from .const import DOMAIN, DEBUG +ALL_REGIONS = [FPL_MAINREGION, FPL_NORTHWEST] +ONLY_MAINREGION = [FPL_MAINREGION] -# from .TestSensor import TestSensor +sensors = {} + + +def registerSensor(sensor, regions): + """register all available sensors""" + for region in regions: + if region in sensors: + sensors[region].append(sensor) + else: + sensors[region] = [sensor] + + +# bill sensors +registerSensor(FplProjectedBillSensor, ALL_REGIONS) +registerSensor(BillToDateSensor, ALL_REGIONS) + +# budget billing +registerSensor(ProjectedBudgetBillSensor, ONLY_MAINREGION) +registerSensor(ProjectedActualBillSensor, ONLY_MAINREGION) +registerSensor(DeferedAmountSensor, ONLY_MAINREGION) + + +# usage sensors +registerSensor(DailyAverageSensor, ONLY_MAINREGION) +registerSensor(BudgetDailyAverageSensor, ONLY_MAINREGION) +registerSensor(ActualDailyAverageSensor, ONLY_MAINREGION) + +registerSensor(FplDailyUsageSensor, ONLY_MAINREGION) +registerSensor(FplDailyUsageKWHSensor, ONLY_MAINREGION) + +# date sensors +registerSensor(CurrentBillDateSensor, ALL_REGIONS) +registerSensor(NextBillDateSensor, ONLY_MAINREGION) +registerSensor(ServiceDaysSensor, ALL_REGIONS) +registerSensor(AsOfDaysSensor, ALL_REGIONS) +registerSensor(RemainingDaysSensor, ALL_REGIONS) + +# KWH sensors +registerSensor(ProjectedKWHSensor, ALL_REGIONS) +registerSensor(DailyAverageKWHSensor, ONLY_MAINREGION) +registerSensor(BillToDateKWHSensor, ALL_REGIONS) +registerSensor(NetReceivedKWHSensor, ONLY_MAINREGION) +registerSensor(NetDeliveredKWHSensor, ONLY_MAINREGION) +registerSensor(FplDailyReceivedKWHSensor, ONLY_MAINREGION) +registerSensor(FplDailyDeliveredKWHSensor, ONLY_MAINREGION) async def async_setup_entry(hass, entry, async_add_devices): """Setup sensor platform.""" - accounts = entry.data.get("accounts") - territory = entry.data.get("territory") - - print(f"setting sensor for {territory}") + accounts = entry.data.get(CONF_ACCOUNTS) + territory = entry.data.get(CONF_TERRITORY) coordinator = hass.data[DOMAIN][entry.entry_id] fpl_accounts = [] - if DEBUG: - for account in accounts: - fpl_accounts.append(TestSensor(coordinator, entry, account)) - - fpl_accounts.append(FplProjectedBillSensor(coordinator, entry, account)) - else: - for account in accounts: - # Test Sensor - # fpl_accounts.append(TestSensor(coordinator, entry, account)) - - # bill sensors - fpl_accounts.append(FplProjectedBillSensor(coordinator, entry, account)) - fpl_accounts.append(ProjectedBudgetBillSensor(coordinator, entry, account)) - fpl_accounts.append(ProjectedActualBillSensor(coordinator, entry, account)) - fpl_accounts.append(DeferedAmountSensor(coordinator, entry, account)) - - # usage sensors - fpl_accounts.append(DailyAverageSensor(coordinator, entry, account)) - fpl_accounts.append(BudgetDailyAverageSensor(coordinator, entry, account)) - fpl_accounts.append(ActualDailyAverageSensor(coordinator, entry, account)) - - fpl_accounts.append(FplDailyUsageSensor(coordinator, entry, account)) - fpl_accounts.append(FplDailyUsageKWHSensor(coordinator, entry, account)) - - # date sensors - fpl_accounts.append(CurrentBillDateSensor(coordinator, entry, account)) - fpl_accounts.append(NextBillDateSensor(coordinator, entry, account)) - fpl_accounts.append(ServiceDaysSensor(coordinator, entry, account)) - fpl_accounts.append(AsOfDaysSensor(coordinator, entry, account)) - fpl_accounts.append(RemainingDaysSensor(coordinator, entry, account)) - - # KWH sensors - fpl_accounts.append(ProjectedKWHSensor(coordinator, entry, account)) - fpl_accounts.append(DailyAverageKWHSensor(coordinator, entry, account)) - fpl_accounts.append(BillToDateKWHSensor(coordinator, entry, account)) - - fpl_accounts.append(NetReceivedKWHSensor(coordinator, entry, account)) - fpl_accounts.append(NetDeliveredKWHSensor(coordinator, entry, account)) - - fpl_accounts.append(FplDailyReceivedKWHSensor(coordinator, entry, account)) - fpl_accounts.append(FplDailyDeliveredKWHSensor(coordinator, entry, account)) + for account in accounts: + for sensor in sensors[territory]: + fpl_accounts.append(sensor(coordinator, entry, account)) async_add_devices(fpl_accounts) diff --git a/custom_components/fpl/sensor_ProjectedBillSensor.py b/custom_components/fpl/sensor_ProjectedBillSensor.py index 00f84e0..1897a86 100644 --- a/custom_components/fpl/sensor_ProjectedBillSensor.py +++ b/custom_components/fpl/sensor_ProjectedBillSensor.py @@ -71,3 +71,19 @@ class ProjectedActualBillSensor(FplMoneyEntity): @property def native_value(self): return self.getData("projected_bill") + + +class BillToDateSensor(FplMoneyEntity): + """projeted actual bill sensor""" + + # _attr_state_class = STATE_CLASS_TOTAL + + def __init__(self, coordinator, config, account): + super().__init__(coordinator, config, account, "Bill To Date") + + @property + def native_value(self): + if self.getData("budget_bill"): + return self.getData("budget_billing_bill_to_date") + + return self.getData("bill_to_date")