@hello.nrfcloud.com/proto-map 12.0.0 → 12.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -2
- package/dist/generator/generateLwM2MDefinitions.js +1 -0
- package/dist/generator/generateLwM2MDefinitions.spec.js +11 -0
- package/dist/generator/generateType.js +7 -1
- package/dist/lwm2m/LWM2MObjectDefinition.js +4 -1
- package/dist/lwm2m/LwM2MObjectID.js +7 -1
- package/dist/lwm2m/definitions.js +81 -0
- package/dist/lwm2m/object/14401.d.js +5 -0
- package/dist/lwm2m/object/validate14401.js +12 -0
- package/dist/lwm2m/objects.js +1 -0
- package/dist/lwm2m/timestampResources.js +4 -0
- package/dist/lwm2m/validators.js +2 -0
- package/lwm2m/14401.xml +34 -0
- package/lwm2m/LWM2MObjectDefinition.ts +4 -1
- package/lwm2m/LWM2MObjectInfo.ts +1 -0
- package/lwm2m/LwM2MObjectID.ts +10 -2
- package/lwm2m/LwM2MObjectInstance.ts +8 -1
- package/lwm2m/ParsedLwM2MObjectDefinition.ts +1 -1
- package/lwm2m/definitions.ts +65 -50
- package/lwm2m/object/14401.d.ts +25 -0
- package/lwm2m/object/validate14401.ts +14 -0
- package/lwm2m/objects.ts +3 -1
- package/lwm2m/timestampResources.ts +1 -1
- package/lwm2m/validators.ts +3 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -38,8 +38,6 @@ in a meaningful way to users without the need for custom implementation.
|
|
|
38
38
|
- All objects must define one `Time` property.
|
|
39
39
|
- Objects must be `Multiple` instance.
|
|
40
40
|
- Objects must be `Optional`.
|
|
41
|
-
- Resources must be `Single` instance. `Multiple` could be useful in some cases,
|
|
42
|
-
e.g. IP addresses, but until it is really needed, we do not support it.
|
|
43
41
|
- Resources should only be marked as mandatory in case they must be published
|
|
44
42
|
together (e.g. latitude and longitude). This allows devices to only update the
|
|
45
43
|
values that have changed.
|
|
@@ -59,6 +59,7 @@ var createResource = function(Resource) {
|
|
|
59
59
|
ts.factory.createPropertyAssignment('Name', ts.factory.createStringLiteral(Resource.Name)),
|
|
60
60
|
ts.factory.createPropertyAssignment('Mandatory', ts.factory.createIdentifier(Resource.Mandatory === 'Mandatory' ? 'true' : 'false')),
|
|
61
61
|
ts.factory.createPropertyAssignment('Type', ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier('ResourceType'), Resource.Type)),
|
|
62
|
+
ts.factory.createPropertyAssignment('Multiple', ts.factory.createIdentifier(Resource.MultipleInstances === 'Multiple' ? 'true' : 'false')),
|
|
62
63
|
ts.factory.createPropertyAssignment('Description', ts.factory.createStringLiteral(Resource.Description))
|
|
63
64
|
];
|
|
64
65
|
if (Resource.RangeEnumeration.length > 0) {
|
|
@@ -5,6 +5,7 @@ import { LwM2MObjectID } from '../lwm2m/LwM2MObjectID.js';
|
|
|
5
5
|
import { ResourceType } from '../lwm2m/LWM2MObjectInfo.js';
|
|
6
6
|
void describe('generateLwM2MDefinitions()', function() {
|
|
7
7
|
void it('should have generated definitions from the XML files', function() {
|
|
8
|
+
var _definitions_LwM2MObjectID_NRFCloudServiceInfo_14401_Resources_;
|
|
8
9
|
assert.deepEqual(definitions[LwM2MObjectID.Geolocation_14201], {
|
|
9
10
|
ObjectID: 14201,
|
|
10
11
|
ObjectVersion: '1.0',
|
|
@@ -16,6 +17,7 @@ void describe('generateLwM2MDefinitions()', function() {
|
|
|
16
17
|
Name: 'Latitude',
|
|
17
18
|
Mandatory: true,
|
|
18
19
|
Type: ResourceType.Float,
|
|
20
|
+
Multiple: false,
|
|
19
21
|
Description: 'The decimal notation of latitude in degrees, e.g. -43.5723 [World Geodetic System 1984].',
|
|
20
22
|
Units: '°',
|
|
21
23
|
RangeEnumeration: {
|
|
@@ -28,6 +30,7 @@ void describe('generateLwM2MDefinitions()', function() {
|
|
|
28
30
|
Name: 'Longitude',
|
|
29
31
|
Mandatory: true,
|
|
30
32
|
Type: ResourceType.Float,
|
|
33
|
+
Multiple: false,
|
|
31
34
|
Description: 'The decimal notation of longitude in degrees, e.g. 153.21760 [World Geodetic System 1984].',
|
|
32
35
|
Units: '°',
|
|
33
36
|
RangeEnumeration: {
|
|
@@ -40,6 +43,7 @@ void describe('generateLwM2MDefinitions()', function() {
|
|
|
40
43
|
Name: 'Altitude',
|
|
41
44
|
Mandatory: false,
|
|
42
45
|
Type: ResourceType.Float,
|
|
46
|
+
Multiple: false,
|
|
43
47
|
Description: 'The decimal notation of altitude in meters above sea level.',
|
|
44
48
|
Units: 'm'
|
|
45
49
|
},
|
|
@@ -48,6 +52,7 @@ void describe('generateLwM2MDefinitions()', function() {
|
|
|
48
52
|
Name: 'Radius',
|
|
49
53
|
Mandatory: false,
|
|
50
54
|
Type: ResourceType.Float,
|
|
55
|
+
Multiple: false,
|
|
51
56
|
Description: 'The value in this resource indicates the radius of a circular area in meters. The circular area is used to describe uncertainty about a point for coordinates in a two-dimensional coordinate reference systems (CRS). The center point of a circular area is specified by using the Latitude and the Longitude Resources.',
|
|
52
57
|
Units: 'm'
|
|
53
58
|
},
|
|
@@ -56,6 +61,7 @@ void describe('generateLwM2MDefinitions()', function() {
|
|
|
56
61
|
Name: 'Speed',
|
|
57
62
|
Mandatory: false,
|
|
58
63
|
Type: ResourceType.Float,
|
|
64
|
+
Multiple: false,
|
|
59
65
|
Description: 'Speed is the time rate of change in position.',
|
|
60
66
|
Units: 'm/s'
|
|
61
67
|
},
|
|
@@ -64,6 +70,7 @@ void describe('generateLwM2MDefinitions()', function() {
|
|
|
64
70
|
Name: 'Heading',
|
|
65
71
|
Mandatory: false,
|
|
66
72
|
Type: ResourceType.Float,
|
|
73
|
+
Multiple: false,
|
|
67
74
|
Description: 'The angle of movement in degrees.',
|
|
68
75
|
Units: '°',
|
|
69
76
|
RangeEnumeration: {
|
|
@@ -76,6 +83,7 @@ void describe('generateLwM2MDefinitions()', function() {
|
|
|
76
83
|
Name: 'Source',
|
|
77
84
|
Mandatory: true,
|
|
78
85
|
Type: ResourceType.String,
|
|
86
|
+
Multiple: false,
|
|
79
87
|
Description: 'The source of the geo location, e.g. GNSS, SCELL, MCELL, WIFI.'
|
|
80
88
|
},
|
|
81
89
|
99: {
|
|
@@ -83,9 +91,12 @@ void describe('generateLwM2MDefinitions()', function() {
|
|
|
83
91
|
Name: 'Timestamp',
|
|
84
92
|
Mandatory: true,
|
|
85
93
|
Type: ResourceType.Time,
|
|
94
|
+
Multiple: false,
|
|
86
95
|
Description: 'The timestamp of when the location measurement was performed.'
|
|
87
96
|
}
|
|
88
97
|
}
|
|
89
98
|
});
|
|
99
|
+
// Support for multiple instance resources
|
|
100
|
+
assert.deepEqual((_definitions_LwM2MObjectID_NRFCloudServiceInfo_14401_Resources_ = definitions[LwM2MObjectID.NRFCloudServiceInfo_14401].Resources[0]) === null || _definitions_LwM2MObjectID_NRFCloudServiceInfo_14401_Resources_ === void 0 ? void 0 : _definitions_LwM2MObjectID_NRFCloudServiceInfo_14401_Resources_.Multiple, true);
|
|
90
101
|
});
|
|
91
102
|
});
|
|
@@ -25,7 +25,13 @@ export var generateType = function(param) {
|
|
|
25
25
|
ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier('Resources'), undefined, ts.factory.createTypeLiteralNode(byImportance(Array.isArray(Resources.Item) ? Resources.Item : [
|
|
26
26
|
Resources.Item
|
|
27
27
|
]).map(function(resource) {
|
|
28
|
-
var
|
|
28
|
+
var valueType = typeScriptResourceType(resource.Type);
|
|
29
|
+
if (resource.MultipleInstances === 'Multiple') {
|
|
30
|
+
valueType = ts.factory.createTypeReferenceNode('Array', [
|
|
31
|
+
valueType
|
|
32
|
+
]);
|
|
33
|
+
}
|
|
34
|
+
var res = ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier("".concat(resource.$.ID)), resource.Mandatory === 'Mandatory' ? undefined : ts.factory.createToken(ts.SyntaxKind.QuestionToken), valueType);
|
|
29
35
|
var docs = [
|
|
30
36
|
"".concat(resource.Name).concat(resource.Units.length > 0 ? " (".concat(resource.Units, ")") : ''),
|
|
31
37
|
"",
|
|
@@ -55,7 +55,10 @@ export var LWM2MObjectDefinition = Type.Object({
|
|
|
55
55
|
Type.Literal('W'),
|
|
56
56
|
Type.Literal('RW')
|
|
57
57
|
]),
|
|
58
|
-
MultipleInstances: Type.
|
|
58
|
+
MultipleInstances: Type.Union([
|
|
59
|
+
Type.Literal('Single'),
|
|
60
|
+
Type.Literal('Multiple')
|
|
61
|
+
]),
|
|
59
62
|
Mandatory: Type.Union([
|
|
60
63
|
Type.Literal('Optional'),
|
|
61
64
|
Type.Literal('Mandatory')
|
|
@@ -52,6 +52,11 @@
|
|
|
52
52
|
*
|
|
53
53
|
* Describes application configuration
|
|
54
54
|
*/ LwM2MObjectID[LwM2MObjectID["ApplicationConfiguration_14301"] = 14301] = "ApplicationConfiguration_14301";
|
|
55
|
+
/**
|
|
56
|
+
* nRF Cloud Service Info (14401)
|
|
57
|
+
*
|
|
58
|
+
* Describes the services supported by the device.
|
|
59
|
+
*/ LwM2MObjectID[LwM2MObjectID["NRFCloudServiceInfo_14401"] = 14401] = "NRFCloudServiceInfo_14401";
|
|
55
60
|
})(LwM2MObjectID || (LwM2MObjectID = {}));
|
|
56
61
|
/**
|
|
57
62
|
* The LwM2M Object IDs defined in this repo.
|
|
@@ -65,5 +70,6 @@
|
|
|
65
70
|
14220,
|
|
66
71
|
14230,
|
|
67
72
|
14240,
|
|
68
|
-
14301
|
|
73
|
+
14301,
|
|
74
|
+
14401
|
|
69
75
|
];
|
|
@@ -27,6 +27,7 @@ var _obj;
|
|
|
27
27
|
Name: "Latitude",
|
|
28
28
|
Mandatory: true,
|
|
29
29
|
Type: ResourceType.Float,
|
|
30
|
+
Multiple: false,
|
|
30
31
|
Description: "The decimal notation of latitude in degrees, e.g. -43.5723 [World Geodetic System 1984].",
|
|
31
32
|
RangeEnumeration: {
|
|
32
33
|
min: -90,
|
|
@@ -46,6 +47,7 @@ var _obj;
|
|
|
46
47
|
Name: "Longitude",
|
|
47
48
|
Mandatory: true,
|
|
48
49
|
Type: ResourceType.Float,
|
|
50
|
+
Multiple: false,
|
|
49
51
|
Description: "The decimal notation of longitude in degrees, e.g. 153.21760 [World Geodetic System 1984].",
|
|
50
52
|
RangeEnumeration: {
|
|
51
53
|
min: -180,
|
|
@@ -62,6 +64,7 @@ var _obj;
|
|
|
62
64
|
Name: "Altitude",
|
|
63
65
|
Mandatory: false,
|
|
64
66
|
Type: ResourceType.Float,
|
|
67
|
+
Multiple: false,
|
|
65
68
|
Description: "The decimal notation of altitude in meters above sea level.",
|
|
66
69
|
Units: "m"
|
|
67
70
|
},
|
|
@@ -74,6 +77,7 @@ var _obj;
|
|
|
74
77
|
Name: "Radius",
|
|
75
78
|
Mandatory: false,
|
|
76
79
|
Type: ResourceType.Float,
|
|
80
|
+
Multiple: false,
|
|
77
81
|
Description: "The value in this resource indicates the radius of a circular area in meters. The circular area is used to describe uncertainty about a point for coordinates in a two-dimensional coordinate reference systems (CRS). The center point of a circular area is specified by using the Latitude and the Longitude Resources.",
|
|
78
82
|
Units: "m"
|
|
79
83
|
},
|
|
@@ -86,6 +90,7 @@ var _obj;
|
|
|
86
90
|
Name: "Speed",
|
|
87
91
|
Mandatory: false,
|
|
88
92
|
Type: ResourceType.Float,
|
|
93
|
+
Multiple: false,
|
|
89
94
|
Description: "Speed is the time rate of change in position.",
|
|
90
95
|
Units: "m/s"
|
|
91
96
|
},
|
|
@@ -101,6 +106,7 @@ var _obj;
|
|
|
101
106
|
Name: "Heading",
|
|
102
107
|
Mandatory: false,
|
|
103
108
|
Type: ResourceType.Float,
|
|
109
|
+
Multiple: false,
|
|
104
110
|
Description: "The angle of movement in degrees.",
|
|
105
111
|
RangeEnumeration: {
|
|
106
112
|
min: 0,
|
|
@@ -117,6 +123,7 @@ var _obj;
|
|
|
117
123
|
Name: "Source",
|
|
118
124
|
Mandatory: true,
|
|
119
125
|
Type: ResourceType.String,
|
|
126
|
+
Multiple: false,
|
|
120
127
|
Description: "The source of the geo location, e.g. GNSS, SCELL, MCELL, WIFI."
|
|
121
128
|
},
|
|
122
129
|
/**
|
|
@@ -128,6 +135,7 @@ var _obj;
|
|
|
128
135
|
Name: "Timestamp",
|
|
129
136
|
Mandatory: true,
|
|
130
137
|
Type: ResourceType.Time,
|
|
138
|
+
Multiple: false,
|
|
131
139
|
Description: "The timestamp of when the location measurement was performed."
|
|
132
140
|
}
|
|
133
141
|
}
|
|
@@ -146,6 +154,7 @@ var _obj;
|
|
|
146
154
|
Name: "State of charge",
|
|
147
155
|
Mandatory: false,
|
|
148
156
|
Type: ResourceType.Integer,
|
|
157
|
+
Multiple: false,
|
|
149
158
|
Description: "State of charge in percent. Examples: 23, 1, 100.",
|
|
150
159
|
RangeEnumeration: {
|
|
151
160
|
min: 0,
|
|
@@ -162,6 +171,7 @@ var _obj;
|
|
|
162
171
|
Name: "Voltage",
|
|
163
172
|
Mandatory: false,
|
|
164
173
|
Type: ResourceType.Float,
|
|
174
|
+
Multiple: false,
|
|
165
175
|
Description: "Battery voltage in Volt. Examples: 2.754, 3.3.",
|
|
166
176
|
Units: "V"
|
|
167
177
|
},
|
|
@@ -174,6 +184,7 @@ var _obj;
|
|
|
174
184
|
Name: "Charge current",
|
|
175
185
|
Mandatory: false,
|
|
176
186
|
Type: ResourceType.Float,
|
|
187
|
+
Multiple: false,
|
|
177
188
|
Description: "Charge current in mA. Examples: 429, -244.",
|
|
178
189
|
Units: "mA"
|
|
179
190
|
},
|
|
@@ -186,6 +197,7 @@ var _obj;
|
|
|
186
197
|
Name: "Battery temperature",
|
|
187
198
|
Mandatory: false,
|
|
188
199
|
Type: ResourceType.Float,
|
|
200
|
+
Multiple: false,
|
|
189
201
|
Description: "Battery temperature in Celsius. Examples: 21.7, 23.123.",
|
|
190
202
|
Units: "C"
|
|
191
203
|
},
|
|
@@ -198,6 +210,7 @@ var _obj;
|
|
|
198
210
|
Name: "Time to full",
|
|
199
211
|
Mandatory: false,
|
|
200
212
|
Type: ResourceType.Integer,
|
|
213
|
+
Multiple: false,
|
|
201
214
|
Description: "Time to full in seconds. Examples: 4652.",
|
|
202
215
|
Units: "s"
|
|
203
216
|
},
|
|
@@ -210,6 +223,7 @@ var _obj;
|
|
|
210
223
|
Name: "Time to empty",
|
|
211
224
|
Mandatory: false,
|
|
212
225
|
Type: ResourceType.Integer,
|
|
226
|
+
Multiple: false,
|
|
213
227
|
Description: "Time to empty in seconds. Examples: 4652.",
|
|
214
228
|
Units: "s"
|
|
215
229
|
},
|
|
@@ -222,6 +236,7 @@ var _obj;
|
|
|
222
236
|
Name: "Timestamp",
|
|
223
237
|
Mandatory: true,
|
|
224
238
|
Type: ResourceType.Time,
|
|
239
|
+
Multiple: false,
|
|
225
240
|
Description: "The timestamp of when the measurement was performed."
|
|
226
241
|
}
|
|
227
242
|
}
|
|
@@ -240,6 +255,7 @@ var _obj;
|
|
|
240
255
|
Name: "Network mode",
|
|
241
256
|
Mandatory: false,
|
|
242
257
|
Type: ResourceType.String,
|
|
258
|
+
Multiple: false,
|
|
243
259
|
Description: "Examples: LTE-M, NB-IoT."
|
|
244
260
|
},
|
|
245
261
|
/**
|
|
@@ -251,6 +267,7 @@ var _obj;
|
|
|
251
267
|
Name: "Band",
|
|
252
268
|
Mandatory: false,
|
|
253
269
|
Type: ResourceType.Integer,
|
|
270
|
+
Multiple: false,
|
|
254
271
|
Description: "E-UTRA Absolute Radio Frequency Channel Number (EARFCN) of the current cell where the EARFCN is as defined in 3GPP TS 36.101. LTE carrier channel number for unique identification of LTE band and carrier frequency. Examples: 262143"
|
|
255
272
|
},
|
|
256
273
|
/**
|
|
@@ -262,6 +279,7 @@ var _obj;
|
|
|
262
279
|
Name: "RSRP",
|
|
263
280
|
Mandatory: false,
|
|
264
281
|
Type: ResourceType.Integer,
|
|
282
|
+
Multiple: false,
|
|
265
283
|
Description: "Reference Signal Received Power (RSRP). The average power level in dBm received from a single reference signal in an LTE (Long-term Evolution) network. Typically this value ranges from -140 to -40 dBm. Examples: -97, -104.",
|
|
266
284
|
Units: "dBm"
|
|
267
285
|
},
|
|
@@ -274,6 +292,7 @@ var _obj;
|
|
|
274
292
|
Name: "Area",
|
|
275
293
|
Mandatory: false,
|
|
276
294
|
Type: ResourceType.Integer,
|
|
295
|
+
Multiple: false,
|
|
277
296
|
Description: "Area code. Examples: 12"
|
|
278
297
|
},
|
|
279
298
|
/**
|
|
@@ -285,6 +304,7 @@ var _obj;
|
|
|
285
304
|
Name: "Cell",
|
|
286
305
|
Mandatory: false,
|
|
287
306
|
Type: ResourceType.Integer,
|
|
307
|
+
Multiple: false,
|
|
288
308
|
Description: "The cell ID the User Equipment (UE) is camped on. 4-byte Evolved Terrestrial Radio Access Network (E-UTRAN) cell ID. Examples: 33703719"
|
|
289
309
|
},
|
|
290
310
|
/**
|
|
@@ -296,6 +316,7 @@ var _obj;
|
|
|
296
316
|
Name: "Mobile country code and mobile network code",
|
|
297
317
|
Mandatory: false,
|
|
298
318
|
Type: ResourceType.Integer,
|
|
319
|
+
Multiple: false,
|
|
299
320
|
Description: "Examples: 24202, 310410"
|
|
300
321
|
},
|
|
301
322
|
/**
|
|
@@ -307,6 +328,7 @@ var _obj;
|
|
|
307
328
|
Name: "IP address",
|
|
308
329
|
Mandatory: false,
|
|
309
330
|
Type: ResourceType.String,
|
|
331
|
+
Multiple: false,
|
|
310
332
|
Description: "Examples: 10.81.183.99, 2001:0db8:85a3:0000:0000:8a2e:0370:7334, 2001:db8:85a3::8a2e:370:7334"
|
|
311
333
|
},
|
|
312
334
|
/**
|
|
@@ -318,6 +340,7 @@ var _obj;
|
|
|
318
340
|
Name: "Energy Estimate",
|
|
319
341
|
Mandatory: false,
|
|
320
342
|
Type: ResourceType.Integer,
|
|
343
|
+
Multiple: false,
|
|
321
344
|
Description: "The %CONEVAL AT command returns amongst other data the energy estimate: Relative estimated energy consumption of data transmission compared to nominal consumption. A higher value means smaller energy consumption. 5: Difficulties in setting up connections. Maximum number of repetitions might be needed for data. 6: Poor conditions. Setting up a connection might require retries and a higher number of repetitions for data. 7: Normal conditions for cIoT device. No repetitions for data or only a few repetitions in the worst case. 8: Good conditions. Possibly very good conditions for small amounts of data. 9: Very good conditions. Efficient data transfer estimated also for larger amounts of data. Examples: 5, 7"
|
|
322
345
|
},
|
|
323
346
|
/**
|
|
@@ -329,6 +352,7 @@ var _obj;
|
|
|
329
352
|
Name: "Timestamp",
|
|
330
353
|
Mandatory: true,
|
|
331
354
|
Type: ResourceType.Time,
|
|
355
|
+
Multiple: false,
|
|
332
356
|
Description: "The timestamp of when the measurement was performed."
|
|
333
357
|
}
|
|
334
358
|
}
|
|
@@ -347,6 +371,7 @@ var _obj;
|
|
|
347
371
|
Name: "IMEI",
|
|
348
372
|
Mandatory: true,
|
|
349
373
|
Type: ResourceType.String,
|
|
374
|
+
Multiple: false,
|
|
350
375
|
Description: "Board IMEI. Examples: 352656106111232."
|
|
351
376
|
},
|
|
352
377
|
/**
|
|
@@ -358,6 +383,7 @@ var _obj;
|
|
|
358
383
|
Name: "SIM ICCID",
|
|
359
384
|
Mandatory: false,
|
|
360
385
|
Type: ResourceType.String,
|
|
386
|
+
Multiple: false,
|
|
361
387
|
Description: "Examples: 89450421180216216095."
|
|
362
388
|
},
|
|
363
389
|
/**
|
|
@@ -369,6 +395,7 @@ var _obj;
|
|
|
369
395
|
Name: "Modem firmware version",
|
|
370
396
|
Mandatory: true,
|
|
371
397
|
Type: ResourceType.String,
|
|
398
|
+
Multiple: false,
|
|
372
399
|
Description: "Examples: mfw_nrf9160_1.0.0."
|
|
373
400
|
},
|
|
374
401
|
/**
|
|
@@ -380,6 +407,7 @@ var _obj;
|
|
|
380
407
|
Name: "Application firmware version",
|
|
381
408
|
Mandatory: true,
|
|
382
409
|
Type: ResourceType.String,
|
|
410
|
+
Multiple: false,
|
|
383
411
|
Description: "Examples: v1.0.0-rc1-327-g6fc8c16b239f."
|
|
384
412
|
},
|
|
385
413
|
/**
|
|
@@ -391,6 +419,7 @@ var _obj;
|
|
|
391
419
|
Name: "Board version",
|
|
392
420
|
Mandatory: true,
|
|
393
421
|
Type: ResourceType.String,
|
|
422
|
+
Multiple: false,
|
|
394
423
|
Description: "Examples: thingy91_nrf9160."
|
|
395
424
|
},
|
|
396
425
|
/**
|
|
@@ -402,6 +431,7 @@ var _obj;
|
|
|
402
431
|
Name: "Battery model",
|
|
403
432
|
Mandatory: false,
|
|
404
433
|
Type: ResourceType.String,
|
|
434
|
+
Multiple: false,
|
|
405
435
|
Description: "Examples: LP302535, LP502540, LP803035."
|
|
406
436
|
},
|
|
407
437
|
/**
|
|
@@ -413,6 +443,7 @@ var _obj;
|
|
|
413
443
|
Name: "Timestamp",
|
|
414
444
|
Mandatory: true,
|
|
415
445
|
Type: ResourceType.Time,
|
|
446
|
+
Multiple: false,
|
|
416
447
|
Description: "The timestamp of when the measurement was performed."
|
|
417
448
|
}
|
|
418
449
|
}
|
|
@@ -431,6 +462,7 @@ var _obj;
|
|
|
431
462
|
Name: "Temperature",
|
|
432
463
|
Mandatory: false,
|
|
433
464
|
Type: ResourceType.Float,
|
|
465
|
+
Multiple: false,
|
|
434
466
|
Description: "Environmental temperature in Celsius. Examples: 23.5, -10.2.",
|
|
435
467
|
Units: "\u00B0C"
|
|
436
468
|
},
|
|
@@ -446,6 +478,7 @@ var _obj;
|
|
|
446
478
|
Name: "Humidity",
|
|
447
479
|
Mandatory: false,
|
|
448
480
|
Type: ResourceType.Float,
|
|
481
|
+
Multiple: false,
|
|
449
482
|
Description: "Environmental humidity in percent. Examples: 44.2, 72.",
|
|
450
483
|
RangeEnumeration: {
|
|
451
484
|
min: 0,
|
|
@@ -462,6 +495,7 @@ var _obj;
|
|
|
462
495
|
Name: "Atmospheric pressure",
|
|
463
496
|
Mandatory: false,
|
|
464
497
|
Type: ResourceType.Float,
|
|
498
|
+
Multiple: false,
|
|
465
499
|
Description: "Atmospheric pressure in hectopascal. Examples: 1003.6, 977.",
|
|
466
500
|
Units: "hPa"
|
|
467
501
|
},
|
|
@@ -474,6 +508,7 @@ var _obj;
|
|
|
474
508
|
Name: "Air Quality Index",
|
|
475
509
|
Mandatory: false,
|
|
476
510
|
Type: ResourceType.Integer,
|
|
511
|
+
Multiple: false,
|
|
477
512
|
Description: "The Bosch BME680 sensor calculates an Air Quality Index. See https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bme680-ds001.pdf"
|
|
478
513
|
},
|
|
479
514
|
/**
|
|
@@ -485,6 +520,7 @@ var _obj;
|
|
|
485
520
|
Name: "Timestamp",
|
|
486
521
|
Mandatory: true,
|
|
487
522
|
Type: ResourceType.Time,
|
|
523
|
+
Multiple: false,
|
|
488
524
|
Description: "The timestamp of when the measurement was performed."
|
|
489
525
|
}
|
|
490
526
|
}
|
|
@@ -503,6 +539,7 @@ var _obj;
|
|
|
503
539
|
Name: "Gain",
|
|
504
540
|
Mandatory: true,
|
|
505
541
|
Type: ResourceType.Float,
|
|
542
|
+
Multiple: false,
|
|
506
543
|
Description: "The current gain from the solar shield, measured in mA. Example: 3.123, -0.0032.",
|
|
507
544
|
Units: "mA"
|
|
508
545
|
},
|
|
@@ -515,6 +552,7 @@ var _obj;
|
|
|
515
552
|
Name: "Voltage",
|
|
516
553
|
Mandatory: false,
|
|
517
554
|
Type: ResourceType.Float,
|
|
555
|
+
Multiple: false,
|
|
518
556
|
Description: "Battery voltage in Volt. Examples: 2.754, 3.3.",
|
|
519
557
|
Units: "V"
|
|
520
558
|
},
|
|
@@ -527,6 +565,7 @@ var _obj;
|
|
|
527
565
|
Name: "Timestamp",
|
|
528
566
|
Mandatory: true,
|
|
529
567
|
Type: ResourceType.Time,
|
|
568
|
+
Multiple: false,
|
|
530
569
|
Description: "The timestamp of when the measurement was performed."
|
|
531
570
|
}
|
|
532
571
|
}
|
|
@@ -545,6 +584,7 @@ var _obj;
|
|
|
545
584
|
Name: "Timestamp",
|
|
546
585
|
Mandatory: true,
|
|
547
586
|
Type: ResourceType.Time,
|
|
587
|
+
Multiple: false,
|
|
548
588
|
Description: "The timestamp of when the button was pressed."
|
|
549
589
|
}
|
|
550
590
|
}
|
|
@@ -563,6 +603,7 @@ var _obj;
|
|
|
563
603
|
Name: "Sea Water Level",
|
|
564
604
|
Mandatory: true,
|
|
565
605
|
Type: ResourceType.Float,
|
|
606
|
+
Multiple: false,
|
|
566
607
|
Description: "The observed sea water level relative the the sea level elevation of the sea map. Examples: 134.2, 104.5.",
|
|
567
608
|
Units: "cm"
|
|
568
609
|
},
|
|
@@ -575,6 +616,7 @@ var _obj;
|
|
|
575
616
|
Name: "Station code",
|
|
576
617
|
Mandatory: true,
|
|
577
618
|
Type: ResourceType.String,
|
|
619
|
+
Multiple: false,
|
|
578
620
|
Description: "The code of the observation station. Examples: TRD, SVG."
|
|
579
621
|
},
|
|
580
622
|
/**
|
|
@@ -586,6 +628,7 @@ var _obj;
|
|
|
586
628
|
Name: "Timestamp",
|
|
587
629
|
Mandatory: true,
|
|
588
630
|
Type: ResourceType.Time,
|
|
631
|
+
Multiple: false,
|
|
589
632
|
Description: "The timestamp of when the observation was made."
|
|
590
633
|
}
|
|
591
634
|
}
|
|
@@ -604,6 +647,7 @@ var _obj;
|
|
|
604
647
|
Name: "Red",
|
|
605
648
|
Mandatory: true,
|
|
606
649
|
Type: ResourceType.Integer,
|
|
650
|
+
Multiple: false,
|
|
607
651
|
Description: "The red brightness level of the LED.",
|
|
608
652
|
RangeEnumeration: {
|
|
609
653
|
min: 0,
|
|
@@ -622,6 +666,7 @@ var _obj;
|
|
|
622
666
|
Name: "Green",
|
|
623
667
|
Mandatory: true,
|
|
624
668
|
Type: ResourceType.Integer,
|
|
669
|
+
Multiple: false,
|
|
625
670
|
Description: "The green brightness level of the LED.",
|
|
626
671
|
RangeEnumeration: {
|
|
627
672
|
min: 0,
|
|
@@ -640,6 +685,7 @@ var _obj;
|
|
|
640
685
|
Name: "Blue",
|
|
641
686
|
Mandatory: true,
|
|
642
687
|
Type: ResourceType.Integer,
|
|
688
|
+
Multiple: false,
|
|
643
689
|
Description: "The blue brightness level of the LED.",
|
|
644
690
|
RangeEnumeration: {
|
|
645
691
|
min: 0,
|
|
@@ -655,6 +701,7 @@ var _obj;
|
|
|
655
701
|
Name: "Timestamp",
|
|
656
702
|
Mandatory: true,
|
|
657
703
|
Type: ResourceType.Time,
|
|
704
|
+
Multiple: false,
|
|
658
705
|
Description: "The timestamp of when the LED was changed."
|
|
659
706
|
}
|
|
660
707
|
}
|
|
@@ -673,6 +720,7 @@ var _obj;
|
|
|
673
720
|
Name: "Update interval",
|
|
674
721
|
Mandatory: true,
|
|
675
722
|
Type: ResourceType.Integer,
|
|
723
|
+
Multiple: false,
|
|
676
724
|
Description: "The update interval in seconds. Examples: 10, 3600.",
|
|
677
725
|
RangeEnumeration: {
|
|
678
726
|
min: 0,
|
|
@@ -688,6 +736,7 @@ var _obj;
|
|
|
688
736
|
Name: "GNSS enabled",
|
|
689
737
|
Mandatory: true,
|
|
690
738
|
Type: ResourceType.Boolean,
|
|
739
|
+
Multiple: false,
|
|
691
740
|
Description: "Whether to enabled the device's GNSS receiver."
|
|
692
741
|
},
|
|
693
742
|
/**
|
|
@@ -699,7 +748,39 @@ var _obj;
|
|
|
699
748
|
Name: "Timestamp",
|
|
700
749
|
Mandatory: true,
|
|
701
750
|
Type: ResourceType.Time,
|
|
751
|
+
Multiple: false,
|
|
702
752
|
Description: "The timestamp of when the configuration was updated."
|
|
703
753
|
}
|
|
704
754
|
}
|
|
755
|
+
}), /**
|
|
756
|
+
* nRF Cloud Service Info (14401)
|
|
757
|
+
*
|
|
758
|
+
* Describes the services supported by the device.
|
|
759
|
+
*/ _define_property(_obj, LwM2MObjectID.NRFCloudServiceInfo_14401, {
|
|
760
|
+
ObjectID: LwM2MObjectID.NRFCloudServiceInfo_14401,
|
|
761
|
+
ObjectVersion: "1.0",
|
|
762
|
+
Name: "nRF Cloud Service Info",
|
|
763
|
+
Description: "Describes the services supported by the device.",
|
|
764
|
+
Resources: {
|
|
765
|
+
0: {
|
|
766
|
+
ResourceID: 0,
|
|
767
|
+
Name: "FOTA",
|
|
768
|
+
Mandatory: false,
|
|
769
|
+
Type: ResourceType.String,
|
|
770
|
+
Multiple: true,
|
|
771
|
+
Description: "The types of firmwares the device supports. Examples: \"APP\", \"MODEM\"."
|
|
772
|
+
},
|
|
773
|
+
/**
|
|
774
|
+
* Timestamp (Time)
|
|
775
|
+
*
|
|
776
|
+
* The timestamp of when the service info was updated.
|
|
777
|
+
*/ 99: {
|
|
778
|
+
ResourceID: 99,
|
|
779
|
+
Name: "Timestamp",
|
|
780
|
+
Mandatory: true,
|
|
781
|
+
Type: ResourceType.Time,
|
|
782
|
+
Multiple: false,
|
|
783
|
+
Description: "The timestamp of when the service info was updated."
|
|
784
|
+
}
|
|
785
|
+
}
|
|
705
786
|
}), _obj);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { TimeResource, StringResource, OptionalResource, validateInstance } from "../validation.js";
|
|
2
|
+
import { LwM2MObjectID } from "../LwM2MObjectID.js";
|
|
3
|
+
/**
|
|
4
|
+
* Validate nRF Cloud Service Info (14401)
|
|
5
|
+
*
|
|
6
|
+
* Ensures the given object is an LwM2M object according to the schema 14401.xml.
|
|
7
|
+
*/ export var validate14401 = function(o) {
|
|
8
|
+
return validateInstance(LwM2MObjectID.NRFCloudServiceInfo_14401, "1.0", {
|
|
9
|
+
99: TimeResource,
|
|
10
|
+
0: OptionalResource(StringResource)
|
|
11
|
+
})(o);
|
|
12
|
+
};
|
package/dist/lwm2m/objects.js
CHANGED
|
@@ -8,3 +8,4 @@ export { validate14220 } from "./object/validate14220.js";
|
|
|
8
8
|
export { validate14230 } from "./object/validate14230.js";
|
|
9
9
|
export { validate14240 } from "./object/validate14240.js";
|
|
10
10
|
export { validate14301 } from "./object/validate14301.js";
|
|
11
|
+
export { validate14401 } from "./object/validate14401.js";
|
package/dist/lwm2m/validators.js
CHANGED
|
@@ -9,6 +9,7 @@ import { validate14220 } from "./object/validate14220.js";
|
|
|
9
9
|
import { validate14230 } from "./object/validate14230.js";
|
|
10
10
|
import { validate14240 } from "./object/validate14240.js";
|
|
11
11
|
import { validate14301 } from "./object/validate14301.js";
|
|
12
|
+
import { validate14401 } from "./object/validate14401.js";
|
|
12
13
|
/**
|
|
13
14
|
* Contains the validators for all registered LwM2M objects.
|
|
14
15
|
*/ export var validators = new Map();
|
|
@@ -22,3 +23,4 @@ validators.set(LwM2MObjectID.ButtonPress_14220, validate14220);
|
|
|
22
23
|
validators.set(LwM2MObjectID.SeaWaterLevel_14230, validate14230);
|
|
23
24
|
validators.set(LwM2MObjectID.RGBLED_14240, validate14240);
|
|
24
25
|
validators.set(LwM2MObjectID.ApplicationConfiguration_14301, validate14301);
|
|
26
|
+
validators.set(LwM2MObjectID.NRFCloudServiceInfo_14401, validate14401);
|
package/lwm2m/14401.xml
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<LWM2M xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://openmobilealliance.org/tech/profiles/LWM2M-v1_1.xsd">
|
|
3
|
+
<Object ObjectType="MODefinition">
|
|
4
|
+
<Name>nRF Cloud Service Info</Name>
|
|
5
|
+
<Description1><![CDATA[Describes the services supported by the device.]]></Description1>
|
|
6
|
+
<ObjectID>14401</ObjectID>
|
|
7
|
+
<ObjectURN>urn:oma:lwm2m:x:14401</ObjectURN>
|
|
8
|
+
<MultipleInstances>Multiple</MultipleInstances>
|
|
9
|
+
<Mandatory>Optional</Mandatory>
|
|
10
|
+
<Resources>
|
|
11
|
+
<Item ID="0">
|
|
12
|
+
<Name>FOTA</Name>
|
|
13
|
+
<Operations>RW</Operations>
|
|
14
|
+
<MultipleInstances>Multiple</MultipleInstances>
|
|
15
|
+
<Mandatory>Optional</Mandatory>
|
|
16
|
+
<Type>String</Type>
|
|
17
|
+
<RangeEnumeration/>
|
|
18
|
+
<Units/>
|
|
19
|
+
<Description><![CDATA[The types of firmwares the device supports. Examples: "APP", "MODEM".]]></Description>
|
|
20
|
+
</Item>
|
|
21
|
+
<Item ID="99">
|
|
22
|
+
<Name>Timestamp</Name>
|
|
23
|
+
<Operations>R</Operations>
|
|
24
|
+
<MultipleInstances>Single</MultipleInstances>
|
|
25
|
+
<Mandatory>Mandatory</Mandatory>
|
|
26
|
+
<Type>Time</Type>
|
|
27
|
+
<RangeEnumeration/>
|
|
28
|
+
<Units/>
|
|
29
|
+
<Description><![CDATA[The timestamp of when the service info was updated.]]></Description>
|
|
30
|
+
</Item>
|
|
31
|
+
</Resources>
|
|
32
|
+
<Description2/>
|
|
33
|
+
</Object>
|
|
34
|
+
</LWM2M>
|
|
@@ -49,7 +49,10 @@ export const LWM2MObjectDefinition = Type.Object(
|
|
|
49
49
|
Type.Literal('W'),
|
|
50
50
|
Type.Literal('RW'),
|
|
51
51
|
]),
|
|
52
|
-
MultipleInstances: Type.
|
|
52
|
+
MultipleInstances: Type.Union([
|
|
53
|
+
Type.Literal('Single'),
|
|
54
|
+
Type.Literal('Multiple'),
|
|
55
|
+
]),
|
|
53
56
|
Mandatory: Type.Union([
|
|
54
57
|
Type.Literal('Optional'),
|
|
55
58
|
Type.Literal('Mandatory'),
|
package/lwm2m/LWM2MObjectInfo.ts
CHANGED
package/lwm2m/LwM2MObjectID.ts
CHANGED
|
@@ -61,7 +61,13 @@ export enum LwM2MObjectID {
|
|
|
61
61
|
*
|
|
62
62
|
* Describes application configuration
|
|
63
63
|
*/
|
|
64
|
-
ApplicationConfiguration_14301 = 14301
|
|
64
|
+
ApplicationConfiguration_14301 = 14301,
|
|
65
|
+
/**
|
|
66
|
+
* nRF Cloud Service Info (14401)
|
|
67
|
+
*
|
|
68
|
+
* Describes the services supported by the device.
|
|
69
|
+
*/
|
|
70
|
+
NRFCloudServiceInfo_14401 = 14401
|
|
65
71
|
}
|
|
66
72
|
/**
|
|
67
73
|
* The LwM2M Object IDs defined in this repo.
|
|
@@ -86,4 +92,6 @@ export const LwM2MObjectIDs = [
|
|
|
86
92
|
// RGB LED (14240)
|
|
87
93
|
LwM2MObjectID.RGBLED_14240,
|
|
88
94
|
// Application Configuration (14301)
|
|
89
|
-
LwM2MObjectID.ApplicationConfiguration_14301
|
|
95
|
+
LwM2MObjectID.ApplicationConfiguration_14301,
|
|
96
|
+
// nRF Cloud Service Info (14401)
|
|
97
|
+
LwM2MObjectID.NRFCloudServiceInfo_14401];
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import type { LwM2MObjectID } from './LwM2MObjectID.js'
|
|
2
2
|
|
|
3
|
-
export type LwM2MResourceValue =
|
|
3
|
+
export type LwM2MResourceValue =
|
|
4
|
+
| string
|
|
5
|
+
| number
|
|
6
|
+
| boolean
|
|
7
|
+
| Array<string>
|
|
8
|
+
| Array<number>
|
|
9
|
+
| Array<boolean>
|
|
10
|
+
|
|
4
11
|
type GenericLwM2MObjectInstance = {
|
|
5
12
|
ObjectID: LwM2MObjectID
|
|
6
13
|
/**
|
|
@@ -4,7 +4,7 @@ export type Resource = {
|
|
|
4
4
|
}
|
|
5
5
|
Name: string // e.g. 'Latitude'
|
|
6
6
|
Operations: 'R'
|
|
7
|
-
MultipleInstances: 'Single'
|
|
7
|
+
MultipleInstances: 'Single' | 'Multiple'
|
|
8
8
|
Mandatory: 'Optional' | 'Mandatory'
|
|
9
9
|
Type: 'String' | 'Integer' | 'Float' | 'Boolean' | 'Opaque' | 'Time'
|
|
10
10
|
RangeEnumeration: string // e.g. -10..10
|
package/lwm2m/definitions.ts
CHANGED
|
@@ -16,7 +16,7 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
|
|
|
16
16
|
* Minimum: -90
|
|
17
17
|
* Maximum: 90
|
|
18
18
|
*/
|
|
19
|
-
0: { ResourceID: 0, Name: "Latitude", Mandatory: true, Type: ResourceType.Float, Description: "The decimal notation of latitude in degrees, e.g. -43.5723 [World Geodetic System 1984].", RangeEnumeration: { min: -90, max: 90 }, Units: "\u00B0" }, /**
|
|
19
|
+
0: { ResourceID: 0, Name: "Latitude", Mandatory: true, Type: ResourceType.Float, Multiple: false, Description: "The decimal notation of latitude in degrees, e.g. -43.5723 [World Geodetic System 1984].", RangeEnumeration: { min: -90, max: 90 }, Units: "\u00B0" }, /**
|
|
20
20
|
* Longitude (Float)
|
|
21
21
|
*
|
|
22
22
|
* The decimal notation of longitude in degrees, e.g. 153.21760 [World Geodetic System 1984].
|
|
@@ -24,22 +24,22 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
|
|
|
24
24
|
* Minimum: -180
|
|
25
25
|
* Maximum: 180
|
|
26
26
|
*/
|
|
27
|
-
1: { ResourceID: 1, Name: "Longitude", Mandatory: true, Type: ResourceType.Float, Description: "The decimal notation of longitude in degrees, e.g. 153.21760 [World Geodetic System 1984].", RangeEnumeration: { min: -180, max: 180 }, Units: "\u00B0" }, /**
|
|
27
|
+
1: { ResourceID: 1, Name: "Longitude", Mandatory: true, Type: ResourceType.Float, Multiple: false, Description: "The decimal notation of longitude in degrees, e.g. 153.21760 [World Geodetic System 1984].", RangeEnumeration: { min: -180, max: 180 }, Units: "\u00B0" }, /**
|
|
28
28
|
* Altitude (Float)
|
|
29
29
|
*
|
|
30
30
|
* The decimal notation of altitude in meters above sea level.
|
|
31
31
|
*/
|
|
32
|
-
2: { ResourceID: 2, Name: "Altitude", Mandatory: false, Type: ResourceType.Float, Description: "The decimal notation of altitude in meters above sea level.", Units: "m" }, /**
|
|
32
|
+
2: { ResourceID: 2, Name: "Altitude", Mandatory: false, Type: ResourceType.Float, Multiple: false, Description: "The decimal notation of altitude in meters above sea level.", Units: "m" }, /**
|
|
33
33
|
* Radius (Float)
|
|
34
34
|
*
|
|
35
35
|
* The value in this resource indicates the radius of a circular area in meters. The circular area is used to describe uncertainty about a point for coordinates in a two-dimensional coordinate reference systems (CRS). The center point of a circular area is specified by using the Latitude and the Longitude Resources.
|
|
36
36
|
*/
|
|
37
|
-
3: { ResourceID: 3, Name: "Radius", Mandatory: false, Type: ResourceType.Float, Description: "The value in this resource indicates the radius of a circular area in meters. The circular area is used to describe uncertainty about a point for coordinates in a two-dimensional coordinate reference systems (CRS). The center point of a circular area is specified by using the Latitude and the Longitude Resources.", Units: "m" }, /**
|
|
37
|
+
3: { ResourceID: 3, Name: "Radius", Mandatory: false, Type: ResourceType.Float, Multiple: false, Description: "The value in this resource indicates the radius of a circular area in meters. The circular area is used to describe uncertainty about a point for coordinates in a two-dimensional coordinate reference systems (CRS). The center point of a circular area is specified by using the Latitude and the Longitude Resources.", Units: "m" }, /**
|
|
38
38
|
* Speed (Float)
|
|
39
39
|
*
|
|
40
40
|
* Speed is the time rate of change in position.
|
|
41
41
|
*/
|
|
42
|
-
4: { ResourceID: 4, Name: "Speed", Mandatory: false, Type: ResourceType.Float, Description: "Speed is the time rate of change in position.", Units: "m/s" }, /**
|
|
42
|
+
4: { ResourceID: 4, Name: "Speed", Mandatory: false, Type: ResourceType.Float, Multiple: false, Description: "Speed is the time rate of change in position.", Units: "m/s" }, /**
|
|
43
43
|
* Heading (Float)
|
|
44
44
|
*
|
|
45
45
|
* The angle of movement in degrees.
|
|
@@ -47,17 +47,17 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
|
|
|
47
47
|
* Minimum: 0
|
|
48
48
|
* Maximum: 360
|
|
49
49
|
*/
|
|
50
|
-
5: { ResourceID: 5, Name: "Heading", Mandatory: false, Type: ResourceType.Float, Description: "The angle of movement in degrees.", RangeEnumeration: { min: 0, max: 360 }, Units: "\u00B0" }, /**
|
|
50
|
+
5: { ResourceID: 5, Name: "Heading", Mandatory: false, Type: ResourceType.Float, Multiple: false, Description: "The angle of movement in degrees.", RangeEnumeration: { min: 0, max: 360 }, Units: "\u00B0" }, /**
|
|
51
51
|
* Source (String)
|
|
52
52
|
*
|
|
53
53
|
* The source of the geo location, e.g. GNSS, SCELL, MCELL, WIFI.
|
|
54
54
|
*/
|
|
55
|
-
6: { ResourceID: 6, Name: "Source", Mandatory: true, Type: ResourceType.String, Description: "The source of the geo location, e.g. GNSS, SCELL, MCELL, WIFI." }, /**
|
|
55
|
+
6: { ResourceID: 6, Name: "Source", Mandatory: true, Type: ResourceType.String, Multiple: false, Description: "The source of the geo location, e.g. GNSS, SCELL, MCELL, WIFI." }, /**
|
|
56
56
|
* Timestamp (Time)
|
|
57
57
|
*
|
|
58
58
|
* The timestamp of when the location measurement was performed.
|
|
59
59
|
*/
|
|
60
|
-
99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Description: "The timestamp of when the location measurement was performed." } } }, /**
|
|
60
|
+
99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Multiple: false, Description: "The timestamp of when the location measurement was performed." } } }, /**
|
|
61
61
|
* Battery and Power (14202)
|
|
62
62
|
*
|
|
63
63
|
* Information about the battery and power status of the device.
|
|
@@ -70,37 +70,37 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
|
|
|
70
70
|
* Minimum: 0
|
|
71
71
|
* Maximum: 100
|
|
72
72
|
*/
|
|
73
|
-
0: { ResourceID: 0, Name: "State of charge", Mandatory: false, Type: ResourceType.Integer, Description: "State of charge in percent. Examples: 23, 1, 100.", RangeEnumeration: { min: 0, max: 100 }, Units: "%" }, /**
|
|
73
|
+
0: { ResourceID: 0, Name: "State of charge", Mandatory: false, Type: ResourceType.Integer, Multiple: false, Description: "State of charge in percent. Examples: 23, 1, 100.", RangeEnumeration: { min: 0, max: 100 }, Units: "%" }, /**
|
|
74
74
|
* Voltage (Float)
|
|
75
75
|
*
|
|
76
76
|
* Battery voltage in Volt. Examples: 2.754, 3.3.
|
|
77
77
|
*/
|
|
78
|
-
1: { ResourceID: 1, Name: "Voltage", Mandatory: false, Type: ResourceType.Float, Description: "Battery voltage in Volt. Examples: 2.754, 3.3.", Units: "V" }, /**
|
|
78
|
+
1: { ResourceID: 1, Name: "Voltage", Mandatory: false, Type: ResourceType.Float, Multiple: false, Description: "Battery voltage in Volt. Examples: 2.754, 3.3.", Units: "V" }, /**
|
|
79
79
|
* Charge current (Float)
|
|
80
80
|
*
|
|
81
81
|
* Charge current in mA. Examples: 429, -244.
|
|
82
82
|
*/
|
|
83
|
-
2: { ResourceID: 2, Name: "Charge current", Mandatory: false, Type: ResourceType.Float, Description: "Charge current in mA. Examples: 429, -244.", Units: "mA" }, /**
|
|
83
|
+
2: { ResourceID: 2, Name: "Charge current", Mandatory: false, Type: ResourceType.Float, Multiple: false, Description: "Charge current in mA. Examples: 429, -244.", Units: "mA" }, /**
|
|
84
84
|
* Battery temperature (Float)
|
|
85
85
|
*
|
|
86
86
|
* Battery temperature in Celsius. Examples: 21.7, 23.123.
|
|
87
87
|
*/
|
|
88
|
-
3: { ResourceID: 3, Name: "Battery temperature", Mandatory: false, Type: ResourceType.Float, Description: "Battery temperature in Celsius. Examples: 21.7, 23.123.", Units: "C" }, /**
|
|
88
|
+
3: { ResourceID: 3, Name: "Battery temperature", Mandatory: false, Type: ResourceType.Float, Multiple: false, Description: "Battery temperature in Celsius. Examples: 21.7, 23.123.", Units: "C" }, /**
|
|
89
89
|
* Time to full (Integer)
|
|
90
90
|
*
|
|
91
91
|
* Time to full in seconds. Examples: 4652.
|
|
92
92
|
*/
|
|
93
|
-
4: { ResourceID: 4, Name: "Time to full", Mandatory: false, Type: ResourceType.Integer, Description: "Time to full in seconds. Examples: 4652.", Units: "s" }, /**
|
|
93
|
+
4: { ResourceID: 4, Name: "Time to full", Mandatory: false, Type: ResourceType.Integer, Multiple: false, Description: "Time to full in seconds. Examples: 4652.", Units: "s" }, /**
|
|
94
94
|
* Time to empty (Integer)
|
|
95
95
|
*
|
|
96
96
|
* Time to empty in seconds. Examples: 4652.
|
|
97
97
|
*/
|
|
98
|
-
5: { ResourceID: 5, Name: "Time to empty", Mandatory: false, Type: ResourceType.Integer, Description: "Time to empty in seconds. Examples: 4652.", Units: "s" }, /**
|
|
98
|
+
5: { ResourceID: 5, Name: "Time to empty", Mandatory: false, Type: ResourceType.Integer, Multiple: false, Description: "Time to empty in seconds. Examples: 4652.", Units: "s" }, /**
|
|
99
99
|
* Timestamp (Time)
|
|
100
100
|
*
|
|
101
101
|
* The timestamp of when the measurement was performed.
|
|
102
102
|
*/
|
|
103
|
-
99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Description: "The timestamp of when the measurement was performed." } } }, /**
|
|
103
|
+
99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Multiple: false, Description: "The timestamp of when the measurement was performed." } } }, /**
|
|
104
104
|
* Connection information (14203)
|
|
105
105
|
*
|
|
106
106
|
* Details about the device's connection.
|
|
@@ -110,47 +110,47 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
|
|
|
110
110
|
*
|
|
111
111
|
* Examples: LTE-M, NB-IoT.
|
|
112
112
|
*/
|
|
113
|
-
0: { ResourceID: 0, Name: "Network mode", Mandatory: false, Type: ResourceType.String, Description: "Examples: LTE-M, NB-IoT." }, /**
|
|
113
|
+
0: { ResourceID: 0, Name: "Network mode", Mandatory: false, Type: ResourceType.String, Multiple: false, Description: "Examples: LTE-M, NB-IoT." }, /**
|
|
114
114
|
* Band (Integer)
|
|
115
115
|
*
|
|
116
116
|
* E-UTRA Absolute Radio Frequency Channel Number (EARFCN) of the current cell where the EARFCN is as defined in 3GPP TS 36.101. LTE carrier channel number for unique identification of LTE band and carrier frequency. Examples: 262143
|
|
117
117
|
*/
|
|
118
|
-
1: { ResourceID: 1, Name: "Band", Mandatory: false, Type: ResourceType.Integer, Description: "E-UTRA Absolute Radio Frequency Channel Number (EARFCN) of the current cell where the EARFCN is as defined in 3GPP TS 36.101. LTE carrier channel number for unique identification of LTE band and carrier frequency. Examples: 262143" }, /**
|
|
118
|
+
1: { ResourceID: 1, Name: "Band", Mandatory: false, Type: ResourceType.Integer, Multiple: false, Description: "E-UTRA Absolute Radio Frequency Channel Number (EARFCN) of the current cell where the EARFCN is as defined in 3GPP TS 36.101. LTE carrier channel number for unique identification of LTE band and carrier frequency. Examples: 262143" }, /**
|
|
119
119
|
* RSRP (Integer)
|
|
120
120
|
*
|
|
121
121
|
* Reference Signal Received Power (RSRP). The average power level in dBm received from a single reference signal in an LTE (Long-term Evolution) network. Typically this value ranges from -140 to -40 dBm. Examples: -97, -104.
|
|
122
122
|
*/
|
|
123
|
-
2: { ResourceID: 2, Name: "RSRP", Mandatory: false, Type: ResourceType.Integer, Description: "Reference Signal Received Power (RSRP). The average power level in dBm received from a single reference signal in an LTE (Long-term Evolution) network. Typically this value ranges from -140 to -40 dBm. Examples: -97, -104.", Units: "dBm" }, /**
|
|
123
|
+
2: { ResourceID: 2, Name: "RSRP", Mandatory: false, Type: ResourceType.Integer, Multiple: false, Description: "Reference Signal Received Power (RSRP). The average power level in dBm received from a single reference signal in an LTE (Long-term Evolution) network. Typically this value ranges from -140 to -40 dBm. Examples: -97, -104.", Units: "dBm" }, /**
|
|
124
124
|
* Area (Integer)
|
|
125
125
|
*
|
|
126
126
|
* Area code. Examples: 12
|
|
127
127
|
*/
|
|
128
|
-
3: { ResourceID: 3, Name: "Area", Mandatory: false, Type: ResourceType.Integer, Description: "Area code. Examples: 12" }, /**
|
|
128
|
+
3: { ResourceID: 3, Name: "Area", Mandatory: false, Type: ResourceType.Integer, Multiple: false, Description: "Area code. Examples: 12" }, /**
|
|
129
129
|
* Cell (Integer)
|
|
130
130
|
*
|
|
131
131
|
* The cell ID the User Equipment (UE) is camped on. 4-byte Evolved Terrestrial Radio Access Network (E-UTRAN) cell ID. Examples: 33703719
|
|
132
132
|
*/
|
|
133
|
-
4: { ResourceID: 4, Name: "Cell", Mandatory: false, Type: ResourceType.Integer, Description: "The cell ID the User Equipment (UE) is camped on. 4-byte Evolved Terrestrial Radio Access Network (E-UTRAN) cell ID. Examples: 33703719" }, /**
|
|
133
|
+
4: { ResourceID: 4, Name: "Cell", Mandatory: false, Type: ResourceType.Integer, Multiple: false, Description: "The cell ID the User Equipment (UE) is camped on. 4-byte Evolved Terrestrial Radio Access Network (E-UTRAN) cell ID. Examples: 33703719" }, /**
|
|
134
134
|
* Mobile country code and mobile network code (Integer)
|
|
135
135
|
*
|
|
136
136
|
* Examples: 24202, 310410
|
|
137
137
|
*/
|
|
138
|
-
5: { ResourceID: 5, Name: "Mobile country code and mobile network code", Mandatory: false, Type: ResourceType.Integer, Description: "Examples: 24202, 310410" }, /**
|
|
138
|
+
5: { ResourceID: 5, Name: "Mobile country code and mobile network code", Mandatory: false, Type: ResourceType.Integer, Multiple: false, Description: "Examples: 24202, 310410" }, /**
|
|
139
139
|
* IP address (String)
|
|
140
140
|
*
|
|
141
141
|
* Examples: 10.81.183.99, 2001:0db8:85a3:0000:0000:8a2e:0370:7334, 2001:db8:85a3::8a2e:370:7334
|
|
142
142
|
*/
|
|
143
|
-
6: { ResourceID: 6, Name: "IP address", Mandatory: false, Type: ResourceType.String, Description: "Examples: 10.81.183.99, 2001:0db8:85a3:0000:0000:8a2e:0370:7334, 2001:db8:85a3::8a2e:370:7334" }, /**
|
|
143
|
+
6: { ResourceID: 6, Name: "IP address", Mandatory: false, Type: ResourceType.String, Multiple: false, Description: "Examples: 10.81.183.99, 2001:0db8:85a3:0000:0000:8a2e:0370:7334, 2001:db8:85a3::8a2e:370:7334" }, /**
|
|
144
144
|
* Energy Estimate (Integer)
|
|
145
145
|
*
|
|
146
146
|
* The %CONEVAL AT command returns amongst other data the energy estimate: Relative estimated energy consumption of data transmission compared to nominal consumption. A higher value means smaller energy consumption. 5: Difficulties in setting up connections. Maximum number of repetitions might be needed for data. 6: Poor conditions. Setting up a connection might require retries and a higher number of repetitions for data. 7: Normal conditions for cIoT device. No repetitions for data or only a few repetitions in the worst case. 8: Good conditions. Possibly very good conditions for small amounts of data. 9: Very good conditions. Efficient data transfer estimated also for larger amounts of data. Examples: 5, 7
|
|
147
147
|
*/
|
|
148
|
-
11: { ResourceID: 11, Name: "Energy Estimate", Mandatory: false, Type: ResourceType.Integer, Description: "The %CONEVAL AT command returns amongst other data the energy estimate: Relative estimated energy consumption of data transmission compared to nominal consumption. A higher value means smaller energy consumption. 5: Difficulties in setting up connections. Maximum number of repetitions might be needed for data. 6: Poor conditions. Setting up a connection might require retries and a higher number of repetitions for data. 7: Normal conditions for cIoT device. No repetitions for data or only a few repetitions in the worst case. 8: Good conditions. Possibly very good conditions for small amounts of data. 9: Very good conditions. Efficient data transfer estimated also for larger amounts of data. Examples: 5, 7" }, /**
|
|
148
|
+
11: { ResourceID: 11, Name: "Energy Estimate", Mandatory: false, Type: ResourceType.Integer, Multiple: false, Description: "The %CONEVAL AT command returns amongst other data the energy estimate: Relative estimated energy consumption of data transmission compared to nominal consumption. A higher value means smaller energy consumption. 5: Difficulties in setting up connections. Maximum number of repetitions might be needed for data. 6: Poor conditions. Setting up a connection might require retries and a higher number of repetitions for data. 7: Normal conditions for cIoT device. No repetitions for data or only a few repetitions in the worst case. 8: Good conditions. Possibly very good conditions for small amounts of data. 9: Very good conditions. Efficient data transfer estimated also for larger amounts of data. Examples: 5, 7" }, /**
|
|
149
149
|
* Timestamp (Time)
|
|
150
150
|
*
|
|
151
151
|
* The timestamp of when the measurement was performed.
|
|
152
152
|
*/
|
|
153
|
-
99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Description: "The timestamp of when the measurement was performed." } } }, /**
|
|
153
|
+
99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Multiple: false, Description: "The timestamp of when the measurement was performed." } } }, /**
|
|
154
154
|
* Device information (14204)
|
|
155
155
|
*
|
|
156
156
|
* Details about the device's connection.
|
|
@@ -160,37 +160,37 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
|
|
|
160
160
|
*
|
|
161
161
|
* Board IMEI. Examples: 352656106111232.
|
|
162
162
|
*/
|
|
163
|
-
0: { ResourceID: 0, Name: "IMEI", Mandatory: true, Type: ResourceType.String, Description: "Board IMEI. Examples: 352656106111232." }, /**
|
|
163
|
+
0: { ResourceID: 0, Name: "IMEI", Mandatory: true, Type: ResourceType.String, Multiple: false, Description: "Board IMEI. Examples: 352656106111232." }, /**
|
|
164
164
|
* SIM ICCID (String)
|
|
165
165
|
*
|
|
166
166
|
* Examples: 89450421180216216095.
|
|
167
167
|
*/
|
|
168
|
-
1: { ResourceID: 1, Name: "SIM ICCID", Mandatory: false, Type: ResourceType.String, Description: "Examples: 89450421180216216095." }, /**
|
|
168
|
+
1: { ResourceID: 1, Name: "SIM ICCID", Mandatory: false, Type: ResourceType.String, Multiple: false, Description: "Examples: 89450421180216216095." }, /**
|
|
169
169
|
* Modem firmware version (String)
|
|
170
170
|
*
|
|
171
171
|
* Examples: mfw_nrf9160_1.0.0.
|
|
172
172
|
*/
|
|
173
|
-
2: { ResourceID: 2, Name: "Modem firmware version", Mandatory: true, Type: ResourceType.String, Description: "Examples: mfw_nrf9160_1.0.0." }, /**
|
|
173
|
+
2: { ResourceID: 2, Name: "Modem firmware version", Mandatory: true, Type: ResourceType.String, Multiple: false, Description: "Examples: mfw_nrf9160_1.0.0." }, /**
|
|
174
174
|
* Application firmware version (String)
|
|
175
175
|
*
|
|
176
176
|
* Examples: v1.0.0-rc1-327-g6fc8c16b239f.
|
|
177
177
|
*/
|
|
178
|
-
3: { ResourceID: 3, Name: "Application firmware version", Mandatory: true, Type: ResourceType.String, Description: "Examples: v1.0.0-rc1-327-g6fc8c16b239f." }, /**
|
|
178
|
+
3: { ResourceID: 3, Name: "Application firmware version", Mandatory: true, Type: ResourceType.String, Multiple: false, Description: "Examples: v1.0.0-rc1-327-g6fc8c16b239f." }, /**
|
|
179
179
|
* Board version (String)
|
|
180
180
|
*
|
|
181
181
|
* Examples: thingy91_nrf9160.
|
|
182
182
|
*/
|
|
183
|
-
4: { ResourceID: 4, Name: "Board version", Mandatory: true, Type: ResourceType.String, Description: "Examples: thingy91_nrf9160." }, /**
|
|
183
|
+
4: { ResourceID: 4, Name: "Board version", Mandatory: true, Type: ResourceType.String, Multiple: false, Description: "Examples: thingy91_nrf9160." }, /**
|
|
184
184
|
* Battery model (String)
|
|
185
185
|
*
|
|
186
186
|
* Examples: LP302535, LP502540, LP803035.
|
|
187
187
|
*/
|
|
188
|
-
5: { ResourceID: 5, Name: "Battery model", Mandatory: false, Type: ResourceType.String, Description: "Examples: LP302535, LP502540, LP803035." }, /**
|
|
188
|
+
5: { ResourceID: 5, Name: "Battery model", Mandatory: false, Type: ResourceType.String, Multiple: false, Description: "Examples: LP302535, LP502540, LP803035." }, /**
|
|
189
189
|
* Timestamp (Time)
|
|
190
190
|
*
|
|
191
191
|
* The timestamp of when the measurement was performed.
|
|
192
192
|
*/
|
|
193
|
-
99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Description: "The timestamp of when the measurement was performed." } } }, /**
|
|
193
|
+
99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Multiple: false, Description: "The timestamp of when the measurement was performed." } } }, /**
|
|
194
194
|
* Environment (14205)
|
|
195
195
|
*
|
|
196
196
|
* Environment information.
|
|
@@ -200,7 +200,7 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
|
|
|
200
200
|
*
|
|
201
201
|
* Environmental temperature in Celsius. Examples: 23.5, -10.2.
|
|
202
202
|
*/
|
|
203
|
-
0: { ResourceID: 0, Name: "Temperature", Mandatory: false, Type: ResourceType.Float, Description: "Environmental temperature in Celsius. Examples: 23.5, -10.2.", Units: "\u00B0C" }, /**
|
|
203
|
+
0: { ResourceID: 0, Name: "Temperature", Mandatory: false, Type: ResourceType.Float, Multiple: false, Description: "Environmental temperature in Celsius. Examples: 23.5, -10.2.", Units: "\u00B0C" }, /**
|
|
204
204
|
* Humidity (Float)
|
|
205
205
|
*
|
|
206
206
|
* Environmental humidity in percent. Examples: 44.2, 72.
|
|
@@ -208,22 +208,22 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
|
|
|
208
208
|
* Minimum: 0
|
|
209
209
|
* Maximum: 100
|
|
210
210
|
*/
|
|
211
|
-
1: { ResourceID: 1, Name: "Humidity", Mandatory: false, Type: ResourceType.Float, Description: "Environmental humidity in percent. Examples: 44.2, 72.", RangeEnumeration: { min: 0, max: 100 }, Units: "%" }, /**
|
|
211
|
+
1: { ResourceID: 1, Name: "Humidity", Mandatory: false, Type: ResourceType.Float, Multiple: false, Description: "Environmental humidity in percent. Examples: 44.2, 72.", RangeEnumeration: { min: 0, max: 100 }, Units: "%" }, /**
|
|
212
212
|
* Atmospheric pressure (Float)
|
|
213
213
|
*
|
|
214
214
|
* Atmospheric pressure in hectopascal. Examples: 1003.6, 977.
|
|
215
215
|
*/
|
|
216
|
-
2: { ResourceID: 2, Name: "Atmospheric pressure", Mandatory: false, Type: ResourceType.Float, Description: "Atmospheric pressure in hectopascal. Examples: 1003.6, 977.", Units: "hPa" }, /**
|
|
216
|
+
2: { ResourceID: 2, Name: "Atmospheric pressure", Mandatory: false, Type: ResourceType.Float, Multiple: false, Description: "Atmospheric pressure in hectopascal. Examples: 1003.6, 977.", Units: "hPa" }, /**
|
|
217
217
|
* Air Quality Index (Integer)
|
|
218
218
|
*
|
|
219
219
|
* The Bosch BME680 sensor calculates an Air Quality Index. See https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bme680-ds001.pdf
|
|
220
220
|
*/
|
|
221
|
-
10: { ResourceID: 10, Name: "Air Quality Index", Mandatory: false, Type: ResourceType.Integer, Description: "The Bosch BME680 sensor calculates an Air Quality Index. See https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bme680-ds001.pdf" }, /**
|
|
221
|
+
10: { ResourceID: 10, Name: "Air Quality Index", Mandatory: false, Type: ResourceType.Integer, Multiple: false, Description: "The Bosch BME680 sensor calculates an Air Quality Index. See https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bme680-ds001.pdf" }, /**
|
|
222
222
|
* Timestamp (Time)
|
|
223
223
|
*
|
|
224
224
|
* The timestamp of when the measurement was performed.
|
|
225
225
|
*/
|
|
226
|
-
99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Description: "The timestamp of when the measurement was performed." } } }, /**
|
|
226
|
+
99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Multiple: false, Description: "The timestamp of when the measurement was performed." } } }, /**
|
|
227
227
|
* Solar charge (14210)
|
|
228
228
|
*
|
|
229
229
|
* Measurements from the solar shield.
|
|
@@ -233,17 +233,17 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
|
|
|
233
233
|
*
|
|
234
234
|
* The current gain from the solar shield, measured in mA. Example: 3.123, -0.0032.
|
|
235
235
|
*/
|
|
236
|
-
0: { ResourceID: 0, Name: "Gain", Mandatory: true, Type: ResourceType.Float, Description: "The current gain from the solar shield, measured in mA. Example: 3.123, -0.0032.", Units: "mA" }, /**
|
|
236
|
+
0: { ResourceID: 0, Name: "Gain", Mandatory: true, Type: ResourceType.Float, Multiple: false, Description: "The current gain from the solar shield, measured in mA. Example: 3.123, -0.0032.", Units: "mA" }, /**
|
|
237
237
|
* Voltage (Float)
|
|
238
238
|
*
|
|
239
239
|
* Battery voltage in Volt. Examples: 2.754, 3.3.
|
|
240
240
|
*/
|
|
241
|
-
1: { ResourceID: 1, Name: "Voltage", Mandatory: false, Type: ResourceType.Float, Description: "Battery voltage in Volt. Examples: 2.754, 3.3.", Units: "V" }, /**
|
|
241
|
+
1: { ResourceID: 1, Name: "Voltage", Mandatory: false, Type: ResourceType.Float, Multiple: false, Description: "Battery voltage in Volt. Examples: 2.754, 3.3.", Units: "V" }, /**
|
|
242
242
|
* Timestamp (Time)
|
|
243
243
|
*
|
|
244
244
|
* The timestamp of when the measurement was performed.
|
|
245
245
|
*/
|
|
246
|
-
99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Description: "The timestamp of when the measurement was performed." } } }, /**
|
|
246
|
+
99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Multiple: false, Description: "The timestamp of when the measurement was performed." } } }, /**
|
|
247
247
|
* Button press (14220)
|
|
248
248
|
*
|
|
249
249
|
* Describes a button press event. The ObjectInstanceID is used to describe which button has been pressed.
|
|
@@ -253,7 +253,7 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
|
|
|
253
253
|
*
|
|
254
254
|
* The timestamp of when the button was pressed.
|
|
255
255
|
*/
|
|
256
|
-
99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Description: "The timestamp of when the button was pressed." } } }, /**
|
|
256
|
+
99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Multiple: false, Description: "The timestamp of when the button was pressed." } } }, /**
|
|
257
257
|
* Sea Water Level (14230)
|
|
258
258
|
*
|
|
259
259
|
* Describes observed sea water level.
|
|
@@ -263,17 +263,17 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
|
|
|
263
263
|
*
|
|
264
264
|
* The observed sea water level relative the the sea level elevation of the sea map. Examples: 134.2, 104.5.
|
|
265
265
|
*/
|
|
266
|
-
0: { ResourceID: 0, Name: "Sea Water Level", Mandatory: true, Type: ResourceType.Float, Description: "The observed sea water level relative the the sea level elevation of the sea map. Examples: 134.2, 104.5.", Units: "cm" }, /**
|
|
266
|
+
0: { ResourceID: 0, Name: "Sea Water Level", Mandatory: true, Type: ResourceType.Float, Multiple: false, Description: "The observed sea water level relative the the sea level elevation of the sea map. Examples: 134.2, 104.5.", Units: "cm" }, /**
|
|
267
267
|
* Station code (String)
|
|
268
268
|
*
|
|
269
269
|
* The code of the observation station. Examples: TRD, SVG.
|
|
270
270
|
*/
|
|
271
|
-
1: { ResourceID: 1, Name: "Station code", Mandatory: true, Type: ResourceType.String, Description: "The code of the observation station. Examples: TRD, SVG." }, /**
|
|
271
|
+
1: { ResourceID: 1, Name: "Station code", Mandatory: true, Type: ResourceType.String, Multiple: false, Description: "The code of the observation station. Examples: TRD, SVG." }, /**
|
|
272
272
|
* Timestamp (Time)
|
|
273
273
|
*
|
|
274
274
|
* The timestamp of when the observation was made.
|
|
275
275
|
*/
|
|
276
|
-
99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Description: "The timestamp of when the observation was made." } } }, /**
|
|
276
|
+
99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Multiple: false, Description: "The timestamp of when the observation was made." } } }, /**
|
|
277
277
|
* RGB LED (14240)
|
|
278
278
|
*
|
|
279
279
|
* Describes an RGB LED. Use different instances to address different LEDs.
|
|
@@ -286,7 +286,7 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
|
|
|
286
286
|
* Minimum: 0
|
|
287
287
|
* Maximum: 255
|
|
288
288
|
*/
|
|
289
|
-
0: { ResourceID: 0, Name: "Red", Mandatory: true, Type: ResourceType.Integer, Description: "The red brightness level of the LED.", RangeEnumeration: { min: 0, max: 255 } }, /**
|
|
289
|
+
0: { ResourceID: 0, Name: "Red", Mandatory: true, Type: ResourceType.Integer, Multiple: false, Description: "The red brightness level of the LED.", RangeEnumeration: { min: 0, max: 255 } }, /**
|
|
290
290
|
* Green (Integer)
|
|
291
291
|
*
|
|
292
292
|
* The green brightness level of the LED.
|
|
@@ -294,7 +294,7 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
|
|
|
294
294
|
* Minimum: 0
|
|
295
295
|
* Maximum: 255
|
|
296
296
|
*/
|
|
297
|
-
1: { ResourceID: 1, Name: "Green", Mandatory: true, Type: ResourceType.Integer, Description: "The green brightness level of the LED.", RangeEnumeration: { min: 0, max: 255 } }, /**
|
|
297
|
+
1: { ResourceID: 1, Name: "Green", Mandatory: true, Type: ResourceType.Integer, Multiple: false, Description: "The green brightness level of the LED.", RangeEnumeration: { min: 0, max: 255 } }, /**
|
|
298
298
|
* Blue (Integer)
|
|
299
299
|
*
|
|
300
300
|
* The blue brightness level of the LED.
|
|
@@ -302,12 +302,12 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
|
|
|
302
302
|
* Minimum: 0
|
|
303
303
|
* Maximum: 255
|
|
304
304
|
*/
|
|
305
|
-
2: { ResourceID: 2, Name: "Blue", Mandatory: true, Type: ResourceType.Integer, Description: "The blue brightness level of the LED.", RangeEnumeration: { min: 0, max: 255 } }, /**
|
|
305
|
+
2: { ResourceID: 2, Name: "Blue", Mandatory: true, Type: ResourceType.Integer, Multiple: false, Description: "The blue brightness level of the LED.", RangeEnumeration: { min: 0, max: 255 } }, /**
|
|
306
306
|
* Timestamp (Time)
|
|
307
307
|
*
|
|
308
308
|
* The timestamp of when the LED was changed.
|
|
309
309
|
*/
|
|
310
|
-
99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Description: "The timestamp of when the LED was changed." } } }, /**
|
|
310
|
+
99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Multiple: false, Description: "The timestamp of when the LED was changed." } } }, /**
|
|
311
311
|
* Application Configuration (14301)
|
|
312
312
|
*
|
|
313
313
|
* Describes application configuration
|
|
@@ -320,14 +320,29 @@ export const definitions: Record<LwM2MObjectID, LWM2MObjectInfo> = { /**
|
|
|
320
320
|
* Minimum: 0
|
|
321
321
|
* Maximum: 31622400
|
|
322
322
|
*/
|
|
323
|
-
0: { ResourceID: 0, Name: "Update interval", Mandatory: true, Type: ResourceType.Integer, Description: "The update interval in seconds. Examples: 10, 3600.", RangeEnumeration: { min: 0, max: 31622400 } }, /**
|
|
323
|
+
0: { ResourceID: 0, Name: "Update interval", Mandatory: true, Type: ResourceType.Integer, Multiple: false, Description: "The update interval in seconds. Examples: 10, 3600.", RangeEnumeration: { min: 0, max: 31622400 } }, /**
|
|
324
324
|
* GNSS enabled (Boolean)
|
|
325
325
|
*
|
|
326
326
|
* Whether to enabled the device's GNSS receiver.
|
|
327
327
|
*/
|
|
328
|
-
1: { ResourceID: 1, Name: "GNSS enabled", Mandatory: true, Type: ResourceType.Boolean, Description: "Whether to enabled the device's GNSS receiver." }, /**
|
|
328
|
+
1: { ResourceID: 1, Name: "GNSS enabled", Mandatory: true, Type: ResourceType.Boolean, Multiple: false, Description: "Whether to enabled the device's GNSS receiver." }, /**
|
|
329
329
|
* Timestamp (Time)
|
|
330
330
|
*
|
|
331
331
|
* The timestamp of when the configuration was updated.
|
|
332
332
|
*/
|
|
333
|
-
99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Description: "The timestamp of when the configuration was updated." } } }
|
|
333
|
+
99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Multiple: false, Description: "The timestamp of when the configuration was updated." } } }, /**
|
|
334
|
+
* nRF Cloud Service Info (14401)
|
|
335
|
+
*
|
|
336
|
+
* Describes the services supported by the device.
|
|
337
|
+
*/
|
|
338
|
+
[LwM2MObjectID.NRFCloudServiceInfo_14401]: { ObjectID: LwM2MObjectID.NRFCloudServiceInfo_14401, ObjectVersion: "1.0", Name: "nRF Cloud Service Info", Description: "Describes the services supported by the device.", Resources: { /**
|
|
339
|
+
* FOTA (String)
|
|
340
|
+
*
|
|
341
|
+
* The types of firmwares the device supports. Examples: "APP", "MODEM".
|
|
342
|
+
*/
|
|
343
|
+
0: { ResourceID: 0, Name: "FOTA", Mandatory: false, Type: ResourceType.String, Multiple: true, Description: "The types of firmwares the device supports. Examples: \"APP\", \"MODEM\"." }, /**
|
|
344
|
+
* Timestamp (Time)
|
|
345
|
+
*
|
|
346
|
+
* The timestamp of when the service info was updated.
|
|
347
|
+
*/
|
|
348
|
+
99: { ResourceID: 99, Name: "Timestamp", Mandatory: true, Type: ResourceType.Time, Multiple: false, Description: "The timestamp of when the service info was updated." } } } };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { LwM2MObject } from "../LwM2MObject.js";
|
|
2
|
+
import { LwM2MObjectID } from "../LwM2MObjectID.js";
|
|
3
|
+
/**
|
|
4
|
+
* nRF Cloud Service Info (14401)
|
|
5
|
+
*
|
|
6
|
+
* Describes the services supported by the device.
|
|
7
|
+
*/
|
|
8
|
+
export type NRFCloudServiceInfo_14401 = LwM2MObject<{
|
|
9
|
+
ObjectID: LwM2MObjectID.NRFCloudServiceInfo_14401;
|
|
10
|
+
ObjectVersion: "1.0";
|
|
11
|
+
Resources: {
|
|
12
|
+
/**
|
|
13
|
+
* Timestamp
|
|
14
|
+
*
|
|
15
|
+
* The timestamp of when the service info was updated.
|
|
16
|
+
*/
|
|
17
|
+
99: number;
|
|
18
|
+
/**
|
|
19
|
+
* FOTA
|
|
20
|
+
*
|
|
21
|
+
* The types of firmwares the device supports. Examples: "APP", "MODEM".
|
|
22
|
+
*/
|
|
23
|
+
0?: Array<string>;
|
|
24
|
+
};
|
|
25
|
+
}>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { LwM2MObjectInstance } from "../LwM2MObjectInstance.js";
|
|
2
|
+
import { TimeResource, StringResource, OptionalResource, validateInstance } from "../validation.js";
|
|
3
|
+
import type { NRFCloudServiceInfo_14401 } from "../objects.js";
|
|
4
|
+
import { LwM2MObjectID } from "../LwM2MObjectID.js";
|
|
5
|
+
/**
|
|
6
|
+
* Validate nRF Cloud Service Info (14401)
|
|
7
|
+
*
|
|
8
|
+
* Ensures the given object is an LwM2M object according to the schema 14401.xml.
|
|
9
|
+
*/
|
|
10
|
+
export const validate14401 = (o: unknown): {
|
|
11
|
+
error: Error;
|
|
12
|
+
} | {
|
|
13
|
+
object: LwM2MObjectInstance<NRFCloudServiceInfo_14401>;
|
|
14
|
+
} => validateInstance<NRFCloudServiceInfo_14401>(LwM2MObjectID.NRFCloudServiceInfo_14401, "1.0", { 99: TimeResource, 0: OptionalResource(StringResource) })(o);
|
package/lwm2m/objects.ts
CHANGED
|
@@ -17,4 +17,6 @@ export { validate14230 } from "./object/validate14230.js";
|
|
|
17
17
|
export type { RGBLED_14240 } from "./object/14240.js";
|
|
18
18
|
export { validate14240 } from "./object/validate14240.js";
|
|
19
19
|
export type { ApplicationConfiguration_14301 } from "./object/14301.js";
|
|
20
|
-
export { validate14301 } from "./object/validate14301.js";
|
|
20
|
+
export { validate14301 } from "./object/validate14301.js";
|
|
21
|
+
export type { NRFCloudServiceInfo_14401 } from "./object/14401.js";
|
|
22
|
+
export { validate14401 } from "./object/validate14401.js";
|
|
@@ -2,4 +2,4 @@ import { LwM2MObjectID } from "./LwM2MObjectID.js";
|
|
|
2
2
|
/**
|
|
3
3
|
* Contains the ID of the resource that defines the timestamp for each LwM2M object definition
|
|
4
4
|
*/
|
|
5
|
-
export const timestampResources: Readonly<Map<LwM2MObjectID, number>> = new Map<LwM2MObjectID, number>([[LwM2MObjectID.Geolocation_14201, 99], [LwM2MObjectID.BatteryAndPower_14202, 99], [LwM2MObjectID.ConnectionInformation_14203, 99], [LwM2MObjectID.DeviceInformation_14204, 99], [LwM2MObjectID.Environment_14205, 99], [LwM2MObjectID.SolarCharge_14210, 99], [LwM2MObjectID.ButtonPress_14220, 99], [LwM2MObjectID.SeaWaterLevel_14230, 99], [LwM2MObjectID.RGBLED_14240, 99], [LwM2MObjectID.ApplicationConfiguration_14301, 99]]);
|
|
5
|
+
export const timestampResources: Readonly<Map<LwM2MObjectID, number>> = new Map<LwM2MObjectID, number>([[LwM2MObjectID.Geolocation_14201, 99], [LwM2MObjectID.BatteryAndPower_14202, 99], [LwM2MObjectID.ConnectionInformation_14203, 99], [LwM2MObjectID.DeviceInformation_14204, 99], [LwM2MObjectID.Environment_14205, 99], [LwM2MObjectID.SolarCharge_14210, 99], [LwM2MObjectID.ButtonPress_14220, 99], [LwM2MObjectID.SeaWaterLevel_14230, 99], [LwM2MObjectID.RGBLED_14240, 99], [LwM2MObjectID.ApplicationConfiguration_14301, 99], [LwM2MObjectID.NRFCloudServiceInfo_14401, 99]]);
|
package/lwm2m/validators.ts
CHANGED
|
@@ -10,6 +10,7 @@ import { validate14220 } from "./object/validate14220.js";
|
|
|
10
10
|
import { validate14230 } from "./object/validate14230.js";
|
|
11
11
|
import { validate14240 } from "./object/validate14240.js";
|
|
12
12
|
import { validate14301 } from "./object/validate14301.js";
|
|
13
|
+
import { validate14401 } from "./object/validate14401.js";
|
|
13
14
|
/**
|
|
14
15
|
* Contains the validators for all registered LwM2M objects.
|
|
15
16
|
*/
|
|
@@ -27,4 +28,5 @@ validators.set(LwM2MObjectID.SolarCharge_14210, validate14210)
|
|
|
27
28
|
validators.set(LwM2MObjectID.ButtonPress_14220, validate14220)
|
|
28
29
|
validators.set(LwM2MObjectID.SeaWaterLevel_14230, validate14230)
|
|
29
30
|
validators.set(LwM2MObjectID.RGBLED_14240, validate14240)
|
|
30
|
-
validators.set(LwM2MObjectID.ApplicationConfiguration_14301, validate14301)
|
|
31
|
+
validators.set(LwM2MObjectID.ApplicationConfiguration_14301, validate14301)
|
|
32
|
+
validators.set(LwM2MObjectID.NRFCloudServiceInfo_14401, validate14401)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hello.nrfcloud.com/proto-map",
|
|
3
|
-
"version": "12.
|
|
3
|
+
"version": "12.1.0",
|
|
4
4
|
"description": "Documents the communication protocol between devices, the hello.nrfcloud.com/map backend and web application",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -36,11 +36,11 @@
|
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@bifravst/eslint-config-typescript": "6.1.2",
|
|
39
|
-
"@bifravst/prettier-config": "1.0.
|
|
39
|
+
"@bifravst/prettier-config": "1.0.2",
|
|
40
40
|
"@commitlint/config-conventional": "19.2.2",
|
|
41
41
|
"@swc/cli": "0.3.12",
|
|
42
|
-
"@swc/core": "1.5.
|
|
43
|
-
"@types/node": "20.14.
|
|
42
|
+
"@swc/core": "1.5.25",
|
|
43
|
+
"@types/node": "20.14.2",
|
|
44
44
|
"@types/xml2js": "0.4.14",
|
|
45
45
|
"chalk": "5.3.0",
|
|
46
46
|
"globstar": "1.0.0",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"remark": "15.0.1",
|
|
51
51
|
"remark-frontmatter": "5.0.0",
|
|
52
52
|
"tsmatchers": "5.0.2",
|
|
53
|
-
"tsx": "4.
|
|
53
|
+
"tsx": "4.13.2",
|
|
54
54
|
"xml2js": "0.6.2",
|
|
55
55
|
"yaml": "2.4.3"
|
|
56
56
|
},
|