text: """Allows to configure a switch using RPi GPIO."""
  import voluptuous as vol
  
  from openpeerpower.components import rpi_gpio
  from openpeerpower.components.switch import PLATFORM_SCHEMA
  from openpeerpower.const import DEVICE_DEFAULT_NAME
  import openpeerpower.helpers.config_validation as cv
  from openpeerpower.helpers.entity import ToggleEntity
  from openpeerpower.helpers.reload import setup_reload_service
  
  from . import DOMAIN, PLATFORMS
  
  CONF_PULL_MODE = "pull_mode"
  CONF_PORTS = "ports"
  CONF_INVERT_LOGIC = "invert_logic"
  
  DEFAULT_INVERT_LOGIC = False
  
  _SWITCHES_SCHEMA = vol.Schema({cv.positive_int: cv.string})
  
  PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
      {
          vol.Required(CONF_PORTS): _SWITCHES_SCHEMA,
          vol.Optional(CONF_INVERT_LOGIC, default=DEFAULT_INVERT_LOGIC): cv.boolean,
      }
  )
  
  
  def setup_platform(opp, config, add_entities, discovery_info=None):
      """Set up the Raspberry PI GPIO devices."""
      setup_reload_service(opp, DOMAIN, PLATFORMS)
  
      invert_logic = config.get(CONF_INVERT_LOGIC)
  
      switches = []
      ports = config.get(CONF_PORTS)
      for port, name in ports.items():
          switches.append(RPiGPIOSwitch(name, port, invert_logic))
      add_entities(switches)
  
  
  class RPiGPIOSwitch(ToggleEntity):
      """Representation of a  Raspberry Pi GPIO."""
  
      def __init__(self, name, port, invert_logic):
          """Initialize the pin."""
          self._name = name or DEVICE_DEFAULT_NAME
          self._port = port
          self._invert_logic = invert_logic
          self._state = False
          rpi_gpio.setup_output(self._port)
          rpi_gpio.write_output(self._port, 1 if self._invert_logic else 0)
  
      @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
  
      def turn_on(self, **kwargs):
          """Turn the device on."""
          rpi_gpio.write_output(self._port, 0 if self._invert_logic else 1)
          self._state = True
          self.schedule_update_op_state()
  
      def turn_off(self, **kwargs):
          """Turn the device off."""
          rpi_gpio.write_output(self._port, 1 if self._invert_logic else 0)
          self._state = False
          self.schedule_update_op_state()
  