I’m exploring and learning about the Ubidots platform. What is the purpose of functions? It seems like functions just, in the end, send a request to https://industrial.api.ubidots.com/api/v1.6/devices. So why not just send my original request to that URL instead of the URL for my function?
The UbiFunctions module is a FaaS (Functions as a Service) feature built-in directly into Ubidots. It allows to exploit the power of high level programming languages such Python and NodeJS to develop your own scripts that can:
- Serve as a custom API endpoint. This is particular useful when your making cloud-to-cloud integrations where the sent payload (JSON or hexadecimal frame) isn’t compatible with Ubidots. You’d first send the data to a function, parse it and convert it to an Ubidots compatible JSON to finally post it to your account through the
/devicesendpoint, just as you’ve pointed out. Examples include connecting LoRaWAN devices through a Network Server (TheThingsStack is one), or Sigfox devices.
- Perform analytics that aren’t included in the Synthetic variables modules using the data stored in your devices.
- Connect with other platforms.
This article might help provide additional clarification
@dsr Ah, I see. It’s a layer of indirection for integrating, enhancing/adding features to a data payload, and… pretty much anything since it’s FaaS. Very neat, I love this choice by Ubidots and how it sits in the architecture/ecosystem.
Thank you for the explanation.