kuzzle-device-manager-types 3.0.0-next.2 → 3.0.0-next.21
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/dist/bin/migration/migration_platform_index.d.ts +2 -0
- package/dist/bin/migration/migration_tenant_index.d.ts +2 -0
- package/dist/bin/migration/utils.d.ts +18 -0
- package/dist/index.d.ts +1 -0
- package/dist/lib/modules/asset/AssetModule.d.ts +0 -1
- package/dist/lib/modules/asset/AssetService.d.ts +14 -4
- package/dist/lib/modules/asset/AssetsController.d.ts +31 -7
- package/dist/lib/modules/asset/exports.d.ts +0 -4
- package/dist/lib/modules/asset/index.d.ts +1 -3
- package/dist/lib/modules/asset/types/AssetApi.d.ts +127 -6
- package/dist/lib/modules/asset/types/AssetContent.d.ts +9 -11
- package/dist/lib/modules/asset/types/AssetHistoryContent.d.ts +4 -11
- package/dist/lib/modules/decoder/DecodedPayload.d.ts +2 -0
- package/dist/lib/modules/decoder/DecodersController.d.ts +6 -0
- package/dist/lib/modules/decoder/PayloadService.d.ts +1 -0
- package/dist/lib/modules/decoder/types/DecoderApi.d.ts +0 -1
- package/dist/lib/modules/device/DeviceService.d.ts +14 -40
- package/dist/lib/modules/device/DevicesController.d.ts +5 -5
- package/dist/lib/modules/device/collections/deviceMappings.d.ts +6 -0
- package/dist/lib/modules/device/roles/RoleDevicesAdmin.d.ts +2 -2
- package/dist/lib/modules/device/types/DeviceApi.d.ts +69 -42
- package/dist/lib/modules/device/types/DeviceContent.d.ts +55 -4
- package/dist/lib/modules/device/types/DeviceEvents.d.ts +0 -23
- package/dist/lib/modules/group/GroupsController.d.ts +35 -0
- package/dist/lib/modules/group/GroupsModule.d.ts +6 -0
- package/dist/lib/modules/group/GroupsService.d.ts +116 -0
- package/dist/lib/modules/group/collections/groupsMappings.d.ts +2 -0
- package/dist/lib/modules/group/exports.d.ts +5 -0
- package/dist/lib/modules/group/index.d.ts +4 -0
- package/dist/lib/modules/{asset/roles/RoleAssetsGroupsAdmin.d.ts → group/roles/RoleGroupsAdmin.d.ts} +3 -3
- package/dist/lib/modules/{asset/roles/RoleAssetsGroupsReader.d.ts → group/roles/RoleGroupsReader.d.ts} +3 -3
- package/dist/lib/modules/group/types/GroupContent.d.ts +10 -0
- package/dist/lib/modules/group/types/GroupsApi.d.ts +141 -0
- package/dist/lib/modules/measure/MeasureExporter.d.ts +2 -0
- package/dist/lib/modules/measure/MeasureService.d.ts +11 -38
- package/dist/lib/modules/measure/MeasureSourcesBuilder.d.ts +1 -2
- package/dist/lib/modules/measure/collections/measuresMappings.d.ts +2 -83
- package/dist/lib/modules/measure/exports.d.ts +0 -1
- package/dist/lib/modules/measure/index.d.ts +0 -1
- package/dist/lib/modules/measure/types/MeasureContent.d.ts +7 -0
- package/dist/lib/modules/measure/types/MeasureDefinition.d.ts +4 -0
- package/dist/lib/modules/measure/types/MeasureEvents.d.ts +5 -148
- package/dist/lib/modules/measure/types/MeasureSources.d.ts +5 -0
- package/dist/lib/modules/model/ModelService.d.ts +16 -4
- package/dist/lib/modules/model/ModelsConflicts.d.ts +9 -1
- package/dist/lib/modules/model/ModelsController.d.ts +6 -1
- package/dist/lib/modules/model/ModelsRegister.d.ts +19 -2
- package/dist/lib/modules/model/types/ModelApi.d.ts +50 -1
- package/dist/lib/modules/model/types/ModelContent.d.ts +157 -2
- package/dist/lib/modules/model/types/ModelDefinition.d.ts +110 -2
- package/dist/lib/modules/model/types/ModelEvents.d.ts +8 -1
- package/dist/lib/modules/plugin/DeviceManagerEngine.d.ts +32 -6
- package/dist/lib/modules/plugin/DeviceManagerPlugin.d.ts +60 -5
- package/dist/lib/modules/plugin/types/DeviceManagerConfiguration.d.ts +9 -7
- package/dist/lib/modules/plugin/types/InternalCollection.d.ts +1 -1
- package/dist/lib/modules/plugin/types/exports.d.ts +2 -0
- package/dist/lib/modules/shared/errors/index.d.ts +1 -0
- package/dist/lib/modules/shared/exports.d.ts +1 -5
- package/dist/lib/modules/shared/index.d.ts +3 -11
- package/dist/lib/modules/shared/services/AbstractExporter.d.ts +2 -0
- package/dist/lib/modules/shared/services/DigitalTwinExporter.d.ts +2 -0
- package/dist/lib/modules/shared/services/DigitalTwinService.d.ts +71 -1
- package/dist/lib/modules/shared/types/DigitalTwinContent.d.ts +6 -5
- package/dist/lib/modules/shared/types/DigitalTwinEvents.d.ts +30 -0
- package/dist/lib/modules/shared/types/Models.d.ts +18 -0
- package/dist/lib/modules/shared/types/exports.d.ts +6 -0
- package/dist/lib/modules/shared/types/index.d.ts +9 -0
- package/dist/lib/modules/shared/utils/index.d.ts +5 -0
- package/dist/tests/application/assets/Container.d.ts +7 -4
- package/dist/tests/application/assets/MagicHouse.d.ts +2 -2
- package/dist/tests/application/assets/Room.d.ts +2 -2
- package/dist/tests/application/assets/StreetLamp.d.ts +2 -2
- package/dist/tests/application/assets/Warehouse.d.ts +2 -2
- package/dist/tests/application/assets/index.d.ts +1 -0
- package/dist/tests/application/decoders/EmptyTempDecoder.d.ts +8 -0
- package/dist/tests/application/devices/DummyTemp.d.ts +2 -0
- package/dist/tests/application/devices/DummyTempPosition.d.ts +2 -0
- package/dist/tests/application/devices/EmptyTemp.d.ts +2 -0
- package/dist/tests/application/devices/index.d.ts +3 -0
- package/dist/tests/application/groups/AssetRestricted.d.ts +8 -0
- package/dist/tests/application/groups/DeviceRestricted.d.ts +8 -0
- package/dist/tests/application/groups/Parking.d.ts +14 -0
- package/dist/tests/application/groups/index.d.ts +3 -0
- package/dist/tests/application/measures/{AccelerationMeasure.d.ts → Acceleration.d.ts} +2 -2
- package/dist/tests/application/measures/BatteryMeasure.d.ts +5 -0
- package/dist/tests/application/measures/Brightness.d.ts +2 -0
- package/dist/tests/application/measures/CO2.d.ts +2 -0
- package/dist/tests/application/measures/HumidityMeasure.d.ts +5 -0
- package/dist/tests/application/measures/Illuminance.d.ts +2 -0
- package/dist/tests/application/measures/Magicule.d.ts +2 -2
- package/dist/tests/application/measures/MovementMeasure.d.ts +5 -0
- package/dist/{lib/modules/measure → tests/application}/measures/PositionMeasure.d.ts +2 -2
- package/dist/tests/application/measures/PowerConsumption.d.ts +2 -0
- package/dist/tests/application/measures/TemperatureMeasure.d.ts +5 -0
- package/dist/tests/application/measures/index.d.ts +11 -0
- package/dist/tests/application/models.d.ts +2 -0
- package/package.json +2 -2
- package/dist/lib/modules/asset/AssetsGroupsController.d.ts +0 -20
- package/dist/lib/modules/asset/collections/assetsGroupsMapping.d.ts +0 -2
- package/dist/lib/modules/asset/types/AssetGroupContent.d.ts +0 -8
- package/dist/lib/modules/asset/types/AssetGroupsApi.d.ts +0 -59
- package/dist/lib/modules/measure/measures/BatteryMeasure.d.ts +0 -5
- package/dist/lib/modules/measure/measures/HumidityMeasure.d.ts +0 -5
- package/dist/lib/modules/measure/measures/MovementMeasure.d.ts +0 -5
- package/dist/lib/modules/measure/measures/TemperatureMeasure.d.ts +0 -5
- package/dist/lib/modules/measure/measures/index.d.ts +0 -5
- package/dist/tests/application/decoders/index.d.ts +0 -2
- package/dist/tests/application/measures/BrightnessMeasure.d.ts +0 -2
- package/dist/tests/application/measures/CO2Measure.d.ts +0 -2
- package/dist/tests/application/measures/IlluminanceMeasure.d.ts +0 -2
- package/dist/tests/application/measures/PowerConsumptionMeasure.d.ts +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { JSONObject, KDocument, KHit, SearchResult } from "kuzzle-sdk";
|
|
2
|
-
import { AssetModelContent, DeviceModelContent, MeasureModelContent, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./ModelContent";
|
|
2
|
+
import { AssetModelContent, DeviceModelContent, GroupAffinity, GroupModelContent, LocaleDetails, MeasureModelContent, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./ModelContent";
|
|
3
3
|
import { SchemaObject } from "ajv";
|
|
4
4
|
import { MeasureValuesDetails } from "../../measure/types/MeasureDefinition";
|
|
5
5
|
interface ModelsControllerRequest {
|
|
@@ -16,6 +16,11 @@ export interface ApiModelGetDeviceRequest extends ModelsControllerRequest {
|
|
|
16
16
|
model: string;
|
|
17
17
|
}
|
|
18
18
|
export type ApiModelGetDeviceResult = KDocument<DeviceModelContent>;
|
|
19
|
+
export interface ApiModelGetGroupRequest extends ModelsControllerRequest {
|
|
20
|
+
action: "getGroup";
|
|
21
|
+
model: string;
|
|
22
|
+
}
|
|
23
|
+
export type ApiModelGetGroupResult = KDocument<GroupModelContent>;
|
|
19
24
|
export interface ApiModelGetMeasureRequest extends ModelsControllerRequest {
|
|
20
25
|
action: "getMeasure";
|
|
21
26
|
type: string;
|
|
@@ -32,6 +37,9 @@ export interface ApiModelWriteAssetRequest extends ModelsControllerRequest {
|
|
|
32
37
|
defaultValues?: JSONObject;
|
|
33
38
|
measures?: AssetModelContent["asset"]["measures"];
|
|
34
39
|
tooltipModels?: TooltipModels;
|
|
40
|
+
locales?: {
|
|
41
|
+
[valueName: string]: LocaleDetails;
|
|
42
|
+
};
|
|
35
43
|
};
|
|
36
44
|
}
|
|
37
45
|
export type ApiModelWriteAssetResult = KDocument<AssetModelContent>;
|
|
@@ -47,10 +55,26 @@ export interface ApiModelWriteDeviceRequest extends ModelsControllerRequest {
|
|
|
47
55
|
};
|
|
48
56
|
}
|
|
49
57
|
export type ApiModelWriteDeviceResult = KDocument<DeviceModelContent>;
|
|
58
|
+
export interface ApiModelWriteGroupRequest extends ModelsControllerRequest {
|
|
59
|
+
action: "writeGroup";
|
|
60
|
+
body: {
|
|
61
|
+
affinity: GroupAffinity;
|
|
62
|
+
engineGroup: string;
|
|
63
|
+
model: string;
|
|
64
|
+
metadataDetails?: MetadataDetails;
|
|
65
|
+
metadataGroups?: MetadataGroups;
|
|
66
|
+
metadataMappings?: MetadataMappings;
|
|
67
|
+
defaultValues?: JSONObject;
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
export type ApiModelWriteGroupResult = KDocument<GroupModelContent>;
|
|
50
71
|
export interface ApiModelWriteMeasureRequest extends ModelsControllerRequest {
|
|
51
72
|
action: "writeMeasure";
|
|
52
73
|
body: {
|
|
53
74
|
type: string;
|
|
75
|
+
locales?: {
|
|
76
|
+
[valueName: string]: LocaleDetails;
|
|
77
|
+
};
|
|
54
78
|
valuesMappings: JSONObject;
|
|
55
79
|
validationSchema?: SchemaObject;
|
|
56
80
|
valuesDetails?: MeasureValuesDetails;
|
|
@@ -68,6 +92,9 @@ export interface ApiModelUpdateAssetRequest extends ModelsControllerRequest {
|
|
|
68
92
|
defaultValues?: JSONObject;
|
|
69
93
|
measures?: AssetModelContent["asset"]["measures"];
|
|
70
94
|
tooltipModels?: TooltipModels;
|
|
95
|
+
locales?: {
|
|
96
|
+
[valueName: string]: LocaleDetails;
|
|
97
|
+
};
|
|
71
98
|
};
|
|
72
99
|
}
|
|
73
100
|
export type ApiModelUpdateAssetResult = KDocument<AssetModelContent>;
|
|
@@ -81,6 +108,11 @@ export interface ApiModelDeleteDeviceRequest extends ModelsControllerRequest {
|
|
|
81
108
|
_id: string;
|
|
82
109
|
}
|
|
83
110
|
export type ApiModelDeleteDeviceResult = void;
|
|
111
|
+
export interface ApiModelDeleteGroupRequest extends ModelsControllerRequest {
|
|
112
|
+
action: "deleteGroup";
|
|
113
|
+
_id: string;
|
|
114
|
+
}
|
|
115
|
+
export type ApiModelDeleteGroupResult = void;
|
|
84
116
|
export interface ApiModelDeleteMeasureRequest extends ModelsControllerRequest {
|
|
85
117
|
action: "deleteMeasure";
|
|
86
118
|
_id: string;
|
|
@@ -101,6 +133,14 @@ export type ApiModelListDevicesResult = {
|
|
|
101
133
|
models: KDocument<DeviceModelContent>[];
|
|
102
134
|
total: number;
|
|
103
135
|
};
|
|
136
|
+
export interface ApiModelListGroupsRequest extends ModelsControllerRequest {
|
|
137
|
+
action: "listGroups";
|
|
138
|
+
engineGroup: string;
|
|
139
|
+
}
|
|
140
|
+
export type ApiModelListGroupsResult = {
|
|
141
|
+
models: KDocument<GroupModelContent>[];
|
|
142
|
+
total: number;
|
|
143
|
+
};
|
|
104
144
|
export interface ApiModelListMeasuresRequest extends ModelsControllerRequest {
|
|
105
145
|
action: "listMeasures";
|
|
106
146
|
}
|
|
@@ -125,6 +165,15 @@ export interface ApiModelSearchDevicesRequest extends ModelsControllerRequest {
|
|
|
125
165
|
body?: JSONObject;
|
|
126
166
|
}
|
|
127
167
|
export type ApiModelSearchDevicesResult = SearchResult<KHit<DeviceModelContent>>;
|
|
168
|
+
export interface ApiModelSearchGroupsRequest extends ModelsControllerRequest {
|
|
169
|
+
action: "searchGroups";
|
|
170
|
+
engineGroup: string;
|
|
171
|
+
from?: number;
|
|
172
|
+
size?: number;
|
|
173
|
+
scrollTTL?: string;
|
|
174
|
+
body?: JSONObject;
|
|
175
|
+
}
|
|
176
|
+
export type ApiModelSearchGroupsResult = SearchResult<KHit<GroupModelContent>>;
|
|
128
177
|
export interface ApiModelSearchMeasuresRequest extends ModelsControllerRequest {
|
|
129
178
|
action: "searchMeasures";
|
|
130
179
|
from?: number;
|
|
@@ -5,6 +5,9 @@ export interface MeasureModelContent extends KDocumentContent {
|
|
|
5
5
|
type: "measure";
|
|
6
6
|
measure: MeasureDefinition & {
|
|
7
7
|
type: string;
|
|
8
|
+
locales?: {
|
|
9
|
+
[valueName: string]: LocaleDetails;
|
|
10
|
+
};
|
|
8
11
|
};
|
|
9
12
|
}
|
|
10
13
|
export interface MetadataProperty {
|
|
@@ -20,13 +23,31 @@ export interface MetadataObject {
|
|
|
20
23
|
export interface MetadataMappings {
|
|
21
24
|
[key: string]: MetadataProperty | MetadataObject;
|
|
22
25
|
}
|
|
26
|
+
export interface GroupAffinity {
|
|
27
|
+
/**
|
|
28
|
+
* Type of elements accepted in the group
|
|
29
|
+
*/
|
|
30
|
+
type: Array<"assets" | "devices">;
|
|
31
|
+
/**
|
|
32
|
+
* Models accepted in the group
|
|
33
|
+
*/
|
|
34
|
+
models: {
|
|
35
|
+
assets?: string[];
|
|
36
|
+
devices?: string[];
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Weather the affinities are a strict restriction or not
|
|
40
|
+
*/
|
|
41
|
+
strict: boolean;
|
|
42
|
+
}
|
|
23
43
|
export interface LocaleDetails {
|
|
24
44
|
friendlyName: string;
|
|
25
45
|
description: string;
|
|
26
46
|
}
|
|
27
47
|
export interface BaseEditorHint {
|
|
28
48
|
readOnly?: boolean;
|
|
29
|
-
|
|
49
|
+
isModal?: boolean;
|
|
50
|
+
type: EditorHintEnum | string;
|
|
30
51
|
}
|
|
31
52
|
export declare enum EditorHintEnum {
|
|
32
53
|
BASE = "base",
|
|
@@ -264,6 +285,12 @@ export interface AssetModelContent extends KDocumentContent {
|
|
|
264
285
|
* ]
|
|
265
286
|
*/
|
|
266
287
|
tooltipModels?: TooltipModels;
|
|
288
|
+
/**
|
|
289
|
+
* Translations specific to the model
|
|
290
|
+
*/
|
|
291
|
+
locales?: {
|
|
292
|
+
[locale: string]: LocaleDetails;
|
|
293
|
+
};
|
|
267
294
|
};
|
|
268
295
|
}
|
|
269
296
|
export interface DeviceModelContent extends KDocumentContent {
|
|
@@ -355,4 +382,132 @@ export interface DeviceModelContent extends KDocumentContent {
|
|
|
355
382
|
measures: NamedMeasures;
|
|
356
383
|
};
|
|
357
384
|
}
|
|
358
|
-
export
|
|
385
|
+
export interface GroupModelContent extends KDocumentContent {
|
|
386
|
+
type: "group";
|
|
387
|
+
engineGroup: string;
|
|
388
|
+
group: {
|
|
389
|
+
/**
|
|
390
|
+
* Name of the model
|
|
391
|
+
*/
|
|
392
|
+
model: string;
|
|
393
|
+
/**
|
|
394
|
+
* Group types and model affinities
|
|
395
|
+
*/
|
|
396
|
+
affinity: GroupAffinity;
|
|
397
|
+
/**
|
|
398
|
+
* Metadata mappings.
|
|
399
|
+
*
|
|
400
|
+
* @example
|
|
401
|
+
* {
|
|
402
|
+
* "company": {
|
|
403
|
+
* "properties": {
|
|
404
|
+
* "name": { "type": "keyword" },
|
|
405
|
+
* }
|
|
406
|
+
* }
|
|
407
|
+
* }
|
|
408
|
+
*/
|
|
409
|
+
metadataMappings: MetadataMappings;
|
|
410
|
+
/**
|
|
411
|
+
* Default values for metadata.
|
|
412
|
+
*
|
|
413
|
+
* @example
|
|
414
|
+
* {
|
|
415
|
+
* "company.name": "Firebird"
|
|
416
|
+
* }
|
|
417
|
+
*/
|
|
418
|
+
defaultMetadata: JSONObject;
|
|
419
|
+
/**
|
|
420
|
+
* Metadata details
|
|
421
|
+
* @example
|
|
422
|
+
* {
|
|
423
|
+
* "extTemp": {
|
|
424
|
+
* "group": "buildingEnv",
|
|
425
|
+
* "locales": {
|
|
426
|
+
* "en": {
|
|
427
|
+
* "friendlyName": "External temperature",
|
|
428
|
+
* "description": "Building external temperature"
|
|
429
|
+
* },
|
|
430
|
+
* "fr": {
|
|
431
|
+
* "friendlyName": "Température extérieure",
|
|
432
|
+
* "description": "Température à l'exterieur du bâtiment"
|
|
433
|
+
* },
|
|
434
|
+
* },
|
|
435
|
+
* "editorHint": {
|
|
436
|
+
* "readOnly": true,
|
|
437
|
+
* "type": EditorHintEnum.OPTION_SELECTOR,
|
|
438
|
+
* "values": ["red", "blue"],
|
|
439
|
+
* "customValueAllowed": true,
|
|
440
|
+
* },
|
|
441
|
+
* },
|
|
442
|
+
* }
|
|
443
|
+
*/
|
|
444
|
+
metadataDetails?: MetadataDetails;
|
|
445
|
+
/**
|
|
446
|
+
* Metadata groups list
|
|
447
|
+
* @example
|
|
448
|
+
* {
|
|
449
|
+
* "buildingEnv": {
|
|
450
|
+
* "locales": {
|
|
451
|
+
* "en": {
|
|
452
|
+
* "groupFriendlyName": "Building environment",
|
|
453
|
+
* "description": "The building environment"
|
|
454
|
+
* },
|
|
455
|
+
* "fr": {
|
|
456
|
+
* "groupFriendlyName": "Environnement du bâtiment",
|
|
457
|
+
* "description": "L'environnement du bâtiment"
|
|
458
|
+
* }
|
|
459
|
+
* }
|
|
460
|
+
* }
|
|
461
|
+
* }
|
|
462
|
+
*/
|
|
463
|
+
metadataGroups?: MetadataGroups;
|
|
464
|
+
/**
|
|
465
|
+
* List of tooltip models for this asset model
|
|
466
|
+
*
|
|
467
|
+
* @example
|
|
468
|
+
* [
|
|
469
|
+
* "defaultTooltipKey": {
|
|
470
|
+
* "tooltipLabel": "Default tooltip model",
|
|
471
|
+
* "content": [
|
|
472
|
+
* {
|
|
473
|
+
* "metadataPath": "geolocation",
|
|
474
|
+
* "label": {
|
|
475
|
+
* "locales": {
|
|
476
|
+
* "en": {
|
|
477
|
+
* "description": "",
|
|
478
|
+
* "friendlyName": "Container position"
|
|
479
|
+
* },
|
|
480
|
+
* "fr": {
|
|
481
|
+
* "description": "",
|
|
482
|
+
* "friendlyName": "Position du conteneur"
|
|
483
|
+
* }
|
|
484
|
+
* }
|
|
485
|
+
* },
|
|
486
|
+
* "category": "metadata"
|
|
487
|
+
* },
|
|
488
|
+
* {
|
|
489
|
+
* "measureValuePath": "externalTemperature",
|
|
490
|
+
* "measureSlot": "externalTemperature",
|
|
491
|
+
* "label": {
|
|
492
|
+
* "locales": {
|
|
493
|
+
* "en": {
|
|
494
|
+
* "description": "",
|
|
495
|
+
* "friendlyName": "External temperature"
|
|
496
|
+
* },
|
|
497
|
+
* "fr": {
|
|
498
|
+
* "description": "",
|
|
499
|
+
* "friendlyName": "Température extérieure"
|
|
500
|
+
* }
|
|
501
|
+
* }
|
|
502
|
+
* },
|
|
503
|
+
* "category": "measure",
|
|
504
|
+
* "suffix": "°C"
|
|
505
|
+
* }
|
|
506
|
+
* ]
|
|
507
|
+
* }
|
|
508
|
+
* ]
|
|
509
|
+
*/
|
|
510
|
+
tooltipModels?: TooltipModels;
|
|
511
|
+
};
|
|
512
|
+
}
|
|
513
|
+
export type ModelContent = MeasureModelContent | AssetModelContent | DeviceModelContent | GroupModelContent;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { JSONObject } from "kuzzle-sdk";
|
|
2
2
|
import { Decoder, NamedMeasures } from "../../../modules/decoder";
|
|
3
|
-
import { MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./ModelContent";
|
|
3
|
+
import { GroupAffinity, LocaleDetails, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./ModelContent";
|
|
4
4
|
/**
|
|
5
5
|
* Define an asset model
|
|
6
6
|
*
|
|
@@ -94,7 +94,17 @@ import { MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from
|
|
|
94
94
|
* }
|
|
95
95
|
* ]
|
|
96
96
|
* }
|
|
97
|
-
* }
|
|
97
|
+
* },
|
|
98
|
+
* locales: {
|
|
99
|
+
* en: {
|
|
100
|
+
* friendlyName: 'Container (translation by model)',
|
|
101
|
+
* description: 'Containerized container',
|
|
102
|
+
* },
|
|
103
|
+
* fr: {
|
|
104
|
+
* friendlyName: 'Conteneur (traduit par model)',
|
|
105
|
+
* description: 'Conteneur conteneurisé',
|
|
106
|
+
* },
|
|
107
|
+
* },
|
|
98
108
|
* }
|
|
99
109
|
*
|
|
100
110
|
*/
|
|
@@ -123,6 +133,9 @@ export type AssetModelDefinition = {
|
|
|
123
133
|
* Tooltip models
|
|
124
134
|
*/
|
|
125
135
|
tooltipModels?: TooltipModels;
|
|
136
|
+
locales?: {
|
|
137
|
+
[valueName: string]: LocaleDetails;
|
|
138
|
+
};
|
|
126
139
|
};
|
|
127
140
|
/**
|
|
128
141
|
* Define a device model
|
|
@@ -196,3 +209,98 @@ export type DeviceModelDefinition = {
|
|
|
196
209
|
*/
|
|
197
210
|
metadataGroups?: MetadataGroups;
|
|
198
211
|
};
|
|
212
|
+
/**
|
|
213
|
+
* Define a group model
|
|
214
|
+
*
|
|
215
|
+
* @example
|
|
216
|
+
* {
|
|
217
|
+
* metadataMappings: {
|
|
218
|
+
* position: { type: "geo_point" },
|
|
219
|
+
* },
|
|
220
|
+
* defaultMetadata: {
|
|
221
|
+
* position: {
|
|
222
|
+
* lat: 41.12,
|
|
223
|
+
* lon: -71.34
|
|
224
|
+
* }
|
|
225
|
+
* },
|
|
226
|
+
* metadataDetails: {
|
|
227
|
+
* "position": {
|
|
228
|
+
* "group": "geolocation",
|
|
229
|
+
* "locales": {
|
|
230
|
+
* "en": {
|
|
231
|
+
* "friendlyName": "Parking position",
|
|
232
|
+
* "description": "The coordinates of the parking"
|
|
233
|
+
* },
|
|
234
|
+
* "fr": {
|
|
235
|
+
* "friendlyName": "Position du parking",
|
|
236
|
+
* "description": "Les coordonnées GPS du parking"
|
|
237
|
+
* }
|
|
238
|
+
* },
|
|
239
|
+
* },
|
|
240
|
+
* },
|
|
241
|
+
* metadataGroups: {
|
|
242
|
+
* geolocation: {
|
|
243
|
+
* locales: {
|
|
244
|
+
* en: {
|
|
245
|
+
* groupFriendlyName: "Parking geolocation",
|
|
246
|
+
* description: "The parking geolocation"
|
|
247
|
+
* },
|
|
248
|
+
* fr: {
|
|
249
|
+
* groupFriendlyName: "Localisation du parking",
|
|
250
|
+
* description: "La localisation du parking"
|
|
251
|
+
* }
|
|
252
|
+
* }
|
|
253
|
+
* }
|
|
254
|
+
* },
|
|
255
|
+
* tooltipModels: {
|
|
256
|
+
* "defaultTooltipKey": {
|
|
257
|
+
* "tooltipLabel": "Default Tooltip Model",
|
|
258
|
+
* "content": [
|
|
259
|
+
* {
|
|
260
|
+
* "category": "metadata",
|
|
261
|
+
* "label": {
|
|
262
|
+
* "locales": {
|
|
263
|
+
* "en": {
|
|
264
|
+
* "friendlyName": "Parking position",
|
|
265
|
+
* "description": ""
|
|
266
|
+
* },
|
|
267
|
+
* "fr": {
|
|
268
|
+
* "friendlyName": "Position du parking",
|
|
269
|
+
* "description": ""
|
|
270
|
+
* }
|
|
271
|
+
* }
|
|
272
|
+
* },
|
|
273
|
+
* "metadataPath": "position"
|
|
274
|
+
* },
|
|
275
|
+
* ]
|
|
276
|
+
* }
|
|
277
|
+
* }
|
|
278
|
+
* }
|
|
279
|
+
*
|
|
280
|
+
*/
|
|
281
|
+
export type GroupModelDefinition = {
|
|
282
|
+
/**
|
|
283
|
+
* Metadata mappings definition
|
|
284
|
+
*/
|
|
285
|
+
affinity: GroupAffinity;
|
|
286
|
+
/**
|
|
287
|
+
* Metadata mappings definition
|
|
288
|
+
*/
|
|
289
|
+
metadataMappings?: MetadataMappings;
|
|
290
|
+
/**
|
|
291
|
+
* Default metadata values
|
|
292
|
+
*/
|
|
293
|
+
defaultMetadata?: JSONObject;
|
|
294
|
+
/**
|
|
295
|
+
* Metadata details including tanslations and group.
|
|
296
|
+
*/
|
|
297
|
+
metadataDetails?: MetadataDetails;
|
|
298
|
+
/**
|
|
299
|
+
* Metadata groups
|
|
300
|
+
*/
|
|
301
|
+
metadataGroups?: MetadataGroups;
|
|
302
|
+
/**
|
|
303
|
+
* Tooltip models
|
|
304
|
+
*/
|
|
305
|
+
tooltipModels?: TooltipModels;
|
|
306
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AssetModelContent, DeviceModelContent, MeasureModelContent } from "./ModelContent";
|
|
1
|
+
import { AssetModelContent, DeviceModelContent, GroupModelContent, MeasureModelContent } from "./ModelContent";
|
|
2
2
|
export type AskModelAssetGet = {
|
|
3
3
|
name: "ask:device-manager:model:asset:get";
|
|
4
4
|
payload: {
|
|
@@ -21,3 +21,10 @@ export type AskModelMeasureGet = {
|
|
|
21
21
|
};
|
|
22
22
|
result: MeasureModelContent;
|
|
23
23
|
};
|
|
24
|
+
export type AskModelGroupGet = {
|
|
25
|
+
name: "ask:device-manager:model:group:get";
|
|
26
|
+
payload: {
|
|
27
|
+
model: string;
|
|
28
|
+
};
|
|
29
|
+
result: GroupModelContent;
|
|
30
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Backend, KDocumentContent, Plugin } from "kuzzle";
|
|
2
2
|
import { AbstractEngine, ConfigManager, EngineContent } from "kuzzle-plugin-commons";
|
|
3
|
-
import { AssetModelContent, DeviceModelContent, MeasureModelContent } from "../model";
|
|
3
|
+
import { AssetModelContent, DeviceModelContent, GroupModelContent, MeasureModelContent } from "../model";
|
|
4
4
|
import { DeviceManagerPlugin } from "./DeviceManagerPlugin";
|
|
5
5
|
import { DeviceManagerConfiguration } from "./types/DeviceManagerConfiguration";
|
|
6
6
|
import { InternalCollection } from "./types/InternalCollection";
|
|
@@ -18,7 +18,7 @@ export interface EngineDocument extends KDocumentContent {
|
|
|
18
18
|
export type AskEngineList = {
|
|
19
19
|
name: "ask:device-manager:engine:list";
|
|
20
20
|
payload: {
|
|
21
|
-
group
|
|
21
|
+
group?: string;
|
|
22
22
|
};
|
|
23
23
|
result: EngineContent[];
|
|
24
24
|
};
|
|
@@ -35,13 +35,14 @@ export type AskEngineUpdateConflict = {
|
|
|
35
35
|
models: TwinModelContent[];
|
|
36
36
|
};
|
|
37
37
|
measuresModels?: MeasureModelContent[];
|
|
38
|
+
groupModels?: GroupModelContent[];
|
|
38
39
|
};
|
|
39
40
|
result: ConflictChunk[];
|
|
40
41
|
};
|
|
41
42
|
export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlugin> {
|
|
42
43
|
config: DeviceManagerConfiguration;
|
|
43
44
|
get app(): Backend;
|
|
44
|
-
constructor(plugin: Plugin,
|
|
45
|
+
constructor(plugin: Plugin, platformConfigManager: ConfigManager, engineConfigManager: ConfigManager);
|
|
45
46
|
/**
|
|
46
47
|
* Return conflicts between the new and already present twin models
|
|
47
48
|
*
|
|
@@ -54,6 +55,14 @@ export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlu
|
|
|
54
55
|
* @returns An array of conflict chunk
|
|
55
56
|
*/
|
|
56
57
|
private doesTwinUpdateConflicts;
|
|
58
|
+
/**
|
|
59
|
+
* Return conflicts between the new and already present group models
|
|
60
|
+
*
|
|
61
|
+
* @param groupModels The already present group models
|
|
62
|
+
* @param additionalGroups The new or updated group models
|
|
63
|
+
* @returns An array of ConflictChunk
|
|
64
|
+
*/
|
|
65
|
+
private doesGroupsUpdateConflicts;
|
|
57
66
|
/**
|
|
58
67
|
* Return conflicts between the new and already present measure models
|
|
59
68
|
*
|
|
@@ -98,14 +107,14 @@ export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlu
|
|
|
98
107
|
*/
|
|
99
108
|
createAssetsHistoryCollection(engineId: string, engineGroup: string): Promise<InternalCollection>;
|
|
100
109
|
/**
|
|
101
|
-
* Create the
|
|
110
|
+
* Create the groups collection with the groups mappings in the engine
|
|
102
111
|
*
|
|
103
112
|
* @param engineId The target engine Id
|
|
104
113
|
* @param engineGroup The engine group
|
|
105
114
|
*
|
|
106
|
-
* @throws If it failed during the
|
|
115
|
+
* @throws If it failed during the groups collection creation
|
|
107
116
|
*/
|
|
108
|
-
|
|
117
|
+
createGroupsCollection(engineId: string): Promise<InternalCollection>;
|
|
109
118
|
/**
|
|
110
119
|
* Generate devices mappings and create the devices collection in the engine
|
|
111
120
|
*
|
|
@@ -115,6 +124,15 @@ export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlu
|
|
|
115
124
|
* @throws If it failed during the devices collection creation
|
|
116
125
|
*/
|
|
117
126
|
createDevicesCollection(engineId: string): Promise<InternalCollection>;
|
|
127
|
+
/**
|
|
128
|
+
* Generate devices mappings and create the devices collection in the engine
|
|
129
|
+
*
|
|
130
|
+
* @param engineId The target engine Id
|
|
131
|
+
* @param engineGroup The engine group
|
|
132
|
+
*
|
|
133
|
+
* @throws If it failed during the devices collection creation
|
|
134
|
+
*/
|
|
135
|
+
createPlatformDevicesCollection(): Promise<InternalCollection>;
|
|
118
136
|
/**
|
|
119
137
|
* Generate measures mappings and create the measures collection in the engine
|
|
120
138
|
*
|
|
@@ -166,6 +184,7 @@ export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlu
|
|
|
166
184
|
* @returns The complete ES mappings produced by merging models mappings
|
|
167
185
|
*/
|
|
168
186
|
private getMeasuresMappings;
|
|
187
|
+
getAssetGroupsMappingFromDB(): Promise<any>;
|
|
169
188
|
/**
|
|
170
189
|
* Retrieve a certain type of models associated to an engine
|
|
171
190
|
*
|
|
@@ -175,4 +194,11 @@ export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlu
|
|
|
175
194
|
* @returns An array of the generic type provided
|
|
176
195
|
*/
|
|
177
196
|
private getModels;
|
|
197
|
+
/**
|
|
198
|
+
* Detach all devices of an index in the platform index
|
|
199
|
+
*
|
|
200
|
+
* @param engineId The target engine Id
|
|
201
|
+
* @returns {any}
|
|
202
|
+
*/
|
|
203
|
+
private detachDevicesFromPlatformIndex;
|
|
178
204
|
}
|
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
import { Plugin, PluginContext } from "kuzzle";
|
|
2
2
|
import { JSONObject } from "kuzzle-sdk";
|
|
3
3
|
import { MeasureDefinition } from "../measure";
|
|
4
|
-
import {
|
|
4
|
+
import { DecodersRegister } from "../decoder";
|
|
5
|
+
import { AssetModelDefinition, DeviceModelDefinition, GroupModelDefinition, ModelsRegister } from "../model";
|
|
5
6
|
import { DeviceManagerConfiguration } from "./types/DeviceManagerConfiguration";
|
|
6
7
|
export declare class DeviceManagerPlugin extends Plugin {
|
|
7
8
|
config: DeviceManagerConfiguration;
|
|
8
9
|
private deviceManagerEngine;
|
|
9
|
-
private
|
|
10
|
+
private platformConfigManager;
|
|
10
11
|
private engineConfigManager;
|
|
11
12
|
private engineController;
|
|
12
13
|
private assetModule;
|
|
13
14
|
private deviceModule;
|
|
15
|
+
private groupModule;
|
|
14
16
|
private decoderModule;
|
|
15
17
|
private measureModule;
|
|
16
18
|
private modelModule;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
readonly modelsRegister: ModelsRegister;
|
|
20
|
+
readonly decodersRegister: DecodersRegister;
|
|
19
21
|
private get sdk();
|
|
20
22
|
get models(): {
|
|
21
23
|
/**
|
|
@@ -177,6 +179,59 @@ export declare class DeviceManagerPlugin extends Plugin {
|
|
|
177
179
|
* ```
|
|
178
180
|
*/
|
|
179
181
|
registerDevice: (model: string, definition: DeviceModelDefinition) => void;
|
|
182
|
+
/**
|
|
183
|
+
* Register a group.
|
|
184
|
+
*
|
|
185
|
+
* @param model Name of the group model
|
|
186
|
+
* @param definition Object containing the group model definition, including:
|
|
187
|
+
* - metadataMappings: Metadata mappings definition
|
|
188
|
+
* - defaultMetadata: Default metadata values
|
|
189
|
+
* - metadataDetails: Localizations, detailed metadata descriptions and definition
|
|
190
|
+
* - metadataGroups: Groups for organizing metadata, with localizations
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* ```
|
|
194
|
+
* deviceManager.models.registerGroup(
|
|
195
|
+
* "Parking",
|
|
196
|
+
* {
|
|
197
|
+
* metadataMappings: {
|
|
198
|
+
* geolocation: { type: "geo_point" },
|
|
199
|
+
* },
|
|
200
|
+
* defaultMetadata: {
|
|
201
|
+
*
|
|
202
|
+
* },
|
|
203
|
+
* metadataDetails: {
|
|
204
|
+
* geolocation: {
|
|
205
|
+
* group: "access",
|
|
206
|
+
* locales: {
|
|
207
|
+
* en: {
|
|
208
|
+
* friendlyName: "Parking location",
|
|
209
|
+
* description: "GPS position of the parking"
|
|
210
|
+
* },
|
|
211
|
+
* fr: {
|
|
212
|
+
* friendlyName: "Emplacement du parking",
|
|
213
|
+
* description: "Position GPS du parking"
|
|
214
|
+
* }
|
|
215
|
+
* }
|
|
216
|
+
* }
|
|
217
|
+
* },
|
|
218
|
+
* metadataGroups: {
|
|
219
|
+
* access: {
|
|
220
|
+
* locales: {
|
|
221
|
+
* en: {
|
|
222
|
+
* groupFriendlyName: "Parking access info"
|
|
223
|
+
* },
|
|
224
|
+
* fr: {
|
|
225
|
+
* groupFriendlyName: "Information d'accès au parking"
|
|
226
|
+
* }
|
|
227
|
+
* }
|
|
228
|
+
* }
|
|
229
|
+
* }
|
|
230
|
+
* }
|
|
231
|
+
* );
|
|
232
|
+
* ```
|
|
233
|
+
*/
|
|
234
|
+
registerGroup: (engineGroup: string, model: string, definition: GroupModelDefinition) => void;
|
|
180
235
|
/**
|
|
181
236
|
* Register a new measure
|
|
182
237
|
*
|
|
@@ -200,7 +255,7 @@ export declare class DeviceManagerPlugin extends Plugin {
|
|
|
200
255
|
*/
|
|
201
256
|
init(config: JSONObject, context: PluginContext): Promise<void>;
|
|
202
257
|
/**
|
|
203
|
-
* Initialize the
|
|
258
|
+
* Initialize the platform index of the plugin
|
|
204
259
|
*/
|
|
205
260
|
private initDatabase;
|
|
206
261
|
/**
|
|
@@ -16,13 +16,13 @@ export type DeviceManagerConfiguration = {
|
|
|
16
16
|
autoUpdate: true;
|
|
17
17
|
};
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
19
|
+
* Platform index name
|
|
20
20
|
*/
|
|
21
|
-
|
|
21
|
+
platformIndex: string;
|
|
22
22
|
/**
|
|
23
|
-
*
|
|
23
|
+
* Collection mappings for the platform index
|
|
24
24
|
*/
|
|
25
|
-
|
|
25
|
+
platformCollections: {
|
|
26
26
|
config: {
|
|
27
27
|
name: string;
|
|
28
28
|
mappings: JSONObject;
|
|
@@ -45,20 +45,21 @@ export type DeviceManagerConfiguration = {
|
|
|
45
45
|
mappings: JSONObject;
|
|
46
46
|
settings?: JSONObject;
|
|
47
47
|
};
|
|
48
|
-
|
|
48
|
+
assets: {
|
|
49
49
|
name: string;
|
|
50
50
|
mappings: CollectionMappings;
|
|
51
51
|
settings?: JSONObject;
|
|
52
52
|
};
|
|
53
|
-
|
|
53
|
+
groups: {
|
|
54
54
|
name: string;
|
|
55
|
+
mappings: CollectionMappings;
|
|
55
56
|
settings?: JSONObject;
|
|
56
57
|
};
|
|
57
58
|
assetHistory: {
|
|
58
59
|
name: string;
|
|
59
60
|
settings?: JSONObject;
|
|
60
61
|
};
|
|
61
|
-
|
|
62
|
+
devices: {
|
|
62
63
|
name: string;
|
|
63
64
|
mappings: CollectionMappings;
|
|
64
65
|
settings?: JSONObject;
|
|
@@ -66,6 +67,7 @@ export type DeviceManagerConfiguration = {
|
|
|
66
67
|
measures: {
|
|
67
68
|
name: string;
|
|
68
69
|
settings?: JSONObject;
|
|
70
|
+
mappings: CollectionMappings;
|
|
69
71
|
};
|
|
70
72
|
};
|
|
71
73
|
};
|