CloudLocate getting started

Last update: November 14th, 2023

Introduction

CloudLocate enables seamless location to locate device even in the most challenging environment. The service uses IoT device measurements (GNSS, Wi-Fi and Cellular) to calculate the location in the cloud and deliver it directly to the enterprise.

Benefits

The service provides several benefits:

Basic principles

CloudLocate works in a very simple way. The service supports three types of data measurements:

The devices gets the above listed data  and send them to the service endpoint. The CloudLocate  engine, through a sophisticated algorithm, estimates the most accurate position possible based on the input data quality. The estimated position can be sent directly to your cloud application to minimize the energy consumption, or back to the device if needed or even directly to the end user, after additional data  manipulation

According to the device design you can decide to send any mix of the listed data, for example:

Typical applications

CloudLocate is the most appropriate solution in the asset tracking use cases with energy-constrained devices where it is hard to get a location due to tough environmental conditions.

Container Tracking

Livestock tracking

Industrial tools tracking​ 

Small asset/parcel tracking​ 

Service access modes

You can access to the service using  the most convenient option for your existing architecture:

If you are using one of u-blox  IoT Communication-as-a-Service solution like MQTT Anywhere, MQTT Now, MQTT Here or MQTT Flex, the most efficient way to leverage CloudLocate is using the premium extension.

With Data Flow Manager you can build your own logic or manipulate data, by creating a flow made up by multiple nodes (premium extension), each of them implementing a basic functionality

The Flow Editor provides a simple drag and drop interface where you can quickly build powerful flows to work with payloads published by your Things, and get that data out to wherever you need it. 

How to generate a RAW snapshots

Regardless which service interface you plan to use (Service to Service, Device to Service, Location in Cloud), you can generate the the RAW snapshot (also named service payload)  containing the information for location  in the same way. 

A typical example of a payload containing all the three sources is reported here below. 

Note: When only GNSS is needed there is a more optimized format for low-bandwidth networks that allows to minimize the payload size from 12 to 50 bytes.

{

  "CellMeasurements": {

    "HomeMCC": 234,

    "HomeMNC": 50,

    "CellMCC": 234,

    "CellMNC": 10,

    "RAT": "LTE",

    "NetworkCells": [

      {

        "CellIdentifier": 137788526,

        "AreaCode": 14354,

        "SignalStrength": -98,

        "Code": 201,

        "Frequency": 6400,

        "IsServingCell": true

      },

      {

        "SignalStrength": -90,

        "Code": 393,

        "Frequency": 6400

      }

    ]

  },

  "WiFiMeasurements": [

    {

      "BSSID": "9002184725b4",

      "SignalStrength": -69,

      "Channel": 1

    },

    {

      "BSSID": "04a222198f15",

      "SignalStrength": -69,

      "Channel": 1

    }

  ],

  "GNSSMeasurements": {

    "Payload": "tWIChjIAG/M7CcimDqBmvpr+A9pGYVEPdxhiyIqPToNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAA=="

  }

}

In the next sections we will look in detail at each these data.  Please remind that you can use any combination of the RAW measurements or just a single one.

Cellular measurement

Once the module have established the connection to the network, you need to retrieve the relevant cells information using the appropriate AT commands, that are vendor dependent:

Notes

The Cellular RAW data guide illustrates in details which are the relevant AT Commands to get the information form the modem, and how to manipulate the output in order to be compliant to CloudLocate specification

A payload containing only cellular scan looks like the following one:

{

  "RequestId": "82cb34c9-88c9",

  "CellMeasurements": {

    "HomeMCC": 234,

    "HomeMNC": 50,

    "CellMCC": 234,

    "CellMNC": 10,

    "RAT": "LTE",

    "NetworkCells": [

      {

        "CellIdentifier": 137788526,

        "AreaCode": 14354,

        "SignalStrength": -98,

        "Code": 201,

        "Frequency": 6400,

        "IsServingCell": true

      },

      {

        "SignalStrength": -90,

        "Code": 393,

        "Frequency": 6400

      }

    ]

  }

}


Wi-Fi measurement

