CloudLocate

getting started

Introduction

CloudLocate enables positioning in the cloud to extend the life of energy-constrained IoT applications, with up to 10X energy savings over a standalone GNSS power savings approach. The service uses IoT device measurements to calculate a location and deliver it to your cloud enterprise. CloudLocate is ideally suited for IoT asset tracking applications that require large power autonomy, a few position updates per day, reasonable position accuracy, and for which location is needed in the cloud.

Take advantage of:

  • Up to 10X energy savings over stand-alone GNSS power savings approach

  • Expand market reach by building enterprise solutions that leverage CloudLocate

  • Guaranteed global availability and quality of service

  • End-to-end solution works with any connectivity technology

  • Increase device fielded lifetime and lower operational burdens

u-blox service platform sign-up

u-blox Thingstream service delivery platform provides a management console that you can use to enable and manage the entire suite of u-blox services , including the Location services and the Location Things, that is the logical representation of your location device in the Thingstream platform.

Sign-up is free, quick and easy. Just go to the management console and register with your company information. If you already have a Thingstream domain for Communication-as-a-Service (MQTT Anywhere, MQTT Here or MQTT Now), or for Security-as-a-Service you do not need to register again.

Still need help?

If you need more help or have any questions, please send an email to thingstream-support@u-blox.com .

Service configuration

There two options for the service activation:

  1. Create a Location Thing for each of your device. This option can be used if you do not have in plan to use any of the Communication services (MQTT Anywhere, MQTT Here or MQTT Now). It allows the device to send the properly formatted message to the CloudLocate service that will publish the estimated position in a specific MQTT topic.

  2. Use the CloudLocate node in the Flows section of the Thingstream platform. The Flows section allows you an effective and easy manipulation of any data. For more information look at the Data Flow Manager documentation.

CloudLocate Location Thing

In the menù bar of the Thingstrem platform select the Location Services item and then click on Add Location Thing button on the upper right corner of the screen.

Then select the Add CloudLocate Thing, and give it a name.

After the Thing creation, you shall associate a plan to it. You can use the Developer plan (100 free request per device per month, capped) or purchase a plan using the suggested link. Pricing is available here.

Finally you are suggested to look at the credential to be used in your MQTT client.

In the Permission section of the Thing you can find:

  • the MQTT topic where the device shall publish the measure: CloudLocate/GNSS/request

  • the MQTT topic to which the cloud application shall subscribe to retrieve the estimated position: CloudLocate/{device}/GNSS/response

CloudLocate Node

The second way to use the service is to rely on the CloudLocate node in the Data Flow Manager accessible through the Flow section on the left side menù. The Flow Editor provides a simple drag and drop interface where you can quickly build powerful work flows to work with payloads published by your Things, and get that data out to wherever you need it.

Just go on Flow section an click on the upper right corner button to create a new flow. Assign it a name and then create your flow adding CloudLocate node and other nodes as well. On the right side you can find the description of the required input and the output format

The following picture shows an example of how to build a flow that get in input a measure reading the message on a topic, calculate the position and send it by email.

Test the service

Using a Location Thing

After the creation of your Location Thing , you can test the service using any MQTT client configured as described above. You do not need any hardware to generate the example measure, just use the one below:

Sample measure

