From 63644dedc72ff5c0b8b23dedddff0ef8340428c2 Mon Sep 17 00:00:00 2001 From: Rolf Date: Wed, 4 Feb 2026 21:22:51 +0100 Subject: [PATCH] fixed bugs --- custom_components/uster_waste/__init__.py | 30 ++-------------- .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 1434 bytes .../__pycache__/button.cpython-313.pyc | Bin 0 -> 2451 bytes .../__pycache__/config_flow.cpython-313.pyc | Bin 0 -> 2053 bytes .../__pycache__/const.cpython-313.pyc | Bin 0 -> 466 bytes .../__pycache__/sensor.cpython-313.pyc | Bin 0 -> 10892 bytes custom_components/uster_waste/button.py | 34 +++++++----------- 7 files changed, 15 insertions(+), 49 deletions(-) create mode 100644 custom_components/uster_waste/__pycache__/__init__.cpython-313.pyc create mode 100644 custom_components/uster_waste/__pycache__/button.cpython-313.pyc create mode 100644 custom_components/uster_waste/__pycache__/config_flow.cpython-313.pyc create mode 100644 custom_components/uster_waste/__pycache__/const.cpython-313.pyc create mode 100644 custom_components/uster_waste/__pycache__/sensor.cpython-313.pyc diff --git a/custom_components/uster_waste/__init__.py b/custom_components/uster_waste/__init__.py index 7506e2d..84a10ae 100644 --- a/custom_components/uster_waste/__init__.py +++ b/custom_components/uster_waste/__init__.py @@ -1,45 +1,21 @@ """Uster Waste integration.""" from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant -from homeassistant.const import Platform, SERVICE_UPDATE_ENTITY +from homeassistant.const import Platform from .const import DOMAIN -PLATFORMS = [Platform.SENSOR] +PLATFORMS = [Platform.SENSOR, Platform.BUTTON] async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Set up Uster Waste from a config entry.""" hass.data.setdefault(DOMAIN, {})[entry.entry_id] = entry.data - # Register manual refresh service - hass.services.async_register( - DOMAIN, - entry.data.get("name", "uster_waste"), - async_handle_manual_refresh - ) - await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) return True async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Unload a config entry.""" - unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS) - if unload_ok: - hass.data[DOMAIN].pop(entry.entry_id) - return unload_ok - - -async def async_handle_manual_refresh(service): - """Handle manual refresh service call.""" - entry_id = service.data.get("entry_id") - if not entry_id or entry_id not in hass.data[DOMAIN]: - return - - # Trigger update for all sensors under this entry - await hass.services.async_call( - "homeassistant", "update_entity", - {"entity_id": [f"sensor.uster_waste_{entry_id}"]}, - blocking=False, - ) + return await hass.config_entries.async_unload_platforms(entry, PLATFORMS) diff --git a/custom_components/uster_waste/__pycache__/__init__.cpython-313.pyc b/custom_components/uster_waste/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..efc90ebe6608c013ce7bd2d26d06c05c3b73faa1 GIT binary patch literal 1434 zcma)6L2MgE6rI_fUE6CrsnaHemQ)KhYAuMvA*e+yNQMRxyLKvXEDnvbTI_YQ$lkSP z)>QE+v1+3BKatd>S#$VkA>lmBxuhZtwJ;-(YO&=B1UvcGGa@KS=G?aqAv+ep3uev?Z`?Z zlk7}Zm~T`4a|?v-xW2tYE#L9n?7j$_!94zn=hmH-IoGFauuOjDHSHW@4)ZP72SxN| z!}9AMZSLd22KD+vF*jf0WYuDfE4J9kRciZf>Qovk zxdA;qWXG#|m`2b+5_C}NOjO*4XVqS6SVpF!ke^Qs%F_LM#?sfoAdD;xQ&7#+crTUirqaFC)o$wQ*4(2Hc2dP&ytqw@-FWdi6D+)wp2ol6 zcgO=}8kaJoJYt$PuWFk7ja7J?@aP6_Gkcse6sQWPIO#%dDyqUypES74r{aZj1>yh> z2&o!#C1at?)sHKSiwmXTs+@e`d5wS>!G$)_0c=BqTSu=oy;{3re?;E`o%lmA(YwBk zF@A#1@1ogV^zJUY^f!8aFFF35`K|fG>V5A=Z#$7)kM&grpW2x2BM@8hKs+YT#HxQv Y!X>=%VIK*(b#5RZpZOEc-zc|WF!~g&Q literal 0 HcmV?d00001 diff --git a/custom_components/uster_waste/__pycache__/button.cpython-313.pyc b/custom_components/uster_waste/__pycache__/button.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c1be01dfe11cc20e59e38fdce5b44cdcb4a2f124 GIT binary patch literal 2451 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 XytQm?=k;ZyliPZrz5CRJj^2C+M>dgW literal 0 HcmV?d00001 diff --git a/custom_components/uster_waste/__pycache__/sensor.cpython-313.pyc b/custom_components/uster_waste/__pycache__/sensor.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3702d83f9134ef973e04ed7566ad05fdd50f3d35 GIT binary patch literal 10892 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 V5m$R}f None: """Set up the button.""" - config = entry.data - name = config.get("name", "Uster Waste") - entity = UsterWasteButton( entry_id=entry.entry_id, - name=name + name=entry.data.get("name", "Uster Waste") ) async_add_entities([entity]) @@ -45,22 +41,16 @@ class UsterWasteButton(ButtonEntity): async def async_press(self) -> None: """Handle the button press (manual refresh).""" - # Trigger a manual update of the sensor - hass = self.hass - coordinator = None + # Trigger a manual update by calling the sensor's update method + # The sensor will fetch fresh data from the Uster website + entity_registry = self.hass.data["entity_registry"] - # Find the coordinator for this entry - if DOMAIN in hass.data: - for entry_id, entry_data in hass.data[DOMAIN].items(): - if entry_id == self._entry_id and "coordinator" in entry_data: - coordinator = entry_data["coordinator"] - break + # Find the sensor entity for this entry + entity_id = f"sensor.uster_waste_{self._entry_id}" - if coordinator: - await coordinator.async_update() - # Force sensor to update - for entity in coordinator.entities: - await entity.async_update() - entity.async_write_ha_state() - else: - _LOGGER.error("Coordinator not found for manual refresh") \ No newline at end of file + # Trigger update for the sensor + await self.hass.services.async_call( + "homeassistant", "update_entity", + {"entity_id": entity_id}, + blocking=False, + )