docs: async def async_change_device(
              self, device_id: int, group_number: int, unit_number: int,
              enable_status: ESFlags, switches: SwitchFlags) -> None:
          """
          Change settings for a device on the base unit.
  
          :param device_id: unique identifier for the device to be changed
          :param group_number: group number the device is to be assigned to
          :param unit_number: unit number the device is to be assigned to
          :param enable_status: flags indicating settings to enable
          :param switches: indicates switches that will be activated when device is triggered
          """
  
          # Lookup device using zone to obtain an accurate index and current
          # values, which will be needed to perform the change command
          device = self._devices[device_id]
  
          # If it is a Special device, automatically use the other function
          # instead (without changing any of the special fields)
          if isinstance(device, SpecialDevice):
              await self.async_change_special_device(
                  device_id, group_number, unit_number, enable_status, switches,
                  device.special_status, device.high_limit, device.low_limit,
                  device.control_high_limit, device.control_low_limit)
              return
  
          response = await self._protocol.async_execute(
              GetDeviceCommand(device.category, device.group_number, device.unit_number))
          if isinstance(response, DeviceInfoResponse):
              response = await self._protocol.async_execute(
                  ChangeDeviceCommand(
                      device.category, response.index, group_number, unit_number,
                      enable_status, switches))
              if isinstance(response, DeviceSettingsResponse):
                  device._handle_response(response) # pylint: disable=protected-access
          if isinstance(response, DeviceNotFoundResponse):
              raise ValueError("Device to be changed was not found")