nRF Cloud Utils
nRF Cloud Utils is a script collection to make it easier to interface with nRF Cloud. They also include nrfcredstore to interface with nRF91 Series devices.
The scripts in this repository mainly use endpoints in the nRF Cloud API and the nRF Cloud Provisioning API.
See also the official nRF Cloud documentation.
Table of Contents
- Install
- Requirements
- How-To: Registering devices quickly
- Advanced Usage
- Development installation
- Test
Install
Run the following command to use this package as a dependency:
pip3 install nrfcloud-utils
Requirements
-
Create an account in nrfcloud.com.
-
Retrieve your legacy nRF Cloud API key. Open the legacy nRF Cloud app (the Legacy App link at the bottom of the nRF Cloud side navigation, or app.nrfcloud.com directly), then go to User Account > Current Team Details. If you are part of multiple teams, each team has its own API key.
⚠️The User API key shown under My Profile in the new nRF Cloud app is a different key. These scripts reject it with
401 Unauthorized. -
Depending on your goal, you'll need to configure your nRF Connect SDK project with the following libraries:
-
For basic device registration: Enable the AT Host library. Refer to the AT Client sample in the nRF Connect SDK for an implementation example.
-
For using the Provisioning Service: Enable the Provisioning Service library. You can find more documentation about the Provisioning Service here. The nRF Connect SDK provides a sample with a focused look at provisioning steps on cellular devices.
-
When compiling with the nRF Cloud Libraries, make sure your project has the next Kconfig options:
# Enable modem-based JSON Web Token (JWT) generation required for nRF Cloud authentication CONFIG_MODEM_JWT=y # Configure the nRF Cloud library to use the device's internal UUID CONFIG_NRF_CLOUD_CLIENT_ID_SRC_INTERNAL_UUID=y
⚠️Failure to include these settings will prevent the device from connecting to nRF Cloud.
How-To: Registering devices quickly
Start by creating a local certificate authority (CA). Its contents won't be checked, but you need one to make certificates for your devices. Optionally, pass options to the script to specify owner information.
create_ca_cert
Now, you should have three .pem files containing the key pair and the CA certificate of your CA. The files have a unique prefix.
To get your device registered, use the device_credentials_installer script. Be aware of which device ID is your project using, as it can be either a UUID or an IMEI. Depending on your device ID type, use one of the following commands:
UUID
device_credentials_installer -d --ca *_ca.pem --ca-key *_prv.pem --verify --coap
nrf-<IMEI>
device_credentials_installer -d --ca *_ca.pem --ca-key *_prv.pem --verify --id-imei --id-str nrf- --coap
⚠️Failure to select the correct device ID will result in a connection refused from nRF Cloud.
Upon success, you can find an onboard.csv file with information about your device. This file is needed to register the certificate with your account.
If you encounter a No device found error, you might need to specify the serial port using the --port option.
Onboard the device to your account using the nrf_cloud_onboard script as follows:
nrf_cloud_onboard --api-key $API_KEY --csv onboard.csv
It is possible to install credentials on many devices in a row using the --append option and add the bulk onboard.csv to your account with the same command.
Congratulations! You have successfully registered your device to nRF Cloud, you should be able to visualize it on the Devices panel.
Advanced Usage
For a more detailed overview of the scripts and their capabilities, refer to the Advanced Usage Guide. This guide provides in-depth instructions on leveraging advanced features, including the use of the Provisioning Service for remote provisioning of devices, as an alternative to local provisioning.
Development installation
Clone the repository:
git clone https://github.com/nRFCloud/utils.git nrfcloud-utils
cd nrfcloud-utils
For development mode, you need poetry:
curl -sSL https://install.python-poetry.org | python3 -
Make sure poetry is in your PATH. If you're using bash:
echo 'export PATH=/home/$USER/.local/bin:$PATH' | tee -a ~/.bashrc
source ~/.bashrc
Install package dependencies, development dependencies, and the nrfcloud-utils into poetry's internal virtual environment:
poetry install
Test
Unit tests are included in the tests folder. Each test script corresponds to a script in the sources.
Static files used in the tests are put in the tests/fixtures folder.
Running the tests depends on a development installation.
poetry run pytest
Check coverage
poetry run pytest --cov=src tests
Metadata
Release files for nrfcloud-utils 3.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| nrfcloud_utils-3.3.1.tar.gz | 44.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nrfcloud_utils-3.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 99.1 kB
Release files / nrfcloud_utils-3.3.1.tar.gz
| Download URL | nrfcloud_utils-3.3.1.tar.gz |
|---|---|
| Size | 44.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d539e3cfe39f58c57c3e519bc705dc5cb4116faa3dd6a41f342164afc1e4459e
|
|
BLAKE2b-256 checksum How to use checksums |
512c138c522e125293aaf87487e1bdb369de0b05457145f81a5e27d4d3821f4d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.3.4 CPython/3.11.17 Linux/6.17.0-1022-azure
|
Release files / nrfcloud_utils-3.3.1-py3-none-any.whl
| Download URL | nrfcloud_utils-3.3.1-py3-none-any.whl |
|---|---|
| Size | 54.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
acb8753f08b7df92648b13ecd721ecc0c4716a5444c2394708d2010ee278298f
|
|
BLAKE2b-256 checksum How to use checksums |
a4b83f49dda46d574db68111eaa2912c979047b68a4eb2814c465cbe4c4dbc33
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.3.4 CPython/3.11.17 Linux/6.17.0-1022-azure
|
Security for nrfcloud-utils 3.3.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.