Measurement = {

"body": "tWICFAwCAQAAAChRyA5Y1mwPeBrIDihRyA4oUcgOAAAAAAAAAAAAABQuAAAAAAAAAAAAGhMBD0wAAPBPAACpAO4CMk8FAAAuAAAGAyEBGkcAAB9MAADmAQsDanseAAAPAAAAGSEBghwAAPYdAAA8ACoAzuABAAAPAAAGARYB4/f//1T3///rABoCyL8OAAAxAAAFAxkBiRgAAMkZAADuAIMB43QHAAAeAAAAERQB2iAAAIYiAAAOAcADn3kIAAA/AAAABBsBSEgAAPhLAAB/ATcCb/8LAAASAAAGEiQBnD4AANhCAAAeAXcB1O4RAAAKAAAGDBoCklkAALJfAACoAYIAU48aAAAXAAAGChQB4tz//5Da///hAQkBNiMeAAAxAAAGAiABVS4AAHMxAAByALUBayoHAAASAAAGEQ0BbP///2L///82AX8As2sTAAA0AAAAAyEBsUgAAGZMAADwAE4DgIgHAAAPAAAAChgB6OD//1Lf//9sAakALGQLAAAjAAAACxwBGeb//8bk//82A00BCbkZAAAPAAAAFhsBxDcAAJw6AACFAT0Chy8MAAASAAAAICIBHun///Tn//8dAeQDBfIIAAAPAAAAASEBDBUAAB8WAADLA28DeGYeAAAPAAAAHxsC0xQAAOMVAACZAesBC88MAAAhAAAAFQwBy/n//3r5//9ZAxkA5s4aAAA0AADQW7ViAhQkAgEAAAAQVcgOQNpsD2AeyA4QVcgOEFXIDgAAAAAAAAAAAAAVLgAAAAAAAAAAABoTAQtMAADsTwAApwBSAPQ5BQAALgAABgMhASFHAAAnTAAA5QETAoNnHgAADwAAABkhAYgcAAD9HQAAOwAuANPYAQAADwAABgEWAc/3//8/9///6wCxAinCDgAALgAABQMZAYsYAADLGQAA7QAYAg1uBwAAHAAAABEUAdogAACGIgAADQEyA4BwCAAAPwAAAAQaAUdIAAD3SwAAfQEbADHrCwAAEgAABhIkAaI+AADeQgAAHQEXAU7dEQAACgAABgwZApFZAACxXwAApgE/Ajt2GgAAFwAABgoTAaDc//9J2v//4QGAAxktHgAALgAABgsPApYeAACwIAAALQFAAnPiEgAAOgAABgIfAVouAAB4MQAAcQB4AnIdBwAAEgAABhEKAWz///9i////NgGIANlrEwAANAAAAAMhAbZIAABrTAAA7gAkASZ0BwAADwAAAAoYAeng//9T3///bQH3AMtsCwAAIQAAAAsbARzm///K5P//NwPnAEDAGQAADwAAABYbAcY3AACfOgAAgwF7Av8fDAAAEgAAACAiASjp///95///HgEYA2/4CAAACgAAAAEhARAVAAAjFgAAywN+AJZgHgAADwAAAB8bAc0UAADdFQAAmAH+AjDJDAAAGgAAABUPAdT5//+D+f//WQPtAI/QGgAALgAAo7q1YgIUJAIBAAAA+FjIDijebA9IIsgO+FjIDvhYyA4AAAAAAAAAAAAAFS4AAAAAAAAAAAAaEgHSSwAAsE8AAKQAtAGxJAUAADQAAAYDIQEkRwAAKkwAAOQBHAGbUx4AAA8AAAAZIAGEHAAA+B0AADoAMQDW0AEAAA8AAAYBFgLf9///UPf//+sARAN1xA4AAC4AAAUDGQGNGAAAzhkAAOwAsQI9ZwcAABsAAAARFAHaIAAAhiIAAAwBnAJSZwgAAD8AAAAEGgFLSAAA+0sAAHoB8AHX1gsAABIAAAYSJAGfPgAA20IAABwBuADJyxEAAAoAAAYMGQKRWQAAsV8AAKUBAAAwXRoAACIAAAYKEwGr3P//Vdr//+IB9wH7Nh4AAC4AAAYLDwKcHgAAtyAAAC0BHQDj2RIAADEAAAYCHwFdLgAAezEAAHAAOwN2EAcAABIAAAYRCwJs////Yv///zYBkgAAbBMAADQAAAADIQG5SAAAb0wAAOsA+wLOXwcAAA8AAAAKGAHn4P//Ud///24BUgGCdQsAACEAAAALGwEY5v//xuT//zgDeQBlxxkAABIAAAAWGwHLNwAApDoAAIEBswJsEAwAAA8AAAAgIgEo6f///uf//x8BSgLU/ggAAAoAAAABIQEOFQAAIRYAAMoDjQGyWh4AAA8AAAAfHALRFAAA4RUAAJgBEQBUwwwAABQAAAAVEgLE+f//c/n//1kD0AFV0hoAAC4AAPVQtWICFCQCAQAAAOBcyA4Q4mwPMCbIDuBcyA7gXMgOAAAAAAAAAAAAABUuAAAAAAAAAAAAGhEBDkwAAPBPAAChAB4DgQ8FAAAxAAAGAyEBKkcAADFMAADjASQAsz8eAAAPAAAAGSEBiBwAAP0dAAA5ADMA2sgBAAAPAAAGARcCz/f//z73///rANUDusYOAAAuAAAFAxkBlhgAANcZAADrAEUDY2AHAAAfAAAAERUB2iAAAIYiAAALAQkCKl4IAAA/AAAABBoBUUgAAAFMAAB3AcsDiMILAAASAAAGEiQBoT4AAN1CAAAbAVkARLoRAAAKAAAGDBgBlVkAALVfAACjAbkBCUQaAAAlAAAGChIBwtz//23a///jAXAA5EAeAAAxAAAGCw8Cbh4AAIUgAAAsAfcBRtESAAA0AAAGAh8BYS4AAH8xAABvAP4DfQMHAAASAAAGEQwCbP///2L///82AZsAImwTAAA0AAAAAyIBvkgAAHRMAADpANAAdEsHAAAKAAAAChgB5+D//1Hf//9vAa8BP34LAAAiAAAACxoBHub//8zk//85Aw4AkM4ZAAASAAAAFhsByjcAAKI6AAB/AesC1wAMAAAPAAAAICIBLOn//wLo//8gAXsBOQUJAAAKAAAAASABDhUAACEWAADJA5wCz1QeAAAPAAAAHxwB0RQAAOAVAACXAScBfr0MAAASAAAAFRUCv/n//235//9ZA7oCK9QaAAAuAAAsHbViAhQkAgEAAADIYMgO+OVsDxgqyA7IYMgOyGDIDgAAAAAAAAAAAAAVLgAAAAAAAAAAABoQAilMAAALUAAAnwCGAEv6BAAAOgAABgMiAS5HAAA0TAAA4QEsA8grHgAADwAAABkhAYkcAAD9HQAAOAA1ANzAAQAADwAABgEXAsz3//879///7ABmAADJDgAALgAABQMZAZcYAADYGQAA6gDbA45ZBwAAIQAAABEUAfkgAACoIgAACgFzAf1UCAAALgAAAAQZAVdIAAAHTAAAdQGmATiuCwAAEgAABhIkAaM+AADfQgAAGQH6A76oEQAACgAABgwXAqNZAADEXwAAoQF5A/0qGgAAJgAABgoSAWrc//8Q2v//4wHmAr5KHgAANwAABgsPAmQeAAB7IAAAKwHYA8XIEgAALgAABgIfAXAuAACPMQAAbwDBAIH2BgAAFAAABhEQAmz///9i////NgGlAE5sEwAANAAAAAMiAcFIAAB3TAAA5gClAhk3BwAACgAAAAoYAfTg//9f3///cAENAv2GCwAAIQAAAAsZASbm///U5P//OQOiA7rVGQAAFAAAABYbAc83AACoOgAAfQEoA03xCwAADwAAACAjATHp//8H6P//IQGtAJ0LCQAACgAAAAEgARIVAAAlFgAAyAOrA+tOHgAADwAAAB8cAtUUAADlFQAAlgE8Aqi3DAAADwAAABUUAcT5//9y+f//WQOcA+7VGgAAMQAAUia1YgIUJAIBAAAAsGTIDuDpbA8ALsgOsGTIDrBkyA4AAAAAAAAAAAAAFS4AAAAAAAAAAAAaDwIOTAAA708AAJwA6AEL5QQAADEAAAYDIgE0RwAAO0wAAOABMwLcFx4AAA8AAAAZIQGPHAAABB4AADcAOADfuAEAAA8AAAYBGALO9///Pff//+wA+ABHyw4AAC4AAAUDGQGZGAAA2hkAAOoAawCsUgcAABwAAAARFAHEIAAAcCIAAAkB3ADLSwgAADEAAAAEGgFbSAAADEwAAHIBhwP2mQsAABIAAAYSJAGiPgAA3kIAABgBmwM4lxEAAAoAAAYMFgKDWQAAol8AAKABOAHrERoAAC4AAAYKEQF43P//Htr//+QBXgGjVB4AADQAAAYLDgKaHgAAtSAAACsBtQE3wBIAADUAAAYCHwFmLgAAhTEAAG4AfwF06QYAABQAAAYREwFK////Pf///zYBsgCCbBMAAC4AAAADIgHBSAAAd0wAAOQAegC9IgcAAAoAAAAKFwEv4f//nd///3EBYgKojwsAACwAAAALGAEh5v//z+T//zoDNgPk3BkAABQAAAAWGwHRNwAAqjoAAHsBWQOr4QsAAA8AAAAgIwE26f//Dej//yEB3QMAEgkAAAoAAAABIAERFQAAJBYAAMgDuQAFSR4AAA8AAAAfGwLXFAAA5xUAAJUBUwPTsQwAABIAAAAVFAH1+f//pvn//1oDcACX1xoAADEAAN3ZtWICFCQCAQAAAJhoyA7I7WwP6DHIDphoyA6YaMgOAAAAAAAAAAAAABUuAAAAAAAAAAAAGhABOEwAABxQAACZAEYDwc8EAAAuAAAGAyIBN0cAAD5MAADfATsB7wMeAAAPAAAAGSABkBwAAAUeAAA2ADkA37ABAAAPAAAGARkC6ff//1r3///sAJIBsc0OAAAuAAAFAxgBpBgAAOYZAADpAP8A0ksHAAAjAAAAERQB4iAAAI8iAAAIAUIAlkIIAAAuAAAABBkBWEgAAAlMAABwAWEBpIULAAASAAAGEiQBoT4AAN1CAAAXATsDsYURAAAKAAAGDBYBd1kAAJVfAACeAfUC0fgZAAAuAAAGChEBuNz//2Pa///kAdYDiV4eAAAuAAAGCw4Cyx4AAOkgAAAqAZADn7cSAAAuAAAGAh8BZy4AAIUxAABtADsCXtwGAAAUAAAGERUBWP///0z///82Ab4ArmwTAAAuAAAAAyIBykgAAIFMAADhAE4CYA4HAAAKAAAAChcBAOH//2vf//9yAbgCWJgLAAAuAAAACxgBJub//9Xk//87A88CF+QZAAAXAAAAFhsB0zcAAKw6AAB5AYsDDNILAAASAAAAICMBOOn//w7o//8iAQ0DYhgJAAAKAAAAASABDhUAACEWAADHA8cBIUMeAAASAAAAHxsC0xQAAOMVAACVAWEA7qsMAAAPAAAAFRQBCPr//7v5//9aA0wBTtkaAAAuAACrhLViAhQkAgEAAACAbMgOsPFsD9A1yA6AbMgOgGzIDgAAAAAAAAAAAAAVLgAAAAAAAAAAABoQAVNMAAA4UAAAlwCpAIG6BAAAMQAABgMiAT1HAABFTAAA3gFCAAPwHQAACgAAABkgAY8cAAAEHgAANQA7AOGoAQAADwAABgEZAtn3//9J9///7AAhAu7PDgAAIQAABQMZAZ4YAADfGQAA6ACNAetEBwAAIQAAABESASohAADbIgAABgGfA005CAAAMQAAAAQZAV9IAAAQTAAAbQE8A1RxCwAAFAAABhIkAaU+AADiQgAAFgHbAil0EQAACgAABgwVAb9ZAADiXwAAnQGxALffGQAAMQAABgoRAcPc//9v2v//5QFOAnBoHgAANAAABgsOApEeAACrIAAAKgFpAf+uEgAALgAABgIeAXMuAACSMQAAbAD8AlvPBgAAFwAABhEWAlf///9L////NgHLAORsEwAALgAAAAMiAc5IAACETAAA3wAiAAT6BgAACgAAAAoXASrh//+X3///cwEaAx2hCwAALgAAAAsWASfm///V5P//PANkAkPrGQAAJAAAABYbAdY3AACvOgAAdwG6A2bCCwAADwAAACAjATzp//8T6P//IwE+AsYeCQAACgAAAAEfARcVAAAqFgAAxgPWAjw9HgAAEgAAAB8bAdQUAADkFQAAlAF4ARumDAAADwAAABUTARv6///O+f//WgMiAvzaGgAANAAAZ9u1YgIUJAIBAAAAaHDIDpj1bA+4OcgOaHDIDmhwyA4AAAAAAAAAAAAAFS4AAAAAAAAAAAAaEQIoTAAAClAAAJQAAwIwpQQAADQAAAYDIwE9RwAARUwAANwBSQMV3B0AAA8AAAAZIAGQHAAABR4AADQAPADgoAEAAA8AAAYBGgLg9///UPf//+wAswI40g4AABwAAAUDGQGoGAAA6hkAAOcAGAIBPgcAAB8AAAAREQHpIAAAlyIAAAUBBwMcMAgAADQAAAAEGQFkSAAAFUwAAGsBGwEOXQsAABIAAAYSJAGlPgAA4UIAABUBfAKjYhEAAAoAAAYMFAKgWQAAwF8AAJsBawKSxhkAAC4AAAYKEQGY3P//QNr//+YBxQBQch4AADEAAAYLDgInHwAASyEAACkBQANUphIAAC4AAAYCHwFwLgAAjzEAAGsAuQNIwgYAABQAAAYRFwE0////Jv///zYB2AAXbRMAAC4AAAADIwHPSAAAhkwAANwA9gGm5QYAAAoAAAAKFwH34P//Yd///3QBdgPXqQsAADEAAAALFQEp5v//2OT//z0D/wF78hkAACkAAAAWGwHWNwAArzoAAHUB5wO8sgsAABIAAAAgIwE/6f//Fuj//yQBbQEkJQkAAAoAAAABHwEUFQAAKBYAAMUD4wNVNx4AABIAAAAfGwHUFAAA5BUAAJMBiQI7oAwAAA8AAAAVEwEP+v//wvn//1oD+QKr3BoAADEAAFxytWICFCQCAQAAAFB0yA6A+WwPoD3IDlB0yA5QdMgOAAAAAAAAAAAAABUuAAAAAAAAAAAAGhABKkwAAAxQAACRAGID6Y8EAAAuAAAGAyMBP0cAAEdMAADbAVACJMgdAAAPAAAAGSEBjRwAAAIeAAAzAD4A45gBAAAPAAAGARoC3vf//073///sAEADa9QOAAAcAAAFAxgBqxgAAO0ZAADmAKQCFzcHAAAcAAAAERAB8CAAAJ4iAAAEAXQC8yYIAAAxAAAABBkBY0gAABRMAABoAf8C0UgLAAASAAAGEiQBoz4AAN9CAAAUARwCHFERAAAKAAAGDBUBnFkAALxfAACaASoAgK0ZAAAuAAAGChMBAt3//7Ha///mATwDMXweAAAxAAAGCw8Cwx4AAOAgAAApARkBtJ0SAAAxAAAGAh8BcS4AAJAxAABrAIMAZ7UGAAAUAAAGERcBav///2D///82AeEAPG0TAAAuAAAAAyMB0UgAAIhMAADZAMgDRtEGAAAKAAAAChYB7+D//1nf//91Ac8DjLILAAAuAAAACxQBPeb//+3k//8+A48BnfkZAAAuAAAAFhsB2zcAALQ6AAB0ARgAG6MLAAAPAAAAICMBQen//xjo//8lAZwAhCsJAAAKAAAAAR8BFRUAACkWAADFA/kAfzEeAAAUAAAAHxwC1xQAAOcVAACSAZ0DYpoMAAAPAAAAFRMCzPn//3v5//9aA9MDX94aAAAxAACrUQ==",

"headers": {"UTCDateTime": "2020-11-03T20:53:20" }

}


