kuzzle-device-manager 2.0.0-rc27 → 2.0.0-rc29
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/index.d.ts +4 -4
- package/index.js +4 -4
- package/lib/{modules/engine/types → core}/DeviceManagerConfiguration.d.ts +15 -6
- package/lib/{modules/engine/types → core}/DeviceManagerConfiguration.js +0 -0
- package/lib/core/DeviceManagerEngine.d.ts +31 -0
- package/lib/core/DeviceManagerEngine.js +145 -0
- package/lib/core/DeviceManagerPlugin.d.ts +114 -0
- package/lib/core/DeviceManagerPlugin.js +344 -0
- package/lib/{InternalCollection.d.ts → core/InternalCollection.d.ts} +3 -1
- package/lib/{InternalCollection.js → core/InternalCollection.js} +2 -0
- package/lib/core/index.d.ts +4 -0
- package/lib/{modules/engine → core}/index.js +3 -1
- package/lib/{modules/measure → core/registers}/DecodersRegister.d.ts +4 -8
- package/lib/{modules/measure → core/registers}/DecodersRegister.js +8 -34
- package/lib/core/registers/ModelsRegister.d.ts +17 -0
- package/lib/core/registers/ModelsRegister.js +59 -0
- package/lib/modules/asset/AssetModule.d.ts +6 -0
- package/lib/modules/asset/AssetModule.js +19 -0
- package/lib/modules/asset/AssetService.d.ts +26 -22
- package/lib/modules/asset/AssetService.js +71 -48
- package/lib/modules/asset/AssetsController.d.ts +14 -0
- package/lib/modules/asset/AssetsController.js +119 -0
- package/lib/modules/asset/collections/assetsMappings.d.ts +14 -106
- package/lib/modules/asset/collections/assetsMappings.js +17 -52
- package/lib/modules/asset/index.d.ts +5 -6
- package/lib/modules/asset/index.js +5 -6
- package/lib/modules/asset/model/AssetSerializer.d.ts +10 -0
- package/lib/modules/asset/model/AssetSerializer.js +34 -0
- package/lib/modules/asset/roles/assetsAdmin.d.ts +16 -0
- package/lib/modules/asset/roles/assetsAdmin.js +20 -0
- package/lib/modules/asset/roles/assetsReader.d.ts +16 -0
- package/lib/modules/asset/roles/assetsReader.js +20 -0
- package/lib/modules/asset/types/AssetApi.d.ts +58 -0
- package/lib/modules/asset/types/{LinkRequest.js → AssetApi.js} +1 -1
- package/lib/modules/asset/types/AssetContent.d.ts +41 -0
- package/lib/modules/asset/types/{BaseAssetContent.js → AssetContent.js} +1 -1
- package/lib/modules/asset/types/AssetEvents.d.ts +17 -0
- package/lib/modules/{asset-category/types/AssetCategoryContent.js → asset/types/AssetEvents.js} +1 -1
- package/lib/modules/{measure → decoder}/DecodedPayload.d.ts +3 -3
- package/lib/modules/{measure → decoder}/DecodedPayload.js +6 -3
- package/lib/modules/{measure → decoder}/Decoder.d.ts +4 -4
- package/lib/modules/{measure → decoder}/Decoder.js +0 -0
- package/lib/modules/decoder/DecoderModule.d.ts +9 -0
- package/lib/modules/decoder/DecoderModule.js +38 -0
- package/lib/modules/decoder/DecodersController.d.ts +18 -0
- package/lib/modules/decoder/DecodersController.js +44 -0
- package/lib/modules/{measure → decoder}/PayloadService.d.ts +12 -9
- package/lib/modules/decoder/PayloadService.js +131 -0
- package/lib/modules/{measure → decoder}/collections/payloadsMappings.d.ts +0 -0
- package/lib/modules/{measure → decoder}/collections/payloadsMappings.js +0 -0
- package/lib/modules/decoder/index.d.ts +6 -0
- package/lib/modules/{metadata → decoder}/index.js +6 -5
- package/lib/modules/decoder/roles/decodersAdmin.d.ts +9 -0
- package/lib/modules/decoder/roles/decodersAdmin.js +13 -0
- package/lib/modules/decoder/types/DecoderApi.d.ts +19 -0
- package/lib/modules/decoder/types/DecoderApi.js +3 -0
- package/lib/modules/decoder/types/DecoderContent.d.ts +5 -0
- package/lib/modules/{measure → decoder}/types/DecoderContent.js +0 -0
- package/lib/modules/device/DeviceModule.d.ts +6 -0
- package/lib/modules/device/DeviceModule.js +20 -0
- package/lib/modules/device/DeviceService.d.ts +37 -73
- package/lib/modules/device/DeviceService.js +187 -228
- package/lib/modules/device/DevicesController.d.ts +32 -0
- package/lib/modules/device/DevicesController.js +179 -0
- package/lib/modules/device/collections/deviceMappings.d.ts +13 -60
- package/lib/modules/device/collections/deviceMappings.js +16 -20
- package/lib/modules/device/index.d.ts +4 -4
- package/lib/modules/device/index.js +4 -4
- package/lib/modules/device/model/DeviceSerializer.d.ts +6 -0
- package/lib/modules/device/model/DeviceSerializer.js +16 -0
- package/lib/modules/device/roles/devicesAdmin.d.ts +22 -0
- package/lib/modules/device/roles/devicesAdmin.js +26 -0
- package/lib/modules/device/roles/devicesReader.d.ts +15 -0
- package/lib/modules/device/roles/devicesReader.js +19 -0
- package/lib/modules/device/types/DeviceApi.d.ts +94 -0
- package/lib/modules/device/types/DeviceApi.js +3 -0
- package/lib/modules/device/types/DeviceContent.d.ts +3 -30
- package/lib/modules/device/types/DeviceEvents.d.ts +17 -0
- package/lib/modules/device/types/DeviceEvents.js +3 -0
- package/lib/modules/measure/MeasureModule.d.ts +6 -0
- package/lib/modules/measure/MeasureModule.js +20 -0
- package/lib/modules/measure/MeasureService.d.ts +28 -59
- package/lib/modules/measure/MeasureService.js +148 -183
- package/lib/modules/measure/MeasuresController.d.ts +9 -0
- package/lib/modules/measure/MeasuresController.js +27 -0
- package/lib/modules/measure/collections/measuresMappings.d.ts +18 -85
- package/lib/modules/measure/collections/measuresMappings.js +8 -23
- package/lib/modules/measure/index.d.ts +4 -10
- package/lib/modules/measure/index.js +4 -10
- package/lib/modules/measure/measures/BatteryMeasure.d.ts +2 -3
- package/lib/modules/measure/measures/BatteryMeasure.js +0 -5
- package/lib/modules/measure/measures/HumidityMeasure.d.ts +2 -3
- package/lib/modules/measure/measures/HumidityMeasure.js +0 -5
- package/lib/modules/measure/measures/MovementMeasure.d.ts +2 -3
- package/lib/modules/measure/measures/MovementMeasure.js +0 -5
- package/lib/modules/measure/measures/PositionMeasure.d.ts +2 -3
- package/lib/modules/measure/measures/PositionMeasure.js +0 -5
- package/lib/modules/measure/measures/TemperatureMeasure.d.ts +2 -3
- package/lib/modules/measure/measures/TemperatureMeasure.js +0 -5
- package/lib/modules/measure/roles/measuresAdmin.d.ts +16 -0
- package/lib/modules/measure/roles/measuresAdmin.js +20 -0
- package/lib/modules/measure/roles/measuresReader.d.ts +9 -0
- package/lib/modules/measure/roles/measuresReader.js +13 -0
- package/lib/modules/measure/types/MeasureApi.d.ts +23 -0
- package/lib/modules/measure/types/MeasureApi.js +3 -0
- package/lib/modules/measure/types/MeasureContent.d.ts +40 -61
- package/lib/modules/measure/types/MeasureDefinition.d.ts +0 -25
- package/lib/modules/measure/types/MeasureEvents.d.ts +59 -0
- package/lib/modules/measure/types/MeasureEvents.js +3 -0
- package/lib/modules/model/ModelModule.d.ts +6 -0
- package/lib/modules/model/ModelModule.js +15 -0
- package/lib/modules/model/ModelSerializer.d.ts +5 -0
- package/lib/modules/model/ModelSerializer.js +32 -0
- package/lib/modules/model/ModelService.d.ts +24 -0
- package/lib/modules/model/ModelService.js +147 -0
- package/lib/modules/model/ModelsController.d.ts +17 -0
- package/lib/modules/model/ModelsController.js +109 -0
- package/lib/modules/model/collections/modelsMappings.d.ts +2 -0
- package/lib/modules/model/collections/modelsMappings.js +55 -0
- package/lib/modules/model/index.d.ts +6 -0
- package/lib/{utils → modules/model}/index.js +6 -1
- package/lib/modules/model/types/ModelApi.d.ts +75 -0
- package/lib/modules/model/types/ModelApi.js +3 -0
- package/lib/modules/model/types/ModelContent.d.ts +96 -0
- package/lib/modules/model/types/ModelContent.js +3 -0
- package/lib/modules/model/types/ModelDefinition.d.ts +12 -0
- package/lib/modules/model/types/ModelDefinition.js +3 -0
- package/lib/modules/model/types/ModelEvents.d.ts +16 -0
- package/lib/modules/model/types/ModelEvents.js +3 -0
- package/lib/modules/shared/Module.d.ts +7 -0
- package/lib/modules/shared/Module.js +13 -0
- package/lib/modules/shared/index.d.ts +6 -0
- package/lib/modules/{asset-category → shared}/index.js +6 -4
- package/lib/modules/shared/types/DigitalTwinContent.d.ts +11 -0
- package/lib/modules/shared/types/DigitalTwinContent.js +3 -0
- package/lib/modules/shared/types/EmbeddedMeasure.d.ts +24 -0
- package/lib/modules/shared/types/EmbeddedMeasure.js +3 -0
- package/lib/modules/shared/types/Metadata.d.ts +5 -0
- package/lib/modules/shared/types/Metadata.js +3 -0
- package/lib/modules/shared/utils/ask.d.ts +8 -0
- package/lib/modules/shared/utils/ask.js +12 -0
- package/lib/modules/shared/utils/flattenObject.d.ts +24 -0
- package/lib/modules/shared/utils/flattenObject.js +46 -0
- package/lib/modules/shared/utils/lock.d.ts +1 -0
- package/lib/modules/shared/utils/lock.js +16 -0
- package/package.json +8 -13
- package/lib/DeviceManagerPlugin.d.ts +0 -77
- package/lib/DeviceManagerPlugin.js +0 -303
- package/lib/modules/asset/AssetController.d.ts +0 -58
- package/lib/modules/asset/AssetController.js +0 -311
- package/lib/modules/asset/AssetsRegister.d.ts +0 -30
- package/lib/modules/asset/AssetsRegister.js +0 -68
- package/lib/modules/asset/BaseAsset.d.ts +0 -24
- package/lib/modules/asset/BaseAsset.js +0 -71
- package/lib/modules/asset/types/BaseAssetContent.d.ts +0 -45
- package/lib/modules/asset/types/LinkRequest.d.ts +0 -26
- package/lib/modules/asset-category/AssetCategoryController.d.ts +0 -28
- package/lib/modules/asset-category/AssetCategoryController.js +0 -229
- package/lib/modules/asset-category/AssetCategoryService.d.ts +0 -27
- package/lib/modules/asset-category/AssetCategoryService.js +0 -199
- package/lib/modules/asset-category/collections/assetCategoryMappings.d.ts +0 -69
- package/lib/modules/asset-category/collections/assetCategoryMappings.js +0 -23
- package/lib/modules/asset-category/index.d.ts +0 -4
- package/lib/modules/asset-category/types/AssetCategoryContent.d.ts +0 -28
- package/lib/modules/device/Device.d.ts +0 -23
- package/lib/modules/device/Device.js +0 -55
- package/lib/modules/device/DeviceController.d.ts +0 -81
- package/lib/modules/device/DeviceController.js +0 -404
- package/lib/modules/device/DevicesRegister.d.ts +0 -20
- package/lib/modules/device/DevicesRegister.js +0 -37
- package/lib/modules/engine/DeviceManagerEngine.d.ts +0 -23
- package/lib/modules/engine/DeviceManagerEngine.js +0 -69
- package/lib/modules/engine/index.d.ts +0 -2
- package/lib/modules/measure/DecoderController.d.ts +0 -16
- package/lib/modules/measure/DecoderController.js +0 -27
- package/lib/modules/measure/MeasuresRegister.d.ts +0 -30
- package/lib/modules/measure/MeasuresRegister.js +0 -61
- package/lib/modules/measure/PayloadService.js +0 -59
- package/lib/modules/measure/types/DecoderContent.d.ts +0 -5
- package/lib/modules/metadata/MetadataController.d.ts +0 -16
- package/lib/modules/metadata/MetadataController.js +0 -76
- package/lib/modules/metadata/RelationalController.d.ts +0 -162
- package/lib/modules/metadata/RelationalController.js +0 -431
- package/lib/modules/metadata/collections/fieldpathMappings.d.ts +0 -17
- package/lib/modules/metadata/collections/fieldpathMappings.js +0 -21
- package/lib/modules/metadata/collections/genericEmbeddedMapping.d.ts +0 -1
- package/lib/modules/metadata/collections/genericEmbeddedMapping.js +0 -11
- package/lib/modules/metadata/collections/metadataMappings.d.ts +0 -149
- package/lib/modules/metadata/collections/metadataMappings.js +0 -64
- package/lib/modules/metadata/index.d.ts +0 -5
- package/lib/modules/metadata/types/MetadataContent.d.ts +0 -29
- package/lib/modules/metadata/types/MetadataContent.js +0 -15
- package/lib/utils/index.d.ts +0 -1
- package/lib/utils/writeMany.d.ts +0 -13
- package/lib/utils/writeMany.js +0 -39
package/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export * from './lib/DeviceManagerPlugin';
|
|
1
|
+
export * from './lib/core/DeviceManagerPlugin';
|
|
2
|
+
export * from './lib/core/DeviceManagerConfiguration';
|
|
2
3
|
export * from './lib/modules/asset';
|
|
3
|
-
export * from './lib/modules/asset-category';
|
|
4
4
|
export * from './lib/modules/device';
|
|
5
|
-
export * from './lib/modules/engine';
|
|
6
5
|
export * from './lib/modules/measure';
|
|
7
|
-
export * from './lib/modules/
|
|
6
|
+
export * from './lib/modules/decoder';
|
|
7
|
+
export * from './lib/modules/shared';
|
package/index.js
CHANGED
|
@@ -14,11 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./lib/DeviceManagerPlugin"), exports);
|
|
17
|
+
__exportStar(require("./lib/core/DeviceManagerPlugin"), exports);
|
|
18
|
+
__exportStar(require("./lib/core/DeviceManagerConfiguration"), exports);
|
|
18
19
|
__exportStar(require("./lib/modules/asset"), exports);
|
|
19
|
-
__exportStar(require("./lib/modules/asset-category"), exports);
|
|
20
20
|
__exportStar(require("./lib/modules/device"), exports);
|
|
21
|
-
__exportStar(require("./lib/modules/engine"), exports);
|
|
22
21
|
__exportStar(require("./lib/modules/measure"), exports);
|
|
23
|
-
__exportStar(require("./lib/modules/
|
|
22
|
+
__exportStar(require("./lib/modules/decoder"), exports);
|
|
23
|
+
__exportStar(require("./lib/modules/shared"), exports);
|
|
24
24
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
import { JSONObject } from "kuzzle";
|
|
2
2
|
export declare type DeviceManagerConfiguration = {
|
|
3
|
+
/**
|
|
4
|
+
* Ignore errors at startup such as wrong mappings update.
|
|
5
|
+
*
|
|
6
|
+
* Useful to start the plugin even if the mappings are not up to date.
|
|
7
|
+
*/
|
|
8
|
+
ignoreStartupErrors: boolean;
|
|
9
|
+
engine: {
|
|
10
|
+
/**
|
|
11
|
+
* Auto update collection mappings with models
|
|
12
|
+
*
|
|
13
|
+
* This can lead to huge pressure on the database at start if a lot
|
|
14
|
+
* of engine are present.
|
|
15
|
+
*/
|
|
16
|
+
autoUpdate: true;
|
|
17
|
+
};
|
|
3
18
|
/**
|
|
4
19
|
* Administration index name
|
|
5
20
|
*/
|
|
@@ -31,10 +46,4 @@ export declare type DeviceManagerConfiguration = {
|
|
|
31
46
|
settings: JSONObject;
|
|
32
47
|
};
|
|
33
48
|
};
|
|
34
|
-
/**
|
|
35
|
-
* Interval to write documents from the buffer
|
|
36
|
-
*
|
|
37
|
-
* @see https://docs.kuzzle.io/sdk/js/7/essentials/batch-processing/
|
|
38
|
-
*/
|
|
39
|
-
batchInterval: number;
|
|
40
49
|
};
|
|
File without changes
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Backend, Plugin } from "kuzzle";
|
|
2
|
+
import { AbstractEngine, ConfigManager } from "kuzzle-plugin-commons";
|
|
3
|
+
import { DeviceManagerConfiguration } from "./DeviceManagerConfiguration";
|
|
4
|
+
import { DeviceManagerPlugin } from "./DeviceManagerPlugin";
|
|
5
|
+
import { InternalCollection } from "./InternalCollection";
|
|
6
|
+
export declare type AskEngineUpdateAll = {
|
|
7
|
+
name: "ask:device-manager:engine:updateAll";
|
|
8
|
+
payload: void;
|
|
9
|
+
result: void;
|
|
10
|
+
};
|
|
11
|
+
export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlugin> {
|
|
12
|
+
config: DeviceManagerConfiguration;
|
|
13
|
+
get app(): Backend;
|
|
14
|
+
constructor(plugin: Plugin, adminConfigManager: ConfigManager, engineConfigManager: ConfigManager);
|
|
15
|
+
updateEngines(): Promise<void>;
|
|
16
|
+
onCreate(index: string, group?: string): Promise<{
|
|
17
|
+
collections: string[];
|
|
18
|
+
}>;
|
|
19
|
+
onUpdate(index: string, group?: string): Promise<{
|
|
20
|
+
collections: any[];
|
|
21
|
+
}>;
|
|
22
|
+
onDelete(index: string): Promise<{
|
|
23
|
+
collections: string[];
|
|
24
|
+
}>;
|
|
25
|
+
createAssetsCollection(engineId: string, engineGroup: string): Promise<InternalCollection>;
|
|
26
|
+
private getDigitalTwinMappings;
|
|
27
|
+
createDevicesCollection(engineId: string): Promise<InternalCollection>;
|
|
28
|
+
createMeasuresCollection(engineId: string, engineGroup: string): Promise<InternalCollection>;
|
|
29
|
+
private getMeasuresMappings;
|
|
30
|
+
private getModels;
|
|
31
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DeviceManagerEngine = void 0;
|
|
7
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
+
const kuzzle_1 = require("kuzzle");
|
|
9
|
+
const kuzzle_plugin_commons_1 = require("kuzzle-plugin-commons");
|
|
10
|
+
const asset_1 = require("../modules/asset");
|
|
11
|
+
const measure_1 = require("../modules/measure");
|
|
12
|
+
const device_1 = require("../modules/device");
|
|
13
|
+
const ask_1 = require("../modules/shared/utils/ask");
|
|
14
|
+
const InternalCollection_1 = require("./InternalCollection");
|
|
15
|
+
const digitalTwinMappings = {
|
|
16
|
+
asset: asset_1.assetsMappings,
|
|
17
|
+
device: device_1.devicesMappings,
|
|
18
|
+
};
|
|
19
|
+
class DeviceManagerEngine extends kuzzle_plugin_commons_1.AbstractEngine {
|
|
20
|
+
constructor(plugin, adminConfigManager, engineConfigManager) {
|
|
21
|
+
super("device-manager", plugin, plugin.config.adminIndex, adminConfigManager, engineConfigManager);
|
|
22
|
+
this.context = plugin.context;
|
|
23
|
+
(0, ask_1.onAsk)("ask:device-manager:engine:updateAll", async () => {
|
|
24
|
+
await this.updateEngines();
|
|
25
|
+
await this.createDevicesCollection(this.config.adminIndex);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
get app() {
|
|
29
|
+
return global.app;
|
|
30
|
+
}
|
|
31
|
+
async updateEngines() {
|
|
32
|
+
const result = await this.sdk.document.search(this.config.adminIndex, InternalCollection_1.InternalCollection.CONFIG, {
|
|
33
|
+
query: {
|
|
34
|
+
equals: { type: "engine-device-manager" },
|
|
35
|
+
},
|
|
36
|
+
}, { lang: "koncorde", size: 1000 });
|
|
37
|
+
this.context.log.info(`Update ${result.fetched} existing engines`);
|
|
38
|
+
for (const engine of result.hits) {
|
|
39
|
+
await this.onUpdate(engine._source.engine.index, engine._source.engine.group);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async onCreate(index, group = "commons") {
|
|
43
|
+
const promises = [];
|
|
44
|
+
promises.push(this.createAssetsCollection(index, group));
|
|
45
|
+
promises.push(this.createDevicesCollection(index));
|
|
46
|
+
promises.push(this.createMeasuresCollection(index, group));
|
|
47
|
+
promises.push(this.engineConfigManager.createCollection(index));
|
|
48
|
+
await Promise.all(promises);
|
|
49
|
+
return {
|
|
50
|
+
collections: [
|
|
51
|
+
"assets",
|
|
52
|
+
this.engineConfigManager.collection,
|
|
53
|
+
"devices",
|
|
54
|
+
"measures",
|
|
55
|
+
],
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
async onUpdate(index, group = "commons") {
|
|
59
|
+
const promises = [];
|
|
60
|
+
promises.push(this.createAssetsCollection(index, group));
|
|
61
|
+
promises.push(this.createDevicesCollection(index));
|
|
62
|
+
promises.push(this.createMeasuresCollection(index, group));
|
|
63
|
+
const collections = await Promise.all(promises);
|
|
64
|
+
return { collections };
|
|
65
|
+
}
|
|
66
|
+
async onDelete(index) {
|
|
67
|
+
const promises = [];
|
|
68
|
+
promises.push(this.sdk.collection.delete(index, "assets"));
|
|
69
|
+
promises.push(this.sdk.collection.delete(index, "devices"));
|
|
70
|
+
promises.push(this.sdk.collection.delete(index, "measures"));
|
|
71
|
+
await Promise.all(promises);
|
|
72
|
+
return { collections: ["assets", "devices", "measures"] };
|
|
73
|
+
}
|
|
74
|
+
async createAssetsCollection(engineId, engineGroup) {
|
|
75
|
+
const mappings = await this.getDigitalTwinMappings("asset", engineGroup);
|
|
76
|
+
await this.sdk.collection.create(engineId, InternalCollection_1.InternalCollection.ASSETS, mappings);
|
|
77
|
+
return InternalCollection_1.InternalCollection.ASSETS;
|
|
78
|
+
}
|
|
79
|
+
async getDigitalTwinMappings(digitalTwinType, engineGroup) {
|
|
80
|
+
const models = await this.getModels(this.config.adminIndex, digitalTwinType, engineGroup);
|
|
81
|
+
const measureModels = await this.getModels(this.config.adminIndex, "measure");
|
|
82
|
+
const mappings = JSON.parse(JSON.stringify(digitalTwinMappings[digitalTwinType]));
|
|
83
|
+
for (const model of models) {
|
|
84
|
+
lodash_1.default.merge(mappings.properties.metadata.properties, model._source[digitalTwinType].metadataMappings);
|
|
85
|
+
for (const [measureName, measureType] of Object.entries(model._source[digitalTwinType].measures)) {
|
|
86
|
+
const measureModel = measureModels.find((m) => m._source.measure.type === measureType);
|
|
87
|
+
if (!measureModel) {
|
|
88
|
+
throw new kuzzle_1.InternalError(`Cannot find measure "${measureType}" declared in ${[
|
|
89
|
+
digitalTwinType,
|
|
90
|
+
]} "${model._source[digitalTwinType].model}"`);
|
|
91
|
+
}
|
|
92
|
+
mappings.properties.measures.properties[measureName] = {
|
|
93
|
+
properties: {
|
|
94
|
+
measuredAt: { type: "date" },
|
|
95
|
+
name: { type: "keyword" },
|
|
96
|
+
payloadUuids: { type: "keyword" },
|
|
97
|
+
type: { type: "keyword" },
|
|
98
|
+
values: {
|
|
99
|
+
properties: measureModel._source.measure.valuesMappings,
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return mappings;
|
|
106
|
+
}
|
|
107
|
+
async createDevicesCollection(engineId) {
|
|
108
|
+
const mappings = await this.getDigitalTwinMappings("device");
|
|
109
|
+
await this.sdk.collection.create(engineId, InternalCollection_1.InternalCollection.DEVICES, mappings);
|
|
110
|
+
return InternalCollection_1.InternalCollection.DEVICES;
|
|
111
|
+
}
|
|
112
|
+
async createMeasuresCollection(engineId, engineGroup) {
|
|
113
|
+
const mappings = await this.getMeasuresMappings(engineGroup);
|
|
114
|
+
await this.sdk.collection.create(engineId, InternalCollection_1.InternalCollection.MEASURES, mappings);
|
|
115
|
+
return InternalCollection_1.InternalCollection.MEASURES;
|
|
116
|
+
}
|
|
117
|
+
async getMeasuresMappings(engineGroup) {
|
|
118
|
+
const models = await this.getModels(this.config.adminIndex, "measure");
|
|
119
|
+
const mappings = JSON.parse(JSON.stringify(measure_1.measuresMappings));
|
|
120
|
+
for (const model of models) {
|
|
121
|
+
lodash_1.default.merge(mappings.properties.values.properties, model._source.measure.valuesMappings);
|
|
122
|
+
}
|
|
123
|
+
const _assetsMappings = await this.getDigitalTwinMappings("asset", engineGroup);
|
|
124
|
+
mappings.properties.asset.properties.metadata.properties =
|
|
125
|
+
_assetsMappings.properties.metadata.properties;
|
|
126
|
+
return mappings;
|
|
127
|
+
}
|
|
128
|
+
async getModels(engineId, type, engineGroup) {
|
|
129
|
+
const query = {
|
|
130
|
+
and: [{ equals: { type } }],
|
|
131
|
+
};
|
|
132
|
+
if (engineGroup) {
|
|
133
|
+
query.and.push({
|
|
134
|
+
or: [
|
|
135
|
+
{ equals: { engineGroup } },
|
|
136
|
+
{ equals: { engineGroup: "commons" } },
|
|
137
|
+
],
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
const result = await this.sdk.document.search(engineId, InternalCollection_1.InternalCollection.MODELS, { query }, { lang: "koncorde", size: 100 });
|
|
141
|
+
return result.hits;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
exports.DeviceManagerEngine = DeviceManagerEngine;
|
|
145
|
+
//# sourceMappingURL=DeviceManagerEngine.js.map
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Plugin, PluginContext, JSONObject } from "kuzzle";
|
|
2
|
+
import { MeasureDefinition } from "../modules/measure";
|
|
3
|
+
import { AssetModelDefinition, DeviceModelDefinition } from "../modules/model";
|
|
4
|
+
import { DeviceManagerConfiguration } from "./DeviceManagerConfiguration";
|
|
5
|
+
export declare class DeviceManagerPlugin extends Plugin {
|
|
6
|
+
config: DeviceManagerConfiguration;
|
|
7
|
+
roles: {};
|
|
8
|
+
private deviceManagerEngine;
|
|
9
|
+
private adminConfigManager;
|
|
10
|
+
private engineConfigManager;
|
|
11
|
+
private engineController;
|
|
12
|
+
private assetModule;
|
|
13
|
+
private deviceModule;
|
|
14
|
+
private decoderModule;
|
|
15
|
+
private measureModule;
|
|
16
|
+
private modelModule;
|
|
17
|
+
private modelsRegister;
|
|
18
|
+
private decodersRegister;
|
|
19
|
+
private get sdk();
|
|
20
|
+
get models(): {
|
|
21
|
+
/**
|
|
22
|
+
* Register an asset model
|
|
23
|
+
*
|
|
24
|
+
* @param engineGroup Engine group name
|
|
25
|
+
* @param model Name of the asset model
|
|
26
|
+
* @param definition.measuresNames Array describing measures names and types
|
|
27
|
+
* @param definition.metadataMappings Metadata mappings definition
|
|
28
|
+
* @param definition.defaultMetadata Default metadata values
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```
|
|
32
|
+
* deviceManager.models.registerAsset(
|
|
33
|
+
* "logistic",
|
|
34
|
+
* "container",
|
|
35
|
+
* {
|
|
36
|
+
* measuresNames: [
|
|
37
|
+
* { name: "temperatureExt", type: "temperature" },
|
|
38
|
+
* { name: "temperatureInt", type: "temperature" },
|
|
39
|
+
* { name: "position", type: "position" },
|
|
40
|
+
* ],
|
|
41
|
+
* metadataMappings: {
|
|
42
|
+
* weight: { type: "integer" },
|
|
43
|
+
* height: { type: "integer" },
|
|
44
|
+
* },
|
|
45
|
+
* defaultMetadata: {
|
|
46
|
+
* height: 20
|
|
47
|
+
* }
|
|
48
|
+
* }
|
|
49
|
+
* );
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
registerAsset: (engineGroup: string, model: string, definition: AssetModelDefinition) => void;
|
|
53
|
+
/**
|
|
54
|
+
* Register a device model
|
|
55
|
+
*
|
|
56
|
+
* @param model Name of the device model
|
|
57
|
+
* @param definition.decoded Decoder used to decode payloads
|
|
58
|
+
* @param definition.metadataMappings Metadata mappings definition
|
|
59
|
+
* @param definition.defaultMetadata Default metadata values
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```
|
|
63
|
+
* deviceManager.models.registerDevice(
|
|
64
|
+
* "Abeeway",
|
|
65
|
+
* {
|
|
66
|
+
* decoder: new DummyTempPositionDecoder(),
|
|
67
|
+
* metadataMappings: {
|
|
68
|
+
* serial: { type: "keyword" },
|
|
69
|
+
* }
|
|
70
|
+
* }
|
|
71
|
+
* );
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
registerDevice: (model: string, definition: DeviceModelDefinition) => void;
|
|
75
|
+
/**
|
|
76
|
+
* Register a new measure
|
|
77
|
+
*
|
|
78
|
+
* @param name Name of the measure
|
|
79
|
+
* @param valuesMappings Mappings for the measure values
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```
|
|
83
|
+
* deviceManager.models.registerMeasure("acceleration", {
|
|
84
|
+
* x: { type: "float" },
|
|
85
|
+
* y: { type: "float" },
|
|
86
|
+
* z: { type: "float" },
|
|
87
|
+
* });
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
registerMeasure: (name: string, measureDefinition: MeasureDefinition) => void;
|
|
91
|
+
};
|
|
92
|
+
constructor();
|
|
93
|
+
/**
|
|
94
|
+
* Init the plugin
|
|
95
|
+
*/
|
|
96
|
+
init(config: JSONObject, context: PluginContext): Promise<void>;
|
|
97
|
+
private createDefaultRoles;
|
|
98
|
+
/**
|
|
99
|
+
* Initialize the administration index of the plugin
|
|
100
|
+
*/
|
|
101
|
+
private initDatabase;
|
|
102
|
+
/**
|
|
103
|
+
* Merge custom mappings defined in the Decoder into the "payloads" collection
|
|
104
|
+
* mappings.
|
|
105
|
+
*
|
|
106
|
+
* Those custom mappings allow to search raw payloads more efficiently.
|
|
107
|
+
*/
|
|
108
|
+
private getPayloadsMappings;
|
|
109
|
+
/**
|
|
110
|
+
* Initialize the config document if it does not exists
|
|
111
|
+
*/
|
|
112
|
+
private initializeConfig;
|
|
113
|
+
private pipeCheckEngine;
|
|
114
|
+
}
|