This is the list of Wi-Fi access points (AP) visible to the device in a given location. For privacy reason, you shall send a minimum of 2 access points, providing the three mandatory parameters for each AP:

The Wi-Fi RAW data guide illustrates in details which are the relevant AT Commands to get the information form the Wi-Fi modem, and how to manipulate the output in order to be compliant to CloudLocate specification.

A typical payload containing only Wi-Fi Raw measurements looks like the following one (2 Access points)

{

   "RequestId": "82cb34c9-88c9",

"WiFiMeasurements": [

    {

      "BSSID": "9002184725b4",

      "SignalStrength": -69,

      "Channel": 1

    },

    {

      "BSSID": "04a222198f15",

      "SignalStrength": -69,

      "Channel": 1

    }

  ]

}

GNSS raw measurement

 A GNSS raw measurement consists in a snapshot of the visible satellites, that includes the relevant values to estimate the position.  This snapshot is provided in output by the GNSS receiver as a UBX message generally few seconds (3-10 s) after the cold start, and is processed by the cloud service to estimate a position

The main advantages are:

The snapshot it's a binary message, 20-50 bytes long, and it can be added as it is (just a base64 encoding is required) to the CloudLocate payload.

An example here below reports a payload containing only the GNSS raw measurement

{

"RequestId": "82cb34c9-88c9",

"GNSSMeasurements":{   

"Payload": "tWIChjIAG/M7CcimDqBmvpr+A9pGYVEPdxhiyIqPToNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AyAA==",

   "DateTime": "2023-04-05T12:50:16"

  }

}

In addition, there is also the DateTime parameter that is required only whenever the snapshot is sent to the cloud service with a delay greater than 60 seconds from when it has been generated by the receiver. This allow you also to save data in the device and do a postprocessing at a later time. 

To learn how to generate this message using a u-blox GNSS module (M10 generation), please refer GNSS raw measurement guide.

Request identifier 

In all the examples below we reported also the optional parameter RequestId. This value will be returned in the service response jointly to the estimated position. It's an optional alphanumeric string that can be used to indicate a device identifier and/or request identifier. The usage of this parameter is mainly useful when:


How to estimate a position

Prerequisites

To use the service you need

In case you are using the u-blox MQTT Anywhere communication service, you can access to the service through a Node in the Data Flow Manager.

u-blox service platform sign-up

To access CloudLocate, you first need to sign-up/sign-in  in the u-blox Thingstream service delivery platform that is the service  management console and allows to manage the entire suite of u-blox services.

Sign-up is free, quick and easy.  Just go to the portal and register for free with your company information. If you already have a Thingstream domain, you do not need to register again.

Obtain the service credentials

Service to Service

The Service to Service access requires a credential (username & password) to authenticate the API. These credential are fleet based. The platform also allow you to:

Detailed information are available  in the CloudLocate Service to Service guide

Device to Service

Device to service access implies that the device sends the service payload directly to the service endpoint without any transit though a cloud application. For this reason, the credentials (username and password) are device based and data shall be transmitted using MQTT protocol. 

The credential provisioning in the device can leverage a Zero Touch Provisioning solution that allows you to obtain in a secure manner the device credentials and be immediately up and running. 

Detailed information are available  in the CloudLocate Device to Service guide

Premium Extension (Flow)

If you are using one of u-blox  IoT Communication-as-a-Service solution like MQTT Anywhere, MQTT Now, MQTT Here or MQTT Flex please refer to this guide to know how to use CloudLocate service leveraging the flows

Location estimation

A succesfull location response provides the position estimation as long as the date and time of the request, a copy of the RequestId if provided in input, and a LocationSource that indicates which source (Cellular, Wi-Fi or GNSS) have been used for the provided estimation.

{

    "Location": {

        "Lat": 51.496268,

        "Lon": -0.0949408,

        "Unc68": 27.0

    },

    "DateTime": "2023-09-14T13:02:01",

    "RequestId": "82cb34c9-88c9",

    "LocationSource": "WiFi"

}

It's important to note that the service implements an Hybrid cloud positioning, to maximize the fix rate and provide always the best possible position.