102 lines
2.9 KiB
Python
102 lines
2.9 KiB
Python
"""Sensor platform for integration_blueprint."""
|
|
|
|
from .sensor_KWHSensor import (
|
|
ProjectedKWHSensor,
|
|
DailyAverageKWHSensor,
|
|
BillToDateKWHSensor,
|
|
NetReceivedKWHSensor,
|
|
NetDeliveredKWHSensor,
|
|
)
|
|
from .sensor_DatesSensor import (
|
|
CurrentBillDateSensor,
|
|
NextBillDateSensor,
|
|
ServiceDaysSensor,
|
|
AsOfDaysSensor,
|
|
RemainingDaysSensor,
|
|
)
|
|
from .sensor_ProjectedBillSensor import (
|
|
BillToDateSensor,
|
|
FplProjectedBillSensor,
|
|
ProjectedBudgetBillSensor,
|
|
ProjectedActualBillSensor,
|
|
DeferedAmountSensor,
|
|
)
|
|
from .sensor_AverageDailySensor import (
|
|
DailyAverageSensor,
|
|
BudgetDailyAverageSensor,
|
|
ActualDailyAverageSensor,
|
|
)
|
|
from .sensor_DailyUsageSensor import (
|
|
FplDailyUsageKWHSensor,
|
|
FplDailyUsageSensor,
|
|
FplDailyDeliveredKWHSensor,
|
|
FplDailyReceivedKWHSensor,
|
|
)
|
|
|
|
from .const import CONF_ACCOUNTS, CONF_TERRITORY, DOMAIN, FPL_MAINREGION, FPL_NORTHWEST
|
|
|
|
ALL_REGIONS = [FPL_MAINREGION, FPL_NORTHWEST]
|
|
ONLY_MAINREGION = [FPL_MAINREGION]
|
|
|
|
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(CONF_ACCOUNTS)
|
|
territory = entry.data.get(CONF_TERRITORY)
|
|
|
|
coordinator = hass.data[DOMAIN][entry.entry_id]
|
|
fpl_accounts = []
|
|
|
|
for account in accounts:
|
|
for sensor in sensors[territory]:
|
|
fpl_accounts.append(sensor(coordinator, entry, account))
|
|
|
|
async_add_devices(fpl_accounts)
|