Requirements
An Ubidots active account
An active account in the TTS console
An cellphone supporting either Google Play Store or AppStore as well as Bluetooth.
1. Install SenseCAP Mate app and configure the tracker
Scan the following QR code. It will take you to Seeed Studio's SenseCAP Mate app official download page.
Once it is installed, enable the Bluetooth on your cellphone and launch the app. If you don't have an account already, you will have to register to use the app.
After that, press and hold the tracker's button for at least 3 seconds or until the LED starts flashing. Then, from the list of devices, select Tracker T1000
Tap on your device:
Go to the settings tab and then LoRa tab. There select as platform Helium and select the Frequency plan according to your requirements, also, make sure to copy the Device EUI, APP EUI and APP Key for you are going to need it in later steps. Once finished, tap the Send button to save the settings.
2. Register the tracker on TTS LNS
Login to your TTN console and go to your applications, then, either create or select the application in which you wish to place the device and click on +Add end device:
Select Enter end device specifics manually under the Input method section and then select the settings such as Frequency plan, LoRaWAN version, etc according to your setup/requirements.
After filling in the JoinEUI( formerly APPEUI) a few other fields will be displayed. Fill their required info and then click the Register end device button:
After completing this step, your device will be already registered on TTS LNS.
3. Configure the Payload formatter
Go to Payload formatters->Uplink. Then, in the drop-down menu labeled Formatter type select Custom Javascript formatter and paste the official decoder for this device provided by Seeed Studio. After pasting the decoder, scroll down and hit the Save changes button.
4. Create the Ubidots Plugin and Decoder
Go to your Ubidots account in the Devices section and click on Plugins, then create a new The Things Stack plugin:
Fill in the required fields for creating the plugin such as the Ubidots device type and the Ubidots Token. Once created the plugin, go to the decoder section, delete all the code and replace it for the following:
const HOTSPOT_INFO = false;
function handleErrorIfExists(data){
const error = 'error' in data;
if (error) {
const errorMsg = { "error": { "value": data.errorCode, "context" : { "reason": data.error } } };
return errorMsg;
}
return false;
}
function addLat(lat, ubidotsPayload){
ubidotsPayload.position.context.lat = lat;
}
function addLng(lng, ubidotsPayload){
ubidotsPayload.position.context.lng = lng;
}
const coordinateActions = {
"Longitude": addLng,
"Latitude": addLat,
}
const assignPayloadKeys = (data, ubidotsPayload) => {
const { type, measurementValue } = data;
if (type === "Longitude" || type === "Latitude") {
if (!ubidotsPayload.position) {
ubidotsPayload.position = { "value": 1, "context": { "lat": undefined, "lng": undefined } };
}
coordinateActions[type](measurementValue, ubidotsPayload);
}
else if (data.type === "Timestamp") {
ubidotsPayload.timestamp = data.measurementValue;
}
else {
ubidotsPayload[type] = measurementValue;
}
};
function buildUbidotsPayload(data){
const ubidotsPayload = {};
data.forEach(innerData => {
innerData.forEach(innerInnerData => {
assignPayloadKeys(innerInnerData, ubidotsPayload);
});
});
return ubidotsPayload;
}
async function formatPayload(args){
const data = args.uplink_message.decoded_payload.messages;
let ubidotsPayload = {};
const error = handleErrorIfExists(data[0][0]);
if (error) return error;
if (HOTSPOT_INFO) {
const { hotspots, port, fcnt } = args;
const { snr, rssi } = hotspots[0];
Object.assign(ubidotsPayload, { SNR: snr, RSSI: rssi, port, 'Frame Counter': fcnt });
}
ubidotsPayload = buildUbidotsPayload(data);
console.log(ubidotsPayload);
return ubidotsPayload;
};
module.exports = { formatPayload };
5. Connect the integration to Ubidots
Go to the application created on TTN, and click Integrations at the left side of the screen. Then, click on Webhooks and then +Add webhook:
Search for Ubidots webhook among the different partners:
Edit the following settings:
Webhook ID: set a meaningful name, it should be only lower case
Plugin ID: It is the last portion of your Ubidots plugin’s “HTTPs Endpoint URL” after the “/” E.g. if your endpoint’s URL is “https://dataplugin.ubidots.com/api/web-hook/lN4s2dlb4IgPgpp4Xeoq02stXcE=” then your plugin ID is “lN4s2dlb4IgPgpp4Xeoq02stXcE=”
Ubidots Token: your Ubidots Token.
Scroll down to the “Create Ubidots webhook” button and click on it.
After completing this step, data should be arriving into the Ubidots plugin as well as the device.