From bffbf89f22e13a64ff5924a56637205b62e89492 Mon Sep 17 00:00:00 2001 From: Bobsilvio Date: Thu, 12 Sep 2024 14:32:10 +0200 Subject: [PATCH] fix duplicazione sensore competizioni --- custom_components/calcio_live/__init__.py | 17 ++++++++++++----- custom_components/calcio_live/manifest.json | 2 +- custom_components/calcio_live/sensor.py | 21 +++++++++++++++++---- 3 files changed, 30 insertions(+), 10 deletions(-) mode change 100644 => 100755 custom_components/calcio_live/__init__.py mode change 100644 => 100755 custom_components/calcio_live/sensor.py diff --git a/custom_components/calcio_live/__init__.py b/custom_components/calcio_live/__init__.py old mode 100644 new mode 100755 index 9555347..b662701 --- a/custom_components/calcio_live/__init__.py +++ b/custom_components/calcio_live/__init__.py @@ -1,12 +1,19 @@ +import logging from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from .const import DOMAIN +_LOGGER = logging.getLogger(__name__) + async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Setup calcio_live from a config entry.""" - # Avvia il forward delle piattaforme in modo asincrono - hass.async_create_task( - hass.config_entries.async_forward_entry_setups(entry, ["sensor"]) - ) - return True \ No newline at end of file + + # Inizializza hass.data[DOMAIN] se non è già stato inizializzato + if DOMAIN not in hass.data: + hass.data[DOMAIN] = {} + + # Avvia la configurazione delle piattaforme come "sensor" + await hass.config_entries.async_forward_entry_setups(entry, ["sensor"]) + + return True diff --git a/custom_components/calcio_live/manifest.json b/custom_components/calcio_live/manifest.json index 294f160..8a24cef 100755 --- a/custom_components/calcio_live/manifest.json +++ b/custom_components/calcio_live/manifest.json @@ -1,7 +1,7 @@ { "domain": "calcio_live", "name": "Calcio Live", - "version": "1.0.7", + "version": "1.0.8", "documentation": "https://github.com/Bobsilvio/calcio_live", "dependencies": [], "codeowners": ["@Bobsilvio"], diff --git a/custom_components/calcio_live/sensor.py b/custom_components/calcio_live/sensor.py old mode 100644 new mode 100755 index 35eb253..8645c5e --- a/custom_components/calcio_live/sensor.py +++ b/custom_components/calcio_live/sensor.py @@ -1,9 +1,15 @@ import logging import aiohttp from homeassistant.helpers.entity import Entity +from homeassistant.config_entries import ConfigEntry +from homeassistant.core import HomeAssistant +from homeassistant.helpers.entity_platform import AddEntitiesCallback + +from .const import DOMAIN _LOGGER = logging.getLogger(__name__) + async def async_setup_entry(hass, entry, async_add_entities): try: api_key = entry.data.get("api_key") @@ -14,10 +20,18 @@ async def async_setup_entry(hass, entry, async_add_entities): sensors = [] + # Inizializza hass.data[DOMAIN] se non esiste + if DOMAIN not in hass.data: + hass.data[DOMAIN] = {} + + # Evita la duplicazione del sensore calciolive_competizioni + if "calciolive_competizioni" not in hass.data[DOMAIN] and competition_code: + sensors.append(CalcioLiveSensor(hass, f"calciolive_competizioni", api_key, competition_code, "competitions")) + hass.data[DOMAIN]["calciolive_competizioni"] = True + if competition_code: # Crea i sensori relativi alle competizioni sensors += [ - CalcioLiveSensor(hass, f"calciolive_competizioni", api_key, competition_code, "competitions"), CalcioLiveSensor(hass, f"calciolive_{competition_name}_classifica", api_key, competition_code, "standings"), CalcioLiveSensor(hass, f"calciolive_{competition_name}_match_day", api_key, competition_code, "match_day"), CalcioLiveSensor(hass, f"calciolive_{competition_name}_cannonieri", api_key, competition_code, "scorers") @@ -29,10 +43,9 @@ async def async_setup_entry(hass, entry, async_add_entities): async_add_entities(sensors, True) - return True except Exception as e: - _LOGGER.error(f"Errore durante il setup dell'entry: {e}") - return False + _LOGGER.error(f"Errore durante la configurazione dei sensori: {e}") + class CalcioLiveSensor(Entity):