How to Integrate TagoIO with a Generic HTTPS Endpoint

How to Integrate TagoIO with a Generic HTTPS Endpoint

@Vitor Lima

Here is a quick tutorial showing how to add any device with an HTTPs forwarder route to your account.

As this integration is made to be generic, it does include more than one way to receive data, and you can try to customize it for your own use case.

With this integration you may be able to:

  • Integrate unsupported LNS with TagoIO.
  • Integrate Gateway HTTPs forward feature with TagoIO.
  • Integrate with any other service that has HTTPs forward feature.

Also, take in mind that this integration method currently only supports data from:

  • Querystring of the request.
  • Body with content-type as application/JSON.

As this is a generic integration, it will not support downlink. But you can always use other tutorials on downlink to perform HTTPs requests using analysis and do your own downlink support if needed.



1. First go to your TagoIO account; you will need to create an Authorization key here

On this page, you will also see a field for Additional Parameter, which you can edit later. For this integration only, you can set up the additional parameter field which will contain:

  • serial: Device EUI or serial number
  • payload: your payload, in hexadecimal preferably.
  • port: the port your sensor is using.

The integration will automatically search for the specified fields in the body and querystring of the request. If the additional parameter is not set, TagoIO will try to automatically identify the parameters from your request by using one of the most common keys used by other integrations.


Supposing your integration is sending data as a JSON format like:
{ devaddr: "12BAB34B54", payload_raw: "0011AA", fport: 10 }

The way you need to write the additional parameter is as follows:

  • serial=devaddr;payload=payload_raw;port=fport

Also, note that additional parameters in the JSON will be automatically converted to variables for your device at TagoIO. The additional parameter is just to specify what we think are the most important parameters for the integration to work properly.



2. Now you need to go to your service and set up your HTTPs forward feature. There are two ways you can set this up:

Authorization in the header of the Request

And setup the following headers

  • Header key: Authorization,
  • Header value: The authorization key generated at TagoIO in step 1 of this tutorial.

Authorization in the Querystring
In this case, you can replace the “Your-Authorization-Key” in the URL with the authorization key generated in step 1 of this tutorial.



3. In some cases you can set up the format of the JSON body on your service before it forwards to TagoIO. If this is your case, we recommend setting it up as follows:

{
  "serial": "{device_eui}",
  "payload": "{payload}",
  "port": {port},
  "latitude": {latitude},
  "longitude": {longitude}
}

You can also send any other parameter to this integration, as TagoIO will try to automatically convert it to a variable.
You can freely remove unwanted parameters as well. The only required parameter for the integration to work is the serial with the authorization from step 2 of this tutorial.



4. Now, you just need to add the Device to your TagoIO account.
Go to Devices/Generic Endpoint and choose the device connector and enter your device EUI / serial.


If your integration is already decoding your data before sending it to TagoIO, make sure to use the connector Generic Sensor.


If not, for the supported TagoIO decoders to work, it requires you to have set the additional parameter correctly in your authorization from what was specified in this tutorial.
You can also do your own decoding by following our guide about payload parser: In-depth guide to Payload Parser


Done! Just turn your device on, and you will see data arriving in your new dashboard.
If data doesn’t show up in your TagoIO account (use the Live Inspector tab in your Device to see data arriving), also make sure you can see data in your service first, and if it’s not throwing any error.