PointPerfect getting started
Reach the mass market with your precise positioning solutions using PointPerfect. Precise, reliable, and easy to use, PointPerfect is a PPP-RTK GNSS augmentation data service that delivers centimeter-level accuracy in seconds on a continental scale. With 99.9% uptime availability via both internet and L-band satellite, you can rely on PointPerfect for mission-critical applications. Reduce your data cost significantly with the efficient SPARTN open data format and the scalable, simple to integrate MQTT messaging protocol. Reduce your bandwidth further by subscribing to the Localized Corrections specific for your device’s current location. Zero Touch Provisioning makes it easy to deploy huge device fleets, eliminating the headaches of managing digital certificates. Our flexible price plans are tailored to suit your needs. PointPerfect is ready to use because it is pre-integrated with u-blox F9 and D9 high precision GNSS modules. Non-native SPARTN receivers are supported by the PointPerfect SDK.
Supported u-blox products
In this guide we will see how to create PointPerfect Things in the Thingstream platform, how to provision them, and how to choose the plan that best suits your needs.
u-blox service platform sign-up
u-blox Thingstream is a service delivery platform providing a management console that you can use to enable and manage the entire suite of u-blox services , including IoT Location-as-a-Service and your Location Things (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 IoT Communication-as-a-Service (MQTT Anywhere, MQTT Here or MQTT Now), or for IoT Security-as-a-Service you do not need to register again.
Creating PointPerfect Things
Before your devices can use the service, you must create a Thing that represents the device in the system. Click on the Location Services item in the navigation bar on the left of the page and then click on the "Add Location Thing" button on the top right of the page.
When you add a location Thing you can add different Things for different services, in this case we want to create /add a PointPerfect Thing.
When you click on the Add PointPerfect Thing button, you will be prompted to enter a friendly name for the newly created Thing.
After you added the name, click Create to continue, now you will be asked to choose a Plan. For now let's skip this step, more about plans later in the guide. When you click Skip a new dialog opens with the options to see the details or the credentials of the new Thing you just created.
In the Thing Details section you can see the information of the Thing and if it is active and connected (in the example above it is disconnected). Additionally you can see:
The Thing type
The Plan associated with it
The Device ID
The User Agent that has connected
The last time it connected
When it was created and updated
In this dialog you can also Activate the Thing, and by doing so you will need to choose a plan.
Choosing The Right Plan
When you want to activate a PointPerfect Thing you will need to choose a plan based on which you will be invoiced for using the service. u-blox offers a great selection of plans that are designed to meet most of the requirements and business plans that you might have.
Please see the Pricing page for the details of each plan.
The individual plans are a mix of fixed plans and hourly based plans. The fixed plans are meant for devices that will be consuming the service continuously, either over satellite L-band or over IP (MQTT). Conversely, the hourly based plans are optimal for devices that will consume the service only for an estimated monthly average. E.g. a device that is expected to use the service only 2 hours a day on average, would probably be satisfied with the monthly 60H plan.
Pooled plans are ideal for applications where the individual device usage may vary, depending on fluctuating factors, and where also the number of devices in use at any given time is not predictable or known. In this case, a fleet of a number of devices can be associated to a pooled plans to allow all the devices to share a pool of hours.
In the case below we will select the 250H individual plan and activate the device.
Once the plan is selected the Thing is now active and you can see its status now active and the plan to which it is associated. Also notice the renewal date that is now set on the monthly recurrence from when the plan was purchased.
Now that we created a new PointPerfect Thing and activated in the platform, we will need to enable it to connect to the platform. This is also known as "Provisioning".
To provision the Thing we will need to download the certificates that we will need to install (upload) to our physical device to make sure it can connect to the broker and receive the service.
Downloading Client Key and Certificate
To download the key and the certificate go to the Thing details and click on the Credentials tab.
In this tab you can see the information that are needed to provision and also configure the device for the service access. To download the key and the certificate click on the respective links and save the key and certificate to your system. Now you are ready to transfer the files to to your device so that it is fully authorized to connect to the service.
Please note that if you want to use u-center evaluation software, you only need to download U-Center Config JSON file which contains all the certificates and configurations needed by u-center.
The next step is to configure the device to subscribe to the right topics to access the service. In the Credentials tab, shown below, you can also find the topics that are needed for the device to consume the service correctly.
The device will need to know where to get the keys that are needed to decrypt the encrypted SPARTN messages and to which topic to subscribe to receive the correct stream for PointPerfect data.
More details on the PointPerfect service can be found in the service description document.
For the device to use the service, it must have access to the Current key to decrypt the data. “Current” and “Next” keys are provided with valid start dates to provision two keys simultaneously. Please see more information in PointPerfect Key Management.
Dynamic Key Topics
Service Data Topics
The service data topics depend on the plans chosen and they will differ between the L-band + IP service plans and the IP only plans. So, please pay attention to the differences especially if you have two different plans in your domain to support different applications and devices.
The list of current topics can be seen in the service description document.
Once you configure the topics for the PointPerfect data streams, the device is ready to access and consume the service.
Putting it All Together
Now that your device is configured, it can access the service. If the configuration was successful you should be seeing the Thing status changing to Connected in the Things details. Furthermore , when the device subscribe to PointPerfect topics, the Events tab in the Thing Details will show the successful subscribing operation as shown below.
Using u-blox Products: u-center and ZED-F9P
If you are interested in evaluating PointPerfect as part of a full solution, you might want to use also a u-blox high precision module such as the ZED-F9P. The ZED-F9P ships with the C099-F9P evaluation board.
The first step is to install and configure u-center to use the high precision GNSS receiver board C099-F9P (please refer to the u-center  and C099-F9P board documentation  on how to configure the solution).
Once you have verified that your basic GNSS setup is operating, you can proceed to the configuration of u-center to access the service.
How to Obtain u-center
The version of u-center 23.08 that supports PointPerfect MQTT can be downloaded from Thingstream downloads portal portal.thingstream.io/app/downloads/pointperfect.
Note that u-center needs to be run as Administrator or installed in a folder that does not have restricted permissions, otherwise you will receive an error as shown in the screenshot below when trying to install the MQTT client configuration file.
In order to access the service you only need to download "U-Center Config" JSON file from Thingstream > Location Things > Credentials
This will be the configuration file that u-center will use for the connection to the PointPerfect broker. This file applies to both Localized and Continental corrections. No editing is needed.
Once you have downloaded and stored the configuration file, the final step is to load the JSON into u-center.
First open the Receiver menu and select the MQTT Client item as shown in the next screenshot.
Selecting the MQTT Client item will open a new dialog as shared in image below. Click on the ellipsis (...) icon to browse your file system and select the correct JSON config file. Now, it's time to choose the correction type, and you have two options:
Details on PointPerfect Localized Distribution can be found here.
To access localized corrections, apply the JSON configuration file downloaded from Thingstream as described in the Preparation step above,
Choose the "localized" correction type, as shown in the image below. Subscribing to the AssistNow topic is optional.
After clicking 'OK,' the MQTT client will establish a connection to the broker and subscribe to the nearest node topic as determined by your device's location to receive localized corrections data.
To select Continental corrections in the MQTT client settings dialog box, you must also select "Subscribe to key topic" and "Subscribe to data topic" (and optionally "Subscribe to AssistNow topic" if needed.) Use the "Select Data Topic" drop-down menu to choose the topic that corresponds to your region. At the time of the writing of this guide, we offer four options:
Please note that the topics you select should align with your plan.
Once you've made your selections, click 'OK.'"
After clicking 'OK,' u-center will establish a connection with the PointPerfect service and begin receiving augmentation data. You can check the MQTT connection status in the u-center's status bar. Clicking on the green connector icon will open the log, where you can monitor the messages being received, as demonstrated below.
At this point the C099-F9P is receiving PointPerfect service and you can see the performance of the solution by utilizing u-center. Please refer to u-center  and ZED-F9P documentation [1,3] for more information on how to analyze the high precision GNSS performance.
Dynamic Keys in UBX format
/pp/ubx/0236/ip (Topic for IP dynamic keys in UBX format)
/pp/ubx/0236/Lb (Topic for L-band + IP dynamic keys in UBX format)
AssistNow over PointPerfect MQTT
Python sample script: PointPerfect MQTT Client
If you are interested to evaluate PointPerfect with an MQTT Client built-in your host application, you may please refer to PointPerfect MQTT Client sample python script available in the Thingstream Downloads PointPerfect section to get started. The script demonstrates on how to authenticate the MQTT client with the broker and subscribe to the MQTT topics.
Zero Touch Provisioning
The device provisioning process described above is tedious and often slows down the production line increasing manufacturing costs. That's why u-blox has developed a much more straightforward way of doing bulk provisioning on large fleets of devices. This process is called Zero Touch Provisioning (ZTP). You can refer to the PointPerfect ZTP solution here.
PointPerfect L-band Configuration: NEO-D9S, ZED-F9P and u-center
NEO-D9S is a satellite data receiver for L-band correction broadcast, which can be configured to be used with a variety of correction services. The PointPerfect L-band guide document provides instructions on how to configure NEO-D9S and the ZED-F9P receivers for PointPerfect L-band evaluation purpose.