# epoch: 10 (10sec)

# msg size:

# 7455 char

# 7445 bytes


# Coordinated Universal Time (UTC)

that corresponds to this location response

{

"Lat":37.2418109,

"Lon":-121.84800489999999,

"Alt":-21.538,

"Acc":8.134,

"MeasxTime":"2020-11-03T20:53:20",

"Epochs":10

}

CloudLocate/device:xyzabc12-1234-a1b2-567-hijklmnopqst/GNSS/response

QoS: 0


  1. subscribe with your cloud application to the correct MQTT topic CloudLocate/{device}/GNSS/response

  2. publish with your client the test measure in an MQTT message on the topic CloudLocate/GNSS/request

  3. The position should be now visible in your cloud application

To publish the test measure you can use the following Python script. Remember to add the proper credentials


# cloudLocate Publisher


import paho.mqtt.client as mqtt

from random import randrange

import data

import time

import json


# Add a new location thing thing in thingstream

# Delivery platform and get the credentials

Hostname = ""

DeviceID = ""

Username = ""

Password = ""


# GNSS Sample mesurment

MQTT_MSG = ""


client = mqtt.Client(DeviceID)

client.username_pw_set(username = Username, password = Password)

client.connect(Hostname)

msg_counter = 0


while True:

# Device will send a measurement every 60 sec

