Documents the communication protocol between devices, the
hello.nrfcloud.com/map backend and web application.
The lwm2m folder contains the LwM2M objects that devices publish.
LwM2M object definitions are shared between models and can be re-used. Some
objects provide special behavior (for example object
14201 (Geolocation) will place the device's location on
the map).
Devices publish LwM2M objects using SenML directly, which needs to map to the defined LwM2M objects (example).
The SenML payload will be expanded to fully qualified LwM2M object representations which can then be processed further, e.g. stored in a database.
This allows the hello.nrfcloud.com/map web application to visualize this data
in a meaningful way to users without the need for custom implementation.
LWM2MVersionmust be1.1- LwM2M objects are defined in the ID range from
14200to15000(non-inclusively). - The URN must have the prefix
urn:oma:lwm2m:x:. - The
ObjectVersionmust be appended if it is not1.0, which is the default. - All objects must define one
Timeproperty. Time is a signed integer representing the number of seconds since Jan 1 st, 1970 in the UTC time zone. - Objects must be
Multipleinstance. - Objects must be
Optional. - Resources should only be marked as mandatory in case they must be published together (e.g. latitude and longitude). This allows devices to only update the values that have changed.
RangeEnumerationis only supported forFloatandIntegerand must be specified as<min>..<max>, whereminmust be smaller thanmaxand both must be a number.Objlnkresource type is not supported
The conformity to the rules is checked using the script
./lwm2m/check-lwm2m-rules.ts.
- The implementation follows the recommendation outline in section 7.4.5. of the
LwM2M v1.1.1 Technical Specification:
bnandnfields are combined to form the unique identifier for a resource in the form of/<object ID>/<object instance ID>/<resource ID>/0. The resource instance ID0is always appended, because multiple resource instances are not supported right now. - Use the custom property
blvto specify the object version,1.0is the default and should not be specified. - Timestamps are to be expressed in the base time property
btand are mapped to the LwM2M object's timestamp property and must not be send as a property. - SenML records may be a Time only, in case it is sufficient to express the object as a combination of InstanceID and timestamp, for example in case of the Button Press (14220) object.
- device models are identified using a model name, for example
kartverket-vasstandsdata - a
README.mdmust be provided that describes the model
The conformity to the rules is checked using the script
./models/check-model-rules.ts.
npm i --save-exact @hello.nrfcloud.com/proto-mapInstall the dependencies:
npm ciInstall xmllint.
npm testnpx tsx generator/lwm2m.ts
npx tsx generator/models.ts
npx tsx generator/types.ts