From 1295986da2a1edbc0f51b8bd0d013b2471852363 Mon Sep 17 00:00:00 2001 From: ramonsca Date: Sun, 10 Mar 2024 23:21:48 +0100 Subject: [PATCH] Add cups selector to config --- assets/config-bills-number.png | Bin 17936 -> 27192 bytes custom_components/pvpc_energy/config_flow.py | 32 +++++++++++------- custom_components/pvpc_energy/manifest.json | 3 +- custom_components/pvpc_energy/strings.json | 32 ++++++++++-------- .../pvpc_energy/translations/en.json | 2 +- .../pvpc_energy/translations/es.json | 2 +- .../pvpc_energy/translations/pt.json | 4 +-- custom_components/pvpc_energy/ufd.py | 14 ++++---- 8 files changed, 51 insertions(+), 38 deletions(-) diff --git a/assets/config-bills-number.png b/assets/config-bills-number.png index 2c8861188fe34845b6ef83c4aed5eaf113e219e4..9af6773ff93a6263be8e9fde9780c41cf3790445 100644 GIT binary patch literal 27192 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�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 Lp;nE?y{G>NMvohZ delta 17071 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 SP3ZMUYSQ8gVilrBLH`SF7l_vY diff --git a/custom_components/pvpc_energy/config_flow.py b/custom_components/pvpc_energy/config_flow.py index 75f4f68..d837c8b 100644 --- a/custom_components/pvpc_energy/config_flow.py +++ b/custom_components/pvpc_energy/config_flow.py @@ -1,4 +1,5 @@ from homeassistant import config_entries +from homeassistant.helpers.selector import selector from typing import Any, Dict, Optional import homeassistant.helpers.config_validation as cv import voluptuous as vol @@ -8,13 +9,14 @@ _LOGGER = logging.getLogger(__name__) -AUTH_SCHEMA = vol.Schema({ +AUTH_SCHEMA = { vol.Required('ufd_login'): cv.string, vol.Required('ufd_password'): cv.string -}) -CUPS_SCHEMA = vol.Schema({ +} +CUPS_SCHEMA = { + vol.Required('cups'): cv.string, vol.Required('bills_number', default='5'): cv.positive_int -}) +} class PvpcEnergyConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): data: Optional[Dict[str, Any]] @@ -25,22 +27,28 @@ async def async_step_user(self, user_input: Optional[Dict[str, Any]] = None): UFD.User = user_input['ufd_login'] UFD.Password = user_input['ufd_password'] - await UFD.supplypoints() self.data = user_input - self.data['cups'] = UFD.cups - self.data['power_high'] = UFD.power_high - self.data['power_low'] = UFD.power_low - self.data['zip_code'] = UFD.zip_code - + self.data['cups_list'] = await UFD.supplypoints() return await self.async_step_cups() - return self.async_show_form(step_id="user", data_schema=AUTH_SCHEMA, errors=None) + return self.async_show_form(step_id="user", data_schema=vol.Schema(AUTH_SCHEMA), errors=None) async def async_step_cups(self, user_input: Optional[Dict[str, Any]] = None): + _LOGGER.debug(f"cups: {list(self.data['cups_list'].keys())}") + CUPS_SCHEMA['cups'] = selector({ + "select": { + "options": list(self.data['cups_list'].keys()), + } + }) if user_input is not None: _LOGGER.debug(f"pvpc_energy: async_step_cups, user_input={user_input}") + supply_point = self.data['cups_list'][user_input['cups']] + self.data['cups'] = supply_point['cups'] + self.data['power_high'] = supply_point['power_high'] + self.data['power_low'] = supply_point['power_low'] + self.data['zip_code'] = supply_point['zip_code'] self.data['bills_number'] = user_input['bills_number'] return self.async_create_entry(title=self.data['cups'], data=self.data) - return self.async_show_form(step_id="cups", data_schema=CUPS_SCHEMA, errors=None) + return self.async_show_form(step_id="cups", data_schema=vol.Schema(CUPS_SCHEMA), errors=None) diff --git a/custom_components/pvpc_energy/manifest.json b/custom_components/pvpc_energy/manifest.json index 2a23a20..a0b6d81 100755 --- a/custom_components/pvpc_energy/manifest.json +++ b/custom_components/pvpc_energy/manifest.json @@ -3,10 +3,11 @@ "name": "UFD Distribución Electricidad", "codeowners": ["@yinyang17"], "config_flow": true, + "single_config_entry": true, "dependencies": ["recorder"], "documentation":"https://github.com/yinyang17/pvpc_energy", "iot_class": "cloud_polling", "issue_tracker":"https://github.com/yinyang17/pvpc_energy/issues", "requirements": [], - "version": "0.1.0" + "version": "0.2.0" } \ No newline at end of file diff --git a/custom_components/pvpc_energy/strings.json b/custom_components/pvpc_energy/strings.json index 444ca1a..4124476 100644 --- a/custom_components/pvpc_energy/strings.json +++ b/custom_components/pvpc_energy/strings.json @@ -1,19 +1,21 @@ { - "config": { - "step": { - "user": { - "title": "UFD", - "description": "Enter de UFD credentials and data. You need to have two-step login disabled", - "data": { - "ufd_login": "UFD login", - "ufd_password": "UFD password", - "cups": "CUPS", - "power_high": "High power", - "power_low": "Low power", - "zip_code": "Zip code", - "bills_number": "Number of bills to show in Markdown Card" - } + "config": { + "step": { + "user": { + "title": "UFD", + "description": "Enter de UFD credentials and data. You need to have two-step login disabled", + "data": { + "ufd_login": "UFD login", + "ufd_password": "UFD password" + } + }, + "cups": { + "title": "UFD", + "description": "Enter the CUPS and the number of bills to show in Markdown Card", + "data": { + "bills_number": "Number of bills" } } } - } \ No newline at end of file + } +} \ No newline at end of file diff --git a/custom_components/pvpc_energy/translations/en.json b/custom_components/pvpc_energy/translations/en.json index 578b95a..4124476 100644 --- a/custom_components/pvpc_energy/translations/en.json +++ b/custom_components/pvpc_energy/translations/en.json @@ -11,7 +11,7 @@ }, "cups": { "title": "UFD", - "description": "Enter de number of bills to show in Markdown Card", + "description": "Enter the CUPS and the number of bills to show in Markdown Card", "data": { "bills_number": "Number of bills" } diff --git a/custom_components/pvpc_energy/translations/es.json b/custom_components/pvpc_energy/translations/es.json index 8cab480..eb196ea 100644 --- a/custom_components/pvpc_energy/translations/es.json +++ b/custom_components/pvpc_energy/translations/es.json @@ -11,7 +11,7 @@ }, "cups": { "title": "UFD", - "description": "Introduce el número de facturas para la tarjeta Markdown", + "description": "Indica el CUPS y el número de facturas para la tarjeta Markdown", "data": { "bills_number": "Número de facturas" } diff --git a/custom_components/pvpc_energy/translations/pt.json b/custom_components/pvpc_energy/translations/pt.json index 5b1f61f..016ef25 100644 --- a/custom_components/pvpc_energy/translations/pt.json +++ b/custom_components/pvpc_energy/translations/pt.json @@ -11,11 +11,11 @@ }, "cups": { "title": "UFD", - "description": "Inserir o número de contas para mostar", + "description": "Insira o CUPS e o número de contas a serem exibidas no Markdown Card", "data": { "bills_number": "Número de Contas" } } } } -} +} \ No newline at end of file diff --git a/custom_components/pvpc_energy/ufd.py b/custom_components/pvpc_energy/ufd.py index 8dda0a4..fcba16c 100644 --- a/custom_components/pvpc_energy/ufd.py +++ b/custom_components/pvpc_energy/ufd.py @@ -153,6 +153,7 @@ async def billingPeriods(start_date, end_date): async def supplypoints(): _LOGGER.debug(f"START - UFD.supplypoints()") + result = {} async with aiohttp.ClientSession() as session: headers = await UFD.getHeaders(session) url = UFD.supplypoints_url.format(nif=UFD.nif) @@ -162,11 +163,12 @@ async def supplypoints(): _LOGGER.debug(f"response={response}") for supplyPoint in response['supplyPoints']['items']: if supplyPoint['power1'] != '' and supplyPoint['power1'] != '': - UFD.cups = supplyPoint['cups'] - UFD.power_high = float(supplyPoint['power1']) - UFD.power_low = float(supplyPoint['power2']) - UFD.zip_code = supplyPoint['address']['zipCode'] + result[supplyPoint['cups']] = { + 'cups': supplyPoint['cups'], + 'power_high': float(supplyPoint['power1']), + 'power_low': float(supplyPoint['power2']), + 'zip_code': supplyPoint['address']['zipCode'] + } _LOGGER.debug(f"cups={UFD.cups}, power_high={UFD.power_high}, power_low={UFD.power_low}") - break _LOGGER.debug(f"END - UFD.supplypoints()") - \ No newline at end of file + return result