kuzzle-device-manager-types 2.11.0 → 3.0.0-3-dev.1
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/index.d.ts +1 -0
- package/dist/lib/modules/asset/AssetModule.d.ts +1 -4
- package/dist/lib/modules/asset/AssetService.d.ts +7 -4
- package/dist/lib/modules/asset/AssetsController.d.ts +25 -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 +124 -9
- package/dist/lib/modules/asset/types/AssetContent.d.ts +9 -16
- 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/Decoder.d.ts +1 -1
- package/dist/lib/modules/decoder/DecodersController.d.ts +4 -1
- package/dist/lib/modules/decoder/PayloadService.d.ts +1 -0
- package/dist/lib/modules/device/DeviceService.d.ts +6 -47
- 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 -41
- package/dist/lib/modules/device/types/DeviceContent.d.ts +56 -5
- package/dist/lib/modules/device/types/DeviceEvents.d.ts +9 -24
- package/dist/lib/modules/group/GroupsController.d.ts +37 -0
- package/dist/lib/modules/group/GroupsModule.d.ts +10 -0
- package/dist/lib/modules/group/GroupsService.d.ts +118 -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/MeasureService.d.ts +11 -43
- package/dist/lib/modules/measure/MeasureSourcesBuilder.d.ts +1 -2
- package/dist/lib/modules/measure/MeasureTargetBuilder.d.ts +1 -1
- package/dist/lib/modules/measure/collections/measuresMappings.d.ts +2 -91
- 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 +9 -2
- package/dist/lib/modules/measure/types/MeasureEvents.d.ts +6 -149
- package/dist/lib/modules/measure/types/MeasureSources.d.ts +5 -0
- package/dist/lib/modules/measure/types/MeasureTarget.d.ts +1 -1
- package/dist/lib/modules/model/ModelService.d.ts +20 -14
- package/dist/lib/modules/model/ModelsController.d.ts +1 -1
- package/dist/lib/modules/model/ModelsRegister.d.ts +6 -5
- package/dist/lib/modules/model/types/ModelApi.d.ts +14 -9
- package/dist/lib/modules/model/types/ModelContent.d.ts +34 -3
- package/dist/lib/modules/model/types/ModelDefinition.d.ts +6 -2
- package/dist/lib/modules/model/types/ModelEvents.d.ts +3 -1
- package/dist/lib/modules/plugin/DeviceManagerEngine.d.ts +15 -6
- package/dist/lib/modules/plugin/DeviceManagerPlugin.d.ts +10 -8
- package/dist/lib/modules/plugin/types/DeviceManagerConfiguration.d.ts +9 -14
- package/dist/lib/modules/plugin/types/InternalCollection.d.ts +1 -1
- package/dist/lib/modules/plugin/types/exports.d.ts +1 -0
- package/dist/lib/modules/shared/services/AbstractExporter.d.ts +3 -1
- package/dist/lib/modules/shared/services/DigitalTwinExporter.d.ts +6 -1
- package/dist/lib/modules/shared/services/DigitalTwinService.d.ts +70 -2
- package/dist/lib/modules/shared/types/DigitalTwinContent.d.ts +4 -5
- package/dist/lib/modules/shared/types/DigitalTwinEvents.d.ts +30 -0
- package/dist/tests/application/assets/Container.d.ts +3 -2
- package/dist/tests/application/decoders/DummyTempDecoder.d.ts +10 -0
- package/dist/tests/application/decoders/DummyTempPositionDecoder.d.ts +10 -0
- package/dist/tests/application/decoders/EmptyTempDecoder.d.ts +8 -0
- package/dist/tests/application/devices/EmptyTemp.d.ts +2 -0
- package/dist/tests/application/devices/index.d.ts +1 -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 +2 -2
- package/dist/tests/application/groups/index.d.ts +2 -0
- package/dist/tests/application/measures/BatteryMeasure.d.ts +5 -0
- package/dist/tests/application/measures/HumidityMeasure.d.ts +5 -0
- 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/TemperatureMeasure.d.ts +5 -0
- package/dist/tests/application/measures/index.d.ts +5 -0
- package/dist/tests/application/tests/controller.d.ts +0 -1
- package/package.json +1 -1
- package/dist/lib/modules/asset/AssetsGroupsController.d.ts +0 -24
- package/dist/lib/modules/asset/AssetsGroupsService.d.ts +0 -49
- package/dist/lib/modules/asset/collections/assetsGroupsMapping.d.ts +0 -2
- package/dist/lib/modules/asset/types/AssetGroupContent.d.ts +0 -11
- 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/index.d.ts
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
import { Module } from "../shared/Module";
|
|
2
1
|
import { DeviceManagerPlugin } from "../plugin";
|
|
2
|
+
import { Module } from "../shared/Module";
|
|
3
3
|
export declare class AssetModule extends Module {
|
|
4
4
|
private assetService;
|
|
5
5
|
private assetHistoryService;
|
|
6
6
|
private assetController;
|
|
7
|
-
private assetGroupsController;
|
|
8
|
-
private assetsGroupsService;
|
|
9
7
|
private logger;
|
|
10
|
-
private assetsGroupsLogger;
|
|
11
8
|
constructor(plugin: DeviceManagerPlugin);
|
|
12
9
|
init(): Promise<void>;
|
|
13
10
|
}
|
|
@@ -2,13 +2,13 @@ import { KuzzleRequest, User } from "kuzzle";
|
|
|
2
2
|
import { JSONObject, KDocument, KHit, SearchResult, mReplaceResponse } from "kuzzle-sdk";
|
|
3
3
|
import { DeviceManagerPlugin } from "../plugin";
|
|
4
4
|
import { DigitalTwinService, Metadata, SearchParams } from "../shared";
|
|
5
|
+
import { KuzzleLogger } from "kuzzle-logger";
|
|
5
6
|
import { AssetHistoryService } from "./AssetHistoryService";
|
|
6
|
-
import { ApiAssetMigrateTenantResult, ApiAssetUpdateModelLocales } from "./types/AssetApi";
|
|
7
|
+
import { ApiAssetMigrateTenantResult, ApiAssetUnlinkDevicesResult, ApiAssetUpdateModelLocales } from "./types/AssetApi";
|
|
7
8
|
import { AssetContent } from "./types/AssetContent";
|
|
8
|
-
import { KuzzleLogger } from "kuzzle-logger";
|
|
9
9
|
export declare class AssetService extends DigitalTwinService {
|
|
10
|
+
readonly assetHistoryService: AssetHistoryService;
|
|
10
11
|
readonly logger: KuzzleLogger;
|
|
11
|
-
private assetHistoryService;
|
|
12
12
|
constructor(plugin: DeviceManagerPlugin, assetHistoryService: AssetHistoryService, assetLogger: KuzzleLogger);
|
|
13
13
|
registerAskEvents(): void;
|
|
14
14
|
get(engineId: string, assetId: string, request: KuzzleRequest): Promise<KDocument<AssetContent>>;
|
|
@@ -34,7 +34,8 @@ export declare class AssetService extends DigitalTwinService {
|
|
|
34
34
|
*/
|
|
35
35
|
delete(engineId: string, assetId: string, request: KuzzleRequest): Promise<void>;
|
|
36
36
|
search(engineId: string, searchParams: SearchParams, request: KuzzleRequest): Promise<SearchResult<KHit<AssetContent>>>;
|
|
37
|
-
|
|
37
|
+
unlinkDevices(assetId: string, allMeasures: boolean, deviceIds: string[], measureSlots: string[], request: KuzzleRequest): Promise<ApiAssetUnlinkDevicesResult>;
|
|
38
|
+
migrateTenant(user: User, assetsList: string[], engineId: string, newEngineId: string, includeDevices: boolean, request: KuzzleRequest): Promise<ApiAssetMigrateTenantResult>;
|
|
38
39
|
/**
|
|
39
40
|
* Replace an asset metadata
|
|
40
41
|
*/
|
|
@@ -48,5 +49,7 @@ export declare class AssetService extends DigitalTwinService {
|
|
|
48
49
|
* @param model
|
|
49
50
|
*/
|
|
50
51
|
updateModelLocales(request: KuzzleRequest, model: string): Promise<ApiAssetUpdateModelLocales[]>;
|
|
52
|
+
addMeasureSlot(assetId: string, measureSlot: AssetContent["measureSlots"][0], engineId: string, request: KuzzleRequest): Promise<KDocument<AssetContent>>;
|
|
53
|
+
removeMeasureSlot(assetId: string, measureSlotName: string, engineId: string, request: KuzzleRequest): Promise<KDocument<AssetContent>>;
|
|
51
54
|
private refreshModel;
|
|
52
55
|
}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { ControllerDefinition, KuzzleRequest } from "kuzzle";
|
|
2
|
+
import { MeasureExporter } from "../measure";
|
|
2
3
|
import { DeviceManagerPlugin } from "../plugin";
|
|
4
|
+
import { DigitalTwinExporter } from "../shared";
|
|
3
5
|
import { AssetService } from "./AssetService";
|
|
4
|
-
import { ApiAssetCreateResult, ApiAssetUpsertResult, ApiAssetDeleteResult, ApiAssetGetMeasuresResult, ApiAssetGetResult, ApiAssetSearchResult, ApiAssetUpdateResult, ApiAssetMigrateTenantResult, ApiAssetMetadataReplaceResult, ApiAssetGetLastMeasuresResult, ApiAssetMGetLastMeasuredAtResult, ApiAssetMGetLastMeasuresResult, ApiAssetGetLastMeasuredAtResult, ApiAssetUpdateModelLocales } from "./types/AssetApi";
|
|
6
|
+
import { ApiAssetCreateResult, ApiAssetUpsertResult, ApiAssetDeleteResult, ApiAssetGetMeasuresResult, ApiAssetGetResult, ApiAssetSearchResult, ApiAssetUpdateResult, ApiAssetMigrateTenantResult, ApiAssetMetadataReplaceResult, ApiAssetGetLastMeasuresResult, ApiAssetMGetLastMeasuredAtResult, ApiAssetMGetLastMeasuresResult, ApiAssetGetLastMeasuredAtResult, ApiAssetUpdateModelLocales, ApiAssetLinkDevicesResult, ApiAssetUnlinkDevicesResult, ApiAssetAddMeasureSlotResult, ApiAssetRemoveMeasureSlotResult } from "./types/AssetApi";
|
|
5
7
|
import { KuzzleLogger } from "kuzzle-logger";
|
|
6
8
|
export declare class AssetsController {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
+
readonly plugin: DeviceManagerPlugin;
|
|
10
|
+
readonly assetService: AssetService;
|
|
9
11
|
definition: ControllerDefinition;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
+
readonly exporter: DigitalTwinExporter;
|
|
13
|
+
readonly measureExporter: MeasureExporter;
|
|
12
14
|
readonly logger: KuzzleLogger;
|
|
13
15
|
constructor(plugin: DeviceManagerPlugin, assetService: AssetService, assetlogger: KuzzleLogger);
|
|
14
16
|
get(request: KuzzleRequest): Promise<ApiAssetGetResult>;
|
|
@@ -31,8 +33,8 @@ export declare class AssetsController {
|
|
|
31
33
|
* @throws If the asset does not exists
|
|
32
34
|
*/
|
|
33
35
|
private getTypeFromMeasureSlot;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
mIngestMeasure(request: KuzzleRequest): Promise<void>;
|
|
37
|
+
ingestMeasure(request: KuzzleRequest): Promise<void>;
|
|
36
38
|
exportMeasures(request: KuzzleRequest): Promise<any>;
|
|
37
39
|
export(request: KuzzleRequest): Promise<any>;
|
|
38
40
|
migrateTenant(request: KuzzleRequest): Promise<ApiAssetMigrateTenantResult>;
|
|
@@ -44,4 +46,20 @@ export declare class AssetsController {
|
|
|
44
46
|
* @param request
|
|
45
47
|
*/
|
|
46
48
|
updateModelLocales(request: KuzzleRequest): Promise<ApiAssetUpdateModelLocales[]>;
|
|
49
|
+
/**
|
|
50
|
+
* Link an asset to devices.
|
|
51
|
+
*/
|
|
52
|
+
linkDevices(request: KuzzleRequest): Promise<ApiAssetLinkDevicesResult>;
|
|
53
|
+
/**
|
|
54
|
+
* Unlink assets from a device.
|
|
55
|
+
*/
|
|
56
|
+
unlinkDevices(request: KuzzleRequest): Promise<ApiAssetUnlinkDevicesResult>;
|
|
57
|
+
/**
|
|
58
|
+
* Remove a measure slot from an asset
|
|
59
|
+
*/
|
|
60
|
+
addMeasureSlot(request: KuzzleRequest): Promise<ApiAssetAddMeasureSlotResult>;
|
|
61
|
+
/**
|
|
62
|
+
* Remove a measure slot from an asset
|
|
63
|
+
*/
|
|
64
|
+
removeMeasureSlot(request: KuzzleRequest): Promise<ApiAssetRemoveMeasureSlotResult>;
|
|
47
65
|
}
|
|
@@ -2,11 +2,7 @@ export * from "./types/AssetContent";
|
|
|
2
2
|
export * from "./types/AssetHistoryContent";
|
|
3
3
|
export * from "./types/AssetEvents";
|
|
4
4
|
export * from "./types/AssetApi";
|
|
5
|
-
export * from "./types/AssetGroupContent";
|
|
6
|
-
export * from "./types/AssetGroupsApi";
|
|
7
5
|
export * from "./roles/RoleAssetsAdmin";
|
|
8
6
|
export * from "./roles/RoleAssetsReader";
|
|
9
|
-
export * from "./roles/RoleAssetsGroupsAdmin";
|
|
10
|
-
export * from "./roles/RoleAssetsGroupsReader";
|
|
11
7
|
export * from "./collections/assetsMappings";
|
|
12
8
|
export * from "./collections/assetsHistoryMappings";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export * from "./collections/assetsMappings";
|
|
2
2
|
export * from "./collections/assetsHistoryMappings";
|
|
3
|
-
export * from "
|
|
3
|
+
export * from "../group/collections/groupsMappings";
|
|
4
4
|
export * from "./types/AssetContent";
|
|
5
5
|
export * from "./types/AssetHistoryContent";
|
|
6
6
|
export * from "./types/AssetEvents";
|
|
@@ -9,5 +9,3 @@ export * from "./model/AssetSerializer";
|
|
|
9
9
|
export * from "./AssetModule";
|
|
10
10
|
export * from "./roles/RoleAssetsAdmin";
|
|
11
11
|
export * from "./roles/RoleAssetsReader";
|
|
12
|
-
export * from "./roles/RoleAssetsGroupsAdmin";
|
|
13
|
-
export * from "./roles/RoleAssetsGroupsReader";
|
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
import { JSONObject, KDocument, KHit, SearchResult, UpdateByQueryResponse } from "kuzzle-sdk";
|
|
2
|
-
import { MeasureContent, Measurement } from "
|
|
2
|
+
import { MeasureContent, Measurement } from "../../measure";
|
|
3
3
|
import { ApiDigitalTwinGetLastMeasuredAtRequest, ApiDigitalTwinGetLastMeasuredAtResult, ApiDigitalTwinGetLastMeasuresRequest, ApiDigitalTwinGetLastMeasuresResult, ApiDigitalTwinMGetLastMeasuredAtRequest, ApiDigitalTwinMGetLastMeasuredAtResult, ApiDigitalTwinMGetLastMeasuresRequest, ApiDigitalTwinMGetLastMeasuresResult, Metadata } from "../../shared";
|
|
4
4
|
import { AssetContent } from "./AssetContent";
|
|
5
5
|
type AssetsControllerName = "device-manager/assets";
|
|
6
6
|
import { ApiMeasureSource } from "../../measure/types/MeasureSources";
|
|
7
|
+
import { DeviceContent } from "lib/modules/device";
|
|
7
8
|
interface AssetsControllerRequest {
|
|
8
9
|
controller: AssetsControllerName;
|
|
9
10
|
engineId: string;
|
|
10
|
-
/**
|
|
11
|
-
* ? Request parameter used by SoftTenant module
|
|
12
|
-
* ! Not used directly in this plugin
|
|
13
|
-
*/
|
|
14
|
-
softTenantId?: string | string[] | null;
|
|
15
11
|
}
|
|
16
12
|
export interface ApiAssetGetRequest extends AssetsControllerRequest {
|
|
17
13
|
action: "get";
|
|
@@ -92,13 +88,13 @@ export type ApiAssetGetMeasuresResult = {
|
|
|
92
88
|
};
|
|
93
89
|
type TypelessApiMeasureSource = Omit<ApiMeasureSource, "type">;
|
|
94
90
|
export interface ApiAssetMeasureIngestRequest extends AssetsControllerRequest {
|
|
95
|
-
action: "
|
|
91
|
+
action: "ingestMeasure";
|
|
96
92
|
assetId: string;
|
|
97
93
|
engineId: string;
|
|
98
94
|
slotName: string;
|
|
99
95
|
body: {
|
|
100
96
|
dataSource: TypelessApiMeasureSource;
|
|
101
|
-
measuredAt: number
|
|
97
|
+
measuredAt: number;
|
|
102
98
|
values: JSONObject;
|
|
103
99
|
};
|
|
104
100
|
}
|
|
@@ -107,7 +103,7 @@ type APIDecodedMeasurement = Omit<Measurement, "type"> & {
|
|
|
107
103
|
slotName: string;
|
|
108
104
|
};
|
|
109
105
|
export interface ApiAssetmMeasureIngestRequest extends AssetsControllerRequest {
|
|
110
|
-
action: "
|
|
106
|
+
action: "mIngestMeasure";
|
|
111
107
|
assetId: string;
|
|
112
108
|
engineId: string;
|
|
113
109
|
body: {
|
|
@@ -158,6 +154,7 @@ export interface ApiAssetMigrateTenantRequest extends AssetsControllerRequest {
|
|
|
158
154
|
body: {
|
|
159
155
|
assetsList: string[];
|
|
160
156
|
newEngineId: string;
|
|
157
|
+
includeDevices?: boolean;
|
|
161
158
|
};
|
|
162
159
|
}
|
|
163
160
|
export type ApiAssetMigrateTenantResult = {
|
|
@@ -172,4 +169,122 @@ export type ApiAssetUpdateModelLocales = {
|
|
|
172
169
|
engineIndex: string;
|
|
173
170
|
result: UpdateByQueryResponse<AssetContent>;
|
|
174
171
|
};
|
|
172
|
+
export interface ApiAssetlinkDevicesRequest extends AssetsControllerRequest {
|
|
173
|
+
action: "linkDevices";
|
|
174
|
+
_id: string;
|
|
175
|
+
refresh?: string;
|
|
176
|
+
body: {
|
|
177
|
+
linkedMeasures: Array<{
|
|
178
|
+
deviceId: string;
|
|
179
|
+
/**
|
|
180
|
+
* This option allows to not specify the names of all the measures that should
|
|
181
|
+
* be linked to the asset.
|
|
182
|
+
*
|
|
183
|
+
* The algorithm will go through all the measures names provided by the device
|
|
184
|
+
* and add the one who are present with the same name in the asset.
|
|
185
|
+
*
|
|
186
|
+
* It will not add the measure if:
|
|
187
|
+
* - it has been specified in the link request
|
|
188
|
+
* - it was already present in the asset
|
|
189
|
+
*
|
|
190
|
+
* @example
|
|
191
|
+
* if the device provide a measure of type "temperature" with the name "temp"
|
|
192
|
+
* if the asset has declared a measure of type "temperature" with the name "temp"
|
|
193
|
+
* then the measure will be automatically added in the link and will later be propagated to the asset
|
|
194
|
+
*/
|
|
195
|
+
implicitMeasuresLinking?: boolean;
|
|
196
|
+
/**
|
|
197
|
+
* Names of the linked measures.
|
|
198
|
+
*
|
|
199
|
+
* Array<{ asset: string, device: string }>
|
|
200
|
+
*
|
|
201
|
+
* @example
|
|
202
|
+
*
|
|
203
|
+
* [
|
|
204
|
+
* { asset: "externalTemperature", device: "temperature" }
|
|
205
|
+
* ]
|
|
206
|
+
*/
|
|
207
|
+
measureSlots?: Array<{
|
|
208
|
+
asset: string;
|
|
209
|
+
device: string;
|
|
210
|
+
}>;
|
|
211
|
+
}>;
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
export type ApiAssetLinkDevicesResult = {
|
|
215
|
+
asset: KDocument<AssetContent>;
|
|
216
|
+
devices: KDocument<DeviceContent>[];
|
|
217
|
+
};
|
|
218
|
+
export interface ApiAssetUnlinkDevicesRequest extends AssetsControllerRequest {
|
|
219
|
+
action: "unlinkDevices";
|
|
220
|
+
_id: string;
|
|
221
|
+
strict?: boolean;
|
|
222
|
+
refresh?: string;
|
|
223
|
+
body: {
|
|
224
|
+
/**
|
|
225
|
+
* This options allows to unlink all the measures of the asset
|
|
226
|
+
*/
|
|
227
|
+
allMeasures?: boolean;
|
|
228
|
+
/**
|
|
229
|
+
* Names of the measure slots of the asset to unlink.
|
|
230
|
+
*
|
|
231
|
+
* string[]
|
|
232
|
+
*
|
|
233
|
+
* @example
|
|
234
|
+
*
|
|
235
|
+
* ['externalTemperature','position']
|
|
236
|
+
*/
|
|
237
|
+
measureSlots?: string[];
|
|
238
|
+
/**
|
|
239
|
+
* Ids of the devices to unlink.
|
|
240
|
+
*
|
|
241
|
+
* string[]
|
|
242
|
+
*
|
|
243
|
+
* @example
|
|
244
|
+
*
|
|
245
|
+
* ['First-asset','Second-asset']
|
|
246
|
+
*/
|
|
247
|
+
devices?: string[];
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
export type ApiAssetUnlinkDevicesResult = {
|
|
251
|
+
asset: KDocument<AssetContent>;
|
|
252
|
+
devices: KDocument<DeviceContent>[];
|
|
253
|
+
};
|
|
254
|
+
export interface ApiAssetAddMeasureSlotRequest extends AssetsControllerRequest {
|
|
255
|
+
action: "addMeasureSlot";
|
|
256
|
+
_id: string;
|
|
257
|
+
body: {
|
|
258
|
+
/**
|
|
259
|
+
* Measure slot containing the name of the slot and it's type of measurement
|
|
260
|
+
*
|
|
261
|
+
* { name: string , type: string}
|
|
262
|
+
*
|
|
263
|
+
* @example
|
|
264
|
+
*
|
|
265
|
+
* { name: "externalTemperature", type: "temperature" }
|
|
266
|
+
*/
|
|
267
|
+
measureSlot: {
|
|
268
|
+
name: string;
|
|
269
|
+
type: string;
|
|
270
|
+
};
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
export type ApiAssetAddMeasureSlotResult = KDocument<AssetContent>;
|
|
274
|
+
export interface ApiAssetRemoveMeasureSlotRequest extends AssetsControllerRequest {
|
|
275
|
+
action: "removeMeasureSlot";
|
|
276
|
+
_id: string;
|
|
277
|
+
body: {
|
|
278
|
+
/**
|
|
279
|
+
* Name of the measure slot to be removed
|
|
280
|
+
*
|
|
281
|
+
*
|
|
282
|
+
* @example
|
|
283
|
+
*
|
|
284
|
+
* measureSlot: "externalTemperature",
|
|
285
|
+
*/
|
|
286
|
+
measureSlot: string;
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
export type ApiAssetRemoveMeasureSlotResult = KDocument<AssetContent>;
|
|
175
290
|
export {};
|
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
import { JSONObject } from "kuzzle-sdk";
|
|
2
1
|
import { DigitalTwinContent, Metadata } from "../../shared";
|
|
3
2
|
/**
|
|
4
3
|
* Asset document content
|
|
5
4
|
*/
|
|
6
|
-
export interface AssetContent<
|
|
5
|
+
export interface AssetContent<TMetadata extends Metadata = any> extends DigitalTwinContent<TMetadata> {
|
|
7
6
|
/**
|
|
8
|
-
* Link with attached
|
|
7
|
+
* Link with attached devices
|
|
9
8
|
*/
|
|
10
|
-
|
|
9
|
+
linkedMeasures: Array<{
|
|
11
10
|
/**
|
|
12
11
|
* Device ID
|
|
13
12
|
*/
|
|
14
|
-
|
|
13
|
+
deviceId: string;
|
|
15
14
|
/**
|
|
16
15
|
* Names of the linked measures
|
|
17
16
|
*
|
|
@@ -20,27 +19,21 @@ export interface AssetContent<TMeasures extends JSONObject = any, TMetadata exte
|
|
|
20
19
|
* @example
|
|
21
20
|
*
|
|
22
21
|
* [
|
|
23
|
-
* { asset: "externalTemperature", device: "temperature"
|
|
22
|
+
* { asset: "externalTemperature", device: "temperature" }
|
|
24
23
|
* ]
|
|
25
24
|
*/
|
|
26
|
-
|
|
25
|
+
measureSlots: Array<{
|
|
27
26
|
asset: string;
|
|
28
27
|
device: string;
|
|
29
|
-
type: string;
|
|
30
28
|
}>;
|
|
31
29
|
}>;
|
|
32
30
|
/**
|
|
33
|
-
*
|
|
31
|
+
* Path's of asset groups
|
|
34
32
|
*/
|
|
35
33
|
groups: Array<{
|
|
36
|
-
|
|
34
|
+
path: string;
|
|
37
35
|
date: number;
|
|
38
36
|
}>;
|
|
39
|
-
/**
|
|
40
|
-
* Id's of soft tenants
|
|
41
|
-
* ! Not used directly in this plugin
|
|
42
|
-
*/
|
|
43
|
-
softTenant?: Array<string>;
|
|
44
37
|
}
|
|
45
38
|
/**
|
|
46
39
|
* Asset description used to contextualize each measure data point
|
|
@@ -54,4 +47,4 @@ export type AssetMeasureContext<TMetadata extends Metadata = Metadata> = {
|
|
|
54
47
|
* Name of the measure for the Asset
|
|
55
48
|
*/
|
|
56
49
|
measureName: string;
|
|
57
|
-
} & Pick<AssetContent<
|
|
50
|
+
} & Pick<AssetContent<TMetadata>, "model" | "reference" | "metadata" | "groups">;
|
|
@@ -1,16 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { KDocumentContent } from "kuzzle-sdk";
|
|
2
2
|
import { Metadata } from "../../shared";
|
|
3
3
|
import { AssetContent } from "./AssetContent";
|
|
4
4
|
export type AssetHistoryMetadata = {
|
|
5
5
|
names: string[];
|
|
6
6
|
};
|
|
7
|
-
export type AssetHistoryEventMeasure = {
|
|
8
|
-
name: "measure";
|
|
9
|
-
measure: {
|
|
10
|
-
names: string[];
|
|
11
|
-
};
|
|
12
|
-
metadata?: AssetHistoryMetadata;
|
|
13
|
-
};
|
|
14
7
|
export type AssetHistoryEventMetadata = {
|
|
15
8
|
name: "metadata";
|
|
16
9
|
metadata: AssetHistoryMetadata;
|
|
@@ -27,11 +20,11 @@ export type AssetHistoryEventUnlink = {
|
|
|
27
20
|
deviceId: string;
|
|
28
21
|
};
|
|
29
22
|
};
|
|
30
|
-
export type AssetHistoryEvent =
|
|
23
|
+
export type AssetHistoryEvent = AssetHistoryEventMetadata | AssetHistoryEventLink | AssetHistoryEventUnlink;
|
|
31
24
|
/**
|
|
32
25
|
* Asset History document content
|
|
33
26
|
*/
|
|
34
|
-
export interface AssetHistoryContent<TAssetHistoryEvent extends AssetHistoryEvent = any,
|
|
27
|
+
export interface AssetHistoryContent<TAssetHistoryEvent extends AssetHistoryEvent = any, TMetadata extends Metadata = any> extends KDocumentContent {
|
|
35
28
|
/**
|
|
36
29
|
* Name of the event who caused the historization
|
|
37
30
|
*
|
|
@@ -48,7 +41,7 @@ export interface AssetHistoryContent<TAssetHistoryEvent extends AssetHistoryEven
|
|
|
48
41
|
/**
|
|
49
42
|
* Asset content after the event
|
|
50
43
|
*/
|
|
51
|
-
asset: AssetContent<
|
|
44
|
+
asset: AssetContent<TMetadata>;
|
|
52
45
|
/**
|
|
53
46
|
* Timestamp of the event according to its type
|
|
54
47
|
*
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { HttpRoute, KuzzleRequest } from "kuzzle";
|
|
2
2
|
import { JSONObject } from "kuzzle-sdk";
|
|
3
|
+
import { KuzzleLogger } from "kuzzle-logger";
|
|
3
4
|
import { DecodedPayload } from "./DecodedPayload";
|
|
4
5
|
import { DecoderContent } from "./types/DecoderContent";
|
|
5
|
-
import { KuzzleLogger } from "kuzzle-logger";
|
|
6
6
|
/**
|
|
7
7
|
* Array of measures declaration
|
|
8
8
|
*
|
|
@@ -6,8 +6,8 @@ import { KuzzleLogger } from "kuzzle-logger";
|
|
|
6
6
|
export declare class DecodersController {
|
|
7
7
|
private payloadService;
|
|
8
8
|
private decodersRegister;
|
|
9
|
-
readonly logger: KuzzleLogger;
|
|
10
9
|
definition: ControllerDefinition;
|
|
10
|
+
readonly logger: KuzzleLogger;
|
|
11
11
|
constructor(payloadService: PayloadService, decodersRegister: DecodersRegister, logger: KuzzleLogger);
|
|
12
12
|
/**
|
|
13
13
|
* List all available decoders
|
|
@@ -17,6 +17,9 @@ export declare class DecodersController {
|
|
|
17
17
|
* Clean payload collection for a time period
|
|
18
18
|
*/
|
|
19
19
|
prunePayloads(request: KuzzleRequest): Promise<ApiDecoderPrunePayloadsResult>;
|
|
20
|
+
/**
|
|
21
|
+
* Route request to appropriate decoder
|
|
22
|
+
*/
|
|
20
23
|
route(request: KuzzleRequest): Promise<{
|
|
21
24
|
valid: boolean;
|
|
22
25
|
}>;
|
|
@@ -3,25 +3,21 @@ import { JSONObject, KDocument, KHit, SearchResult } from "kuzzle-sdk";
|
|
|
3
3
|
import { DecodedMeasurement } from "../measure";
|
|
4
4
|
import { DeviceManagerPlugin } from "../plugin";
|
|
5
5
|
import { DigitalTwinService, Metadata, SearchParams } from "../shared";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { DeviceContent } from "./types/DeviceContent";
|
|
6
|
+
import { DeviceProvisioningContent, DeviceContent } from "./types/DeviceContent";
|
|
7
|
+
import { ApiDeviceUnlinkAssetsResult } from "./exports";
|
|
9
8
|
import { KuzzleLogger } from "kuzzle-logger";
|
|
10
9
|
export declare class DeviceService extends DigitalTwinService {
|
|
11
10
|
readonly logger: KuzzleLogger;
|
|
12
11
|
constructor(plugin: DeviceManagerPlugin, logger: KuzzleLogger);
|
|
13
12
|
registerAskEvents(): void;
|
|
14
13
|
private _create;
|
|
14
|
+
private _createDeviceProvisioning;
|
|
15
15
|
/**
|
|
16
16
|
* Create a new device.
|
|
17
17
|
*
|
|
18
|
-
* @todo creating a device in the "device-manager" index should be a separate
|
|
19
|
-
* method since in this case "engineId" is not really an engine ID but still
|
|
20
|
-
* required as an argument (in part to check the tenant rights)
|
|
21
18
|
*/
|
|
22
19
|
create(model: string, reference: string, metadata: JSONObject, request: KuzzleRequest): Promise<KDocument<DeviceContent>>;
|
|
23
20
|
get(engineId: string, deviceId: string, request: KuzzleRequest): Promise<KDocument<DeviceContent>>;
|
|
24
|
-
private getInternalDevices;
|
|
25
21
|
/**
|
|
26
22
|
* Replace a device metadata
|
|
27
23
|
*/
|
|
@@ -33,13 +29,13 @@ export declare class DeviceService extends DigitalTwinService {
|
|
|
33
29
|
update(engineId: string, deviceId: string, metadata: Metadata, request: KuzzleRequest): Promise<KDocument<DeviceContent>>;
|
|
34
30
|
delete(engineId: string, deviceId: string, request: KuzzleRequest): Promise<void>;
|
|
35
31
|
search(engineId: string, searchParams: SearchParams, request: KuzzleRequest): Promise<SearchResult<KHit<DeviceContent>>>;
|
|
32
|
+
unlinkAssets(deviceId: string, allMeasures: boolean, assetIds: string[], measureSlots: string[], request: KuzzleRequest): Promise<ApiDeviceUnlinkAssetsResult>;
|
|
36
33
|
/**
|
|
37
34
|
* Internal logic to attach the device to an engine
|
|
38
35
|
*
|
|
39
36
|
* @param engineId Engine id to attach to
|
|
40
37
|
* @param deviceId Device id to attach
|
|
41
38
|
* @param options.refresh Wait for ES indexation
|
|
42
|
-
* @param options.strict If true, throw if an operation isn't possible
|
|
43
39
|
*/
|
|
44
40
|
private _attachEngine;
|
|
45
41
|
/**
|
|
@@ -57,46 +53,9 @@ export declare class DeviceService extends DigitalTwinService {
|
|
|
57
53
|
* @param {string} deviceId Id of the device
|
|
58
54
|
* @param {KuzzleRequest} request kuzzle request
|
|
59
55
|
*/
|
|
60
|
-
detachEngine(deviceId: string, request: KuzzleRequest): Promise<KDocument<
|
|
61
|
-
/**
|
|
62
|
-
* Link a device to an asset.
|
|
63
|
-
*/
|
|
64
|
-
linkAsset(engineId: string, deviceId: string, assetId: string, measureNames: ApiDeviceLinkAssetRequest["body"]["measureNames"], implicitMeasuresLinking: boolean, request: KuzzleRequest): Promise<{
|
|
65
|
-
asset: KDocument<AssetContent>;
|
|
66
|
-
device: KDocument<DeviceContent>;
|
|
67
|
-
}>;
|
|
56
|
+
detachEngine(deviceId: string, request: KuzzleRequest): Promise<KDocument<DeviceProvisioningContent>>;
|
|
68
57
|
receiveMeasures(engineId: string, deviceId: string, measures: DecodedMeasurement[], payloadUuids: string[], request: KuzzleRequest): Promise<void>;
|
|
69
|
-
/**
|
|
70
|
-
* Checks if the asset does not already have a linked device using one of the
|
|
71
|
-
* requested measure names.
|
|
72
|
-
*/
|
|
73
|
-
private checkAlreadyProvidedMeasures;
|
|
74
|
-
/**
|
|
75
|
-
* Goes through the device available measures and add them into the link if:
|
|
76
|
-
* - they are not already provided by another device
|
|
77
|
-
* - they are not already present in the link request
|
|
78
|
-
* - they are declared in the asset model
|
|
79
|
-
*/
|
|
80
|
-
private generateMissingAssetMeasureNames;
|
|
81
|
-
/**
|
|
82
|
-
* Internal logic of unlink a device of an asset
|
|
83
|
-
*
|
|
84
|
-
* @param {string} deviceId Id of the device
|
|
85
|
-
* @param {KuzzleRequest} request kuzzle request
|
|
86
|
-
*/
|
|
87
|
-
private _unlinkAsset;
|
|
88
|
-
/**
|
|
89
|
-
* Unlink a device of an asset with lock
|
|
90
|
-
*
|
|
91
|
-
* @param {string} deviceId Id of the device
|
|
92
|
-
* @param {KuzzleRequest} request kuzzle request
|
|
93
|
-
*/
|
|
94
|
-
unlinkAsset(deviceId: string, request: KuzzleRequest): Promise<{
|
|
95
|
-
asset: KDocument<AssetContent>;
|
|
96
|
-
device: KDocument<DeviceContent>;
|
|
97
|
-
}>;
|
|
98
58
|
private checkEngineExists;
|
|
99
59
|
private checkAttachedToEngine;
|
|
100
|
-
private
|
|
101
|
-
private getAssetModel;
|
|
60
|
+
private refreshModel;
|
|
102
61
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ControllerDefinition, KuzzleRequest } from "kuzzle";
|
|
2
2
|
import { DeviceManagerPlugin } from "../plugin";
|
|
3
3
|
import { DeviceService } from "./DeviceService";
|
|
4
|
-
import { ApiDeviceAttachEngineResult, ApiDeviceCreateResult, ApiDeviceDeleteResult, ApiDeviceDetachEngineResult, ApiDeviceGetResult,
|
|
4
|
+
import { ApiDeviceAttachEngineResult, ApiDeviceCreateResult, ApiDeviceDeleteResult, ApiDeviceDetachEngineResult, ApiDeviceGetResult, ApiDeviceLinkAssetsResult, ApiDeviceSearchResult, ApiDeviceUnlinkAssetsResult, ApiDeviceUpdateResult, ApiDeviceGetMeasuresResult, ApiDeviceUpsertResult, ApiDeviceGetLastMeasuresResult, ApiDeviceMGetLastMeasuresResult, ApiDeviceGetLastMeasuredAtResult, ApiDeviceMGetLastMeasuredAtResult, ApiDeviceMetadataReplaceResult } from "./types/DeviceApi";
|
|
5
5
|
import { KuzzleLogger } from "kuzzle-logger";
|
|
6
6
|
export declare class DevicesController {
|
|
7
7
|
private plugin;
|
|
@@ -30,13 +30,13 @@ export declare class DevicesController {
|
|
|
30
30
|
*/
|
|
31
31
|
detachEngine(request: KuzzleRequest): Promise<ApiDeviceDetachEngineResult>;
|
|
32
32
|
/**
|
|
33
|
-
* Link a device to
|
|
33
|
+
* Link a device to several assets.
|
|
34
34
|
*/
|
|
35
|
-
|
|
35
|
+
linkAssets(request: KuzzleRequest): Promise<ApiDeviceLinkAssetsResult>;
|
|
36
36
|
/**
|
|
37
|
-
* Unlink
|
|
37
|
+
* Unlink assets from a device.
|
|
38
38
|
*/
|
|
39
|
-
|
|
39
|
+
unlinkAssets(request: KuzzleRequest): Promise<ApiDeviceUnlinkAssetsResult>;
|
|
40
40
|
getMeasures(request: KuzzleRequest): Promise<ApiDeviceGetMeasuresResult>;
|
|
41
41
|
getLastMeasures(request: KuzzleRequest): Promise<ApiDeviceGetLastMeasuresResult>;
|
|
42
42
|
mGetLastMeasures(request: KuzzleRequest): Promise<ApiDeviceMGetLastMeasuresResult>;
|
|
@@ -5,3 +5,9 @@ import { CollectionMappings } from "kuzzle";
|
|
|
5
5
|
* Those mappings does not contains the `measures` and `metadata` mappings.
|
|
6
6
|
*/
|
|
7
7
|
export declare const devicesMappings: CollectionMappings;
|
|
8
|
+
/**
|
|
9
|
+
* Mappings for the "devices" collection of the platform index.
|
|
10
|
+
*
|
|
11
|
+
* Those mappings does not contains the `measures`, `groups` and `metadata` mappings.
|
|
12
|
+
*/
|
|
13
|
+
export declare const devicesPlatformMappings: CollectionMappings;
|
|
@@ -10,9 +10,9 @@ import { KuzzleRole } from "../../shared/types/KuzzleRole";
|
|
|
10
10
|
create: true,
|
|
11
11
|
delete: true,
|
|
12
12
|
get: true,
|
|
13
|
-
|
|
13
|
+
linkAssets: true,
|
|
14
14
|
search: true,
|
|
15
|
-
|
|
15
|
+
unlinkAssets: true,
|
|
16
16
|
update: true,
|
|
17
17
|
getMeasures: true,
|
|
18
18
|
exportMeasures: true,
|