From 0070e27c041c04029ea0dc5bc393ad366e505688 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sat, 12 Mar 2022 13:05:22 +0100 Subject: [PATCH] Remove deprecated PCAL9535A I/O Expander integration (#67274) --- .coveragerc | 1 - CODEOWNERS | 1 - .../components/pcal9535a/__init__.py | 3 - .../components/pcal9535a/binary_sensor.py | 110 ---------------- .../components/pcal9535a/manifest.json | 9 -- homeassistant/components/pcal9535a/switch.py | 119 ------------------ requirements_all.txt | 3 - 7 files changed, 246 deletions(-) delete mode 100644 homeassistant/components/pcal9535a/__init__.py delete mode 100644 homeassistant/components/pcal9535a/binary_sensor.py delete mode 100644 homeassistant/components/pcal9535a/manifest.json delete mode 100644 homeassistant/components/pcal9535a/switch.py diff --git a/.coveragerc b/.coveragerc index aa2eef16079..26b24bfbe00 100644 --- a/.coveragerc +++ b/.coveragerc @@ -878,7 +878,6 @@ omit = homeassistant/components/panasonic_bluray/media_player.py homeassistant/components/panasonic_viera/media_player.py homeassistant/components/pandora/media_player.py - homeassistant/components/pcal9535a/* homeassistant/components/pencom/switch.py homeassistant/components/philips_js/__init__.py homeassistant/components/philips_js/diagnostics.py diff --git a/CODEOWNERS b/CODEOWNERS index 7e7f25ad153..668a6bae19e 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -743,7 +743,6 @@ homeassistant/components/panel_custom/* @home-assistant/frontend tests/components/panel_custom/* @home-assistant/frontend homeassistant/components/panel_iframe/* @home-assistant/frontend tests/components/panel_iframe/* @home-assistant/frontend -homeassistant/components/pcal9535a/* @Shulyaka homeassistant/components/persistent_notification/* @home-assistant/core tests/components/persistent_notification/* @home-assistant/core homeassistant/components/philips_js/* @elupus diff --git a/homeassistant/components/pcal9535a/__init__.py b/homeassistant/components/pcal9535a/__init__.py deleted file mode 100644 index fa1295939be..00000000000 --- a/homeassistant/components/pcal9535a/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -"""Support for I2C PCAL9535A chip.""" - -DOMAIN = "pcal9535a" diff --git a/homeassistant/components/pcal9535a/binary_sensor.py b/homeassistant/components/pcal9535a/binary_sensor.py deleted file mode 100644 index 729bc534402..00000000000 --- a/homeassistant/components/pcal9535a/binary_sensor.py +++ /dev/null @@ -1,110 +0,0 @@ -"""Support for binary sensor using I2C PCAL9535A chip.""" -from __future__ import annotations - -import logging - -from pcal9535a import PCAL9535A -import voluptuous as vol - -from homeassistant.components.binary_sensor import PLATFORM_SCHEMA, BinarySensorEntity -from homeassistant.const import DEVICE_DEFAULT_NAME -from homeassistant.core import HomeAssistant -import homeassistant.helpers.config_validation as cv -from homeassistant.helpers.entity_platform import AddEntitiesCallback -from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType - -CONF_INVERT_LOGIC = "invert_logic" -CONF_I2C_ADDRESS = "i2c_address" -CONF_I2C_BUS = "i2c_bus" -CONF_PINS = "pins" -CONF_PULL_MODE = "pull_mode" - -MODE_UP = "UP" -MODE_DOWN = "DOWN" -MODE_DISABLED = "DISABLED" - -DEFAULT_INVERT_LOGIC = False -DEFAULT_I2C_ADDRESS = 0x20 -DEFAULT_I2C_BUS = 1 -DEFAULT_PULL_MODE = MODE_DISABLED - -_SENSORS_SCHEMA = vol.Schema({cv.positive_int: cv.string}) - -PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( - { - vol.Required(CONF_PINS): _SENSORS_SCHEMA, - vol.Optional(CONF_INVERT_LOGIC, default=DEFAULT_INVERT_LOGIC): cv.boolean, - vol.Optional(CONF_PULL_MODE, default=DEFAULT_PULL_MODE): vol.All( - vol.Upper, vol.In([MODE_UP, MODE_DOWN, MODE_DISABLED]) - ), - vol.Optional(CONF_I2C_ADDRESS, default=DEFAULT_I2C_ADDRESS): vol.Coerce(int), - vol.Optional(CONF_I2C_BUS, default=DEFAULT_I2C_BUS): cv.positive_int, - } -) - -_LOGGER = logging.getLogger(__name__) - - -def setup_platform( - hass: HomeAssistant, - config: ConfigType, - add_entities: AddEntitiesCallback, - discovery_info: DiscoveryInfoType | None = None, -) -> None: - """Set up the PCAL9535A binary sensors.""" - _LOGGER.warning( - "The PCAL9535A I/O Expander integration is deprecated and will be removed " - "in Home Assistant Core 2022.4; this integration is removed under " - "Architectural Decision Record 0019, more information can be found here: " - "https://github.com/home-assistant/architecture/blob/master/adr/0019-GPIO.md" - ) - - pull_mode = config[CONF_PULL_MODE] - invert_logic = config[CONF_INVERT_LOGIC] - i2c_address = config[CONF_I2C_ADDRESS] - bus = config[CONF_I2C_BUS] - - pcal = PCAL9535A(bus, i2c_address) - - binary_sensors = [] - pins = config[CONF_PINS] - - for pin_num, pin_name in pins.items(): - pin = pcal.get_pin(pin_num // 8, pin_num % 8) - binary_sensors.append( - PCAL9535ABinarySensor(pin_name, pin, pull_mode, invert_logic) - ) - - add_entities(binary_sensors, True) - - -class PCAL9535ABinarySensor(BinarySensorEntity): - """Represent a binary sensor that uses PCAL9535A.""" - - def __init__(self, name, pin, pull_mode, invert_logic): - """Initialize the PCAL9535A binary sensor.""" - self._name = name or DEVICE_DEFAULT_NAME - self._pin = pin - self._pin.input = True - self._pin.inverted = invert_logic - if pull_mode == "DISABLED": - self._pin.pullup = 0 - elif pull_mode == "DOWN": - self._pin.pullup = -1 - else: - self._pin.pullup = 1 - self._state = None - - @property - def name(self): - """Return the name of the sensor.""" - return self._name - - @property - def is_on(self): - """Return the cached state of the entity.""" - return self._state - - def update(self): - """Update the GPIO state.""" - self._state = self._pin.level diff --git a/homeassistant/components/pcal9535a/manifest.json b/homeassistant/components/pcal9535a/manifest.json deleted file mode 100644 index fc821426542..00000000000 --- a/homeassistant/components/pcal9535a/manifest.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "domain": "pcal9535a", - "name": "PCAL9535A I/O Expander", - "documentation": "https://www.home-assistant.io/integrations/pcal9535a", - "requirements": ["pcal9535a==0.7"], - "codeowners": ["@Shulyaka"], - "iot_class": "local_polling", - "loggers": ["pcal9535a", "smbus_cffi"] -} diff --git a/homeassistant/components/pcal9535a/switch.py b/homeassistant/components/pcal9535a/switch.py deleted file mode 100644 index 70da61a597a..00000000000 --- a/homeassistant/components/pcal9535a/switch.py +++ /dev/null @@ -1,119 +0,0 @@ -"""Support for switch sensor using I2C PCAL9535A chip.""" -from __future__ import annotations - -import logging - -from pcal9535a import PCAL9535A -import voluptuous as vol - -from homeassistant.components.switch import PLATFORM_SCHEMA, SwitchEntity -from homeassistant.const import DEVICE_DEFAULT_NAME -from homeassistant.core import HomeAssistant -import homeassistant.helpers.config_validation as cv -from homeassistant.helpers.entity_platform import AddEntitiesCallback -from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType - -CONF_INVERT_LOGIC = "invert_logic" -CONF_I2C_ADDRESS = "i2c_address" -CONF_I2C_BUS = "i2c_bus" -CONF_PINS = "pins" -CONF_STRENGTH = "strength" - -STRENGTH_025 = "0.25" -STRENGTH_050 = "0.5" -STRENGTH_075 = "0.75" -STRENGTH_100 = "1.0" - -DEFAULT_INVERT_LOGIC = False -DEFAULT_I2C_ADDRESS = 0x20 -DEFAULT_I2C_BUS = 1 -DEFAULT_STRENGTH = STRENGTH_100 - -_SWITCHES_SCHEMA = vol.Schema({cv.positive_int: cv.string}) - -PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( - { - vol.Required(CONF_PINS): _SWITCHES_SCHEMA, - vol.Optional(CONF_INVERT_LOGIC, default=DEFAULT_INVERT_LOGIC): cv.boolean, - vol.Optional(CONF_STRENGTH, default=DEFAULT_STRENGTH): vol.In( - [STRENGTH_025, STRENGTH_050, STRENGTH_075, STRENGTH_100] - ), - vol.Optional(CONF_I2C_ADDRESS, default=DEFAULT_I2C_ADDRESS): vol.Coerce(int), - vol.Optional(CONF_I2C_BUS, default=DEFAULT_I2C_BUS): cv.positive_int, - } -) - -_LOGGER = logging.getLogger(__name__) - - -def setup_platform( - hass: HomeAssistant, - config: ConfigType, - add_entities: AddEntitiesCallback, - discovery_info: DiscoveryInfoType | None = None, -) -> None: - """Set up the PCAL9535A devices.""" - _LOGGER.warning( - "The PCAL9535A I/O Expander integration is deprecated and will be removed " - "in Home Assistant Core 2022.4; this integration is removed under " - "Architectural Decision Record 0019, more information can be found here: " - "https://github.com/home-assistant/architecture/blob/master/adr/0019-GPIO.md" - ) - - invert_logic = config[CONF_INVERT_LOGIC] - i2c_address = config[CONF_I2C_ADDRESS] - bus = config[CONF_I2C_BUS] - - pcal = PCAL9535A(bus, i2c_address) - - switches = [] - pins = config[CONF_PINS] - for pin_num, pin_name in pins.items(): - pin = pcal.get_pin(pin_num // 8, pin_num % 8) - switches.append(PCAL9535ASwitch(pin_name, pin, invert_logic)) - - add_entities(switches) - - -class PCAL9535ASwitch(SwitchEntity): - """Representation of a PCAL9535A output pin.""" - - def __init__(self, name, pin, invert_logic): - """Initialize the pin.""" - self._name = name or DEVICE_DEFAULT_NAME - self._pin = pin - self._pin.inverted = invert_logic - self._pin.input = False - self._state = self._pin.level - - @property - def name(self): - """Return the name of the switch.""" - return self._name - - @property - def should_poll(self): - """No polling needed.""" - return False - - @property - def is_on(self): - """Return true if device is on.""" - return self._state - - @property - def assumed_state(self): - """Return true if optimistic updates are used.""" - return True - - def turn_on(self, **kwargs): - """Turn the device on.""" - self._pin.level = True - self._state = True - self.schedule_update_ha_state() - - def turn_off(self, **kwargs): - """Turn the device off.""" - self._pin.level = False - self._state = False - self.schedule_update_ha_state() diff --git a/requirements_all.txt b/requirements_all.txt index 2b7667e524f..76824c14796 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1171,9 +1171,6 @@ panacotta==0.1 # homeassistant.components.panasonic_viera panasonic_viera==0.3.6 -# homeassistant.components.pcal9535a -pcal9535a==0.7 - # homeassistant.components.dunehd pdunehd==1.3.2