msg_counter += 1

client.publish("CloudLocate/GNSS/request", MQTT_MSG)

print("msg #{0} published".format(msg_counter))

print(MQTT_MSG)

time.sleep(60)

To subscribe to this topic on cloud application you can use the following Python script


# CloudLocate Subscriber


import paho.mqtt.client as mqtt

import time


# Add a new location thing thing in thingstream

# Delivery platform and get the credentials

Hostname = ""

DeviceID = ""

Username = ""

Password = ""


def on_connect(client, userdata, flags, rc):

if rc==0:

print("connected OK Returned code=",rc)

else:

print("Bad connection Returned code=",rc)


def on_message(client, userdata, message):

print("\n\nReceived message\n" + str(message.payload.decode("utf-8")) + "\n"

+ message.topic + "\nQoS: " + str(message.qos))


client = mqtt.Client(ClientID)

client.username_pw_set(username=Username, password=Password)

client.connect(Hostname)

client.loop_start()

# To get location related to particular device

# subscribe "CloudLocate/{device}/GNSS/response"

# To get location related to all my devices

# subscribe "CloudLocate/+/GNSS/response"

client.subscribe("CloudLocate/+/GNSS/response")

client.on_message = on_message

client.on_connect = on_connect

time.sleep(6000)

client.loop_stop()

