N2N-DL V3 offers a support for custom metadata to be associated with each LoRaWAN or Cellular device.
The customMeta
object acts as key-value pair container where the value can be a string
, boolean
(true
or false
), a list of string
s or a list of number
s like in the the following Typescript type definition:
customMeta: Record<string, string|number|boolean|string[]|number[]>;
You can use the custom metadata field to add custom device and/or project related information that is useful to further differenciate a device once it’s installed in the field.
What follows is an example of custom metadata associated with a device:
{
...
"enterpriseId": "nnn",
"deviceType": "risingHf",
"lastOnline": 1601002884890,
"deviceId": "0000000001E014E7",
"customMeta": {
"serialNumber": "A6BB689C",
"pcbNumber": "12345-1234",
"build": "F03120"
},
...
}
The custom metadata is added to every message that is sent through push data subscriptions like in the example provided in the data subs page.
In order to keep the message payload small enough, attention should be paid to minimize the amount of custom meta fields associated with a device.
It’s possible to search all devices matching one or more specific metadata values like in the following example:
curl --location --request POST 'https://www.nnnco.io/v3/api/core/devices/search' \
--header 'Authorization: Basic ...' \
--header 'Content-Type: application/json' \
--data-raw '{
"customMeta": {
"serialNumber": "A6BB689C"
}
}'
which returns a list of devices matching the specified search criteria:
[{
"deviceId": "947EB90000100053",
"name": "A6BB689C",
"deviceType": "nsenMk2",
"enterpriseId": "...",
"lastOnline": 1601003499484,
"customMeta": {
"serialNumber": "A6BB689C",
"pcbNumber": "12345-1234",
"build": "F03120"
},
"lastDownlinkTs": 1600994411488,
...
}]
The documentation around searching and updating the custom metadata is part of the main Core V3 Open API Swagger documentation.
You are currently limited to customMeta
objects with maximum 50 keys but this is a soft limit that can be increased if necessary.