From daff150276ab739b77c781969f2fbbcd92dce259 Mon Sep 17 00:00:00 2001 From: Manu Date: Fri, 26 Jun 2026 22:28:43 +0200 Subject: [PATCH] Remove Greenwave Reality (#174929) --- .../components/greenwave/__init__.py | 1 - homeassistant/components/greenwave/light.py | 123 ------------------ .../components/greenwave/manifest.json | 10 -- homeassistant/generated/integrations.json | 6 - requirements_all.txt | 3 - script/hassfest/quality_scale.py | 2 - 6 files changed, 145 deletions(-) delete mode 100644 homeassistant/components/greenwave/__init__.py delete mode 100644 homeassistant/components/greenwave/light.py delete mode 100644 homeassistant/components/greenwave/manifest.json diff --git a/homeassistant/components/greenwave/__init__.py b/homeassistant/components/greenwave/__init__.py deleted file mode 100644 index a7bd0cf437ea..000000000000 --- a/homeassistant/components/greenwave/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""The greenwave component.""" diff --git a/homeassistant/components/greenwave/light.py b/homeassistant/components/greenwave/light.py deleted file mode 100644 index 765795037b3d..000000000000 --- a/homeassistant/components/greenwave/light.py +++ /dev/null @@ -1,123 +0,0 @@ -"""Support for Greenwave Reality (TCP Connected) lights.""" - -from datetime import timedelta -import logging -import os -from typing import Any, override - -import greenwavereality as greenwave -import voluptuous as vol - -from homeassistant.components.light import ( - ATTR_BRIGHTNESS, - PLATFORM_SCHEMA as LIGHT_PLATFORM_SCHEMA, - ColorMode, - LightEntity, -) -from homeassistant.const import CONF_HOST -from homeassistant.core import HomeAssistant -from homeassistant.helpers import config_validation as cv -from homeassistant.helpers.entity_platform import AddEntitiesCallback -from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType -from homeassistant.util import Throttle - -_LOGGER = logging.getLogger(__name__) - -CONF_VERSION = "version" - -PLATFORM_SCHEMA = LIGHT_PLATFORM_SCHEMA.extend( - {vol.Required(CONF_HOST): cv.string, vol.Required(CONF_VERSION): cv.positive_int} -) - -MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=1) - - -def setup_platform( - hass: HomeAssistant, - config: ConfigType, - add_entities: AddEntitiesCallback, - discovery_info: DiscoveryInfoType | None = None, -) -> None: - """Set up the Greenwave Reality Platform.""" - host = config.get(CONF_HOST) - tokenfilename = hass.config.path(".greenwave") - if config.get(CONF_VERSION) == 3: - if os.path.exists(tokenfilename): - with open(tokenfilename, encoding="utf8") as tokenfile: - token = tokenfile.read() - else: - try: - token = greenwave.grab_token(host, "hass", "homeassistant") - except PermissionError: - _LOGGER.error("The Gateway Is Not In Sync Mode") - raise - with open(tokenfilename, "w+", encoding="utf8") as tokenfile: - tokenfile.write(token) - else: - token = None - bulbs = greenwave.grab_bulbs(host, token) - add_entities( - GreenwaveLight(device, host, token, GatewayData(host, token)) - for device in bulbs.values() - ) - - -class GreenwaveLight(LightEntity): - """Representation of an Greenwave Reality Light.""" - - _attr_color_mode = ColorMode.BRIGHTNESS - _attr_supported_color_modes = {ColorMode.BRIGHTNESS} - - def __init__(self, light, host, token, gatewaydata): - """Initialize a Greenwave Reality Light.""" - self._did = int(light["did"]) - self._attr_name = light["name"] - self._attr_is_on = bool(int(light["state"])) - self._attr_brightness = greenwave.hass_brightness(light) - self._host = host - self._attr_available = greenwave.check_online(light) - self._token = token - self._gatewaydata = gatewaydata - - @override - def turn_on(self, **kwargs: Any) -> None: - """Instruct the light to turn on.""" - temp_brightness = int((kwargs.get(ATTR_BRIGHTNESS, 255) / 255) * 100) - greenwave.set_brightness(self._host, self._did, temp_brightness, self._token) - greenwave.turn_on(self._host, self._did, self._token) - - @override - def turn_off(self, **kwargs: Any) -> None: - """Instruct the light to turn off.""" - greenwave.turn_off(self._host, self._did, self._token) - - def update(self) -> None: - """Fetch new state data for this light.""" - self._gatewaydata.update() - bulbs = self._gatewaydata.greenwave - - self._attr_is_on = bool(int(bulbs[self._did]["state"])) - self._attr_brightness = greenwave.hass_brightness(bulbs[self._did]) - self._attr_available = greenwave.check_online(bulbs[self._did]) - self._attr_name = bulbs[self._did]["name"] - - -class GatewayData: - """Handle Gateway data and limit updates.""" - - def __init__(self, host, token): - """Initialize the data object.""" - self._host = host - self._token = token - self._greenwave = greenwave.grab_bulbs(host, token) - - @property - def greenwave(self): - """Return Gateway API object.""" - return self._greenwave - - @Throttle(MIN_TIME_BETWEEN_UPDATES) - def update(self): - """Get the latest data from the gateway.""" - self._greenwave = greenwave.grab_bulbs(self._host, self._token) - return self._greenwave diff --git a/homeassistant/components/greenwave/manifest.json b/homeassistant/components/greenwave/manifest.json deleted file mode 100644 index 422d3bc512e8..000000000000 --- a/homeassistant/components/greenwave/manifest.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "domain": "greenwave", - "name": "Greenwave Reality", - "codeowners": [], - "documentation": "https://www.home-assistant.io/integrations/greenwave", - "iot_class": "local_polling", - "loggers": ["greenwavereality"], - "quality_scale": "legacy", - "requirements": ["greenwavereality==0.5.1"] -} diff --git a/homeassistant/generated/integrations.json b/homeassistant/generated/integrations.json index a3b521c97bf2..f229812a492f 100644 --- a/homeassistant/generated/integrations.json +++ b/homeassistant/generated/integrations.json @@ -2730,12 +2730,6 @@ "config_flow": false, "iot_class": "local_push" }, - "greenwave": { - "name": "Greenwave Reality", - "integration_type": "hub", - "config_flow": false, - "iot_class": "local_polling" - }, "growatt_server": { "integration_type": "hub", "config_flow": true, diff --git a/requirements_all.txt b/requirements_all.txt index c68be663725c..41a44ac209cc 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1179,9 +1179,6 @@ greeneye_monitor==3.0.3 # homeassistant.components.green_planet_energy greenplanet-energy-api==0.1.10 -# homeassistant.components.greenwave -greenwavereality==0.5.1 - # homeassistant.components.pure_energie gridnet==5.0.1 diff --git a/script/hassfest/quality_scale.py b/script/hassfest/quality_scale.py index 2ee2b46956c0..84e976ec166f 100644 --- a/script/hassfest/quality_scale.py +++ b/script/hassfest/quality_scale.py @@ -420,7 +420,6 @@ INTEGRATIONS_WITHOUT_QUALITY_SCALE_FILE = [ "graphite", "gree", "greeneye_monitor", - "greenwave", "group", "gtfs", "guardian", @@ -1377,7 +1376,6 @@ INTEGRATIONS_WITHOUT_SCALE = [ "graphite", "gree", "greeneye_monitor", - "greenwave", "group", "gtfs", "guardian",