diff --git a/custom_components/fpl/const.py b/custom_components/fpl/const.py index 2023605..7aeab49 100644 --- a/custom_components/fpl/const.py +++ b/custom_components/fpl/const.py @@ -1,4 +1,8 @@ """Constants for fpl.""" +# +DEBUG = True + + # Base component constants NAME = "FPL Integration" DOMAIN = "fpl" @@ -25,15 +29,6 @@ PLATFORMS = [SENSOR] # Device classes BINARY_SENSOR_DEVICE_CLASS = "connectivity" -# Configuration -CONF_BINARY_SENSOR = "binary_sensor" -CONF_SENSOR = "sensor" -CONF_SWITCH = "switch" -CONF_ENABLED = "enabled" -CONF_NAME = "name" -CONF_USERNAME = "username" -CONF_PASSWORD = "password" - # Defaults DEFAULT_NAME = DOMAIN diff --git a/custom_components/fpl/sensor.py b/custom_components/fpl/sensor.py index 45bb018..5aab8be 100644 --- a/custom_components/fpl/sensor.py +++ b/custom_components/fpl/sensor.py @@ -31,52 +31,60 @@ from .sensor_DailyUsageSensor import ( FplDailyDeliveredKWHSensor, FplDailyReceivedKWHSensor, ) -from .const import DOMAIN + +from .sensor_test import TestSensor + +from .const import DOMAIN, DEBUG # from .TestSensor import TestSensor async def async_setup_entry(hass, entry, async_add_devices): """Setup sensor platform.""" + accounts = entry.data.get("accounts") coordinator = hass.data[DOMAIN][entry.entry_id] fpl_accounts = [] - for account in accounts: - # Test Sensor - # fpl_accounts.append(TestSensor(coordinator, entry, account)) + if DEBUG: + for account in accounts: + fpl_accounts.append(TestSensor(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)) + # 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)) + # 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)) + 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)) + # 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)) + # 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(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)) + fpl_accounts.append(FplDailyReceivedKWHSensor(coordinator, entry, account)) + fpl_accounts.append(FplDailyDeliveredKWHSensor(coordinator, entry, account)) async_add_devices(fpl_accounts) diff --git a/custom_components/fpl/sensor_test.py b/custom_components/fpl/sensor_test.py new file mode 100644 index 0000000..04bf0a2 --- /dev/null +++ b/custom_components/fpl/sensor_test.py @@ -0,0 +1,43 @@ +"""Test Sensors""" +from datetime import timedelta, datetime +from homeassistant.components.sensor import ( + STATE_CLASS_TOTAL_INCREASING, + DEVICE_CLASS_ENERGY, +) +from homeassistant.core import callback +from .fplEntity import FplEnergyEntity + + +class TestSensor(FplEnergyEntity): + """Daily Usage Kwh Sensor""" + + def __init__(self, coordinator, config, account): + super().__init__(coordinator, config, account, "Test Sensor") + + _attr_state_class = STATE_CLASS_TOTAL_INCREASING + _attr_device_class = DEVICE_CLASS_ENERGY + + @property + def native_value(self): + data = self.getData("daily_usage") + + if data is not None and len(data) > 0 and "usage" in data[-1].keys(): + return data[-1]["usage"] + + return None + + @property + def last_reset(self) -> datetime | None: + data = self.getData("daily_usage") + date = data[-1]["readTime"] + last_reset = date - timedelta(days=1) + return last_reset + + def customAttributes(self): + """Return the state attributes.""" + data = self.getData("daily_usage") + date = data[-1]["readTime"] + + attributes = {} + attributes["date"] = date + return attributes