Thanks for posting!
We would definitely recommend using the RPC API and specifically the 'read' procedure. That procedure can specify a window of time and a limit to the number of datapoints returned.
The limitation that you will have to keep in mind is that this call must be made over HTTP. We are agnostic as to what is used to make the call and where it comes from.
If your external application is capable of making requests, by all means arm it with your device's CIK and instruct it to send RPC API requests.
Otherwise a script running on another machine to download and then upload information is a good way to go about this.
Here is an old example on how to do this in Python: https://github.com/exosite-garage/archive_data
Don't like Python? You can check here if we have a library that wraps our RPC API in a language you prefer.
This is a common use case of Exosite, let us know if you have any trouble.
Happy to help,