Using a flow

The prerequisites to use this approach are:

  1. you have upgraded your account to Pro, because premium extensions are not available to basic account. If you do not know how to do it, you will be automatically asked to do that when implementing the below procedure.

  2. you have a MQTT Anywhere or an MQTT Now or an MQTT Here plan used to move the data from the device to the Thingstream platform

  3. you are publishing the Location measure (the MEASX message) on an MQTT topic

First of all create a flow as in the example above just adding all the nodes (except for ClickMe).

  • The node 'MnP Thing script' in the picture is a 'Thingstream subscribe' node to whom it has be changed the name editing the properties (double click on the node). It is used to subscribe to the topic where the measure has been published.

  • The msg.payload nodes are used just for debugging

  • The thingstream.inject let's you to test the script adding directly the measure, without the need to subscribe to the MQTT topic. If you want to do so, double click and edit the node properties

  • Depending on how do you want to publish the estimated position, you could add the email nodes, or the http request node or sms or other nodes

To publish the measure you can use the following Python script. Remember to add the proper credentials and to put in the MQTT_MSG the sample measure above or a real measure

# CloudLocate_thing_publisher

# CloudLocate as a premium extension on top of MQTTNow


import paho.mqtt.client as mqtt

from random import randrange

import data

import time

import json


# Add a new location thing thing in thingstream

