kuzzle-device-manager-types 3.0.0-next.1 → 3.0.0-next.10
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 +10 -3
- package/dist/lib/modules/asset/AssetsController.d.ts +15 -1
- 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 +88 -2
- 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/types/DecoderApi.d.ts +0 -1
- package/dist/lib/modules/device/DeviceService.d.ts +12 -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 +68 -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/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 +1 -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 +57 -3
- 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 +1 -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 +70 -0
- 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 +1 -1
- 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
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { JSONObject } from "kuzzle-sdk";
|
|
2
|
+
export declare function transformDocuments(collection: string, indexPath: string, callBack: (string: any) => JSONObject, endCallBack?: () => void): void;
|
|
3
|
+
export declare function clearProperties(obj: any, properties: any): {};
|
|
4
|
+
export interface ModelRegistry {
|
|
5
|
+
assets: {
|
|
6
|
+
[key: string]: {
|
|
7
|
+
type: string;
|
|
8
|
+
name: string;
|
|
9
|
+
}[];
|
|
10
|
+
};
|
|
11
|
+
devices: {
|
|
12
|
+
[key: string]: {
|
|
13
|
+
type: string;
|
|
14
|
+
name: string;
|
|
15
|
+
}[];
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export declare function retrieveModelMeasureSlots(pathToPlatformIndex: string, callBack: (models: ModelRegistry) => void): void;
|
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { JSONObject, KDocument, KHit, SearchResult, mReplaceResponse } from "kuz
|
|
|
3
3
|
import { DeviceManagerPlugin } from "../plugin";
|
|
4
4
|
import { DigitalTwinService, Metadata, SearchParams } from "../shared";
|
|
5
5
|
import { AssetHistoryService } from "./AssetHistoryService";
|
|
6
|
-
import { ApiAssetMigrateTenantResult } from "./types/AssetApi";
|
|
6
|
+
import { ApiAssetMigrateTenantResult, ApiAssetUpdateModelLocales } from "./types/AssetApi";
|
|
7
7
|
import { AssetContent } from "./types/AssetContent";
|
|
8
8
|
export declare class AssetService extends DigitalTwinService {
|
|
9
9
|
private assetHistoryService;
|
|
@@ -22,6 +22,7 @@ export declare class AssetService extends DigitalTwinService {
|
|
|
22
22
|
* Update or Create an asset metadata
|
|
23
23
|
*/
|
|
24
24
|
upsert(engineId: string, model: string, reference: string, metadata: Metadata, request: KuzzleRequest): Promise<KDocument<AssetContent>>;
|
|
25
|
+
private _create;
|
|
25
26
|
/**
|
|
26
27
|
* Create an asset metadata
|
|
27
28
|
*/
|
|
@@ -31,13 +32,19 @@ export declare class AssetService extends DigitalTwinService {
|
|
|
31
32
|
*/
|
|
32
33
|
delete(engineId: string, assetId: string, request: KuzzleRequest): Promise<void>;
|
|
33
34
|
search(engineId: string, searchParams: SearchParams, request: KuzzleRequest): Promise<SearchResult<KHit<AssetContent>>>;
|
|
34
|
-
migrateTenant(user: User, assetsList: string[], engineId: string, newEngineId: string): Promise<ApiAssetMigrateTenantResult>;
|
|
35
|
+
migrateTenant(user: User, assetsList: string[], engineId: string, newEngineId: string, includeDevices: boolean, request: KuzzleRequest): Promise<ApiAssetMigrateTenantResult>;
|
|
35
36
|
/**
|
|
36
37
|
* Replace an asset metadata
|
|
37
38
|
*/
|
|
38
39
|
mReplaceAndHistorize(engineId: string, assets: KDocument<AssetContent>[], removedMetadata: string[], { refresh }: {
|
|
39
40
|
refresh: any;
|
|
40
41
|
}): Promise<mReplaceResponse>;
|
|
41
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Retrieve locales with the specified model and search all assets related to the model to update the locales.
|
|
44
|
+
* The operation is historized.
|
|
45
|
+
* @param request
|
|
46
|
+
* @param model
|
|
47
|
+
*/
|
|
48
|
+
updateModelLocales(request: KuzzleRequest, model: string): Promise<ApiAssetUpdateModelLocales[]>;
|
|
42
49
|
private refreshModel;
|
|
43
50
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ControllerDefinition, KuzzleRequest } from "kuzzle";
|
|
2
2
|
import { DeviceManagerPlugin } from "../plugin";
|
|
3
3
|
import { AssetService } from "./AssetService";
|
|
4
|
-
import { ApiAssetCreateResult, ApiAssetUpsertResult, ApiAssetDeleteResult, ApiAssetGetMeasuresResult, ApiAssetGetResult, ApiAssetSearchResult, ApiAssetUpdateResult, ApiAssetMigrateTenantResult, ApiAssetMetadataReplaceResult, ApiAssetGetLastMeasuresResult, ApiAssetMGetLastMeasuredAtResult, ApiAssetMGetLastMeasuresResult, ApiAssetGetLastMeasuredAtResult } from "./types/AssetApi";
|
|
4
|
+
import { ApiAssetCreateResult, ApiAssetUpsertResult, ApiAssetDeleteResult, ApiAssetGetMeasuresResult, ApiAssetGetResult, ApiAssetSearchResult, ApiAssetUpdateResult, ApiAssetMigrateTenantResult, ApiAssetMetadataReplaceResult, ApiAssetGetLastMeasuresResult, ApiAssetMGetLastMeasuredAtResult, ApiAssetMGetLastMeasuresResult, ApiAssetGetLastMeasuredAtResult, ApiAssetUpdateModelLocales, ApiAssetLinkDevicesResult, ApiAssetUnlinkDevicesResult } from "./types/AssetApi";
|
|
5
5
|
export declare class AssetsController {
|
|
6
6
|
private plugin;
|
|
7
7
|
private assetService;
|
|
@@ -36,4 +36,18 @@ export declare class AssetsController {
|
|
|
36
36
|
migrateTenant(request: KuzzleRequest): Promise<ApiAssetMigrateTenantResult>;
|
|
37
37
|
getLastMeasuredAt(request: KuzzleRequest): Promise<ApiAssetGetLastMeasuredAtResult>;
|
|
38
38
|
mGetLastMeasuredAt(request: KuzzleRequest): Promise<ApiAssetMGetLastMeasuredAtResult>;
|
|
39
|
+
/**
|
|
40
|
+
* Update modelLocales of all assets related to the specified asset model.
|
|
41
|
+
* This operation is done to make the search assets feature up to date
|
|
42
|
+
* @param request
|
|
43
|
+
*/
|
|
44
|
+
updateModelLocales(request: KuzzleRequest): Promise<ApiAssetUpdateModelLocales[]>;
|
|
45
|
+
/**
|
|
46
|
+
* Link an asset to devices.
|
|
47
|
+
*/
|
|
48
|
+
linkDevices(request: KuzzleRequest): Promise<ApiAssetLinkDevicesResult>;
|
|
49
|
+
/**
|
|
50
|
+
* Unlink assets from a device.
|
|
51
|
+
*/
|
|
52
|
+
unlinkDevices(request: KuzzleRequest): Promise<ApiAssetUnlinkDevicesResult>;
|
|
39
53
|
}
|
|
@@ -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,9 +1,10 @@
|
|
|
1
|
-
import { JSONObject, KDocument, KHit, SearchResult } from "kuzzle-sdk";
|
|
1
|
+
import { JSONObject, KDocument, KHit, SearchResult, UpdateByQueryResponse } from "kuzzle-sdk";
|
|
2
2
|
import { MeasureContent, Measurement } from "../../../modules/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;
|
|
@@ -33,7 +34,6 @@ export interface ApiAssetMetadataReplaceRequest extends AssetsControllerRequest
|
|
|
33
34
|
export type ApiAssetMetadataReplaceResult = KDocument<AssetContent>;
|
|
34
35
|
export interface ApiAssetUpsertRequest extends AssetsControllerRequest {
|
|
35
36
|
action: "upsert";
|
|
36
|
-
_id: string;
|
|
37
37
|
refresh?: string;
|
|
38
38
|
body: {
|
|
39
39
|
model: string;
|
|
@@ -156,6 +156,7 @@ export interface ApiAssetMigrateTenantRequest extends AssetsControllerRequest {
|
|
|
156
156
|
body: {
|
|
157
157
|
assetsList: string[];
|
|
158
158
|
newEngineId: string;
|
|
159
|
+
includeDevices?: boolean;
|
|
159
160
|
};
|
|
160
161
|
}
|
|
161
162
|
export type ApiAssetMigrateTenantResult = {
|
|
@@ -166,4 +167,89 @@ export type ApiAssetGetLastMeasuredAtRequest = ApiDigitalTwinGetLastMeasuredAtRe
|
|
|
166
167
|
export type ApiAssetGetLastMeasuredAtResult = ApiDigitalTwinGetLastMeasuredAtResult;
|
|
167
168
|
export type ApiAssetMGetLastMeasuredAtRequest = ApiDigitalTwinMGetLastMeasuredAtRequest<AssetsControllerName>;
|
|
168
169
|
export type ApiAssetMGetLastMeasuredAtResult = ApiDigitalTwinMGetLastMeasuredAtResult;
|
|
170
|
+
export type ApiAssetUpdateModelLocales = {
|
|
171
|
+
engineIndex: string;
|
|
172
|
+
result: UpdateByQueryResponse<AssetContent>;
|
|
173
|
+
};
|
|
174
|
+
export interface ApiAssetlinkDevicesRequest extends AssetsControllerRequest {
|
|
175
|
+
action: "linkDevices";
|
|
176
|
+
_id: string;
|
|
177
|
+
refresh?: string;
|
|
178
|
+
body: {
|
|
179
|
+
linkedMeasures: Array<{
|
|
180
|
+
deviceId: string;
|
|
181
|
+
/**
|
|
182
|
+
* This option allows to not specify the names of all the measures that should
|
|
183
|
+
* be linked to the asset.
|
|
184
|
+
*
|
|
185
|
+
* The algorithm will go through all the measures names provided by the device
|
|
186
|
+
* and add the one who are present with the same name in the asset.
|
|
187
|
+
*
|
|
188
|
+
* It will not add the measure if:
|
|
189
|
+
* - it has been specified in the link request
|
|
190
|
+
* - it was already present in the asset
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* if the device provide a measure of type "temperature" with the name "temp"
|
|
194
|
+
* if the asset has declared a measure of type "temperature" with the name "temp"
|
|
195
|
+
* then the measure will be automatically added in the link and will later be propagated to the asset
|
|
196
|
+
*/
|
|
197
|
+
implicitMeasuresLinking?: boolean;
|
|
198
|
+
/**
|
|
199
|
+
* Names of the linked measures.
|
|
200
|
+
*
|
|
201
|
+
* Array<{ asset: string, device: string }>
|
|
202
|
+
*
|
|
203
|
+
* @example
|
|
204
|
+
*
|
|
205
|
+
* [
|
|
206
|
+
* { asset: "externalTemperature", device: "temperature" }
|
|
207
|
+
* ]
|
|
208
|
+
*/
|
|
209
|
+
measureSlots?: Array<{
|
|
210
|
+
asset: string;
|
|
211
|
+
device: string;
|
|
212
|
+
}>;
|
|
213
|
+
}>;
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
export type ApiAssetLinkDevicesResult = {
|
|
217
|
+
asset: KDocument<AssetContent>;
|
|
218
|
+
devices: KDocument<DeviceContent>[];
|
|
219
|
+
};
|
|
220
|
+
export interface ApiAssetUnlinkDevicesRequest extends AssetsControllerRequest {
|
|
221
|
+
action: "unlinkDevices";
|
|
222
|
+
_id: string;
|
|
223
|
+
strict?: boolean;
|
|
224
|
+
refresh?: string;
|
|
225
|
+
body: {
|
|
226
|
+
linkedMeasures: Array<{
|
|
227
|
+
deviceId: string;
|
|
228
|
+
/**
|
|
229
|
+
* This option allows to not specify the names of all the measures that should
|
|
230
|
+
* be unlinked from the asset.
|
|
231
|
+
*/
|
|
232
|
+
allMeasures?: boolean;
|
|
233
|
+
/**
|
|
234
|
+
* Names of the linked measures.
|
|
235
|
+
*
|
|
236
|
+
* Array<{ asset: string, device: string }>
|
|
237
|
+
*
|
|
238
|
+
* @example
|
|
239
|
+
*
|
|
240
|
+
* [
|
|
241
|
+
* { asset: "externalTemperature", device: "temperature" }
|
|
242
|
+
* ]
|
|
243
|
+
*/
|
|
244
|
+
measureSlots?: Array<{
|
|
245
|
+
asset: string;
|
|
246
|
+
device: string;
|
|
247
|
+
}>;
|
|
248
|
+
}>;
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
export type ApiAssetUnlinkDevicesResult = {
|
|
252
|
+
asset: KDocument<AssetContent>;
|
|
253
|
+
devices: KDocument<DeviceContent>[];
|
|
254
|
+
};
|
|
169
255
|
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,20 +19,19 @@ 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
37
|
}
|
|
@@ -49,4 +47,4 @@ export type AssetMeasureContext<TMetadata extends Metadata = Metadata> = {
|
|
|
49
47
|
* Name of the measure for the Asset
|
|
50
48
|
*/
|
|
51
49
|
measureName: string;
|
|
52
|
-
} & 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
|
*
|
|
@@ -3,22 +3,18 @@ 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 { ApiDeviceLinkAssetRequest } from "./types/DeviceApi";
|
|
8
|
-
import { DeviceContent } from "./types/DeviceContent";
|
|
6
|
+
import { DeviceProvisioningContent, DeviceContent } from "./types/DeviceContent";
|
|
9
7
|
export declare class DeviceService extends DigitalTwinService {
|
|
10
8
|
constructor(plugin: DeviceManagerPlugin);
|
|
11
9
|
registerAskEvents(): void;
|
|
10
|
+
private _create;
|
|
11
|
+
private _createDeviceProvisioning;
|
|
12
12
|
/**
|
|
13
13
|
* Create a new device.
|
|
14
14
|
*
|
|
15
|
-
* @todo creating a device in the "device-manager" index should be a separate
|
|
16
|
-
* method since in this case "engineId" is not really an engine ID but still
|
|
17
|
-
* required as an argument (in part to check the tenant rights)
|
|
18
15
|
*/
|
|
19
16
|
create(model: string, reference: string, metadata: JSONObject, request: KuzzleRequest): Promise<KDocument<DeviceContent>>;
|
|
20
17
|
get(engineId: string, deviceId: string, request: KuzzleRequest): Promise<KDocument<DeviceContent>>;
|
|
21
|
-
private getInternalDevices;
|
|
22
18
|
/**
|
|
23
19
|
* Replace a device metadata
|
|
24
20
|
*/
|
|
@@ -30,6 +26,14 @@ export declare class DeviceService extends DigitalTwinService {
|
|
|
30
26
|
update(engineId: string, deviceId: string, metadata: Metadata, request: KuzzleRequest): Promise<KDocument<DeviceContent>>;
|
|
31
27
|
delete(engineId: string, deviceId: string, request: KuzzleRequest): Promise<void>;
|
|
32
28
|
search(engineId: string, searchParams: SearchParams, request: KuzzleRequest): Promise<SearchResult<KHit<DeviceContent>>>;
|
|
29
|
+
/**
|
|
30
|
+
* Internal logic to attach the device to an engine
|
|
31
|
+
*
|
|
32
|
+
* @param engineId Engine id to attach to
|
|
33
|
+
* @param deviceId Device id to attach
|
|
34
|
+
* @param options.refresh Wait for ES indexation
|
|
35
|
+
*/
|
|
36
|
+
private _attachEngine;
|
|
33
37
|
/**
|
|
34
38
|
* Attach the device to an engine
|
|
35
39
|
*
|
|
@@ -45,41 +49,9 @@ export declare class DeviceService extends DigitalTwinService {
|
|
|
45
49
|
* @param {string} deviceId Id of the device
|
|
46
50
|
* @param {KuzzleRequest} request kuzzle request
|
|
47
51
|
*/
|
|
48
|
-
detachEngine(deviceId: string, request: KuzzleRequest): Promise<KDocument<
|
|
49
|
-
/**
|
|
50
|
-
* Link a device to an asset.
|
|
51
|
-
*/
|
|
52
|
-
linkAsset(engineId: string, deviceId: string, assetId: string, measureNames: ApiDeviceLinkAssetRequest["body"]["measureNames"], implicitMeasuresLinking: boolean, request: KuzzleRequest): Promise<{
|
|
53
|
-
asset: KDocument<AssetContent>;
|
|
54
|
-
device: KDocument<DeviceContent>;
|
|
55
|
-
}>;
|
|
52
|
+
detachEngine(deviceId: string, request: KuzzleRequest): Promise<KDocument<DeviceProvisioningContent>>;
|
|
56
53
|
receiveMeasures(engineId: string, deviceId: string, measures: DecodedMeasurement[], payloadUuids: string[], request: KuzzleRequest): Promise<void>;
|
|
57
|
-
/**
|
|
58
|
-
* Checks if the asset does not already have a linked device using one of the
|
|
59
|
-
* requested measure names.
|
|
60
|
-
*/
|
|
61
|
-
private checkAlreadyProvidedMeasures;
|
|
62
|
-
/**
|
|
63
|
-
* Goes through the device available measures and add them into the link if:
|
|
64
|
-
* - they are not already provided by another device
|
|
65
|
-
* - they are not already present in the link request
|
|
66
|
-
* - they are declared in the asset model
|
|
67
|
-
*/
|
|
68
|
-
private generateMissingAssetMeasureNames;
|
|
69
|
-
/**
|
|
70
|
-
* Unlink a device of an asset
|
|
71
|
-
*
|
|
72
|
-
* @param {string} deviceId Id of the device
|
|
73
|
-
* @param {KuzzleRequest} request kuzzle request
|
|
74
|
-
*/
|
|
75
|
-
unlinkAsset(deviceId: string, request: KuzzleRequest): Promise<{
|
|
76
|
-
asset: KDocument<AssetContent>;
|
|
77
|
-
device: KDocument<DeviceContent>;
|
|
78
|
-
}>;
|
|
79
54
|
private checkEngineExists;
|
|
80
55
|
private checkAttachedToEngine;
|
|
81
|
-
private getEngine;
|
|
82
|
-
private getDeviceModel;
|
|
83
|
-
private getAssetModel;
|
|
84
56
|
private refreshModel;
|
|
85
57
|
}
|
|
@@ -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
|
export declare class DevicesController {
|
|
6
6
|
private plugin;
|
|
7
7
|
private deviceService;
|
|
@@ -28,13 +28,13 @@ export declare class DevicesController {
|
|
|
28
28
|
*/
|
|
29
29
|
detachEngine(request: KuzzleRequest): Promise<ApiDeviceDetachEngineResult>;
|
|
30
30
|
/**
|
|
31
|
-
* Link a device to
|
|
31
|
+
* Link a device to several assets.
|
|
32
32
|
*/
|
|
33
|
-
|
|
33
|
+
linkAssets(request: KuzzleRequest): Promise<ApiDeviceLinkAssetsResult>;
|
|
34
34
|
/**
|
|
35
|
-
* Unlink
|
|
35
|
+
* Unlink assets from a device.
|
|
36
36
|
*/
|
|
37
|
-
|
|
37
|
+
unlinkAssets(request: KuzzleRequest): Promise<ApiDeviceUnlinkAssetsResult>;
|
|
38
38
|
getMeasures(request: KuzzleRequest): Promise<ApiDeviceGetMeasuresResult>;
|
|
39
39
|
getLastMeasures(request: KuzzleRequest): Promise<ApiDeviceGetLastMeasuresResult>;
|
|
40
40
|
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,
|
|
@@ -25,7 +25,6 @@ export type ApiDeviceUpdateResult = KDocument<DeviceContent>;
|
|
|
25
25
|
export type ApiDeviceMetadataReplaceResult = KDocument<DeviceContent>;
|
|
26
26
|
export interface ApiDeviceUpsertRequest extends DevicesControllerRequest {
|
|
27
27
|
action: "upsert";
|
|
28
|
-
_id: string;
|
|
29
28
|
refresh?: string;
|
|
30
29
|
body: {
|
|
31
30
|
model: string;
|
|
@@ -60,14 +59,39 @@ export interface ApiDeviceSearchRequest extends DevicesControllerRequest {
|
|
|
60
59
|
body: JSONObject;
|
|
61
60
|
}
|
|
62
61
|
export type ApiDeviceSearchResult = SearchResult<KHit<DeviceContent>>;
|
|
63
|
-
export interface
|
|
64
|
-
action: "
|
|
62
|
+
export interface ApiDeviceUnlinkAssetsRequest extends DevicesControllerRequest {
|
|
63
|
+
action: "unlinkAssets";
|
|
65
64
|
_id: string;
|
|
66
65
|
strict?: boolean;
|
|
67
66
|
refresh?: string;
|
|
67
|
+
body: {
|
|
68
|
+
linkedMeasures: Array<{
|
|
69
|
+
assetId: string;
|
|
70
|
+
/**
|
|
71
|
+
* This option allows to not specify the names of all the measures that should
|
|
72
|
+
* be unlinked from the asset.
|
|
73
|
+
*/
|
|
74
|
+
allMeasures?: boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Names of the linked measures.
|
|
77
|
+
*
|
|
78
|
+
* Array<{ asset: string, device: string }>
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
*
|
|
82
|
+
* [
|
|
83
|
+
* { asset: "externalTemperature", device: "temperature" }
|
|
84
|
+
* ]
|
|
85
|
+
*/
|
|
86
|
+
measureSlots?: Array<{
|
|
87
|
+
asset: string;
|
|
88
|
+
device: string;
|
|
89
|
+
}>;
|
|
90
|
+
}>;
|
|
91
|
+
};
|
|
68
92
|
}
|
|
69
|
-
export type
|
|
70
|
-
|
|
93
|
+
export type ApiDeviceUnlinkAssetsResult = {
|
|
94
|
+
assets: KDocument<AssetContent>[];
|
|
71
95
|
device: KDocument<DeviceContent>;
|
|
72
96
|
};
|
|
73
97
|
export interface ApiDeviceAttachEngineRequest extends DevicesControllerRequest {
|
|
@@ -82,48 +106,50 @@ export interface ApiDeviceDetachEngineRequest extends DevicesControllerRequest {
|
|
|
82
106
|
refresh?: string;
|
|
83
107
|
}
|
|
84
108
|
export type ApiDeviceDetachEngineResult = void;
|
|
85
|
-
export interface
|
|
86
|
-
action: "
|
|
109
|
+
export interface ApiDeviceLinkAssetsRequest extends DevicesControllerRequest {
|
|
110
|
+
action: "linkAssets";
|
|
87
111
|
_id: string;
|
|
88
112
|
refresh?: string;
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
113
|
+
body: {
|
|
114
|
+
linkedMeasures: Array<{
|
|
115
|
+
assetId: string;
|
|
116
|
+
/**
|
|
117
|
+
* This option allows to not specify the names of all the measures that should
|
|
118
|
+
* be linked to the asset.
|
|
119
|
+
*
|
|
120
|
+
* The algorithm will go through all the measures names provided by the device
|
|
121
|
+
* and add the one who are present with the same name in the asset.
|
|
122
|
+
*
|
|
123
|
+
* It will not add the measure if:
|
|
124
|
+
* - it has been specified in the link request
|
|
125
|
+
* - it was already present in the asset
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* if the device provide a measure of type "temperature" with the name "temp"
|
|
129
|
+
* if the asset has declared a measure of type "temperature" with the name "temp"
|
|
130
|
+
* then the measure will be automatically added in the link and will later be propagated to the asset
|
|
131
|
+
*/
|
|
132
|
+
implicitMeasuresLinking?: boolean;
|
|
133
|
+
/**
|
|
134
|
+
* Names of the linked measures.
|
|
135
|
+
*
|
|
136
|
+
* Array<{ asset: string, device: string }>
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
*
|
|
140
|
+
* [
|
|
141
|
+
* { asset: "externalTemperature", device: "temperature" }
|
|
142
|
+
* ]
|
|
143
|
+
*/
|
|
144
|
+
measureSlots?: Array<{
|
|
145
|
+
asset: string;
|
|
146
|
+
device: string;
|
|
147
|
+
}>;
|
|
122
148
|
}>;
|
|
123
149
|
};
|
|
124
150
|
}
|
|
125
|
-
export type
|
|
126
|
-
|
|
151
|
+
export type ApiDeviceLinkAssetsResult = {
|
|
152
|
+
assets: KDocument<AssetContent>[];
|
|
127
153
|
device: KDocument<DeviceContent>;
|
|
128
154
|
};
|
|
129
155
|
export interface ApiDeviceGetMeasuresRequest extends DevicesControllerRequest {
|