# Delivery platform and get the credentials

Hostname = ""

DeviceID = ""

Username = ""

Password = ""


# GNSS Sample mesurment

MQTT_MSG = ""


client = mqtt.Client(DeviceID)

client.username_pw_set(username = Username, password = Password)

client.connect(Hostname)

msg_counter = 0


while True:

msg_counter += 1

client.publish("YourTopic", MQTT_MSG)

print("msg #{0} published".format(msg_counter))

time.sleep(60)

Finally, you have to save and deploy the flow through the apposite buttons. Once done:

  • if you do not have any hardware yet, you cant test the flow adding the measure to the thingstream.inject node

  • if you have the hardware, you can publish the MEASX message on your given topic to which the node of the flow is listening. If you do not have the hardware, you can anyway use the above scripts, setting the proper topic. Please remind that you need one of the communication plan mentioned above (MQTT Anywhere, etc..) to publish the measures and the device/script shall be configured with the credential associated to that Thing

Supported hardware

To evaluate the service, you can use any of the u-blox GNSS modules that support RXM-MEASX message (i.e. M8, M9 and M10). You have at least two option

  • If you are planning to use your own cellular modem or the RXM-MEASX message is transferred over a non-celllular interface, the simplest way is to purchase one of the following kit: EVK-M8, EVK-M9 or EVK-M10 from the u-blox product selector

  • If you want to rely on a u-blox cellular modem that offers the best integration you can purchase an EVK-R510M8S that is an LTE-M module with an integrated M8 GNSS.